From 1da68cfc7c662f3a86fe9bd5df72cf196fd2f1de Mon Sep 17 00:00:00 2001 From: Lea Anthony Date: Tue, 29 Mar 2022 19:31:49 +1100 Subject: [PATCH] Remove unused directories + tidy up --- .../generate/template/base/go.tmpl.mod | 2 - .../templates/templates/svelte/go.mod.tmpl | 2 - .../templates/templates/vanilla/go.mod.tmpl | 2 - v2/internal/app/debug.go | 37 - v2/internal/app/default.go | 42 - v2/internal/app/desktop.go | 256 - v2/internal/app/dev.go | 249 - v2/internal/app/hybrid.go | 195 - v2/internal/app/preflight_default.go | 10 - v2/internal/app/preflight_windows.go | 27 - v2/internal/app/production.go | 12 - v2/internal/app/server.go | 165 - v2/internal/assetdb/assetdb.go | 112 - v2/internal/assetdb/assetdb_test.go | 70 - v2/internal/assetdb/filesystem.go | 178 - v2/internal/assetdb/filesystem_test.go | 108 - v2/internal/bind/bind.go | 9 - v2/internal/bridge/bridge.go | 113 - v2/internal/bridge/client.go | 141 - v2/internal/bridge/darwin.js | 1 - v2/internal/bridge/dialog_client.go | 149 - v2/internal/bridge/linux.js | 1 - v2/internal/bridge/session.go | 187 - v2/internal/bridge/windows.js | 1 - v2/internal/deepcopy/LICENSE | 21 - v2/internal/deepcopy/deepcopy.go | 125 - v2/internal/deepcopy/deepcopy_test.go | 1110 --- .../desktop/windows/go-webview2/README.md | 2 +- v2/internal/html/asset.go | 128 - v2/internal/html/asset_test.go | 53 - v2/internal/html/assetbundle.go | 218 - v2/internal/html/assetbundle_test.go | 84 - v2/internal/html/testdata/basic.html | 14 - .../html/testdata/inline_javascript.html | 15 - v2/internal/html/testdata/multi_line.html | 17 - v2/internal/html/testdata/self_closing.html | 14 - v2/internal/html/testdata/src/bundle.js | 1 - v2/internal/html/testdata/src/favicon.svg | 8 - v2/internal/html/testdata/src/style.css | 3 - v2/internal/runtime/assets/assets.go | 12 - v2/internal/runtime/assets/desktop_darwin.js | 1 - v2/internal/runtime/assets/desktop_linux.js | 1 - v2/internal/runtime/assets/desktop_windows.js | 1 - v2/internal/runtime/assets/wails.js | 1 - v2/internal/runtime/js/.eslintrc | 24 - v2/internal/runtime/js/babel.config.js | 22 - v2/internal/runtime/js/core/bindings.js | 91 - v2/internal/runtime/js/core/calls.js | 157 - v2/internal/runtime/js/core/desktop.js | 24 - v2/internal/runtime/js/core/events.js | 169 - v2/internal/runtime/js/core/log.js | 115 - v2/internal/runtime/js/core/main.js | 46 - v2/internal/runtime/js/core/utils.js | 42 - v2/internal/runtime/js/desktop/common.js | 15 - v2/internal/runtime/js/desktop/darwin.js | 61 - v2/internal/runtime/js/desktop/ipc.js | 41 - v2/internal/runtime/js/desktop/linux.js | 61 - v2/internal/runtime/js/desktop/windows.js | 61 - v2/internal/runtime/js/package-lock.json | 5959 ----------------- v2/internal/runtime/js/package.json | 44 - v2/internal/runtime/js/package.json.md5 | 1 - v2/internal/runtime/js/runtime/.npmignore | 1 - v2/internal/runtime/js/runtime/README.md | 3 - v2/internal/runtime/js/runtime/bridge.js | 1726 ----- v2/internal/runtime/js/runtime/events.js | 76 - v2/internal/runtime/js/runtime/init.js | 33 - v2/internal/runtime/js/runtime/log.js | 113 - v2/internal/runtime/js/runtime/main.js | 20 - .../runtime/js/runtime/package-lock.json | 517 -- v2/internal/runtime/js/runtime/package.json | 28 - v2/internal/runtime/js/runtime/runtime.d.ts | 26 - .../runtime/js/runtime/src/Menu.svelte | 56 - .../runtime/js/runtime/src/Menubar.svelte | 58 - .../runtime/js/runtime/src/Overlay.svelte | 55 - .../runtime/js/runtime/src/TrayMenu.svelte | 65 - v2/internal/runtime/js/runtime/src/log.js | 9 - v2/internal/runtime/js/runtime/src/main.js | 45 - .../runtime/js/runtime/src/package-lock.json | 525 -- .../runtime/js/runtime/src/package.json | 21 - .../runtime/js/runtime/src/rollup.config.js | 37 - v2/internal/runtime/js/runtime/src/store.js | 64 - .../runtime/js/runtime/src/websocket.js | 158 - v2/internal/runtime/js/server/darwin.js | 17 - v2/internal/runtime/js/server/ipc.js | 52 - v2/internal/runtime/js/server/linux.js | 17 - v2/internal/runtime/js/webpack.config.js | 4 - v2/internal/runtime/js/webpack.desktop.js | 51 - v2/internal/runtime/js/webpack.server.js | 54 - v2/internal/runtime/scripts/rebuild.go | 84 - v2/internal/webserver/routes.go | 49 - v2/internal/webserver/webassets.go | 9 - v2/internal/webserver/webserver.go | 87 - v2/internal/webserver/websockets.go | 239 - v2/pkg/commands/build/base.go | 53 - v2/pkg/commands/build/build.go | 10 - v2/pkg/commands/build/builder.go | 2 - v2/pkg/commands/build/desktop.go | 128 - v2/pkg/commands/build/desktop_darwin.go | 212 - v2/pkg/commands/build/desktop_linux.go | 232 - v2/pkg/commands/build/desktop_windows.go | 200 - v2/pkg/commands/build/hybrid.go | 95 - .../internal/packager/icons/dialog/README.md | 3 - .../internal/packager/icons/dialog/build.go | 100 - .../packager/icons/dialog/info-dark.png | Bin 780 -> 0 bytes .../packager/icons/dialog/info-dark2x.png | Bin 1295 -> 0 bytes .../packager/icons/dialog/info-light.png | Bin 764 -> 0 bytes .../packager/icons/dialog/info-light2x.png | Bin 1293 -> 0 bytes .../packager/icons/dialog/question-dark.png | Bin 941 -> 0 bytes .../packager/icons/dialog/question-dark2x.png | Bin 1557 -> 0 bytes .../packager/icons/dialog/question-light.png | Bin 930 -> 0 bytes .../icons/dialog/question-light2x.png | Bin 1538 -> 0 bytes .../packager/icons/dialog/warning-dark.png | Bin 830 -> 0 bytes .../packager/icons/dialog/warning-dark2x.png | Bin 1274 -> 0 bytes .../packager/icons/dialog/warning-light.png | Bin 720 -> 0 bytes .../packager/icons/dialog/warning-light2x.png | Bin 1262 -> 0 bytes v2/pkg/commands/build/packager_linux.go | 108 - .../commands/build/server-assetdb.go.template | 11 - v2/pkg/commands/build/server.go | 112 - v2/pkg/parser/applicationVariableName.go | 50 - v2/pkg/parser/comments.go | 21 - v2/pkg/parser/conversion.go | 156 - v2/pkg/parser/field.go | 309 - v2/pkg/parser/findBoundStructs.go | 152 - v2/pkg/parser/generate.go | 250 - v2/pkg/parser/getFunctionReturnType.go | 69 - v2/pkg/parser/globals.d.template | 27 - v2/pkg/parser/index.d.template | 7 - v2/pkg/parser/index.template | 13 - v2/pkg/parser/method.go | 174 - v2/pkg/parser/package.d copy.template | 31 - v2/pkg/parser/package.d.template | 42 - v2/pkg/parser/package.go | 152 - v2/pkg/parser/package.json | 13 - v2/pkg/parser/package.template | 44 - v2/pkg/parser/parseBoundStructs.go | 75 - v2/pkg/parser/parseStructFields.go | 35 - v2/pkg/parser/parser.go | 122 - v2/pkg/parser/resolvePackageReferences.go | 35 - v2/pkg/parser/struct.go | 68 - v2/pkg/parser/testproject/basic.go | 66 - v2/pkg/parser/testproject/go.mod | 9 - v2/pkg/parser/testproject/go.sum | 83 - v2/pkg/parser/testproject/main.go | 21 - .../parser/testproject/mypackage/mypackage.go | 36 - 144 files changed, 1 insertion(+), 18455 deletions(-) delete mode 100644 v2/internal/app/debug.go delete mode 100644 v2/internal/app/default.go delete mode 100644 v2/internal/app/desktop.go delete mode 100644 v2/internal/app/dev.go delete mode 100644 v2/internal/app/hybrid.go delete mode 100644 v2/internal/app/preflight_default.go delete mode 100644 v2/internal/app/preflight_windows.go delete mode 100644 v2/internal/app/production.go delete mode 100644 v2/internal/app/server.go delete mode 100644 v2/internal/assetdb/assetdb.go delete mode 100644 v2/internal/assetdb/assetdb_test.go delete mode 100644 v2/internal/assetdb/filesystem.go delete mode 100644 v2/internal/assetdb/filesystem_test.go delete mode 100644 v2/internal/bind/bind.go delete mode 100644 v2/internal/bridge/bridge.go delete mode 100644 v2/internal/bridge/client.go delete mode 100644 v2/internal/bridge/darwin.js delete mode 100644 v2/internal/bridge/dialog_client.go delete mode 100644 v2/internal/bridge/linux.js delete mode 100644 v2/internal/bridge/session.go delete mode 100644 v2/internal/bridge/windows.js delete mode 100644 v2/internal/deepcopy/LICENSE delete mode 100644 v2/internal/deepcopy/deepcopy.go delete mode 100644 v2/internal/deepcopy/deepcopy_test.go delete mode 100644 v2/internal/html/asset.go delete mode 100644 v2/internal/html/asset_test.go delete mode 100644 v2/internal/html/assetbundle.go delete mode 100644 v2/internal/html/assetbundle_test.go delete mode 100644 v2/internal/html/testdata/basic.html delete mode 100644 v2/internal/html/testdata/inline_javascript.html delete mode 100644 v2/internal/html/testdata/multi_line.html delete mode 100644 v2/internal/html/testdata/self_closing.html delete mode 100644 v2/internal/html/testdata/src/bundle.js delete mode 100644 v2/internal/html/testdata/src/favicon.svg delete mode 100644 v2/internal/html/testdata/src/style.css delete mode 100644 v2/internal/runtime/assets/assets.go delete mode 100644 v2/internal/runtime/assets/desktop_darwin.js delete mode 100644 v2/internal/runtime/assets/desktop_linux.js delete mode 100644 v2/internal/runtime/assets/desktop_windows.js delete mode 100644 v2/internal/runtime/assets/wails.js delete mode 100644 v2/internal/runtime/js/.eslintrc delete mode 100644 v2/internal/runtime/js/babel.config.js delete mode 100644 v2/internal/runtime/js/core/bindings.js delete mode 100644 v2/internal/runtime/js/core/calls.js delete mode 100644 v2/internal/runtime/js/core/desktop.js delete mode 100644 v2/internal/runtime/js/core/events.js delete mode 100644 v2/internal/runtime/js/core/log.js delete mode 100644 v2/internal/runtime/js/core/main.js delete mode 100644 v2/internal/runtime/js/core/utils.js delete mode 100644 v2/internal/runtime/js/desktop/common.js delete mode 100644 v2/internal/runtime/js/desktop/darwin.js delete mode 100644 v2/internal/runtime/js/desktop/ipc.js delete mode 100644 v2/internal/runtime/js/desktop/linux.js delete mode 100644 v2/internal/runtime/js/desktop/windows.js delete mode 100644 v2/internal/runtime/js/package.json delete mode 100644 v2/internal/runtime/js/package.json.md5 delete mode 100644 v2/internal/runtime/js/runtime/.npmignore delete mode 100644 v2/internal/runtime/js/runtime/README.md delete mode 100644 v2/internal/runtime/js/runtime/bridge.js delete mode 100644 v2/internal/runtime/js/runtime/events.js delete mode 100644 v2/internal/runtime/js/runtime/init.js delete mode 100644 v2/internal/runtime/js/runtime/log.js delete mode 100644 v2/internal/runtime/js/runtime/main.js delete mode 100644 v2/internal/runtime/js/runtime/package-lock.json delete mode 100644 v2/internal/runtime/js/runtime/package.json delete mode 100644 v2/internal/runtime/js/runtime/runtime.d.ts delete mode 100644 v2/internal/runtime/js/runtime/src/Menu.svelte delete mode 100644 v2/internal/runtime/js/runtime/src/Menubar.svelte delete mode 100644 v2/internal/runtime/js/runtime/src/Overlay.svelte delete mode 100644 v2/internal/runtime/js/runtime/src/TrayMenu.svelte delete mode 100644 v2/internal/runtime/js/runtime/src/log.js delete mode 100644 v2/internal/runtime/js/runtime/src/main.js delete mode 100644 v2/internal/runtime/js/runtime/src/package-lock.json delete mode 100644 v2/internal/runtime/js/runtime/src/package.json delete mode 100644 v2/internal/runtime/js/runtime/src/rollup.config.js delete mode 100644 v2/internal/runtime/js/runtime/src/store.js delete mode 100644 v2/internal/runtime/js/runtime/src/websocket.js delete mode 100644 v2/internal/runtime/js/server/darwin.js delete mode 100644 v2/internal/runtime/js/server/ipc.js delete mode 100644 v2/internal/runtime/js/server/linux.js delete mode 100644 v2/internal/runtime/js/webpack.config.js delete mode 100644 v2/internal/runtime/js/webpack.desktop.js delete mode 100644 v2/internal/runtime/js/webpack.server.js delete mode 100644 v2/internal/runtime/scripts/rebuild.go delete mode 100644 v2/internal/webserver/routes.go delete mode 100644 v2/internal/webserver/webassets.go delete mode 100644 v2/internal/webserver/webserver.go delete mode 100644 v2/internal/webserver/websockets.go delete mode 100644 v2/pkg/commands/build/desktop_darwin.go delete mode 100644 v2/pkg/commands/build/desktop_linux.go delete mode 100644 v2/pkg/commands/build/desktop_windows.go delete mode 100644 v2/pkg/commands/build/hybrid.go delete mode 100644 v2/pkg/commands/build/internal/packager/icons/dialog/README.md delete mode 100644 v2/pkg/commands/build/internal/packager/icons/dialog/build.go delete mode 100644 v2/pkg/commands/build/internal/packager/icons/dialog/info-dark.png delete mode 100644 v2/pkg/commands/build/internal/packager/icons/dialog/info-dark2x.png delete mode 100644 v2/pkg/commands/build/internal/packager/icons/dialog/info-light.png delete mode 100644 v2/pkg/commands/build/internal/packager/icons/dialog/info-light2x.png delete mode 100644 v2/pkg/commands/build/internal/packager/icons/dialog/question-dark.png delete mode 100644 v2/pkg/commands/build/internal/packager/icons/dialog/question-dark2x.png delete mode 100644 v2/pkg/commands/build/internal/packager/icons/dialog/question-light.png delete mode 100644 v2/pkg/commands/build/internal/packager/icons/dialog/question-light2x.png delete mode 100644 v2/pkg/commands/build/internal/packager/icons/dialog/warning-dark.png delete mode 100644 v2/pkg/commands/build/internal/packager/icons/dialog/warning-dark2x.png delete mode 100644 v2/pkg/commands/build/internal/packager/icons/dialog/warning-light.png delete mode 100644 v2/pkg/commands/build/internal/packager/icons/dialog/warning-light2x.png delete mode 100644 v2/pkg/commands/build/server-assetdb.go.template delete mode 100644 v2/pkg/commands/build/server.go delete mode 100644 v2/pkg/parser/applicationVariableName.go delete mode 100644 v2/pkg/parser/comments.go delete mode 100644 v2/pkg/parser/conversion.go delete mode 100644 v2/pkg/parser/field.go delete mode 100644 v2/pkg/parser/findBoundStructs.go delete mode 100644 v2/pkg/parser/generate.go delete mode 100644 v2/pkg/parser/getFunctionReturnType.go delete mode 100644 v2/pkg/parser/globals.d.template delete mode 100644 v2/pkg/parser/index.d.template delete mode 100644 v2/pkg/parser/index.template delete mode 100644 v2/pkg/parser/method.go delete mode 100644 v2/pkg/parser/package.d copy.template delete mode 100644 v2/pkg/parser/package.d.template delete mode 100644 v2/pkg/parser/package.go delete mode 100644 v2/pkg/parser/package.json delete mode 100644 v2/pkg/parser/package.template delete mode 100644 v2/pkg/parser/parseBoundStructs.go delete mode 100644 v2/pkg/parser/parseStructFields.go delete mode 100644 v2/pkg/parser/parser.go delete mode 100644 v2/pkg/parser/resolvePackageReferences.go delete mode 100644 v2/pkg/parser/struct.go delete mode 100644 v2/pkg/parser/testproject/basic.go delete mode 100644 v2/pkg/parser/testproject/go.mod delete mode 100644 v2/pkg/parser/testproject/go.sum delete mode 100644 v2/pkg/parser/testproject/main.go delete mode 100644 v2/pkg/parser/testproject/mypackage/mypackage.go diff --git a/v2/cmd/wails/internal/commands/generate/template/base/go.tmpl.mod b/v2/cmd/wails/internal/commands/generate/template/base/go.tmpl.mod index d3dd6ecd..2b2c9dc9 100644 --- a/v2/cmd/wails/internal/commands/generate/template/base/go.tmpl.mod +++ b/v2/cmd/wails/internal/commands/generate/template/base/go.tmpl.mod @@ -19,10 +19,8 @@ module changeme github.com/leaanthony/debme v1.2.1 // indirect github.com/leaanthony/go-ansi-parser v1.0.1 // indirect github.com/leaanthony/go-common-file-dialog v1.0.3 // indirect - github.com/wailsapp/wails/v2/internal/frontend/desktop/windows/go-webview2 v0.0.0-20210914103035-f00aa774a934 // indirect github.com/leaanthony/slicer v1.5.0 // indirect github.com/leaanthony/typescriptify-golang-structs v0.1.7 // indirect - github.com/wailsapp/wails/v2/internal/frontend/desktop/windows/winc v0.0.0-20210921073452-54963136bf18 // indirect github.com/pkg/browser v0.0.0-20210706143420-7d21f8c997e2 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/savsgio/gotils v0.0.0-20200117113501-90175b0fbe3f // indirect diff --git a/v2/cmd/wails/internal/commands/initialise/templates/templates/svelte/go.mod.tmpl b/v2/cmd/wails/internal/commands/initialise/templates/templates/svelte/go.mod.tmpl index 06f70133..3b74eb32 100644 --- a/v2/cmd/wails/internal/commands/initialise/templates/templates/svelte/go.mod.tmpl +++ b/v2/cmd/wails/internal/commands/initialise/templates/templates/svelte/go.mod.tmpl @@ -19,10 +19,8 @@ github.com/klauspost/compress v1.12.2 // indirect github.com/leaanthony/debme v1.2.1 // indirect github.com/leaanthony/go-ansi-parser v1.0.1 // indirect github.com/leaanthony/go-common-file-dialog v1.0.3 // indirect -github.com/wailsapp/wails/v2/internal/frontend/desktop/windows/go-webview2 v0.0.0-20210914103035-f00aa774a934 // indirect github.com/leaanthony/slicer v1.5.0 // indirect github.com/leaanthony/typescriptify-golang-structs v0.1.7 // indirect -github.com/wailsapp/wails/v2/internal/frontend/desktop/windows/winc v0.0.0-20210921073452-54963136bf18 // indirect github.com/pkg/browser v0.0.0-20210706143420-7d21f8c997e2 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/savsgio/gotils v0.0.0-20200117113501-90175b0fbe3f // indirect diff --git a/v2/cmd/wails/internal/commands/initialise/templates/templates/vanilla/go.mod.tmpl b/v2/cmd/wails/internal/commands/initialise/templates/templates/vanilla/go.mod.tmpl index 06f70133..3b74eb32 100644 --- a/v2/cmd/wails/internal/commands/initialise/templates/templates/vanilla/go.mod.tmpl +++ b/v2/cmd/wails/internal/commands/initialise/templates/templates/vanilla/go.mod.tmpl @@ -19,10 +19,8 @@ github.com/klauspost/compress v1.12.2 // indirect github.com/leaanthony/debme v1.2.1 // indirect github.com/leaanthony/go-ansi-parser v1.0.1 // indirect github.com/leaanthony/go-common-file-dialog v1.0.3 // indirect -github.com/wailsapp/wails/v2/internal/frontend/desktop/windows/go-webview2 v0.0.0-20210914103035-f00aa774a934 // indirect github.com/leaanthony/slicer v1.5.0 // indirect github.com/leaanthony/typescriptify-golang-structs v0.1.7 // indirect -github.com/wailsapp/wails/v2/internal/frontend/desktop/windows/winc v0.0.0-20210921073452-54963136bf18 // indirect github.com/pkg/browser v0.0.0-20210706143420-7d21f8c997e2 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/savsgio/gotils v0.0.0-20200117113501-90175b0fbe3f // indirect diff --git a/v2/internal/app/debug.go b/v2/internal/app/debug.go deleted file mode 100644 index 3a6a6916..00000000 --- a/v2/internal/app/debug.go +++ /dev/null @@ -1,37 +0,0 @@ -//go:build dev -// +build dev - -package app - -import ( - "flag" - "strings" - - "github.com/wailsapp/wails/v2/pkg/logger" -) - -// Init initialises the application for a debug environment -func (a *App) Init() error { - // Indicate debug mode - a.debug = true - - // Set log levels - loglevel := flag.String("loglevel", "debug", "Loglevel to use - Trace, Debug, Info, Warning, Error") - flag.Parse() - if len(*loglevel) > 0 { - switch strings.ToLower(*loglevel) { - case "trace": - a.logger.SetLogLevel(logger.TRACE) - case "info": - a.logger.SetLogLevel(logger.INFO) - case "warning": - a.logger.SetLogLevel(logger.WARNING) - case "error": - a.logger.SetLogLevel(logger.ERROR) - default: - a.logger.SetLogLevel(logger.DEBUG) - } - } - - return nil -} diff --git a/v2/internal/app/default.go b/v2/internal/app/default.go deleted file mode 100644 index 31f173cf..00000000 --- a/v2/internal/app/default.go +++ /dev/null @@ -1,42 +0,0 @@ -//go:build !desktop && !hybrid && !server && !dev -// +build !desktop,!hybrid,!server,!dev - -package app - -// This is the default application that will get run if the user compiles using `go build`. -// The reason we want to prevent that is that the `wails build` command does a lot of behind -// the scenes work such as asset compilation. If we allow `go build`, the state of these assets -// will be unknown and the application will not work as expected. - -import ( - "os" - - "github.com/wailsapp/wails/v2/internal/logger" - - "github.com/wailsapp/wails/v2/pkg/options" -) - -// App defines a Wails application structure -type App struct { - Title string - Width int - Height int - Resizable bool - - // Indicates if the app is running in debug mode - debug bool - - logger *logger.Logger -} - -// CreateApp returns a null application -func CreateApp(_ *options.App) (*App, error) { - return &App{}, nil -} - -// Run the application -func (a *App) Run() error { - println(`FATAL: This application was built using "go build". This is unsupported. Please compile using "wails build".`) - os.Exit(1) - return nil -} diff --git a/v2/internal/app/desktop.go b/v2/internal/app/desktop.go deleted file mode 100644 index b27f9291..00000000 --- a/v2/internal/app/desktop.go +++ /dev/null @@ -1,256 +0,0 @@ -//go:build desktop && !server -// +build desktop,!server - -package app - -import ( - "context" - "sync" - - "github.com/wailsapp/wails/v2/internal/binding" - "github.com/wailsapp/wails/v2/internal/ffenestri" - "github.com/wailsapp/wails/v2/internal/logger" - "github.com/wailsapp/wails/v2/internal/menumanager" - "github.com/wailsapp/wails/v2/internal/messagedispatcher" - "github.com/wailsapp/wails/v2/internal/servicebus" - "github.com/wailsapp/wails/v2/internal/signal" - "github.com/wailsapp/wails/v2/internal/subsystem" - "github.com/wailsapp/wails/v2/pkg/options" -) - -// App defines a Wails application structure -type App struct { - appType string - - window *ffenestri.Application - servicebus *servicebus.ServiceBus - logger *logger.Logger - signal *signal.Manager - options *options.App - - // Subsystems - log *subsystem.Log - runtime *subsystem.Runtime - event *subsystem.Event - //binding *subsystem.Binding - call *subsystem.Call - menu *subsystem.Menu - url *subsystem.URL - dispatcher *messagedispatcher.Dispatcher - - menuManager *menumanager.Manager - - // Indicates if the app is in debug mode - debug bool - - // This is our binding DB - bindings *binding.Bindings - - // OnStartup/OnShutdown - startupCallback func(ctx context.Context) - shutdownCallback func() -} - -// Create App -func CreateApp(appoptions *options.App) (*App, error) { - - // Merge default options - options.MergeDefaults(appoptions) - - // Set up logger - myLogger := logger.New(appoptions.Logger) - myLogger.SetLogLevel(appoptions.LogLevel) - - // Create the menu manager - menuManager := menumanager.NewManager() - - // Process the application menu - appMenu := options.GetApplicationMenu(appoptions) - menuManager.SetApplicationMenu(appMenu) - - // Process context menus - contextMenus := options.GetContextMenus(appoptions) - for _, contextMenu := range contextMenus { - menuManager.AddContextMenu(contextMenu) - } - - // Process tray menus - trayMenus := options.GetTrayMenus(appoptions) - for _, trayMenu := range trayMenus { - menuManager.AddTrayMenu(trayMenu) - } - - window := ffenestri.NewApplicationWithConfig(appoptions, myLogger, menuManager) - - // Create binding exemptions - Ugly hack. There must be a better way - bindingExemptions := []interface{}{appoptions.OnStartup, appoptions.OnShutdown, appoptions.OnDomReady} - - result := &App{ - appType: "desktop", - window: window, - servicebus: servicebus.New(myLogger), - logger: myLogger, - bindings: binding.NewBindings(myLogger, appoptions.Bind, bindingExemptions), - menuManager: menuManager, - startupCallback: appoptions.OnStartup, - shutdownCallback: appoptions.OnShutdown, - } - - result.options = appoptions - - // Initialise the app - err := result.Init() - if err != nil { - return nil, err - } - - // Preflight Checks - err = result.PreflightChecks(appoptions) - if err != nil { - return nil, err - } - - return result, nil - -} - -// Run the application -func (a *App) Run() error { - - var err error - - // Setup a context - var subsystemWaitGroup sync.WaitGroup - parentContext := context.WithValue(context.Background(), "waitgroup", &subsystemWaitGroup) - ctx, cancel := context.WithCancel(parentContext) - - // Start the service bus - a.servicebus.Debug() - err = a.servicebus.Start() - if err != nil { - return err - } - - runtimesubsystem, err := subsystem.NewRuntime(ctx, a.servicebus, a.logger, a.startupCallback) - if err != nil { - return err - } - a.runtime = runtimesubsystem - err = a.runtime.Start() - if err != nil { - return err - } - - // Start the logging subsystem - log, err := subsystem.NewLog(a.servicebus, a.logger) - if err != nil { - return err - } - a.log = log - err = a.log.Start() - if err != nil { - return err - } - - // create the dispatcher - dispatcher, err := messagedispatcher.New(a.servicebus, a.logger) - if err != nil { - return err - } - a.dispatcher = dispatcher - err = dispatcher.Start() - if err != nil { - return err - } - - if a.options.Mac.URLHandlers != nil { - // Start the url handler subsystem - url, err := subsystem.NewURL(a.servicebus, a.logger, a.options.Mac.URLHandlers) - if err != nil { - return err - } - a.url = url - err = a.url.Start() - if err != nil { - return err - } - } - - // Start the eventing subsystem - eventsubsystem, err := subsystem.NewEvent(ctx, a.servicebus, a.logger) - if err != nil { - return err - } - a.event = eventsubsystem - err = a.event.Start() - if err != nil { - return err - } - - // Start the menu subsystem - menusubsystem, err := subsystem.NewMenu(ctx, a.servicebus, a.logger, a.menuManager) - if err != nil { - return err - } - a.menu = menusubsystem - err = a.menu.Start() - if err != nil { - return err - } - - // Start the call subsystem - callSubsystem, err := subsystem.NewCall(ctx, a.servicebus, a.logger, a.bindings.DB()) - if err != nil { - return err - } - a.call = callSubsystem - err = a.call.Start() - if err != nil { - return err - } - - // Dump bindings as a debug - bindingDump, err := a.bindings.ToJSON() - if err != nil { - return err - } - - // Setup signal handler - signalsubsystem, err := signal.NewManager(ctx, cancel, a.servicebus, a.logger) - if err != nil { - return err - } - a.signal = signalsubsystem - a.signal.Start() - - err = a.window.Run(dispatcher, bindingDump, a.debug) - a.logger.Trace("Ffenestri.Run() exited") - if err != nil { - return err - } - - // Close down all the subsystems - a.logger.Trace("Cancelling subsystems") - cancel() - subsystemWaitGroup.Wait() - - a.logger.Trace("Cancelling dispatcher") - dispatcher.Close() - - // Close log - a.logger.Trace("Stopping log") - log.Close() - - a.logger.Trace("Stopping Service bus") - err = a.servicebus.Stop() - if err != nil { - return err - } - - // OnShutdown callback - if a.shutdownCallback != nil { - a.shutdownCallback() - } - - return nil -} diff --git a/v2/internal/app/dev.go b/v2/internal/app/dev.go deleted file mode 100644 index 3b7be059..00000000 --- a/v2/internal/app/dev.go +++ /dev/null @@ -1,249 +0,0 @@ -//go:build dev -// +build dev - -package app - -/* -import ( - "context" - "sync" - - "github.com/wailsapp/wails/runtime" - - "github.com/wailsapp/wails/v2/internal/bridge" - "github.com/wailsapp/wails/v2/internal/menumanager" - - "github.com/wailsapp/wails/v2/pkg/options" - - "github.com/wailsapp/wails/v2/internal/binding" - "github.com/wailsapp/wails/v2/internal/logger" - "github.com/wailsapp/wails/v2/internal/messagedispatcher" - "github.com/wailsapp/wails/v2/internal/servicebus" - "github.com/wailsapp/wails/v2/internal/signal" - "github.com/wailsapp/wails/v2/internal/subsystem" -) - -// App defines a Wails application structure -type App struct { - appType string - - servicebus *servicebus.ServiceBus - logger *logger.Logger - signal *signal.Manager - options *options.App - - // Subsystems - log *subsystem.Log - runtime *subsystem.Runtime - event *subsystem.Event - //binding *subsystem.Binding - call *subsystem.Call - menu *subsystem.Menu - dispatcher *messagedispatcher.Dispatcher - - menuManager *menumanager.Manager - - // Indicates if the app is in debug mode - debug bool - - // This is our binding DB - bindings *binding.Bindings - - // Application Stores - loglevelStore *runtime.Store - appconfigStore *runtime.Store - - // OnStartup/OnShutdown - startupCallback func(*runtime.Runtime) - shutdownCallback func() - - // Bridge - bridge *bridge.Bridge -} - -// Create App -func CreateApp(appoptions *options.App) (*App, error) { - - // Merge default options - options.MergeDefaults(appoptions) - - // Set up logger - myLogger := logger.New(appoptions.Logger) - - // Create the menu manager - menuManager := menumanager.NewManager() - - // Process the application menu - menuManager.SetApplicationMenu(options.GetApplicationMenu(appoptions)) - - // Process context menus - contextMenus := options.GetContextMenus(appoptions) - for _, contextMenu := range contextMenus { - menuManager.AddContextMenu(contextMenu) - } - - // Process tray menus - trayMenus := options.GetTrayMenus(appoptions) - for _, trayMenu := range trayMenus { - menuManager.AddTrayMenu(trayMenu) - } - - // Create binding exemptions - Ugly hack. There must be a better way - bindingExemptions := []interface{}{appoptions.OnStartup, appoptions.OnShutdown, appoptions.OnDomReady} - - result := &App{ - appType: "dev", - bindings: binding.NewBindings(myLogger, appoptions.Bind, bindingExemptions), - logger: myLogger, - servicebus: servicebus.New(myLogger), - startupCallback: appoptions.OnStartup, - shutdownCallback: appoptions.OnShutdown, - bridge: bridge.NewBridge(myLogger), - menuManager: menuManager, - } - - result.options = appoptions - - // Initialise the app - err := result.Init() - - return result, err - -} - -// Run the application -func (a *App) Run() error { - - var err error - - // Setup a context - var subsystemWaitGroup sync.WaitGroup - parentContext := context.WithValue(context.Background(), "waitgroup", &subsystemWaitGroup) - ctx, cancel := context.WithCancel(parentContext) - defer cancel() - - // Start the service bus - a.servicebus.Debug() - err = a.servicebus.Start() - if err != nil { - return err - } - - runtimesubsystem, err := subsystem.NewRuntime(ctx, a.servicebus, a.logger, a.startupCallback) - if err != nil { - return err - } - a.runtime = runtimesubsystem - err = a.runtime.Start() - if err != nil { - return err - } - - // Application Stores - a.loglevelStore = a.runtime.GoRuntime().Store.New("wails:loglevel", a.options.LogLevel) - a.appconfigStore = a.runtime.GoRuntime().Store.New("wails:appconfig", a.options) - - // Start the logging subsystem - log, err := subsystem.NewLog(a.servicebus, a.logger, a.loglevelStore) - if err != nil { - return err - } - a.log = log - err = a.log.Start() - if err != nil { - return err - } - - // create the dispatcher - dispatcher, err := messagedispatcher.New(a.servicebus, a.logger) - if err != nil { - return err - } - a.dispatcher = dispatcher - err = dispatcher.Start() - if err != nil { - return err - } - - // Start the eventing subsystem - eventsubsystem, err := subsystem.NewEvent(ctx, a.servicebus, a.logger) - if err != nil { - return err - } - a.event = eventsubsystem - err = a.event.Start() - if err != nil { - return err - } - - // Start the menu subsystem - menusubsystem, err := subsystem.NewMenu(ctx, a.servicebus, a.logger, a.menuManager) - if err != nil { - return err - } - a.menu = menusubsystem - err = a.menu.Start() - if err != nil { - return err - } - - // Start the call subsystem - callSubsystem, err := subsystem.NewCall(ctx, a.servicebus, a.logger, a.bindings.DB()) - if err != nil { - return err - } - a.call = callSubsystem - err = a.call.Start() - if err != nil { - return err - } - - // Dump bindings as a debug - bindingDump, err := a.bindings.ToJSON() - if err != nil { - return err - } - - // Generate backend.js - a.bindings.GenerateBackendJS() - - // Setup signal handler - signalsubsystem, err := signal.NewManager(ctx, cancel, a.servicebus, a.logger) - if err != nil { - return err - } - a.signal = signalsubsystem - a.signal.Start() - - err = a.bridge.Run(dispatcher, a.menuManager, bindingDump, a.debug) - a.logger.Trace("Bridge.Run() exited") - if err != nil { - return err - } - - // Close down all the subsystems - a.logger.Trace("Cancelling subsystems") - cancel() - subsystemWaitGroup.Wait() - - a.logger.Trace("Cancelling dispatcher") - dispatcher.Close() - - // Close log - a.logger.Trace("Stopping log") - log.Close() - - a.logger.Trace("Stopping Service bus") - err = a.servicebus.Stop() - if err != nil { - return err - } - - // OnShutdown callback - if a.shutdownCallback != nil { - a.shutdownCallback() - } - return nil - -} -*/ diff --git a/v2/internal/app/hybrid.go b/v2/internal/app/hybrid.go deleted file mode 100644 index c9ff11df..00000000 --- a/v2/internal/app/hybrid.go +++ /dev/null @@ -1,195 +0,0 @@ -//go:build !server && !desktop && hybrid -// +build !server,!desktop,hybrid - -package app - -import ( - "os" - "path/filepath" - - "github.com/leaanthony/clir" - "github.com/wailsapp/wails/v2/internal/binding" - "github.com/wailsapp/wails/v2/internal/ffenestri" - "github.com/wailsapp/wails/v2/internal/logger" - "github.com/wailsapp/wails/v2/internal/messagedispatcher" - "github.com/wailsapp/wails/v2/internal/servicebus" - "github.com/wailsapp/wails/v2/internal/subsystem" - "github.com/wailsapp/wails/v2/internal/webserver" -) - -// Config defines the Application's configuration -type Config struct { - Title string // Title is the value to be displayed in the title bar - Width int // Width is the desired window width - Height int // Height is the desired window height - DevTools bool // DevTools enables or disables the browser development tools - Resizable bool // Resizable when False prevents window resizing - ServerEnabled bool // ServerEnabled when True allows remote connections -} - -// App defines a Wails application structure -type App struct { - config Config - window *ffenestri.Application - webserver *webserver.WebServer - binding *subsystem.Binding - call *subsystem.Call - event *subsystem.Event - log *subsystem.Log - runtime *subsystem.Runtime - - bindings *binding.Bindings - logger *logger.Logger - dispatcher *messagedispatcher.Dispatcher - servicebus *servicebus.ServiceBus - - debug bool -} - -// Create App -func CreateApp(options *Options) *App { - - // Merge default options - options.mergeDefaults() - - // Set up logger - myLogger := logger.New(os.Stdout) - myLogger.SetLogLevel(logger.INFO) - - window := ffenestri.NewApplicationWithConfig(&ffenestri.Config{ - Title: options.Title, - Width: options.Width, - Height: options.Height, - MinWidth: options.MinWidth, - MinHeight: options.MinHeight, - MaxWidth: options.MaxWidth, - MaxHeight: options.MaxHeight, - StartHidden: options.StartHidden, - DevTools: options.DevTools, - - Resizable: !options.DisableResize, - Fullscreen: options.Fullscreen, - }, myLogger) - - app := &App{ - window: window, - webserver: webserver.NewWebServer(myLogger), - servicebus: servicebus.New(myLogger), - logger: myLogger, - bindings: binding.NewBindings(myLogger, options.Bind), - } - - // Initialise the app - app.Init() - - return app -} - -// Run the application -func (a *App) Run() error { - - // Default app options - var port = 8080 - var ip = "localhost" - var suppressLogging = false - - // Create CLI - cli := clir.NewCli(filepath.Base(os.Args[0]), "Desktop/Server Build", "") - - // Setup flags - cli.IntFlag("p", "Port to serve on", &port) - cli.StringFlag("i", "IP to serve on", &ip) - cli.BoolFlag("q", "Suppress logging", &suppressLogging) - - // Setup main action - cli.Action(func() error { - - // Set IP + Port - a.webserver.SetPort(port) - a.webserver.SetIP(ip) - a.webserver.SetBindings(a.bindings) - // Log information (if we aren't suppressing it) - if !suppressLogging { - cli.PrintBanner() - a.logger.Info("Running server at %s", a.webserver.URL()) - } - - a.servicebus.Start() - log, err := subsystem.NewLog(a.servicebus, a.logger) - if err != nil { - return err - } - a.log = log - a.log.Start() - dispatcher, err := messagedispatcher.New(a.servicebus, a.logger) - if err != nil { - return err - } - a.dispatcher = dispatcher - a.dispatcher.Start() - - // Start the runtime - runtime, err := subsystem.NewRuntime(a.servicebus, a.logger) - if err != nil { - return err - } - a.runtime = runtime - a.runtime.Start() - - // Start the binding subsystem - binding, err := subsystem.NewBinding(a.servicebus, a.logger, a.bindings, runtime.GoRuntime()) - if err != nil { - return err - } - a.binding = binding - a.binding.Start() - - // Start the eventing subsystem - event, err := subsystem.NewEvent(a.servicebus, a.logger) - if err != nil { - return err - } - a.event = event - a.event.Start() - - // Start the call subsystem - call, err := subsystem.NewCall(a.servicebus, a.logger, a.bindings.DB()) - if err != nil { - return err - } - a.call = call - a.call.Start() - - // Required so that the WailsInit functions are fired! - runtime.GoRuntime().Events.Emit("wails:loaded") - - // Set IP + Port - a.webserver.SetPort(port) - a.webserver.SetIP(ip) - - // Log information (if we aren't suppressing it) - if !suppressLogging { - cli.PrintBanner() - println("Running server at " + a.webserver.URL()) - } - - // Dump bindings as a debug - bindingDump, err := a.bindings.ToJSON() - if err != nil { - return err - } - - go func() { - if err := a.webserver.Start(dispatcher, event); err != nil { - a.logger.Error("Webserver failed to start %s", err) - } - }() - - result := a.window.Run(dispatcher, bindingDump) - a.servicebus.Stop() - - return result - }) - - return cli.Run() -} diff --git a/v2/internal/app/preflight_default.go b/v2/internal/app/preflight_default.go deleted file mode 100644 index 00197098..00000000 --- a/v2/internal/app/preflight_default.go +++ /dev/null @@ -1,10 +0,0 @@ -//go:build !windows -// +build !windows - -package app - -import "github.com/wailsapp/wails/v2/pkg/options" - -func (a *App) PreflightChecks(options *options.App) error { - return nil -} diff --git a/v2/internal/app/preflight_windows.go b/v2/internal/app/preflight_windows.go deleted file mode 100644 index f8e99497..00000000 --- a/v2/internal/app/preflight_windows.go +++ /dev/null @@ -1,27 +0,0 @@ -//go:build windows -// +build windows - -package app - -import ( - "github.com/wailsapp/wails/v2/internal/ffenestri/windows/wv2runtime" - "github.com/wailsapp/wails/v2/pkg/options" -) - -func (a *App) PreflightChecks(options *options.App) error { - - _ = options - - // Process the webview2 runtime situation. We can pass a strategy in via the `webview2` flag for `wails build`. - // This will determine how wv2runtime.Process will handle a lack of valid runtime. - installedVersion, err := wv2runtime.Process() - if installedVersion != nil { - a.logger.Debug("WebView2 Runtime installed: Name: '%s' Version:'%s' Location:'%s'. Minimum version required: %s.", - installedVersion.Name, installedVersion.Version, installedVersion.Location, wv2runtime.MinimumRuntimeVersion) - } - if err != nil { - return err - } - - return nil -} diff --git a/v2/internal/app/production.go b/v2/internal/app/production.go deleted file mode 100644 index 9a255482..00000000 --- a/v2/internal/app/production.go +++ /dev/null @@ -1,12 +0,0 @@ -//go:build production -// +build production - -package app - -import "github.com/wailsapp/wails/v2/pkg/logger" - -// Init initialises the application for a production environment -func (a *App) Init() error { - a.logger.SetLogLevel(logger.ERROR) - return nil -} diff --git a/v2/internal/app/server.go b/v2/internal/app/server.go deleted file mode 100644 index 06734f0a..00000000 --- a/v2/internal/app/server.go +++ /dev/null @@ -1,165 +0,0 @@ -//go:build server && !desktop -// +build server,!desktop - -package app - -import ( - "context" - "os" - "path/filepath" - - "github.com/wailsapp/wails/v2/pkg/options" - - "github.com/leaanthony/clir" - "github.com/wailsapp/wails/v2/internal/binding" - "github.com/wailsapp/wails/v2/internal/logger" - "github.com/wailsapp/wails/v2/internal/messagedispatcher" - "github.com/wailsapp/wails/v2/internal/servicebus" - "github.com/wailsapp/wails/v2/internal/subsystem" - "github.com/wailsapp/wails/v2/internal/webserver" -) - -// App defines a Wails application structure -type App struct { - appType string - - binding *subsystem.Binding - call *subsystem.Call - event *subsystem.Event - log *subsystem.Log - - options *options.App - - bindings *binding.Bindings - logger *logger.Logger - dispatcher *messagedispatcher.Dispatcher - servicebus *servicebus.ServiceBus - webserver *webserver.WebServer - - debug bool - - // OnStartup/OnShutdown - startupCallback func(ctx context.Context) - shutdownCallback func() -} - -// Create App -func CreateApp(appoptions *options.App) (*App, error) { - - // Merge default options - options.MergeDefaults(appoptions) - - // Set up logger - myLogger := logger.New(appoptions.Logger) - myLogger.SetLogLevel(appoptions.LogLevel) - - result := &App{ - appType: "server", - bindings: binding.NewBindings(myLogger, options.Bind), - logger: myLogger, - servicebus: servicebus.New(myLogger), - webserver: webserver.NewWebServer(myLogger), - startupCallback: appoptions.OnStartup, - shutdownCallback: appoptions.OnShutdown, - } - - // Initialise app - result.Init() - - return result, nil -} - -// Run the application -func (a *App) Run() error { - - // Default app options - var port = 8080 - var ip = "localhost" - var SuppressLogging = false - var debugMode = false - - // Create CLI - cli := clir.NewCli(filepath.Base(os.Args[0]), "Server Build", "") - - // Setup flags - cli.IntFlag("p", "Port to serve on", &port) - cli.StringFlag("i", "IP to serve on", &ip) - cli.BoolFlag("d", "Debug mode", &debugMode) - cli.BoolFlag("q", "Suppress logging", &SuppressLogging) - - // Setup main action - cli.Action(func() error { - - // Set IP + Port - a.webserver.SetPort(port) - a.webserver.SetIP(ip) - a.webserver.SetBindings(a.bindings) - // Log information (if we aren't Suppressing it) - if !SuppressLogging { - cli.PrintBanner() - a.logger.Info("Running server at %s", a.webserver.URL()) - } - - if debugMode { - a.servicebus.Debug() - } - - // Start the runtime - runtime, err := subsystem.NewRuntime(a.servicebus, a.logger, a.startupCallback) - if err != nil { - return err - } - a.runtime = runtime - a.runtime.Start() - - a.servicebus.Start() - log, err := subsystem.NewLog(a.servicebus, a.logger) - if err != nil { - return err - } - a.log = log - a.log.Start() - dispatcher, err := messagedispatcher.New(a.servicebus, a.logger) - if err != nil { - return err - } - a.dispatcher = dispatcher - a.dispatcher.Start() - - // Start the binding subsystem - binding, err := subsystem.NewBinding(a.servicebus, a.logger, a.bindings) - if err != nil { - return err - } - a.binding = binding - a.binding.Start() - - // Start the eventing subsystem - event, err := subsystem.NewEvent(a.servicebus, a.logger) - if err != nil { - return err - } - a.event = event - a.event.Start() - - // Start the call subsystem - call, err := subsystem.NewCall(a.servicebus, a.logger, a.bindings.DB(), a.runtime.GoRuntime()) - if err != nil { - return err - } - a.call = call - a.call.Start() - - // Required so that the WailsInit functions are fired! - runtime.GoRuntime().Events.Emit("wails:loaded") - - if err := a.webserver.Start(dispatcher, event); err != nil { - a.logger.Error("Webserver failed to start %s", err) - return err - } - - return nil - }) - - return cli.Run() -} diff --git a/v2/internal/assetdb/assetdb.go b/v2/internal/assetdb/assetdb.go deleted file mode 100644 index 54892952..00000000 --- a/v2/internal/assetdb/assetdb.go +++ /dev/null @@ -1,112 +0,0 @@ -package assetdb - -import ( - "fmt" - "strings" - "unsafe" -) - -// AssetDB is a database for assets encoded as byte slices -type AssetDB struct { - db map[string][]byte -} - -// NewAssetDB creates a new AssetDB and initialises a blank db -func NewAssetDB() *AssetDB { - return &AssetDB{ - db: make(map[string][]byte), - } -} - -// AddAsset saves the given byte slice under the given name -func (a *AssetDB) AddAsset(name string, data []byte) { - a.db[name] = data -} - -// Remove removes the named asset -func (a *AssetDB) Remove(name string) { - delete(a.db, name) -} - -// Asset retrieves the byte slice for the given name -func (a *AssetDB) Read(name string) ([]byte, error) { - result := a.db[name] - if result == nil { - return nil, fmt.Errorf("asset '%s' not found", name) - } - return result, nil -} - -// AssetAsString returns the asset as a string. -// It also returns a boolean indicating whether the asset existed or not. -func (a *AssetDB) String(name string) (string, error) { - asset, err := a.Read(name) - if err != nil { - return "", err - } - return *(*string)(unsafe.Pointer(&asset)), nil -} - -func (a *AssetDB) Dump() { - fmt.Printf("Assets:\n") - for k, _ := range a.db { - fmt.Println(k) - } -} - -// Serialize converts the entire database to a file that when compiled will -// reconstruct the AssetDB during init() -// name: name of the asset.AssetDB instance -// pkg: package name placed at the top of the file -func (a *AssetDB) Serialize(name, pkg string) string { - var cdata strings.Builder - // Set buffer size to 4k - cdata.Grow(4096) - - // Write header - header := `// DO NOT EDIT - Generated automatically -package %s - -import "github.com/wailsapp/wails/v2/internal/assetdb" - -var ( - %s *assetdb.AssetDB = assetdb.NewAssetDB() -) - -// AssetsDB is a clean interface to the assetdb.AssetDB struct -type AssetsDB interface { - Read(string) ([]byte, error) - String(string) (string, error) -} - -// Assets returns the asset database -func Assets() AssetsDB { - return %s -} - -func init() { -` - cdata.WriteString(fmt.Sprintf(header, pkg, name, name)) - - for aname, bytes := range a.db { - cdata.WriteString(fmt.Sprintf("\t%s.AddAsset(\"%s\", []byte{", - name, - aname)) - - l := len(bytes) - if l == 0 { - cdata.WriteString("0x00})\n") - continue - } - - // Convert each byte to hex - for _, b := range bytes[:l-1] { - cdata.WriteString(fmt.Sprintf("0x%x, ", b)) - } - cdata.WriteString(fmt.Sprintf("0x%x})\n", bytes[l-1])) - } - - cdata.WriteString(`}`) - - return cdata.String() -} diff --git a/v2/internal/assetdb/assetdb_test.go b/v2/internal/assetdb/assetdb_test.go deleted file mode 100644 index b3f34b9f..00000000 --- a/v2/internal/assetdb/assetdb_test.go +++ /dev/null @@ -1,70 +0,0 @@ -package assetdb - -import "testing" -import "github.com/matryer/is" - -func TestExistsAsBytes(t *testing.T) { - - is := is.New(t) - - var helloworld = []byte{72, 101, 108, 108, 111, 44, 32, 87, 111, 114, 108, 100, 33} - - db := NewAssetDB() - db.AddAsset("hello", helloworld) - - result, err := db.Read("hello") - - is.True(err == nil) - is.Equal(result, helloworld) -} - -func TestNotExistsAsBytes(t *testing.T) { - - is := is.New(t) - - var helloworld = []byte{72, 101, 108, 108, 111, 44, 32, 87, 111, 114, 108, 100, 33} - - db := NewAssetDB() - db.AddAsset("hello4", helloworld) - - result, err := db.Read("hello") - - is.True(err != nil) - is.True(result == nil) -} - -func TestExistsAsString(t *testing.T) { - - is := is.New(t) - - var helloworld = []byte{72, 101, 108, 108, 111, 44, 32, 87, 111, 114, 108, 100, 33} - - db := NewAssetDB() - db.AddAsset("hello", helloworld) - - result, err := db.String("hello") - - // Ensure it exists - is.True(err == nil) - - // Ensure the string is the same as the byte slice - is.Equal(result, "Hello, World!") -} - -func TestNotExistsAsString(t *testing.T) { - - is := is.New(t) - - var helloworld = []byte{72, 101, 108, 108, 111, 44, 32, 87, 111, 114, 108, 100, 33} - - db := NewAssetDB() - db.AddAsset("hello", helloworld) - - result, err := db.String("help") - - // Ensure it doesn't exist - is.True(err != nil) - - // Ensure the string is blank - is.Equal(result, "") -} diff --git a/v2/internal/assetdb/filesystem.go b/v2/internal/assetdb/filesystem.go deleted file mode 100644 index 954d97ca..00000000 --- a/v2/internal/assetdb/filesystem.go +++ /dev/null @@ -1,178 +0,0 @@ -//go:build !desktop -// +build !desktop - -package assetdb - -import ( - "errors" - "io" - "net/http" - "os" - "path" - "sort" - "strings" - "time" -) - -var errWhence = errors.New("Seek: invalid whence") -var errOffset = errors.New("Seek: invalid offset") - -// Open implements the http.FileSystem interface for the AssetDB -func (a *AssetDB) Open(name string) (http.File, error) { - if name == "/" || name == "" { - return &Entry{name: "/", dir: true, db: a}, nil - } - - if data, ok := a.db[name]; ok { - return &Entry{name: name, data: data, size: len(data)}, nil - } else { - for n, _ := range a.db { - if strings.HasPrefix(n, name+"/") { - return &Entry{name: name, db: a, dir: true}, nil - } - } - } - return &Entry{}, os.ErrNotExist -} - -// readdir returns the directory entries for the requested directory -func (a *AssetDB) readdir(name string) ([]os.FileInfo, error) { - dir := name - var ents []string - - fim := make(map[string]os.FileInfo) - for fn, data := range a.db { - if strings.HasPrefix(fn, dir) { - pieces := strings.Split(fn[len(dir)+1:], "/") - if len(pieces) == 1 { - fim[pieces[0]] = FI{name: pieces[0], dir: false, size: len(data)} - ents = append(ents, pieces[0]) - } else { - fim[pieces[0]] = FI{name: pieces[0], dir: true, size: -1} - ents = append(ents, pieces[0]) - } - } - } - - if len(ents) == 0 { - return nil, os.ErrNotExist - } - - sort.Strings(ents) - var list []os.FileInfo - for _, dir := range ents { - list = append(list, fim[dir]) - } - return list, nil -} - -// Entry implements the http.File interface to allow for -// use in the http.FileSystem implementation of AssetDB -type Entry struct { - name string - data []byte - dir bool - size int - db *AssetDB - off int -} - -// Close is a noop -func (e Entry) Close() error { - return nil -} - -// Read fills the slice provided returning how many bytes were written -// and any errors encountered -func (e *Entry) Read(p []byte) (n int, err error) { - if e.off >= e.size { - return 0, io.EOF - } - numout := len(p) - if numout > e.size { - numout = e.size - } - for i := 0; i < numout; i++ { - p[i] = e.data[e.off+i] - } - e.off += numout - n = int(numout) - err = nil - return -} - -// Seek seeks to the specified offset from the location specified by whence -func (e *Entry) Seek(offset int64, whence int) (int64, error) { - switch whence { - default: - return 0, errWhence - case io.SeekStart: - offset += 0 - case io.SeekCurrent: - offset += int64(e.off) - case io.SeekEnd: - offset += int64(e.size) - } - - if offset < 0 { - return 0, errOffset - } - e.off = int(offset) - return offset, nil -} - -// Readdir returns the directory entries inside this entry if it is a directory -func (e Entry) Readdir(count int) ([]os.FileInfo, error) { - ents := []os.FileInfo{} - if !e.dir { - return ents, errors.New("Not a directory") - } - return e.db.readdir(e.name) -} - -// Stat returns information about this directory entry -func (e Entry) Stat() (os.FileInfo, error) { - return FI{e.name, e.size, e.dir}, nil -} - -// FI is the AssetDB implementation of os.FileInfo. -type FI struct { - name string - size int - dir bool -} - -// IsDir returns true if this is a directory -func (fi FI) IsDir() bool { - return fi.dir -} - -// ModTime always returns now -func (fi FI) ModTime() time.Time { - return time.Time{} -} - -// Mode returns the file as readonly and directories -// as world writeable and executable -func (fi FI) Mode() os.FileMode { - if fi.IsDir() { - return 0755 | os.ModeDir - } - return 0444 -} - -// Name returns the name of this object without -// any leading slashes -func (fi FI) Name() string { - return path.Base(fi.name) -} - -// Size returns the size of this item -func (fi FI) Size() int64 { - return int64(fi.size) -} - -// Sys returns nil -func (fi FI) Sys() interface{} { - return nil -} diff --git a/v2/internal/assetdb/filesystem_test.go b/v2/internal/assetdb/filesystem_test.go deleted file mode 100644 index 1c2ed94a..00000000 --- a/v2/internal/assetdb/filesystem_test.go +++ /dev/null @@ -1,108 +0,0 @@ -package assetdb - -import ( - "fmt" - "os" - "testing" - - "github.com/matryer/is" -) - -func TestOpenLeadingSlash(t *testing.T) { - is := is.New(t) - - var helloworld = []byte{72, 101, 108, 108, 111, 44, 32, 87, 111, 114, 108, 100, 33} - - db := NewAssetDB() - db.AddAsset("/hello", helloworld) - - file, err := db.Open("/hello") - // Ensure it does exist - is.True(err == nil) - - buff := make([]byte, len(helloworld)) - n, err := file.Read(buff) - fmt.Printf("Error %v\n", err) - is.True(err == nil) - is.Equal(n, len(helloworld)) - result := string(buff) - - // Ensure the string is blank - is.Equal(result, string(helloworld)) -} - -func TestOpen(t *testing.T) { - is := is.New(t) - - var helloworld = []byte{72, 101, 108, 108, 111, 44, 32, 87, 111, 114, 108, 100, 33} - - db := NewAssetDB() - db.AddAsset("/hello", helloworld) - - file, err := db.Open("/hello") - - // Ensure it does exist - is.True(err == nil) - - buff := make([]byte, len(helloworld)) - n, err := file.Read(buff) - is.True(err == nil) - is.Equal(n, len(helloworld)) - result := string(buff) - - // Ensure the string is blank - is.Equal(result, string(helloworld)) -} - -func TestReaddir(t *testing.T) { - is := is.New(t) - - var helloworld = []byte{72, 101, 108, 108, 111, 44, 32, 87, 111, 114, 108, 100, 33} - - db := NewAssetDB() - db.AddAsset("/hello", helloworld) - db.AddAsset("/directory/hello", helloworld) - db.AddAsset("/directory/subdirectory/hello", helloworld) - - dir, err := db.Open("/doesntexist") - is.True(err == os.ErrNotExist) - ents, err := dir.Readdir(-1) - is.Equal([]os.FileInfo{}, ents) - - dir, err = db.Open("/") - is.True(dir != nil) - is.True(err == nil) - ents, err = dir.Readdir(-1) - is.True(err == nil) - is.Equal(3, len(ents)) -} - -func TestReaddirSubdirectory(t *testing.T) { - is := is.New(t) - - var helloworld = []byte{72, 101, 108, 108, 111, 44, 32, 87, 111, 114, 108, 100, 33} - - db := NewAssetDB() - db.AddAsset("/hello", helloworld) - db.AddAsset("/directory/hello", helloworld) - db.AddAsset("/directory/subdirectory/hello", helloworld) - - expected := []os.FileInfo{ - FI{name: "hello", dir: false, size: len(helloworld)}, - FI{name: "subdirectory", dir: true, size: -1}, - } - - dir, err := db.Open("/directory") - is.True(dir != nil) - is.True(err == nil) - ents, err := dir.Readdir(-1) - is.Equal(expected, ents) - - // Check sub-subdirectory - dir, err = db.Open("/directory/subdirectory") - is.True(dir != nil) - is.True(err == nil) - ents, err = dir.Readdir(-1) - is.True(err == nil) - is.Equal([]os.FileInfo{FI{name: "hello", size: len(helloworld)}}, ents) -} diff --git a/v2/internal/bind/bind.go b/v2/internal/bind/bind.go deleted file mode 100644 index 156fd4ce..00000000 --- a/v2/internal/bind/bind.go +++ /dev/null @@ -1,9 +0,0 @@ -package bind - -func IsStructPointer(value interface{}) bool { - switch t := value.(type) { - default: - println(t) - } - return false -} diff --git a/v2/internal/bridge/bridge.go b/v2/internal/bridge/bridge.go deleted file mode 100644 index 1ea509d3..00000000 --- a/v2/internal/bridge/bridge.go +++ /dev/null @@ -1,113 +0,0 @@ -package bridge - -import ( - "context" - "log" - "net/http" - "sync" - - "github.com/wailsapp/wails/v2/internal/menumanager" - - "github.com/wailsapp/wails/v2/internal/messagedispatcher" - - "github.com/gorilla/websocket" - "github.com/wailsapp/wails/v2/internal/logger" -) - -type Bridge struct { - upgrader websocket.Upgrader - server *http.Server - myLogger *logger.Logger - - bindings string - dispatcher *messagedispatcher.Dispatcher - - mu sync.Mutex - sessions map[string]*session - - ctx context.Context - cancel context.CancelFunc - - // Dialog client - dialog *messagedispatcher.DispatchClient - - // Menus - menumanager *menumanager.Manager -} - -func NewBridge(myLogger *logger.Logger) *Bridge { - result := &Bridge{ - myLogger: myLogger, - upgrader: websocket.Upgrader{CheckOrigin: func(r *http.Request) bool { return true }}, - sessions: make(map[string]*session), - } - - myLogger.SetLogLevel(1) - - ctx, cancel := context.WithCancel(context.Background()) - result.ctx = ctx - result.cancel = cancel - result.server = &http.Server{Addr: ":34115"} - http.HandleFunc("/bridge", result.wsBridgeHandler) - return result -} - -func (b *Bridge) Run(dispatcher *messagedispatcher.Dispatcher, menumanager *menumanager.Manager, bindings string, debug bool) error { - - // Ensure we cancel the context when we shutdown - defer b.cancel() - - b.bindings = bindings - b.dispatcher = dispatcher - b.menumanager = menumanager - - // Setup dialog handler - dialogClient := NewDialogClient(b.myLogger) - b.dialog = dispatcher.RegisterClient(dialogClient) - dialogClient.dispatcher = b.dialog - - b.myLogger.Info("Bridge mode started.") - - err := b.server.ListenAndServe() - if err != nil && err != http.ErrServerClosed { - return err - } - - return nil -} - -func (b *Bridge) wsBridgeHandler(w http.ResponseWriter, r *http.Request) { - c, err := b.upgrader.Upgrade(w, r, nil) - if err != nil { - log.Print("upgrade:", err) - return - } - - if err != nil { - http.Error(w, "Could not open websocket connection", http.StatusBadRequest) - } - b.myLogger.Info("Connection from frontend accepted [%s].", c.RemoteAddr().String()) - b.startSession(c) - -} - -func (b *Bridge) startSession(conn *websocket.Conn) { - - // Create a new session for this connection - s := newSession(conn, b.menumanager, b.bindings, b.dispatcher, b.myLogger, b.ctx) - - // Setup the close handler - conn.SetCloseHandler(func(int, string) error { - b.myLogger.Info("Connection dropped [%s].", s.Identifier()) - b.dispatcher.RemoveClient(s.client) - b.mu.Lock() - delete(b.sessions, s.Identifier()) - b.mu.Unlock() - return nil - }) - - b.mu.Lock() - go s.start(len(b.sessions) == 0) - b.sessions[s.Identifier()] = s - b.mu.Unlock() -} diff --git a/v2/internal/bridge/client.go b/v2/internal/bridge/client.go deleted file mode 100644 index 2c2db80e..00000000 --- a/v2/internal/bridge/client.go +++ /dev/null @@ -1,141 +0,0 @@ -package bridge - -import ( - "github.com/wailsapp/wails/v2/pkg/runtime" -) - -type BridgeClient struct { - session *session - - // Tray menu cache to send to reconnecting clients - messageCache chan string -} - -func (b BridgeClient) DeleteTrayMenuByID(id string) { - b.session.sendMessage("TD" + id) -} - -func NewBridgeClient() *BridgeClient { - return &BridgeClient{ - messageCache: make(chan string, 100), - } -} - -func (b BridgeClient) Quit() { - b.session.log.Info("Quit unsupported in Bridge mode") -} - -func (b BridgeClient) NotifyEvent(message string) { - b.session.sendMessage("n" + message) - b.session.log.Info("Notify: %s", message) -} - -func (b BridgeClient) CallResult(message string) { - b.session.sendMessage("c" + message) -} - -func (b BridgeClient) OpenFileDialog(dialogOptions runtime.OpenDialogOptions, callbackID string) { - // Handled by dialog_client -} - -func (b BridgeClient) OpenMultipleFilesDialog(dialogOptions runtime.OpenDialogOptions, callbackID string) { - // Handled by dialog_client -} - -func (b BridgeClient) OpenDirectoryDialog(dialogOptions runtime.OpenDialogOptions, callbackID string) { - // Handled by dialog_client -} - -func (b BridgeClient) SaveDialog(dialogOptions runtime.SaveDialogOptions, callbackID string) { - // Handled by dialog_client -} - -func (b BridgeClient) MessageDialog(dialogOptions runtime.MessageDialogOptions, callbackID string) { - // Handled by dialog_client -} - -func (b BridgeClient) WindowSetTitle(title string) { - b.session.log.Info("WindowSetTitle unsupported in Bridge mode") -} - -func (b BridgeClient) WindowShow() { - b.session.log.Info("WindowShow unsupported in Bridge mode") -} - -func (b BridgeClient) WindowHide() { - b.session.log.Info("WindowHide unsupported in Bridge mode") -} - -func (b BridgeClient) WindowCenter() { - b.session.log.Info("WindowCenter unsupported in Bridge mode") -} - -func (b BridgeClient) WindowMaximise() { - b.session.log.Info("WindowMaximise unsupported in Bridge mode") -} - -func (b BridgeClient) WindowUnmaximise() { - b.session.log.Info("WindowUnmaximise unsupported in Bridge mode") -} - -func (b BridgeClient) WindowMinimise() { - b.session.log.Info("WindowMinimise unsupported in Bridge mode") -} - -func (b BridgeClient) WindowUnminimise() { - b.session.log.Info("WindowUnminimise unsupported in Bridge mode") -} - -func (b BridgeClient) WindowPosition(x int, y int) { - b.session.log.Info("WindowPosition unsupported in Bridge mode") -} - -func (b BridgeClient) WindowSize(width int, height int) { - b.session.log.Info("WindowSize unsupported in Bridge mode") -} - -func (b BridgeClient) WindowSetMinSize(width int, height int) { - b.session.log.Info("WindowSetMinSize unsupported in Bridge mode") -} - -func (b BridgeClient) WindowSetMaxSize(width int, height int) { - b.session.log.Info("WindowSetMaxSize unsupported in Bridge mode") -} - -func (b BridgeClient) WindowFullscreen() { - b.session.log.Info("WindowFullscreen unsupported in Bridge mode") -} - -func (b BridgeClient) WindowUnfullscreen() { - b.session.log.Info("WindowUnfullscreen unsupported in Bridge mode") -} - -func (b BridgeClient) WindowSetColour(colour int) { - b.session.log.Info("WindowSetColour unsupported in Bridge mode") -} - -func (b BridgeClient) DarkModeEnabled(callbackID string) { - b.session.log.Info("DarkModeEnabled unsupported in Bridge mode") -} - -func (b BridgeClient) MenuSetApplicationMenu(menuJSON string) { - b.session.log.Info("MenuSetApplicationMenu unsupported in Bridge mode") -} - -func (b BridgeClient) SetTrayMenu(trayMenuJSON string) { - b.session.sendMessage("TS" + trayMenuJSON) -} - -func (b BridgeClient) UpdateTrayMenuLabel(trayMenuJSON string) { - b.session.sendMessage("TU" + trayMenuJSON) -} - -func (b BridgeClient) UpdateContextMenu(contextMenuJSON string) { - b.session.log.Info("UpdateContextMenu unsupported in Bridge mode") -} - -func newBridgeClient(session *session) *BridgeClient { - return &BridgeClient{ - session: session, - } -} diff --git a/v2/internal/bridge/darwin.js b/v2/internal/bridge/darwin.js deleted file mode 100644 index 4758b4e2..00000000 --- a/v2/internal/bridge/darwin.js +++ /dev/null @@ -1 +0,0 @@ -var Wails=function(n){var t={};function e(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return n[r].call(i.exports,i,i.exports,e),i.l=!0,i.exports}return e.m=n,e.c=t,e.d=function(n,t,r){e.o(n,t)||Object.defineProperty(n,t,{enumerable:!0,get:r})},e.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},e.t=function(n,t){if(1&t&&(n=e(n)),8&t)return n;if(4&t&&"object"==typeof n&&n&&n.__esModule)return n;var r=Object.create(null);if(e.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:n}),2&t&&"string"!=typeof n)for(var i in n)e.d(r,i,function(t){return n[t]}.bind(null,i));return r},e.n=function(n){var t=n&&n.__esModule?function(){return n.default}:function(){return n};return e.d(t,"a",t),t},e.o=function(n,t){return Object.prototype.hasOwnProperty.call(n,t)},e.p="",e(e.s=0)}([function(n,t,e){"use strict";e.r(t);var r={};e.r(r),e.d(r,"Trace",(function(){return v})),e.d(r,"Print",(function(){return p})),e.d(r,"Debug",(function(){return y})),e.d(r,"Info",(function(){return m})),e.d(r,"Warning",(function(){return b})),e.d(r,"Error",(function(){return g})),e.d(r,"Fatal",(function(){return h})),e.d(r,"SetLogLevel",(function(){return S})),e.d(r,"Level",(function(){return E}));var i={};e.r(i),e.d(i,"Open",(function(){return x}));var o={};e.r(o),e.d(o,"Center",(function(){return N})),e.d(o,"SetTitle",(function(){return T})),e.d(o,"Fullscreen",(function(){return j})),e.d(o,"UnFullscreen",(function(){return D})),e.d(o,"SetSize",(function(){return I})),e.d(o,"SetPosition",(function(){return P})),e.d(o,"Hide",(function(){return A})),e.d(o,"Show",(function(){return J})),e.d(o,"Maximise",(function(){return L})),e.d(o,"Unmaximise",(function(){return R})),e.d(o,"Minimise",(function(){return _})),e.d(o,"Unminimise",(function(){return F})),e.d(o,"Close",(function(){return U}));var a={};e.r(a),e.d(a,"Open",(function(){return B})),e.d(a,"Save",(function(){return H})),e.d(a,"Message",(function(){return G}));var u={};e.r(u),e.d(u,"New",(function(){return en}));var c={};e.r(c),e.d(c,"SetIcon",(function(){return rn}));var l={AppType:"desktop",Platform:function(){return"darwin"}};var s=[];function f(n){s.push(n)}function d(n){if(function(n){window.wailsInvoke(n)}(n),s.length>0)for(var t=0;t0)var a=setTimeout((function(){i(Error("Call to "+n+" timed out. Request ID: "+o))}),e);k[o]={timeoutHandle:a,reject:i,resolve:r};try{var u={name:n,args:t,callbackID:o};d("C"+JSON.stringify(u))}catch(n){console.error(n)}}))}function W(n){var t;try{t=JSON.parse(n)}catch(t){var e="Invalid JSON passed to callback: ".concat(t.message,". Message: ").concat(n);throw y(e),new Error(e)}var r=t.callbackid,i=k[r];if(!i){var o="Callback '".concat(r,"' not registered!!!");throw console.error(o),new Error(o)}clearTimeout(i.timeoutHandle),delete k[r],t.error?i.reject(t.error):i.resolve(t.result)}function M(n){var t=[].slice.apply(arguments).slice(1);return C(".wails."+n,t)}function x(n){return d("RBO"+n)}function N(){d("Wc")}function T(n){d("WT"+n)}function j(){d("WF")}function D(){d("Wf")}function I(n,t){d("Ws:"+n+":"+t)}function P(n,t){d("Wp:"+n+":"+t)}function A(){d("WH")}function J(){d("WS")}function L(){d("WM")}function R(){d("WU")}function _(){d("Wm")}function F(){d("Wu")}function U(){d("WC")}function B(n){return M("Dialog.Open",n)}function H(n){return M("Dialog.Save",n)}function G(n){return M("Dialog.Message",n)}O=window.crypto?function(){var n=new Uint32Array(1);return window.crypto.getRandomValues(n)[0]}:function(){return 9007199254740991*Math.random()},window.backend={};var q=function n(t,e){!function(n,t){if(!(n instanceof t))throw new TypeError("Cannot call a class as a function")}(this,n),e=e||-1,this.Callback=function(n){return t.apply(null,n),-1!==e&&0===(e-=1)}},z={};function V(n,t,e){z[n]=z[n]||[];var r=new q(t,e);console.log("Pushing event listener: "+n),z[n].push(r)}function K(n,t){V(n,t)}function Q(n,t){V(n,t,1)}function X(n){var t=n.name;if(z[t]){for(var e=z[t].slice(),r=0;r0)for(var t=0;t0)var a=setTimeout((function(){i(Error("Call to "+n+" timed out. Request ID: "+o))}),e);k[o]={timeoutHandle:a,reject:i,resolve:r};try{var u={name:n,args:t,callbackID:o};d("C"+JSON.stringify(u))}catch(n){console.error(n)}}))}function W(n){var t;try{t=JSON.parse(n)}catch(t){var e="Invalid JSON passed to callback: ".concat(t.message,". Message: ").concat(n);throw y(e),new Error(e)}var r=t.callbackid,i=k[r];if(!i){var o="Callback '".concat(r,"' not registered!!!");throw console.error(o),new Error(o)}clearTimeout(i.timeoutHandle),delete k[r],t.error?i.reject(t.error):i.resolve(t.result)}function x(n){var t=[].slice.apply(arguments).slice(1);return C(".wails."+n,t)}function M(n){return d("RBO"+n)}function N(){d("Wc")}function T(n){d("WT"+n)}function j(){d("WF")}function D(){d("Wf")}function I(n,t){d("Ws:"+n+":"+t)}function P(n,t){d("Wp:"+n+":"+t)}function A(){d("WH")}function J(){d("WS")}function L(){d("WM")}function R(){d("WU")}function _(){d("Wm")}function F(){d("Wu")}function U(){d("WC")}function B(n){return x("Dialog.Open",n)}function H(n){return x("Dialog.Save",n)}function G(n){return x("Dialog.Message",n)}O=window.crypto?function(){var n=new Uint32Array(1);return window.crypto.getRandomValues(n)[0]}:function(){return 9007199254740991*Math.random()},window.backend={};var q=function n(t,e){!function(n,t){if(!(n instanceof t))throw new TypeError("Cannot call a class as a function")}(this,n),e=e||-1,this.Callback=function(n){return t.apply(null,n),-1!==e&&0===(e-=1)}},z={};function V(n,t,e){z[n]=z[n]||[];var r=new q(t,e);console.log("Pushing event listener: "+n),z[n].push(r)}function K(n,t){V(n,t)}function Q(n,t){V(n,t,1)}function X(n){var t=n.name;if(z[t]){for(var e=z[t].slice(),r=0;r:. -func (s *session) Identifier() string { - if s.conn != nil { - return s.conn.RemoteAddr().String() - } - return "" -} - -func (s *session) sendMessage(msg string) error { - if !s.done { - s.writeChan <- []byte(msg) - } - return nil -} - -func (s *session) start(firstSession bool) { - s.log.SetLogLevel(1) - s.log.Info("Connected to frontend.") - go s.writePump() - - var wailsRuntime string - switch runtime.GOOS { - case "darwin": - wailsRuntime = darwinRuntime - case "windows": - wailsRuntime = windowsRuntime - case "linux": - wailsRuntime = linuxRuntime - default: - log.Fatal("platform not supported") - } - - bindingsMessage := "window.wailsbindings = `" + s.bindings + "`;" - s.log.Info(bindingsMessage) - bootstrapMessage := bindingsMessage + wailsRuntime - - err := s.sendMessage("b" + bootstrapMessage) - if err != nil { - s.log.Error(err.Error()) - } - - // Send menus - traymenus, err := s.menumanager.GetTrayMenus() - if err != nil { - s.log.Error(err.Error()) - } - - for _, trayMenu := range traymenus { - err := s.sendMessage("TS" + trayMenu) - if err != nil { - s.log.Error(err.Error()) - } - } - - for { - messageType, buffer, err := s.conn.ReadMessage() - if messageType == -1 { - return - } - if err != nil { - s.log.Error("Error reading message: %v", err) - err = s.conn.Close() - return - } - - message := string(buffer) - - s.log.Debug("Got message: %#v\n", message) - - // Dispatch message as normal - s.client.DispatchMessage(message) - - if s.done { - break - } - } -} - -// Shutdown -func (s *session) Shutdown() { - err := s.conn.Close() - if err != nil { - s.log.Error(err.Error()) - } - s.done = true - s.log.Info("session %v exit", s.Identifier()) -} - -// writePump pulls messages from the writeChan and sends them to the client -// since it uses a channel to read the messages the socket is protected without locks -func (s *session) writePump() { - s.log.Debug("Session %v - writePump start", s.Identifier()) - defer s.log.Debug("Session %v - writePump shutdown", s.Identifier()) - for { - select { - case <-s.ctx.Done(): - s.Shutdown() - return - case msg, ok := <-s.writeChan: - err := s.conn.SetWriteDeadline(time.Now().Add(1 * time.Second)) - if err != nil { - s.log.Error(err.Error()) - } - if !ok { - s.log.Debug("writeChan was closed!") - err := s.conn.WriteMessage(websocket.CloseMessage, []byte{}) - if err != nil { - s.log.Error(err.Error()) - } - return - } - - if err := s.conn.WriteMessage(websocket.TextMessage, msg); err != nil { - s.log.Debug(err.Error()) - return - } - } - } -} diff --git a/v2/internal/bridge/windows.js b/v2/internal/bridge/windows.js deleted file mode 100644 index 281f47bf..00000000 --- a/v2/internal/bridge/windows.js +++ /dev/null @@ -1 +0,0 @@ -var Wails=function(n){var t={};function e(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return n[r].call(i.exports,i,i.exports,e),i.l=!0,i.exports}return e.m=n,e.c=t,e.d=function(n,t,r){e.o(n,t)||Object.defineProperty(n,t,{enumerable:!0,get:r})},e.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},e.t=function(n,t){if(1&t&&(n=e(n)),8&t)return n;if(4&t&&"object"==typeof n&&n&&n.__esModule)return n;var r=Object.create(null);if(e.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:n}),2&t&&"string"!=typeof n)for(var i in n)e.d(r,i,function(t){return n[t]}.bind(null,i));return r},e.n=function(n){var t=n&&n.__esModule?function(){return n.default}:function(){return n};return e.d(t,"a",t),t},e.o=function(n,t){return Object.prototype.hasOwnProperty.call(n,t)},e.p="",e(e.s=0)}([function(n,t,e){"use strict";e.r(t);var r={};e.r(r),e.d(r,"Trace",(function(){return v})),e.d(r,"Print",(function(){return p})),e.d(r,"Debug",(function(){return y})),e.d(r,"Info",(function(){return m})),e.d(r,"Warning",(function(){return b})),e.d(r,"Error",(function(){return g})),e.d(r,"Fatal",(function(){return h})),e.d(r,"SetLogLevel",(function(){return S})),e.d(r,"Level",(function(){return E}));var i={};e.r(i),e.d(i,"Open",(function(){return T}));var o={};e.r(o),e.d(o,"Center",(function(){return j})),e.d(o,"SetTitle",(function(){return x})),e.d(o,"Fullscreen",(function(){return M})),e.d(o,"UnFullscreen",(function(){return I})),e.d(o,"SetSize",(function(){return D})),e.d(o,"SetPosition",(function(){return P})),e.d(o,"Hide",(function(){return A})),e.d(o,"Show",(function(){return J})),e.d(o,"Maximise",(function(){return L})),e.d(o,"Unmaximise",(function(){return R})),e.d(o,"Minimise",(function(){return _})),e.d(o,"Unminimise",(function(){return F})),e.d(o,"Close",(function(){return U}));var a={};e.r(a),e.d(a,"Open",(function(){return B})),e.d(a,"Save",(function(){return H})),e.d(a,"Message",(function(){return G}));var u={};e.r(u),e.d(u,"New",(function(){return en}));var c={};e.r(c),e.d(c,"SetIcon",(function(){return rn}));var l={AppType:"desktop",Platform:function(){return"windows"}};var s=[];function f(n){s.push(n)}function d(n){if(function(n){window.wailsInvoke(n)}(n),s.length>0)for(var t=0;t0)var a=setTimeout((function(){i(Error("Call to "+n+" timed out. Request ID: "+o))}),e);k[o]={timeoutHandle:a,reject:i,resolve:r};try{var u={name:n,args:t,callbackID:o};d("C"+JSON.stringify(u))}catch(n){console.error(n)}}))}function W(n){var t;try{t=JSON.parse(n)}catch(t){var e="Invalid JSON passed to callback: ".concat(t.message,". Message: ").concat(n);throw y(e),new Error(e)}var r=t.callbackid,i=k[r];if(!i){var o="Callback '".concat(r,"' not registered!!!");throw console.error(o),new Error(o)}clearTimeout(i.timeoutHandle),delete k[r],t.error?i.reject(t.error):i.resolve(t.result)}function N(n){var t=[].slice.apply(arguments).slice(1);return C(".wails."+n,t)}function T(n){return d("RBO"+n)}function j(){d("Wc")}function x(n){d("WT"+n)}function M(){d("WF")}function I(){d("Wf")}function D(n,t){d("Ws:"+n+":"+t)}function P(n,t){d("Wp:"+n+":"+t)}function A(){d("WH")}function J(){d("WS")}function L(){d("WM")}function R(){d("WU")}function _(){d("Wm")}function F(){d("Wu")}function U(){d("WC")}function B(n){return N("Dialog.Open",n)}function H(n){return N("Dialog.Save",n)}function G(n){return N("Dialog.Message",n)}O=window.crypto?function(){var n=new Uint32Array(1);return window.crypto.getRandomValues(n)[0]}:function(){return 9007199254740991*Math.random()},window.backend={};var q=function n(t,e){!function(n,t){if(!(n instanceof t))throw new TypeError("Cannot call a class as a function")}(this,n),e=e||-1,this.Callback=function(n){return t.apply(null,n),-1!==e&&0===(e-=1)}},z={};function V(n,t,e){z[n]=z[n]||[];var r=new q(t,e);console.log("Pushing event listener: "+n),z[n].push(r)}function K(n,t){V(n,t)}function Q(n,t){V(n,t,1)}function X(n){var t=n.name;if(z[t]){for(var e=z[t].slice(),r=0;r`, ``, 1) - - url := url.URL{Path: result} - urlString := strings.ReplaceAll(url.String(), "/", "%2f") - - // Save Data uRI string - return "data:text/html;charset=utf-8," + urlString, nil - - case AssetTypes.CSS: - - // Escape CSS data - var re = regexp.MustCompile(`\s{2,}`) - result := re.ReplaceAllString(a.Data, ``) - result = strings.ReplaceAll(result, "\n", "") - result = strings.ReplaceAll(result, "\r\n", "") - result = strings.ReplaceAll(result, "\n", "") - result = strings.ReplaceAll(result, "\t", "") - result = strings.ReplaceAll(result, `\`, `\\`) - result = strings.ReplaceAll(result, `"`, `\"`) - result = strings.ReplaceAll(result, `'`, `\'`) - result = strings.ReplaceAll(result, ` {`, `{`) - result = strings.ReplaceAll(result, `: `, `:`) - return fmt.Sprintf("window.wails._.InjectCSS(\"%s\");", result), nil - - case AssetTypes.JS: - m := minify.New() - m.AddFunc("application/javascript", js.Minify) - var err error - result, err := m.String("application/javascript", a.Data+";") - if err != nil { - return "", err - } - return result, nil - default: - return "", fmt.Errorf("minification for asset type %s not implemented", a.Type) - } -} - -// AsCHexData processes the asset data so it may be used by C -func (a *Asset) AsCHexData() string { - dataString, err := a.minifiedData() - if err != nil { - log.Fatal(err) - } - // Get byte data of the string - bytes := *(*[]byte)(unsafe.Pointer(&dataString)) - - // Create a strings builder - var cdata strings.Builder - - // Set buffer size to 4k - cdata.Grow(4096) - - // Convert each byte to hex - for _, b := range bytes { - cdata.WriteString(fmt.Sprintf("0x%x, ", b)) - } - - return cdata.String() -} - -// Dump will output the asset to the terminal -func (a *Asset) Dump() { - fmt.Printf("{ Type: %s, Path: %s, Data: %+v }\n", a.Type, a.Path, a.Data[:10]) -} diff --git a/v2/internal/html/asset_test.go b/v2/internal/html/asset_test.go deleted file mode 100644 index f743b4ba..00000000 --- a/v2/internal/html/asset_test.go +++ /dev/null @@ -1,53 +0,0 @@ -package html - -import "testing" - -func TestAsset_minifiedData(t *testing.T) { - type fields struct { - Type string - Path string - Data string - } - tests := []struct { - name string - fields fields - want string - wantErr bool - }{ - { - name: "multi-line tag", - fields: fields{ - Type: AssetTypes.HTML, - Path: "foo.html", - Data: "\n", - }, - want: "data:text/html;charset=utf-8,%3Clink%20rel=%22stylesheet%22%20href=%22src%2ffoo.css%22%20%3E%20", - }, - { - name: "multi-line tag no spaces", - fields: fields{ - Type: AssetTypes.HTML, - Path: "foo.html", - Data: "\n", - }, - want: "data:text/html;charset=utf-8,%3Clink%20rel=%22stylesheet%22%20href=%22src%2ffoo.css%22%20%3E%20", - }, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - a := &Asset{ - Type: tt.fields.Type, - Path: tt.fields.Path, - Data: tt.fields.Data, - } - got, err := a.minifiedData() - if (err != nil) != tt.wantErr { - t.Errorf("Asset.minifiedData() error = %v, wantErr %v", err, tt.wantErr) - return - } - if got != tt.want { - t.Errorf("Asset.minifiedData() = %v, want %v", got, tt.want) - } - }) - } -} diff --git a/v2/internal/html/assetbundle.go b/v2/internal/html/assetbundle.go deleted file mode 100644 index 1878357a..00000000 --- a/v2/internal/html/assetbundle.go +++ /dev/null @@ -1,218 +0,0 @@ -package html - -import ( - "bytes" - "fmt" - "io" - "os" - "path/filepath" - "strings" - - "github.com/leaanthony/slicer" - "github.com/wailsapp/wails/v2/internal/assetdb" - "golang.org/x/net/html" -) - -// AssetBundle is a collection of Assets -type AssetBundle struct { - assets []*Asset - basedirectory string -} - -// NewAssetBundle creates a new AssetBundle struct containing -// the given html and all the assets referenced by it -func NewAssetBundle(pathToHTML string) (*AssetBundle, error) { - - // Create result - result := &AssetBundle{ - basedirectory: filepath.Dir(pathToHTML), - } - - err := result.loadAssets(pathToHTML) - if err != nil { - return nil, err - } - - return result, nil -} - -// loadAssets processes the given html file and loads in -// all referenced assets -func (a *AssetBundle) loadAssets(pathToHTML string) error { - - // Save HTML - htmlAsset := &Asset{ - Type: AssetTypes.HTML, - Path: filepath.Base(pathToHTML), - } - err := htmlAsset.Load(a.basedirectory) - if err != nil { - return err - } - a.assets = append(a.assets, htmlAsset) - - return a.processHTML(htmlAsset.AsString()) -} - -// Credit to: https://drstearns.github.io/tutorials/tokenizing/ -func (a *AssetBundle) processHTML(htmldata string) error { - - // Tokenize the html - buf := bytes.NewBufferString(htmldata) - tokenizer := html.NewTokenizer(buf) - - paths := slicer.String() - - for { - //get the next token type - tokenType := tokenizer.Next() - - //if it's an error token, we either reached - //the end of the file, or the HTML was malformed - if tokenType == html.ErrorToken { - err := tokenizer.Err() - if err == io.EOF { - //end of the file, break out of the loop - break - } - //otherwise, there was an error tokenizing, - //which likely means the HTML was malformed. - //since this is a simple command-line utility, - //we can just use log.Fatalf() to report the error - //and exit the process with a non-zero status code - return tokenizer.Err() - } - - //process the token according to the token type... - if tokenType == html.StartTagToken || tokenType == html.SelfClosingTagToken { - //get the token - token := tokenizer.Token() - - //if the name of the element is "title" - if "link" == token.Data { - //the next token should be the page title - tokenType = tokenizer.Next() - //just make sure it's actually a text token - asset := &Asset{} - for _, attr := range token.Attr { - // Favicon - if attr.Key == "rel" && attr.Val == "icon" { - asset.Type = AssetTypes.FAVICON - } - if attr.Key == "href" { - asset.Path = attr.Val - } - // standard stylesheet - if attr.Key == "rel" && attr.Val == "stylesheet" { - asset.Type = AssetTypes.CSS - } - if attr.Key == "as" && attr.Val == "style" { - asset.Type = AssetTypes.CSS - } - if attr.Key == "as" && attr.Val == "script" { - asset.Type = AssetTypes.JS - } - if attr.Key == "rel" && attr.Val == "modulepreload" { - asset.Type = AssetTypes.JS - } - } - - // Ensure we don't include duplicates - if !paths.Contains(asset.Path) { - err := asset.Load(a.basedirectory) - if err != nil { - return err - } - a.assets = append(a.assets, asset) - paths.Add(asset.Path) - } - } - if "script" == token.Data { - tokenType = tokenizer.Next() - //just make sure it's actually a text token - asset := &Asset{Type: AssetTypes.JS} - for _, attr := range token.Attr { - if attr.Key == "src" { - asset.Path = attr.Val - break - } - } - if !paths.Contains(asset.Path) && asset.Path != "" { - err := asset.Load(a.basedirectory) - if err != nil { - return err - } - a.assets = append(a.assets, asset) - paths.Add(asset.Path) - } - } - } - } - - return nil -} - -// WriteToCFile dumps all the assets to C files in the given directory -func (a *AssetBundle) WriteToCFile(targetDir string) (string, error) { - - // Write out the assets.c file - var cdata strings.Builder - - // Write header - header := `// assets.h -// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL. -// This file was auto-generated. DO NOT MODIFY. - -` - cdata.WriteString(header) - - // Loop over the Assets - var err error - assetVariables := slicer.String() - var variableName string - for index, asset := range a.assets { - // For desktop we ignore the favicon - if asset.Type == AssetTypes.FAVICON { - continue - } - variableName = fmt.Sprintf("%s%d", asset.Type, index) - assetCdata := fmt.Sprintf("const unsigned char %s[]={ %s0x00 };\n", variableName, asset.AsCHexData()) - cdata.WriteString(assetCdata) - assetVariables.Add(variableName) - } - - if assetVariables.Length() > 0 { - cdata.WriteString(fmt.Sprintf("\nconst unsigned char *assets[] = { %s, 0x00 };", assetVariables.Join(", "))) - } else { - cdata.WriteString("\nconst unsigned char *assets[] = { 0x00 };") - } - - // Save file - assetsFile := filepath.Join(targetDir, "assets.h") - err = os.WriteFile(assetsFile, []byte(cdata.String()), 0600) - if err != nil { - return "", err - } - return assetsFile, nil -} - -// ConvertToAssetDB returns an assetdb.AssetDB initialized with -// the items in the AssetBundle -func (a *AssetBundle) ConvertToAssetDB() (*assetdb.AssetDB, error) { - theassetdb := assetdb.NewAssetDB() - - // Loop over the Assets - for _, asset := range a.assets { - theassetdb.AddAsset(asset.Path, []byte(asset.Data)) - } - - return theassetdb, nil -} - -// Dump will output the assets to the terminal -func (a *AssetBundle) Dump() { - println("Assets:") - for _, asset := range a.assets { - asset.Dump() - } -} diff --git a/v2/internal/html/assetbundle_test.go b/v2/internal/html/assetbundle_test.go deleted file mode 100644 index d1009d7a..00000000 --- a/v2/internal/html/assetbundle_test.go +++ /dev/null @@ -1,84 +0,0 @@ -package html - -import ( - "testing" -) - -func TestNewAssetBundle(t *testing.T) { - tests := []struct { - name string - pathToHTML string - wantAssets []string - wantErr bool - }{ - { - name: "basic html", - pathToHTML: "testdata/basic.html", - wantAssets: []string{ - AssetTypes.HTML, - AssetTypes.FAVICON, - AssetTypes.JS, - AssetTypes.CSS, - }, - wantErr: false, - }, - { - name: "self closing tags", - pathToHTML: "testdata/self_closing.html", - wantAssets: []string{ - AssetTypes.HTML, - AssetTypes.FAVICON, - AssetTypes.JS, - AssetTypes.CSS, - }, - wantErr: false, - }, - { - name: "multi-line tags", - pathToHTML: "testdata/self_closing.html", - wantAssets: []string{ - AssetTypes.HTML, - AssetTypes.FAVICON, - AssetTypes.JS, - AssetTypes.CSS, - }, - wantErr: false, - }, - { - name: "inline javascript", - pathToHTML: "testdata/inline_javascript.html", - wantAssets: []string{ - AssetTypes.HTML, - AssetTypes.FAVICON, - AssetTypes.JS, - AssetTypes.CSS, - }, - wantErr: false, - }, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - got, err := NewAssetBundle(tt.pathToHTML) - if (err != nil) != tt.wantErr { - t.Errorf("NewAssetBundle() error = %v, wantErr %v", err, tt.wantErr) - return - } - if len(got.assets) != len(tt.wantAssets) { - t.Errorf("NewAssetBundle() len(assets) = %d, want %d", - len(got.assets), len(tt.wantAssets)) - } - - for i := range tt.wantAssets { - if i >= len(got.assets) { - t.Errorf("NewAssetBundle() missing assets[%d].Type = %s", - i, tt.wantAssets[i]) - } else { - if got.assets[i].Type != tt.wantAssets[i] { - t.Errorf("NewAssetBundle() assets[%d].Type = %s, want %s", - i, got.assets[i].Type, tt.wantAssets[i]) - } - } - } - }) - } -} diff --git a/v2/internal/html/testdata/basic.html b/v2/internal/html/testdata/basic.html deleted file mode 100644 index cdc3770b..00000000 --- a/v2/internal/html/testdata/basic.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - Vite App - - -
- - diff --git a/v2/internal/html/testdata/inline_javascript.html b/v2/internal/html/testdata/inline_javascript.html deleted file mode 100644 index 4f97b75a..00000000 --- a/v2/internal/html/testdata/inline_javascript.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - Vite App - - - -
- - diff --git a/v2/internal/html/testdata/multi_line.html b/v2/internal/html/testdata/multi_line.html deleted file mode 100644 index 20ac3369..00000000 --- a/v2/internal/html/testdata/multi_line.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - Vite App - - -
- - diff --git a/v2/internal/html/testdata/self_closing.html b/v2/internal/html/testdata/self_closing.html deleted file mode 100644 index b5ee9bb7..00000000 --- a/v2/internal/html/testdata/self_closing.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - Vite App - - -
- - diff --git a/v2/internal/html/testdata/src/bundle.js b/v2/internal/html/testdata/src/bundle.js deleted file mode 100644 index 105067a3..00000000 --- a/v2/internal/html/testdata/src/bundle.js +++ /dev/null @@ -1 +0,0 @@ -window.alert("I am JS!"); diff --git a/v2/internal/html/testdata/src/favicon.svg b/v2/internal/html/testdata/src/favicon.svg deleted file mode 100644 index 21bc4e85..00000000 --- a/v2/internal/html/testdata/src/favicon.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - \ No newline at end of file diff --git a/v2/internal/html/testdata/src/style.css b/v2/internal/html/testdata/src/style.css deleted file mode 100644 index f5bd542b..00000000 --- a/v2/internal/html/testdata/src/style.css +++ /dev/null @@ -1,3 +0,0 @@ -.body { - background: blue; -} diff --git a/v2/internal/runtime/assets/assets.go b/v2/internal/runtime/assets/assets.go deleted file mode 100644 index cdc0f3b2..00000000 --- a/v2/internal/runtime/assets/assets.go +++ /dev/null @@ -1,12 +0,0 @@ -package assets - -import _ "embed" - -//go:embed desktop_darwin.js -var desktopDarwinJS string - -//go:embed desktop_windows.js -var desktopWindowsJS string - -//go:embed wails.js -var wailsJS string diff --git a/v2/internal/runtime/assets/desktop_darwin.js b/v2/internal/runtime/assets/desktop_darwin.js deleted file mode 100644 index 4758b4e2..00000000 --- a/v2/internal/runtime/assets/desktop_darwin.js +++ /dev/null @@ -1 +0,0 @@ -var Wails=function(n){var t={};function e(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return n[r].call(i.exports,i,i.exports,e),i.l=!0,i.exports}return e.m=n,e.c=t,e.d=function(n,t,r){e.o(n,t)||Object.defineProperty(n,t,{enumerable:!0,get:r})},e.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},e.t=function(n,t){if(1&t&&(n=e(n)),8&t)return n;if(4&t&&"object"==typeof n&&n&&n.__esModule)return n;var r=Object.create(null);if(e.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:n}),2&t&&"string"!=typeof n)for(var i in n)e.d(r,i,function(t){return n[t]}.bind(null,i));return r},e.n=function(n){var t=n&&n.__esModule?function(){return n.default}:function(){return n};return e.d(t,"a",t),t},e.o=function(n,t){return Object.prototype.hasOwnProperty.call(n,t)},e.p="",e(e.s=0)}([function(n,t,e){"use strict";e.r(t);var r={};e.r(r),e.d(r,"Trace",(function(){return v})),e.d(r,"Print",(function(){return p})),e.d(r,"Debug",(function(){return y})),e.d(r,"Info",(function(){return m})),e.d(r,"Warning",(function(){return b})),e.d(r,"Error",(function(){return g})),e.d(r,"Fatal",(function(){return h})),e.d(r,"SetLogLevel",(function(){return S})),e.d(r,"Level",(function(){return E}));var i={};e.r(i),e.d(i,"Open",(function(){return x}));var o={};e.r(o),e.d(o,"Center",(function(){return N})),e.d(o,"SetTitle",(function(){return T})),e.d(o,"Fullscreen",(function(){return j})),e.d(o,"UnFullscreen",(function(){return D})),e.d(o,"SetSize",(function(){return I})),e.d(o,"SetPosition",(function(){return P})),e.d(o,"Hide",(function(){return A})),e.d(o,"Show",(function(){return J})),e.d(o,"Maximise",(function(){return L})),e.d(o,"Unmaximise",(function(){return R})),e.d(o,"Minimise",(function(){return _})),e.d(o,"Unminimise",(function(){return F})),e.d(o,"Close",(function(){return U}));var a={};e.r(a),e.d(a,"Open",(function(){return B})),e.d(a,"Save",(function(){return H})),e.d(a,"Message",(function(){return G}));var u={};e.r(u),e.d(u,"New",(function(){return en}));var c={};e.r(c),e.d(c,"SetIcon",(function(){return rn}));var l={AppType:"desktop",Platform:function(){return"darwin"}};var s=[];function f(n){s.push(n)}function d(n){if(function(n){window.wailsInvoke(n)}(n),s.length>0)for(var t=0;t0)var a=setTimeout((function(){i(Error("Call to "+n+" timed out. Request ID: "+o))}),e);k[o]={timeoutHandle:a,reject:i,resolve:r};try{var u={name:n,args:t,callbackID:o};d("C"+JSON.stringify(u))}catch(n){console.error(n)}}))}function W(n){var t;try{t=JSON.parse(n)}catch(t){var e="Invalid JSON passed to callback: ".concat(t.message,". Message: ").concat(n);throw y(e),new Error(e)}var r=t.callbackid,i=k[r];if(!i){var o="Callback '".concat(r,"' not registered!!!");throw console.error(o),new Error(o)}clearTimeout(i.timeoutHandle),delete k[r],t.error?i.reject(t.error):i.resolve(t.result)}function M(n){var t=[].slice.apply(arguments).slice(1);return C(".wails."+n,t)}function x(n){return d("RBO"+n)}function N(){d("Wc")}function T(n){d("WT"+n)}function j(){d("WF")}function D(){d("Wf")}function I(n,t){d("Ws:"+n+":"+t)}function P(n,t){d("Wp:"+n+":"+t)}function A(){d("WH")}function J(){d("WS")}function L(){d("WM")}function R(){d("WU")}function _(){d("Wm")}function F(){d("Wu")}function U(){d("WC")}function B(n){return M("Dialog.Open",n)}function H(n){return M("Dialog.Save",n)}function G(n){return M("Dialog.Message",n)}O=window.crypto?function(){var n=new Uint32Array(1);return window.crypto.getRandomValues(n)[0]}:function(){return 9007199254740991*Math.random()},window.backend={};var q=function n(t,e){!function(n,t){if(!(n instanceof t))throw new TypeError("Cannot call a class as a function")}(this,n),e=e||-1,this.Callback=function(n){return t.apply(null,n),-1!==e&&0===(e-=1)}},z={};function V(n,t,e){z[n]=z[n]||[];var r=new q(t,e);console.log("Pushing event listener: "+n),z[n].push(r)}function K(n,t){V(n,t)}function Q(n,t){V(n,t,1)}function X(n){var t=n.name;if(z[t]){for(var e=z[t].slice(),r=0;r0)for(var t=0;t0)var a=setTimeout((function(){i(Error("Call to "+n+" timed out. Request ID: "+o))}),e);k[o]={timeoutHandle:a,reject:i,resolve:r};try{var u={name:n,args:t,callbackID:o};d("C"+JSON.stringify(u))}catch(n){console.error(n)}}))}function W(n){var t;try{t=JSON.parse(n)}catch(t){var e="Invalid JSON passed to callback: ".concat(t.message,". Message: ").concat(n);throw y(e),new Error(e)}var r=t.callbackid,i=k[r];if(!i){var o="Callback '".concat(r,"' not registered!!!");throw console.error(o),new Error(o)}clearTimeout(i.timeoutHandle),delete k[r],t.error?i.reject(t.error):i.resolve(t.result)}function x(n){var t=[].slice.apply(arguments).slice(1);return C(".wails."+n,t)}function M(n){return d("RBO"+n)}function N(){d("Wc")}function T(n){d("WT"+n)}function j(){d("WF")}function D(){d("Wf")}function I(n,t){d("Ws:"+n+":"+t)}function P(n,t){d("Wp:"+n+":"+t)}function A(){d("WH")}function J(){d("WS")}function L(){d("WM")}function R(){d("WU")}function _(){d("Wm")}function F(){d("Wu")}function U(){d("WC")}function B(n){return x("Dialog.Open",n)}function H(n){return x("Dialog.Save",n)}function G(n){return x("Dialog.Message",n)}O=window.crypto?function(){var n=new Uint32Array(1);return window.crypto.getRandomValues(n)[0]}:function(){return 9007199254740991*Math.random()},window.backend={};var q=function n(t,e){!function(n,t){if(!(n instanceof t))throw new TypeError("Cannot call a class as a function")}(this,n),e=e||-1,this.Callback=function(n){return t.apply(null,n),-1!==e&&0===(e-=1)}},z={};function V(n,t,e){z[n]=z[n]||[];var r=new q(t,e);console.log("Pushing event listener: "+n),z[n].push(r)}function K(n,t){V(n,t)}function Q(n,t){V(n,t,1)}function X(n){var t=n.name;if(z[t]){for(var e=z[t].slice(),r=0;r0)for(var t=0;t0)var a=setTimeout((function(){i(Error("Call to "+n+" timed out. Request ID: "+o))}),e);k[o]={timeoutHandle:a,reject:i,resolve:r};try{var u={name:n,args:t,callbackID:o};d("C"+JSON.stringify(u))}catch(n){console.error(n)}}))}function W(n){var t;try{t=JSON.parse(n)}catch(t){var e="Invalid JSON passed to callback: ".concat(t.message,". Message: ").concat(n);throw y(e),new Error(e)}var r=t.callbackid,i=k[r];if(!i){var o="Callback '".concat(r,"' not registered!!!");throw console.error(o),new Error(o)}clearTimeout(i.timeoutHandle),delete k[r],t.error?i.reject(t.error):i.resolve(t.result)}function N(n){var t=[].slice.apply(arguments).slice(1);return C(".wails."+n,t)}function T(n){return d("RBO"+n)}function j(){d("Wc")}function x(n){d("WT"+n)}function M(){d("WF")}function I(){d("Wf")}function D(n,t){d("Ws:"+n+":"+t)}function P(n,t){d("Wp:"+n+":"+t)}function A(){d("WH")}function J(){d("WS")}function L(){d("WM")}function R(){d("WU")}function _(){d("Wm")}function F(){d("Wu")}function U(){d("WC")}function B(n){return N("Dialog.Open",n)}function H(n){return N("Dialog.Save",n)}function G(n){return N("Dialog.Message",n)}O=window.crypto?function(){var n=new Uint32Array(1);return window.crypto.getRandomValues(n)[0]}:function(){return 9007199254740991*Math.random()},window.backend={};var q=function n(t,e){!function(n,t){if(!(n instanceof t))throw new TypeError("Cannot call a class as a function")}(this,n),e=e||-1,this.Callback=function(n){return t.apply(null,n),-1!==e&&0===(e-=1)}},z={};function V(n,t,e){z[n]=z[n]||[];var r=new q(t,e);console.log("Pushing event listener: "+n),z[n].push(r)}function K(n,t){V(n,t)}function Q(n,t){V(n,t,1)}function X(n){var t=n.name;if(z[t]){for(var e=z[t].slice(),r=0;r0)for(var e=0;e1){var e={name:n,data:[].slice.apply(arguments).slice(1)};a("Ej"+JSON.stringify(e))}else a("ej"+n)}var b={};var m,E={};function O(n,e,t){return null!=t&&null!=t||(t=0),new Promise((function(r,o){var i;do{i=n+"-"+m()}while(E[i]);if(t>0)var c=setTimeout((function(){o(Error("Call to "+n+" timed out. Request ID: "+i))}),t);E[i]={timeoutHandle:c,reject:o,resolve:r};try{JSON.stringify(e);a("call")}catch(n){console.error(n)}}))}function j(n){try{return new Function("var "+n),!0}catch(n){return!1}}function S(){return(S=Object.assign||function(n){for(var e=1;e1)for(var r=0;r - } - ], - outputs: [ - { - type: - } - ] - } - } - } -} - */ - -export function SetBindings(bindingsMap) { - try { - bindingsMap = JSON.parse(bindingsMap); - } catch (e) { - console.error(e); - } - - // Initialise the backend map - window.go = window.go || {}; - - // Iterate package names - Object.keys(bindingsMap).forEach((packageName) => { - - // Create inner map if it doesn't exist - window.go[packageName] = window.go[packageName] || {}; - - // Iterate struct names - Object.keys(bindingsMap[packageName]).forEach((structName) => { - - // Create inner map if it doesn't exist - window.go[packageName][structName] = window.go[packageName][structName] || {}; - - Object.keys(bindingsMap[packageName][structName]).forEach((methodName) => { - - window.go[packageName][structName][methodName] = function () { - - // No timeout by default - let timeout = 0; - - // Actual function - function dynamic() { - var args = [].slice.call(arguments); - return Call([packageName, structName, methodName].join('.'), args, timeout); - } - - // Allow setting timeout to function - dynamic.setTimeout = function (newTimeout) { - timeout = newTimeout; - }; - - // Allow getting timeout to function - dynamic.getTimeout = function () { - return timeout; - }; - - return dynamic; - }(); - }); - }); - }); -} diff --git a/v2/internal/runtime/js/core/calls.js b/v2/internal/runtime/js/core/calls.js deleted file mode 100644 index 242fbd8d..00000000 --- a/v2/internal/runtime/js/core/calls.js +++ /dev/null @@ -1,157 +0,0 @@ -/* - _ __ _ __ -| | / /___ _(_) /____ -| | /| / / __ `/ / / ___/ -| |/ |/ / /_/ / / (__ ) -|__/|__/\__,_/_/_/____/ -The electron alternative for Go -(c) Lea Anthony 2019-present -*/ -/* jshint esversion: 6 */ - -import {Debug} from './log'; -import {SendMessage} from 'ipc'; - -var callbacks = {}; - -/** - * Returns a number from the native browser random function - * - * @returns number - */ -function cryptoRandom() { - var array = new Uint32Array(1); - return window.crypto.getRandomValues(array)[0]; -} - -/** - * Returns a number using da old-skool Math.Random - * I likes to call it LOLRandom - * - * @returns number - */ -function basicRandom() { - return Math.random() * 9007199254740991; -} - -// Pick a random number function based on browser capability -var randomFunc; -if (window.crypto) { - randomFunc = cryptoRandom; -} else { - randomFunc = basicRandom; -} - - -/** - * Call sends a message to the backend to call the binding with the - * given data. A promise is returned and will be completed when the - * backend responds. This will be resolved when the call was successful - * or rejected if an error is passed back. - * There is a timeout mechanism. If the call doesn't respond in the given - * time (in milliseconds) then the promise is rejected. - * - * @export - * @param {string} name - * @param {string} args - * @param {number=} timeout - * @returns - */ -export function Call(name, args, timeout) { - - // Timeout infinite by default - if (timeout == null || timeout == undefined) { - timeout = 0; - } - - // Create a promise - return new Promise(function (resolve, reject) { - - // Create a unique callbackID - var callbackID; - do { - callbackID = name + '-' + randomFunc(); - } while (callbacks[callbackID]); - - // Set timeout - if (timeout > 0) { - var timeoutHandle = setTimeout(function () { - reject(Error('Call to ' + name + ' timed out. Request ID: ' + callbackID)); - }, timeout); - } - - // Store callback - callbacks[callbackID] = { - timeoutHandle: timeoutHandle, - reject: reject, - resolve: resolve - }; - - try { - const payload = { - name, - args, - callbackID, - }; - - // Make the call - SendMessage('C' + JSON.stringify(payload)); - } catch (e) { - // eslint-disable-next-line - console.error(e); - } - }); -} - - - -/** - * Called by the backend to return data to a previously called - * binding invocation - * - * @export - * @param {string} incomingMessage - */ -export function Callback(incomingMessage) { - // Decode the message - Credit: https://stackoverflow.com/a/13865680 - //incomingMessage = decodeURIComponent(incomingMessage.replace(/\s+/g, '').replace(/[0-9a-f]{2}/g, '%$&')); - - // Parse the message - var message; - try { - message = JSON.parse(incomingMessage); - } catch (e) { - const error = `Invalid JSON passed to callback: ${e.message}. Message: ${incomingMessage}`; - Debug(error); - throw new Error(error); - } - var callbackID = message.callbackid; - var callbackData = callbacks[callbackID]; - if (!callbackData) { - const error = `Callback '${callbackID}' not registered!!!`; - console.error(error); // eslint-disable-line - throw new Error(error); - } - clearTimeout(callbackData.timeoutHandle); - - delete callbacks[callbackID]; - - if (message.error) { - callbackData.reject(message.error); - } else { - callbackData.resolve(message.result); - } -} - -/** - * SystemCall is used to call wails methods from the frontend - * - * @export - * @param {string} method - * @param {any[]=} data - * @returns - */ -export function SystemCall(method) { - var data = [].slice.apply(arguments).slice(1); - return Call('.wails.' + method, data); -} diff --git a/v2/internal/runtime/js/core/desktop.js b/v2/internal/runtime/js/core/desktop.js deleted file mode 100644 index 6649214e..00000000 --- a/v2/internal/runtime/js/core/desktop.js +++ /dev/null @@ -1,24 +0,0 @@ -/* - _ __ _ __ -| | / /___ _(_) /____ -| | /| / / __ `/ / / ___/ -| |/ |/ / /_/ / / (__ ) -|__/|__/\__,_/_/_/____/ -The electron alternative for Go -(c) Lea Anthony 2019-present -*/ -/* jshint esversion: 6 */ -import {SetBindings} from './bindings'; -import {Init} from './main'; - -// Initialise the Runtime -Init(); - -// Load Bindings if they exist -if (window.wailsbindings) { - SetBindings(window.wailsbindings); -} - -// Emit loaded event. Leaving this for now. It will show any errors if runtime fails to load. -window.wails.Events.Emit('wails:loaded'); - diff --git a/v2/internal/runtime/js/core/events.js b/v2/internal/runtime/js/core/events.js deleted file mode 100644 index f9beebb1..00000000 --- a/v2/internal/runtime/js/core/events.js +++ /dev/null @@ -1,169 +0,0 @@ -/* - _ __ _ __ -| | / /___ _(_) /____ -| | /| / / __ `/ / / ___/ -| |/ |/ / /_/ / / (__ ) -|__/|__/\__,_/_/_/____/ -The electron alternative for Go -(c) Lea Anthony 2019-present -*/ -/* jshint esversion: 6 */ - -import {Error} from './log'; -import {SendMessage} from 'ipc'; - -// Defines a single listener with a maximum number of times to callback - -/** - * The Listener class defines a listener! :-) - * - * @class Listener - */ -class Listener { - /** - * Creates an instance of Listener. - * @param {function} callback - * @param {number} maxCallbacks - * @memberof Listener - */ - constructor(callback, maxCallbacks) { - // Default of -1 means infinite - maxCallbacks = maxCallbacks || -1; - // Callback invokes the callback with the given data - // Returns true if this listener should be destroyed - this.Callback = (data) => { - callback.apply(null, data); - // If maxCallbacks is infinite, return false (do not destroy) - if (maxCallbacks === -1) { - return false; - } - // Decrement maxCallbacks. Return true if now 0, otherwise false - maxCallbacks -= 1; - return maxCallbacks === 0; - }; - } -} - -let eventListeners = {}; - -/** - * Registers an event listener that will be invoked `maxCallbacks` times before being destroyed - * - * @export - * @param {string} eventName - * @param {function} callback - * @param {number} maxCallbacks - */ -export function OnMultiple(eventName, callback, maxCallbacks) { - eventListeners[eventName] = eventListeners[eventName] || []; - const thisListener = new Listener(callback, maxCallbacks); - console.log('Pushing event listener: ' + eventName); - eventListeners[eventName].push(thisListener); -} - -/** - * Registers an event listener that will be invoked every time the event is emitted - * - * @export - * @param {string} eventName - * @param {function} callback - */ -export function On(eventName, callback) { - OnMultiple(eventName, callback); -} - -/** - * Registers listeners for when the system theme changes from light/dark. A bool is - * sent to the listener, true if it is dark mode. - * - * @export - * @param {function} callback - */ -export function OnThemeChange(callback) { - On('wails:system:themechange', callback); -} - -/** - * Registers an event listener that will be invoked once then destroyed - * - * @export - * @param {string} eventName - * @param {function} callback - */ -export function Once(eventName, callback) { - OnMultiple(eventName, callback, 1); -} - -function notifyListeners(eventData) { - - // Get the event name - let eventName = eventData.name; - - // Check if we have any listeners for this event - if (eventListeners[eventName]) { - - // Keep a list of listener indexes to destroy - const newEventListenerList = eventListeners[eventName].slice(); - - // Iterate listeners - for (let count = 0; count < eventListeners[eventName].length; count += 1) { - - // Get next listener - const listener = eventListeners[eventName][count]; - - let data = eventData.data; - - // Do the callback - const destroy = listener.Callback(data); - if (destroy) { - // if the listener indicated to destroy itself, add it to the destroy list - newEventListenerList.splice(count, 1); - } - } - - // Update callbacks with new list of listeners - eventListeners[eventName] = newEventListenerList; - } -} - -/** - * Notify informs frontend listeners that an event was emitted with the given data - * - * @export - * @param {string} notifyMessage - encoded notification message - - */ -export function Notify(notifyMessage) { - - // Parse the message - var message; - try { - message = JSON.parse(notifyMessage); - } catch (e) { - const error = 'Invalid JSON passed to Notify: ' + notifyMessage; - throw new Error(error); - } - - notifyListeners(message); -} - -/** - * Emit an event with the given name and data - * - * @export - * @param {string} eventName - */ -export function Emit(eventName) { - - const payload = { - name: eventName, - data: [].slice.apply(arguments).slice(1), - }; - - // Notify JS listeners - notifyListeners(payload); - - // Notify Go listeners - SendMessage('Ej' + JSON.stringify(payload)); - -} \ No newline at end of file diff --git a/v2/internal/runtime/js/core/log.js b/v2/internal/runtime/js/core/log.js deleted file mode 100644 index ea624a8e..00000000 --- a/v2/internal/runtime/js/core/log.js +++ /dev/null @@ -1,115 +0,0 @@ -/* - _ __ _ __ -| | / /___ _(_) /____ -| | /| / / __ `/ / / ___/ -| |/ |/ / /_/ / / (__ ) -|__/|__/\__,_/_/_/____/ -The electron alternative for Go -(c) Lea Anthony 2019-present -*/ - -/* jshint esversion: 6 */ - -import {SendMessage} from 'ipc'; - -/** - * Sends a log message to the backend with the given level + message - * - * @param {string} level - * @param {string} message - */ -function sendLogMessage(level, message) { - - // Log Message format: - // l[type][message] - SendMessage('L' + level + message); -} - -/** - * Log the given trace message with the backend - * - * @export - * @param {string} message - */ -export function Trace(message) { - sendLogMessage('T', message); -} - -/** - * Log the given message with the backend - * - * @export - * @param {string} message - */ -export function Print(message) { - sendLogMessage('P', message); -} - -/** - * Log the given debug message with the backend - * - * @export - * @param {string} message - */ -export function Debug(message) { - sendLogMessage('D', message); -} - -/** - * Log the given info message with the backend - * - * @export - * @param {string} message - */ -export function Info(message) { - sendLogMessage('I', message); -} - -/** - * Log the given warning message with the backend - * - * @export - * @param {string} message - */ -export function Warning(message) { - sendLogMessage('W', message); -} - -/** - * Log the given error message with the backend - * - * @export - * @param {string} message - */ -export function Error(message) { - sendLogMessage('E', message); -} - -/** - * Log the given fatal message with the backend - * - * @export - * @param {string} message - */ -export function Fatal(message) { - sendLogMessage('F', message); -} - -/** - * Sets the Log level to the given log level - * - * @export - * @param {number} loglevel - */ -export function SetLogLevel(loglevel) { - sendLogMessage('S', loglevel); -} - -// Log levels -export const Level = { - TRACE: 1, - DEBUG: 2, - INFO: 3, - WARNING: 4, - ERROR: 5, -}; diff --git a/v2/internal/runtime/js/core/main.js b/v2/internal/runtime/js/core/main.js deleted file mode 100644 index 3971cfc9..00000000 --- a/v2/internal/runtime/js/core/main.js +++ /dev/null @@ -1,46 +0,0 @@ -/* - _ __ _ __ -| | / /___ _(_) /____ -| | /| / / __ `/ / / ___/ -| |/ |/ / /_/ / / (__ ) -|__/|__/\__,_/_/_/____/ -The electron alternative for Go -(c) Lea Anthony 2019-present -*/ -/* jshint esversion: 6 */ -import * as Log from './log'; -import {Emit, Notify, On, Once, OnMultiple} from './events'; -import {Callback, SystemCall} from './calls'; -import {AddScript, DisableDefaultContextMenu, InjectCSS} from './utils'; -import {AddIPCListener, SendMessage} from 'ipc'; -import * as Platform from 'platform'; - -export function Init() { - // Where the Go struct wrappers get bound to - window.go = {}; - - // Initialise global if not already - window.wails = { - Log, - Events: { - On, - Once, - OnMultiple, - Emit, - }, - _: { - Callback, - Notify, - AddScript, - InjectCSS, - DisableDefaultContextMenu, - // Init, - AddIPCListener, - SystemCall, - SendMessage, - }, - }; - - // Do platform specific Init - Platform.Init(); -} \ No newline at end of file diff --git a/v2/internal/runtime/js/core/utils.js b/v2/internal/runtime/js/core/utils.js deleted file mode 100644 index 34f37601..00000000 --- a/v2/internal/runtime/js/core/utils.js +++ /dev/null @@ -1,42 +0,0 @@ -/* - _ __ _ __ -| | / /___ _(_) /____ -| | /| / / __ `/ / / ___/ -| |/ |/ / /_/ / / (__ ) -|__/|__/\__,_/_/_/____/ -The electron alternative for Go -(c) Lea Anthony 2019-present -*/ -/* jshint esversion: 6 */ - -import {Emit} from './events'; - -export function AddScript(js, callbackID) { - var script = document.createElement('script'); - script.text = js; - document.body.appendChild(script); - if (callbackID) { - Emit(callbackID); - } -} - -// Adapted from webview - thanks zserge! -export function InjectCSS(css) { - try { - var elem = document.createElement('style'); - elem.setAttribute('type', 'text/css'); - if (elem.styleSheet) { - elem.styleSheet.cssText = css; - } else { - elem.appendChild(document.createTextNode(css)); - } - var head = document.head || document.getElementsByTagName('head')[0]; - head.appendChild(elem); - } catch (e) { - console.log(e); - } -} - -export function DisableDefaultContextMenu() { - window.disableWailsDefaultContextMenu = true; -} diff --git a/v2/internal/runtime/js/desktop/common.js b/v2/internal/runtime/js/desktop/common.js deleted file mode 100644 index 80ed5408..00000000 --- a/v2/internal/runtime/js/desktop/common.js +++ /dev/null @@ -1,15 +0,0 @@ -/* - _ __ _ __ -| | / /___ _(_) /____ -| | /| / / __ `/ / / ___/ -| |/ |/ / /_/ / / (__ ) -|__/|__/\__,_/_/_/____/ -The electron alternative for Go -(c) Lea Anthony 2019-present -*/ -/* jshint esversion: 6 */ - -/** - * Initialises platform specific code - */ -export const AppType = "desktop"; diff --git a/v2/internal/runtime/js/desktop/darwin.js b/v2/internal/runtime/js/desktop/darwin.js deleted file mode 100644 index 6b47f2f9..00000000 --- a/v2/internal/runtime/js/desktop/darwin.js +++ /dev/null @@ -1,61 +0,0 @@ -/* - _ __ _ __ -| | / /___ _(_) /____ -| | /| / / __ `/ / / ___/ -| |/ |/ / /_/ / / (__ ) -|__/|__/\__,_/_/_/____/ -The electron alternative for Go -(c) Lea Anthony 2019-present -*/ - -/* jshint esversion: 6 */ - -/** - * Initialises platform specific code - */ - -export function SendMessage(message) { - window.wailsInvoke(message); -} - -export function Init() { - - // Setup drag handler - // Based on code from: https://github.com/patr0nus/DeskGap - window.addEventListener('mousedown', function (e) { - let currentElement = e.target; - while (currentElement != null) { - if (currentElement.hasAttribute('data-wails-no-drag')) { - break; - } else if (currentElement.hasAttribute('data-wails-drag')) { - window.wailsDrag(null); - break; - } - currentElement = currentElement.parentElement; - } - }); - - // Setup context menu hook - window.addEventListener('contextmenu', function (e) { - let currentElement = e.target; - let contextMenuId; - while (currentElement != null) { - contextMenuId = currentElement.dataset['wails-context-menu-id']; - if (contextMenuId != null) { - break; - } - currentElement = currentElement.parentElement; - } - if (contextMenuId != null || window.disableWailsDefaultContextMenu) { - e.preventDefault(); - } - if( contextMenuId != null ) { - let contextData = currentElement.dataset['wails-context-menu-data']; - let message = { - id: contextMenuId, - data: contextData || '', - }; - window.wailsContextMenuMessage(JSON.stringify(message)); - } - }); -} \ No newline at end of file diff --git a/v2/internal/runtime/js/desktop/ipc.js b/v2/internal/runtime/js/desktop/ipc.js deleted file mode 100644 index b81a524e..00000000 --- a/v2/internal/runtime/js/desktop/ipc.js +++ /dev/null @@ -1,41 +0,0 @@ -/* - _ __ _ __ -| | / /___ _(_) /____ -| | /| / / __ `/ / / ___/ -| |/ |/ / /_/ / / (__ ) -|__/|__/\__,_/_/_/____/ -The electron alternative for Go -(c) Lea Anthony 2019-present -*/ -/* jshint esversion: 6 */ - -import * as Platform from 'platform'; - -// IPC Listeners -var listeners = []; - -/** - * Adds a listener to IPC messages - * @param {function} callback - */ -export function AddIPCListener(callback) { - listeners.push(callback); -} - -/** - * SendMessage sends the given message to the backend - * - * @param {string} message - */ -export function SendMessage(message) { - - // Call Platform specific invoke method - Platform.SendMessage(message); - - // Also send to listeners - if (listeners.length > 0) { - for (var i = 0; i < listeners.length; i++) { - listeners[i](message); - } - } -} diff --git a/v2/internal/runtime/js/desktop/linux.js b/v2/internal/runtime/js/desktop/linux.js deleted file mode 100644 index 6b47f2f9..00000000 --- a/v2/internal/runtime/js/desktop/linux.js +++ /dev/null @@ -1,61 +0,0 @@ -/* - _ __ _ __ -| | / /___ _(_) /____ -| | /| / / __ `/ / / ___/ -| |/ |/ / /_/ / / (__ ) -|__/|__/\__,_/_/_/____/ -The electron alternative for Go -(c) Lea Anthony 2019-present -*/ - -/* jshint esversion: 6 */ - -/** - * Initialises platform specific code - */ - -export function SendMessage(message) { - window.wailsInvoke(message); -} - -export function Init() { - - // Setup drag handler - // Based on code from: https://github.com/patr0nus/DeskGap - window.addEventListener('mousedown', function (e) { - let currentElement = e.target; - while (currentElement != null) { - if (currentElement.hasAttribute('data-wails-no-drag')) { - break; - } else if (currentElement.hasAttribute('data-wails-drag')) { - window.wailsDrag(null); - break; - } - currentElement = currentElement.parentElement; - } - }); - - // Setup context menu hook - window.addEventListener('contextmenu', function (e) { - let currentElement = e.target; - let contextMenuId; - while (currentElement != null) { - contextMenuId = currentElement.dataset['wails-context-menu-id']; - if (contextMenuId != null) { - break; - } - currentElement = currentElement.parentElement; - } - if (contextMenuId != null || window.disableWailsDefaultContextMenu) { - e.preventDefault(); - } - if( contextMenuId != null ) { - let contextData = currentElement.dataset['wails-context-menu-data']; - let message = { - id: contextMenuId, - data: contextData || '', - }; - window.wailsContextMenuMessage(JSON.stringify(message)); - } - }); -} \ No newline at end of file diff --git a/v2/internal/runtime/js/desktop/windows.js b/v2/internal/runtime/js/desktop/windows.js deleted file mode 100644 index dd3b08f2..00000000 --- a/v2/internal/runtime/js/desktop/windows.js +++ /dev/null @@ -1,61 +0,0 @@ -/* - _ __ _ __ -| | / /___ _(_) /____ -| | /| / / __ `/ / / ___/ -| |/ |/ / /_/ / / (__ ) -|__/|__/\__,_/_/_/____/ -The electron alternative for Go -(c) Lea Anthony 2019-present -*/ - -/* jshint esversion: 9 */ - -/** - * Initialises platform specific code - */ - -export function SendMessage(message) { - window.wailsInvoke(message); -} - -export function Init() { - - // Setup drag handler - // Based on code from: https://github.com/patr0nus/DeskGap - window.addEventListener('mousedown', function (e) { - let currentElement = e.target; - while (currentElement != null) { - if (currentElement.hasAttribute('data-wails-no-drag')) { - break; - } else if (currentElement.hasAttribute('data-wails-drag')) { - window.wailsInvoke('wails-drag'); - break; - } - currentElement = currentElement.parentElement; - } - }); - - // Setup context menu hook - window.addEventListener('contextmenu', function (e) { - let currentElement = e.target; - let contextMenuId; - while (currentElement != null) { - contextMenuId = currentElement.dataset['wails-context-menu-id']; - if (contextMenuId != null) { - break; - } - currentElement = currentElement.parentElement; - } - if (contextMenuId != null || window.disableWailsDefaultContextMenu) { - e.preventDefault(); - } - if( contextMenuId != null ) { - let contextData = currentElement.dataset['wails-context-menu-data']; - let message = { - id: contextMenuId, - data: contextData || '', - }; - window.wailsInvoke('C'+JSON.stringify(message)); - } - }); -} \ No newline at end of file diff --git a/v2/internal/runtime/js/package-lock.json b/v2/internal/runtime/js/package-lock.json index d5661f18..e69de29b 100644 --- a/v2/internal/runtime/js/package-lock.json +++ b/v2/internal/runtime/js/package-lock.json @@ -1,5959 +0,0 @@ -{ - "name": "wails-runtime", - "version": "1.0.0", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@babel/cli": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.8.4.tgz", - "integrity": "sha512-XXLgAm6LBbaNxaGhMAznXXaxtCWfuv6PIDJ9Alsy9JYTOh+j2jJz+L/162kkfU1j/pTSxK1xGmlwI4pdIMkoag==", - "dev": true, - "requires": { - "chokidar": "^2.1.8", - "commander": "^4.0.1", - "convert-source-map": "^1.1.0", - "fs-readdir-recursive": "^1.1.0", - "glob": "^7.0.0", - "lodash": "^4.17.13", - "make-dir": "^2.1.0", - "slash": "^2.0.0", - "source-map": "^0.5.0" - } - }, - "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", - "dev": true, - "requires": { - "@babel/highlight": "^7.8.3" - } - }, - "@babel/compat-data": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.9.0.tgz", - "integrity": "sha512-zeFQrr+284Ekvd9e7KAX954LkapWiOmQtsfHirhxqfdlX6MEC32iRE+pqUGlYIBchdevaCwvzxWGSy/YBNI85g==", - "dev": true, - "requires": { - "browserslist": "^4.9.1", - "invariant": "^2.2.4", - "semver": "^5.5.0" - } - }, - "@babel/core": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.9.0.tgz", - "integrity": "sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.9.0", - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helpers": "^7.9.0", - "@babel/parser": "^7.9.0", - "@babel/template": "^7.8.6", - "@babel/traverse": "^7.9.0", - "@babel/types": "^7.9.0", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.1", - "json5": "^2.1.2", - "lodash": "^4.17.13", - "resolve": "^1.3.2", - "semver": "^5.4.1", - "source-map": "^0.5.0" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "@babel/generator": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.5.tgz", - "integrity": "sha512-GbNIxVB3ZJe3tLeDm1HSn2AhuD/mVcyLDpgtLXa5tplmWrJdF/elxB56XNqCuD6szyNkDi6wuoKXln3QeBmCHQ==", - "dev": true, - "requires": { - "@babel/types": "^7.9.5", - "jsesc": "^2.5.1", - "lodash": "^4.17.13", - "source-map": "^0.5.0" - } - }, - "@babel/helper-annotate-as-pure": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz", - "integrity": "sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw==", - "dev": true, - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz", - "integrity": "sha512-5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw==", - "dev": true, - "requires": { - "@babel/helper-explode-assignable-expression": "^7.8.3", - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-compilation-targets": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.7.tgz", - "integrity": "sha512-4mWm8DCK2LugIS+p1yArqvG1Pf162upsIsjE7cNBjez+NjliQpVhj20obE520nao0o14DaTnFJv+Fw5a0JpoUw==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.8.6", - "browserslist": "^4.9.1", - "invariant": "^2.2.4", - "levenary": "^1.1.1", - "semver": "^5.5.0" - } - }, - "@babel/helper-create-regexp-features-plugin": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.8.tgz", - "integrity": "sha512-LYVPdwkrQEiX9+1R29Ld/wTrmQu1SSKYnuOk3g0CkcZMA1p0gsNxJFj/3gBdaJ7Cg0Fnek5z0DsMULePP7Lrqg==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.8.3", - "@babel/helper-regex": "^7.8.3", - "regexpu-core": "^4.7.0" - } - }, - "@babel/helper-define-map": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz", - "integrity": "sha512-PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.8.3", - "@babel/types": "^7.8.3", - "lodash": "^4.17.13" - } - }, - "@babel/helper-explode-assignable-expression": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz", - "integrity": "sha512-N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw==", - "dev": true, - "requires": { - "@babel/traverse": "^7.8.3", - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-function-name": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz", - "integrity": "sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.9.5" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", - "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", - "dev": true, - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz", - "integrity": "sha512-ky1JLOjcDUtSc+xkt0xhYff7Z6ILTAHKmZLHPxAhOP0Nd77O+3nCsd6uSVYur6nJnCI029CrNbYlc0LoPfAPQg==", - "dev": true, - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-member-expression-to-functions": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz", - "integrity": "sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA==", - "dev": true, - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-module-imports": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz", - "integrity": "sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg==", - "dev": true, - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-module-transforms": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz", - "integrity": "sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.8.3", - "@babel/helper-replace-supers": "^7.8.6", - "@babel/helper-simple-access": "^7.8.3", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/template": "^7.8.6", - "@babel/types": "^7.9.0", - "lodash": "^4.17.13" - } - }, - "@babel/helper-optimise-call-expression": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz", - "integrity": "sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ==", - "dev": true, - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz", - "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==", - "dev": true - }, - "@babel/helper-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.8.3.tgz", - "integrity": "sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ==", - "dev": true, - "requires": { - "lodash": "^4.17.13" - } - }, - "@babel/helper-remap-async-to-generator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz", - "integrity": "sha512-kgwDmw4fCg7AVgS4DukQR/roGp+jP+XluJE5hsRZwxCYGg+Rv9wSGErDWhlI90FODdYfd4xG4AQRiMDjjN0GzA==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.8.3", - "@babel/helper-wrap-function": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/traverse": "^7.8.3", - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-replace-supers": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz", - "integrity": "sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA==", - "dev": true, - "requires": { - "@babel/helper-member-expression-to-functions": "^7.8.3", - "@babel/helper-optimise-call-expression": "^7.8.3", - "@babel/traverse": "^7.8.6", - "@babel/types": "^7.8.6" - } - }, - "@babel/helper-simple-access": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz", - "integrity": "sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw==", - "dev": true, - "requires": { - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", - "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", - "dev": true, - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz", - "integrity": "sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g==", - "dev": true - }, - "@babel/helper-wrap-function": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz", - "integrity": "sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/traverse": "^7.8.3", - "@babel/types": "^7.8.3" - } - }, - "@babel/helpers": { - "version": "7.9.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.9.2.tgz", - "integrity": "sha512-JwLvzlXVPjO8eU9c/wF9/zOIN7X6h8DYf7mG4CiFRZRvZNKEF5dQ3H3V+ASkHoIB3mWhatgl5ONhyqHRI6MppA==", - "dev": true, - "requires": { - "@babel/template": "^7.8.3", - "@babel/traverse": "^7.9.0", - "@babel/types": "^7.9.0" - } - }, - "@babel/highlight": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", - "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.9.0", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.9.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz", - "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==", - "dev": true - }, - "@babel/plugin-proposal-async-generator-functions": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz", - "integrity": "sha512-NZ9zLv848JsV3hs8ryEh7Uaz/0KsmPLqv0+PdkDJL1cJy0K4kOCFa8zc1E3mp+RHPQcpdfb/6GovEsW4VDrOMw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-remap-async-to-generator": "^7.8.3", - "@babel/plugin-syntax-async-generators": "^7.8.0" - } - }, - "@babel/plugin-proposal-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz", - "integrity": "sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-syntax-dynamic-import": "^7.8.0" - } - }, - "@babel/plugin-proposal-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.8.3.tgz", - "integrity": "sha512-KGhQNZ3TVCQG/MjRbAUwuH+14y9q0tpxs1nWWs3pbSleRdDro9SAMMDyye8HhY1gqZ7/NqIc8SKhya0wRDgP1Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.0" - } - }, - "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" - } - }, - "@babel/plugin-proposal-numeric-separator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.8.3.tgz", - "integrity": "sha512-jWioO1s6R/R+wEHizfaScNsAx+xKgwTLNXSh7tTC4Usj3ItsPEhYkEpU4h+lpnBwq7NBVOJXfO6cRFYcX69JUQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3" - } - }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.9.5.tgz", - "integrity": "sha512-VP2oXvAf7KCYTthbUHwBlewbl1Iq059f6seJGsxMizaCdgHIeczOr7FBqELhSqfkIl04Fi8okzWzl63UKbQmmg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-transform-parameters": "^7.9.5" - } - }, - "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" - } - }, - "@babel/plugin-proposal-optional-chaining": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.9.0.tgz", - "integrity": "sha512-NDn5tu3tcv4W30jNhmc2hyD5c56G6cXx4TesJubhxrJeCvuuMpttxr0OnNCqbZGhFjLrg+NIhxxC+BK5F6yS3w==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.0" - } - }, - "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.8.tgz", - "integrity": "sha512-EVhjVsMpbhLw9ZfHWSx2iy13Q8Z/eg8e8ccVWt23sWQK5l1UdkoLJPN5w69UA4uITGBnEZD2JOe4QOHycYKv8A==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.8", - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-numeric-separator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.8.3.tgz", - "integrity": "sha512-H7dCMAdN83PcCmqmkHB5dtp+Xa9a6LKSvA2hiFBC/5alSHxM5VgWZXFqDi0YFe8XNGT6iCa+z4V4zSt/PdZ7Dw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.3.tgz", - "integrity": "sha512-kwj1j9lL/6Wd0hROD3b/OZZ7MSrZLqqn9RAZ5+cYYsflQ9HZBIKCUkr3+uL1MEJ1NePiUbf98jjiMQSv0NMR9g==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-transform-arrow-functions": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz", - "integrity": "sha512-0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-transform-async-to-generator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz", - "integrity": "sha512-imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-remap-async-to-generator": "^7.8.3" - } - }, - "@babel/plugin-transform-block-scoped-functions": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz", - "integrity": "sha512-vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-transform-block-scoping": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz", - "integrity": "sha512-pGnYfm7RNRgYRi7bids5bHluENHqJhrV4bCZRwc5GamaWIIs07N4rZECcmJL6ZClwjDz1GbdMZFtPs27hTB06w==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "lodash": "^4.17.13" - } - }, - "@babel/plugin-transform-classes": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.9.5.tgz", - "integrity": "sha512-x2kZoIuLC//O5iA7PEvecB105o7TLzZo8ofBVhP79N+DO3jaX+KYfww9TQcfBEZD0nikNyYcGB1IKtRq36rdmg==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.8.3", - "@babel/helper-define-map": "^7.8.3", - "@babel/helper-function-name": "^7.9.5", - "@babel/helper-optimise-call-expression": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-replace-supers": "^7.8.6", - "@babel/helper-split-export-declaration": "^7.8.3", - "globals": "^11.1.0" - } - }, - "@babel/plugin-transform-computed-properties": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz", - "integrity": "sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-transform-destructuring": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.9.5.tgz", - "integrity": "sha512-j3OEsGel8nHL/iusv/mRd5fYZ3DrOxWC82x0ogmdN/vHfAP4MYw+AFKYanzWlktNwikKvlzUV//afBW5FTp17Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-transform-dotall-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz", - "integrity": "sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-transform-duplicate-keys": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.3.tgz", - "integrity": "sha512-s8dHiBUbcbSgipS4SMFuWGqCvyge5V2ZeAWzR6INTVC3Ltjig/Vw1G2Gztv0vU/hRG9X8IvKvYdoksnUfgXOEQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-transform-exponentiation-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz", - "integrity": "sha512-zwIpuIymb3ACcInbksHaNcR12S++0MDLKkiqXHl3AzpgdKlFNhog+z/K0+TGW+b0w5pgTq4H6IwV/WhxbGYSjQ==", - "dev": true, - "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-transform-for-of": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.9.0.tgz", - "integrity": "sha512-lTAnWOpMwOXpyDx06N+ywmF3jNbafZEqZ96CGYabxHrxNX8l5ny7dt4bK/rGwAh9utyP2b2Hv7PlZh1AAS54FQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-transform-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz", - "integrity": "sha512-rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-transform-literals": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz", - "integrity": "sha512-3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-transform-member-expression-literals": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz", - "integrity": "sha512-3Wk2EXhnw+rP+IDkK6BdtPKsUE5IeZ6QOGrPYvw52NwBStw9V1ZVzxgK6fSKSxqUvH9eQPR3tm3cOq79HlsKYA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-transform-modules-amd": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.9.0.tgz", - "integrity": "sha512-vZgDDF003B14O8zJy0XXLnPH4sg+9X5hFBBGN1V+B2rgrB+J2xIypSN6Rk9imB2hSTHQi5OHLrFWsZab1GMk+Q==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helper-plugin-utils": "^7.8.3", - "babel-plugin-dynamic-import-node": "^2.3.0" - } - }, - "@babel/plugin-transform-modules-commonjs": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.0.tgz", - "integrity": "sha512-qzlCrLnKqio4SlgJ6FMMLBe4bySNis8DFn1VkGmOcxG9gqEyPIOzeQrA//u0HAKrWpJlpZbZMPB1n/OPa4+n8g==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-simple-access": "^7.8.3", - "babel-plugin-dynamic-import-node": "^2.3.0" - } - }, - "@babel/plugin-transform-modules-systemjs": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.9.0.tgz", - "integrity": "sha512-FsiAv/nao/ud2ZWy4wFacoLOm5uxl0ExSQ7ErvP7jpoihLR6Cq90ilOFyX9UXct3rbtKsAiZ9kFt5XGfPe/5SQ==", - "dev": true, - "requires": { - "@babel/helper-hoist-variables": "^7.8.3", - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helper-plugin-utils": "^7.8.3", - "babel-plugin-dynamic-import-node": "^2.3.0" - } - }, - "@babel/plugin-transform-modules-umd": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.9.0.tgz", - "integrity": "sha512-uTWkXkIVtg/JGRSIABdBoMsoIeoHQHPTL0Y2E7xf5Oj7sLqwVsNXOkNk0VJc7vF0IMBsPeikHxFjGe+qmwPtTQ==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz", - "integrity": "sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.3" - } - }, - "@babel/plugin-transform-new-target": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.3.tgz", - "integrity": "sha512-QuSGysibQpyxexRyui2vca+Cmbljo8bcRckgzYV4kRIsHpVeyeC3JDO63pY+xFZ6bWOBn7pfKZTqV4o/ix9sFw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-transform-object-assign": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.8.3.tgz", - "integrity": "sha512-i3LuN8tPDqUCRFu3dkzF2r1Nx0jp4scxtm7JxtIqI9he9Vk20YD+/zshdzR9JLsoBMlJlNR82a62vQExNEVx/Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-transform-object-super": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz", - "integrity": "sha512-57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-replace-supers": "^7.8.3" - } - }, - "@babel/plugin-transform-parameters": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.9.5.tgz", - "integrity": "sha512-0+1FhHnMfj6lIIhVvS4KGQJeuhe1GI//h5uptK4PvLt+BGBxsoUJbd3/IW002yk//6sZPlFgsG1hY6OHLcy6kA==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-transform-property-literals": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.3.tgz", - "integrity": "sha512-uGiiXAZMqEoQhRWMK17VospMZh5sXWg+dlh2soffpkAl96KAm+WZuJfa6lcELotSRmooLqg0MWdH6UUq85nmmg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-transform-regenerator": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.7.tgz", - "integrity": "sha512-TIg+gAl4Z0a3WmD3mbYSk+J9ZUH6n/Yc57rtKRnlA/7rcCvpekHXe0CMZHP1gYp7/KLe9GHTuIba0vXmls6drA==", - "dev": true, - "requires": { - "regenerator-transform": "^0.14.2" - } - }, - "@babel/plugin-transform-reserved-words": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.8.3.tgz", - "integrity": "sha512-mwMxcycN3omKFDjDQUl+8zyMsBfjRFr0Zn/64I41pmjv4NJuqcYlEtezwYtw9TFd9WR1vN5kiM+O0gMZzO6L0A==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-transform-shorthand-properties": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz", - "integrity": "sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-transform-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz", - "integrity": "sha512-CkuTU9mbmAoFOI1tklFWYYbzX5qCIZVXPVy0jpXgGwkplCndQAa58s2jr66fTeQnA64bDox0HL4U56CFYoyC7g==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-transform-sticky-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz", - "integrity": "sha512-9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-regex": "^7.8.3" - } - }, - "@babel/plugin-transform-template-literals": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz", - "integrity": "sha512-820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-transform-typeof-symbol": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.4.tgz", - "integrity": "sha512-2QKyfjGdvuNfHsb7qnBBlKclbD4CfshH2KvDabiijLMGXPHJXGxtDzwIF7bQP+T0ysw8fYTtxPafgfs/c1Lrqg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-transform-unicode-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz", - "integrity": "sha512-+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/preset-env": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.9.5.tgz", - "integrity": "sha512-eWGYeADTlPJH+wq1F0wNfPbVS1w1wtmMJiYk55Td5Yu28AsdR9AsC97sZ0Qq8fHqQuslVSIYSGJMcblr345GfQ==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.9.0", - "@babel/helper-compilation-targets": "^7.8.7", - "@babel/helper-module-imports": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-proposal-async-generator-functions": "^7.8.3", - "@babel/plugin-proposal-dynamic-import": "^7.8.3", - "@babel/plugin-proposal-json-strings": "^7.8.3", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-proposal-numeric-separator": "^7.8.3", - "@babel/plugin-proposal-object-rest-spread": "^7.9.5", - "@babel/plugin-proposal-optional-catch-binding": "^7.8.3", - "@babel/plugin-proposal-optional-chaining": "^7.9.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.8.3", - "@babel/plugin-syntax-async-generators": "^7.8.0", - "@babel/plugin-syntax-dynamic-import": "^7.8.0", - "@babel/plugin-syntax-json-strings": "^7.8.0", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", - "@babel/plugin-syntax-numeric-separator": "^7.8.0", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.0", - "@babel/plugin-syntax-top-level-await": "^7.8.3", - "@babel/plugin-transform-arrow-functions": "^7.8.3", - "@babel/plugin-transform-async-to-generator": "^7.8.3", - "@babel/plugin-transform-block-scoped-functions": "^7.8.3", - "@babel/plugin-transform-block-scoping": "^7.8.3", - "@babel/plugin-transform-classes": "^7.9.5", - "@babel/plugin-transform-computed-properties": "^7.8.3", - "@babel/plugin-transform-destructuring": "^7.9.5", - "@babel/plugin-transform-dotall-regex": "^7.8.3", - "@babel/plugin-transform-duplicate-keys": "^7.8.3", - "@babel/plugin-transform-exponentiation-operator": "^7.8.3", - "@babel/plugin-transform-for-of": "^7.9.0", - "@babel/plugin-transform-function-name": "^7.8.3", - "@babel/plugin-transform-literals": "^7.8.3", - "@babel/plugin-transform-member-expression-literals": "^7.8.3", - "@babel/plugin-transform-modules-amd": "^7.9.0", - "@babel/plugin-transform-modules-commonjs": "^7.9.0", - "@babel/plugin-transform-modules-systemjs": "^7.9.0", - "@babel/plugin-transform-modules-umd": "^7.9.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.8.3", - "@babel/plugin-transform-new-target": "^7.8.3", - "@babel/plugin-transform-object-super": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.9.5", - "@babel/plugin-transform-property-literals": "^7.8.3", - "@babel/plugin-transform-regenerator": "^7.8.7", - "@babel/plugin-transform-reserved-words": "^7.8.3", - "@babel/plugin-transform-shorthand-properties": "^7.8.3", - "@babel/plugin-transform-spread": "^7.8.3", - "@babel/plugin-transform-sticky-regex": "^7.8.3", - "@babel/plugin-transform-template-literals": "^7.8.3", - "@babel/plugin-transform-typeof-symbol": "^7.8.4", - "@babel/plugin-transform-unicode-regex": "^7.8.3", - "@babel/preset-modules": "^0.1.3", - "@babel/types": "^7.9.5", - "browserslist": "^4.9.1", - "core-js-compat": "^3.6.2", - "invariant": "^2.2.2", - "levenary": "^1.1.1", - "semver": "^5.5.0" - } - }, - "@babel/preset-modules": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.3.tgz", - "integrity": "sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - } - }, - "@babel/runtime": { - "version": "7.9.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz", - "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==", - "dev": true, - "requires": { - "regenerator-runtime": "^0.13.4" - } - }, - "@babel/template": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", - "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6" - } - }, - "@babel/traverse": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.5.tgz", - "integrity": "sha512-c4gH3jsvSuGUezlP6rzSJ6jf8fYjLj3hsMZRx/nX0h+fmHN0w+ekubRrHPqnMec0meycA2nwCsJ7dC8IPem2FQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.9.5", - "@babel/helper-function-name": "^7.9.5", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.9.0", - "@babel/types": "^7.9.5", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.13" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "@babel/types": { - "version": "7.9.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz", - "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.9.5", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - }, - "@types/color-name": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", - "dev": true - }, - "@webassemblyjs/ast": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", - "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", - "dev": true, - "requires": { - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0" - } - }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", - "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==", - "dev": true - }, - "@webassemblyjs/helper-api-error": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", - "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", - "dev": true - }, - "@webassemblyjs/helper-buffer": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", - "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", - "dev": true - }, - "@webassemblyjs/helper-code-frame": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", - "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", - "dev": true, - "requires": { - "@webassemblyjs/wast-printer": "1.9.0" - } - }, - "@webassemblyjs/helper-fsm": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", - "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==", - "dev": true - }, - "@webassemblyjs/helper-module-context": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", - "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0" - } - }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", - "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", - "dev": true - }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", - "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0" - } - }, - "@webassemblyjs/ieee754": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", - "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", - "dev": true, - "requires": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "@webassemblyjs/leb128": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", - "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", - "dev": true, - "requires": { - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/utf8": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", - "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", - "dev": true - }, - "@webassemblyjs/wasm-edit": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", - "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/helper-wasm-section": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0", - "@webassemblyjs/wasm-opt": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0", - "@webassemblyjs/wast-printer": "1.9.0" - } - }, - "@webassemblyjs/wasm-gen": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", - "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/ieee754": "1.9.0", - "@webassemblyjs/leb128": "1.9.0", - "@webassemblyjs/utf8": "1.9.0" - } - }, - "@webassemblyjs/wasm-opt": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", - "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0" - } - }, - "@webassemblyjs/wasm-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", - "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-api-error": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/ieee754": "1.9.0", - "@webassemblyjs/leb128": "1.9.0", - "@webassemblyjs/utf8": "1.9.0" - } - }, - "@webassemblyjs/wast-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", - "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/floating-point-hex-parser": "1.9.0", - "@webassemblyjs/helper-api-error": "1.9.0", - "@webassemblyjs/helper-code-frame": "1.9.0", - "@webassemblyjs/helper-fsm": "1.9.0", - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/wast-printer": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", - "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0", - "@xtuc/long": "4.2.2" - } - }, - "@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true - }, - "@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true - }, - "acorn": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz", - "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==", - "dev": true - }, - "acorn-jsx": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz", - "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==", - "dev": true - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-errors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", - "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", - "dev": true - }, - "ajv-keywords": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", - "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==", - "dev": true - }, - "ansi-escapes": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", - "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", - "dev": true, - "requires": { - "type-fest": "^0.11.0" - }, - "dependencies": { - "type-fest": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", - "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", - "dev": true - } - } - }, - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - }, - "dependencies": { - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } - } - }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "dev": true - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "asn1.js": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", - "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "assert": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", - "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", - "dev": true, - "requires": { - "object-assign": "^4.1.1", - "util": "0.10.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "dev": true - }, - "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "dev": true, - "requires": { - "inherits": "2.0.1" - } - } - } - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true - }, - "astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", - "dev": true - }, - "async-each": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", - "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", - "dev": true - }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true - }, - "babel-helper-evaluate-path": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/babel-helper-evaluate-path/-/babel-helper-evaluate-path-0.5.0.tgz", - "integrity": "sha512-mUh0UhS607bGh5wUMAQfOpt2JX2ThXMtppHRdRU1kL7ZLRWIXxoV2UIV1r2cAeeNeU1M5SB5/RSUgUxrK8yOkA==", - "dev": true - }, - "babel-helper-flip-expressions": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-helper-flip-expressions/-/babel-helper-flip-expressions-0.4.3.tgz", - "integrity": "sha1-NpZzahKKwYvCUlS19AoizrPB0/0=", - "dev": true - }, - "babel-helper-is-nodes-equiv": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/babel-helper-is-nodes-equiv/-/babel-helper-is-nodes-equiv-0.0.1.tgz", - "integrity": "sha1-NOmzALFHnd2Y7HfqC76TQt/jloQ=", - "dev": true - }, - "babel-helper-is-void-0": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-helper-is-void-0/-/babel-helper-is-void-0-0.4.3.tgz", - "integrity": "sha1-fZwBtFYee5Xb2g9u7kj1tg5nMT4=", - "dev": true - }, - "babel-helper-mark-eval-scopes": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-helper-mark-eval-scopes/-/babel-helper-mark-eval-scopes-0.4.3.tgz", - "integrity": "sha1-0kSjvvmESHJgP/tG4izorN9VFWI=", - "dev": true - }, - "babel-helper-remove-or-void": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-helper-remove-or-void/-/babel-helper-remove-or-void-0.4.3.tgz", - "integrity": "sha1-pPA7QAd6D/6I5F0HAQ3uJB/1rmA=", - "dev": true - }, - "babel-helper-to-multiple-sequence-expressions": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/babel-helper-to-multiple-sequence-expressions/-/babel-helper-to-multiple-sequence-expressions-0.5.0.tgz", - "integrity": "sha512-m2CvfDW4+1qfDdsrtf4dwOslQC3yhbgyBFptncp4wvtdrDHqueW7slsYv4gArie056phvQFhT2nRcGS4bnm6mA==", - "dev": true - }, - "babel-loader": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.1.0.tgz", - "integrity": "sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw==", - "dev": true, - "requires": { - "find-cache-dir": "^2.1.0", - "loader-utils": "^1.4.0", - "mkdirp": "^0.5.3", - "pify": "^4.0.1", - "schema-utils": "^2.6.5" - } - }, - "babel-plugin-dynamic-import-node": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz", - "integrity": "sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==", - "dev": true, - "requires": { - "object.assign": "^4.1.0" - } - }, - "babel-plugin-minify-builtins": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-builtins/-/babel-plugin-minify-builtins-0.5.0.tgz", - "integrity": "sha512-wpqbN7Ov5hsNwGdzuzvFcjgRlzbIeVv1gMIlICbPj0xkexnfoIDe7q+AZHMkQmAE/F9R5jkrB6TLfTegImlXag==", - "dev": true - }, - "babel-plugin-minify-constant-folding": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-constant-folding/-/babel-plugin-minify-constant-folding-0.5.0.tgz", - "integrity": "sha512-Vj97CTn/lE9hR1D+jKUeHfNy+m1baNiJ1wJvoGyOBUx7F7kJqDZxr9nCHjO/Ad+irbR3HzR6jABpSSA29QsrXQ==", - "dev": true, - "requires": { - "babel-helper-evaluate-path": "^0.5.0" - } - }, - "babel-plugin-minify-dead-code-elimination": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-dead-code-elimination/-/babel-plugin-minify-dead-code-elimination-0.5.1.tgz", - "integrity": "sha512-x8OJOZIrRmQBcSqxBcLbMIK8uPmTvNWPXH2bh5MDCW1latEqYiRMuUkPImKcfpo59pTUB2FT7HfcgtG8ZlR5Qg==", - "dev": true, - "requires": { - "babel-helper-evaluate-path": "^0.5.0", - "babel-helper-mark-eval-scopes": "^0.4.3", - "babel-helper-remove-or-void": "^0.4.3", - "lodash": "^4.17.11" - } - }, - "babel-plugin-minify-flip-comparisons": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-flip-comparisons/-/babel-plugin-minify-flip-comparisons-0.4.3.tgz", - "integrity": "sha1-AMqHDLjxO0XAOLPB68DyJyk8llo=", - "dev": true, - "requires": { - "babel-helper-is-void-0": "^0.4.3" - } - }, - "babel-plugin-minify-guarded-expressions": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-guarded-expressions/-/babel-plugin-minify-guarded-expressions-0.4.4.tgz", - "integrity": "sha512-RMv0tM72YuPPfLT9QLr3ix9nwUIq+sHT6z8Iu3sLbqldzC1Dls8DPCywzUIzkTx9Zh1hWX4q/m9BPoPed9GOfA==", - "dev": true, - "requires": { - "babel-helper-evaluate-path": "^0.5.0", - "babel-helper-flip-expressions": "^0.4.3" - } - }, - "babel-plugin-minify-infinity": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-infinity/-/babel-plugin-minify-infinity-0.4.3.tgz", - "integrity": "sha1-37h2obCKBldjhO8/kuZTumB7Oco=", - "dev": true - }, - "babel-plugin-minify-mangle-names": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-mangle-names/-/babel-plugin-minify-mangle-names-0.5.0.tgz", - "integrity": "sha512-3jdNv6hCAw6fsX1p2wBGPfWuK69sfOjfd3zjUXkbq8McbohWy23tpXfy5RnToYWggvqzuMOwlId1PhyHOfgnGw==", - "dev": true, - "requires": { - "babel-helper-mark-eval-scopes": "^0.4.3" - } - }, - "babel-plugin-minify-numeric-literals": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-numeric-literals/-/babel-plugin-minify-numeric-literals-0.4.3.tgz", - "integrity": "sha1-jk/VYcefeAEob/YOjF/Z3u6TwLw=", - "dev": true - }, - "babel-plugin-minify-replace": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-replace/-/babel-plugin-minify-replace-0.5.0.tgz", - "integrity": "sha512-aXZiaqWDNUbyNNNpWs/8NyST+oU7QTpK7J9zFEFSA0eOmtUNMU3fczlTTTlnCxHmq/jYNFEmkkSG3DDBtW3Y4Q==", - "dev": true - }, - "babel-plugin-minify-simplify": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-simplify/-/babel-plugin-minify-simplify-0.5.1.tgz", - "integrity": "sha512-OSYDSnoCxP2cYDMk9gxNAed6uJDiDz65zgL6h8d3tm8qXIagWGMLWhqysT6DY3Vs7Fgq7YUDcjOomhVUb+xX6A==", - "dev": true, - "requires": { - "babel-helper-evaluate-path": "^0.5.0", - "babel-helper-flip-expressions": "^0.4.3", - "babel-helper-is-nodes-equiv": "^0.0.1", - "babel-helper-to-multiple-sequence-expressions": "^0.5.0" - } - }, - "babel-plugin-minify-type-constructors": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-plugin-minify-type-constructors/-/babel-plugin-minify-type-constructors-0.4.3.tgz", - "integrity": "sha1-G8bxW4f3qxCF1CszC3F2V6IVZQA=", - "dev": true, - "requires": { - "babel-helper-is-void-0": "^0.4.3" - } - }, - "babel-plugin-transform-inline-consecutive-adds": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-inline-consecutive-adds/-/babel-plugin-transform-inline-consecutive-adds-0.4.3.tgz", - "integrity": "sha1-Mj1Ho+pjqDp6w8gRro5pQfrysNE=", - "dev": true - }, - "babel-plugin-transform-member-expression-literals": { - "version": "6.9.4", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-member-expression-literals/-/babel-plugin-transform-member-expression-literals-6.9.4.tgz", - "integrity": "sha1-NwOcmgwzE6OUlfqsL/OmtbnQOL8=", - "dev": true - }, - "babel-plugin-transform-merge-sibling-variables": { - "version": "6.9.4", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-merge-sibling-variables/-/babel-plugin-transform-merge-sibling-variables-6.9.4.tgz", - "integrity": "sha1-hbQi/DN3tEnJ0c3kQIcgNTJAHa4=", - "dev": true - }, - "babel-plugin-transform-minify-booleans": { - "version": "6.9.4", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-minify-booleans/-/babel-plugin-transform-minify-booleans-6.9.4.tgz", - "integrity": "sha1-rLs+VqNVXdI5KOS1gtKFFi3SsZg=", - "dev": true - }, - "babel-plugin-transform-property-literals": { - "version": "6.9.4", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-property-literals/-/babel-plugin-transform-property-literals-6.9.4.tgz", - "integrity": "sha1-mMHSHiVXNlc/k+zlRFn2ziSYXTk=", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "babel-plugin-transform-regexp-constructors": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-regexp-constructors/-/babel-plugin-transform-regexp-constructors-0.4.3.tgz", - "integrity": "sha1-WLd3W2OvzzMyj66aX4j71PsLSWU=", - "dev": true - }, - "babel-plugin-transform-remove-console": { - "version": "6.9.4", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-console/-/babel-plugin-transform-remove-console-6.9.4.tgz", - "integrity": "sha1-uYA2DAZzhOJLNXpYjYB9PINSd4A=", - "dev": true - }, - "babel-plugin-transform-remove-debugger": { - "version": "6.9.4", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-debugger/-/babel-plugin-transform-remove-debugger-6.9.4.tgz", - "integrity": "sha1-QrcnYxyXl44estGZp67IShgznvI=", - "dev": true - }, - "babel-plugin-transform-remove-undefined": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-undefined/-/babel-plugin-transform-remove-undefined-0.5.0.tgz", - "integrity": "sha512-+M7fJYFaEE/M9CXa0/IRkDbiV3wRELzA1kKQFCJ4ifhrzLKn/9VCCgj9OFmYWwBd8IB48YdgPkHYtbYq+4vtHQ==", - "dev": true, - "requires": { - "babel-helper-evaluate-path": "^0.5.0" - } - }, - "babel-plugin-transform-simplify-comparison-operators": { - "version": "6.9.4", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-simplify-comparison-operators/-/babel-plugin-transform-simplify-comparison-operators-6.9.4.tgz", - "integrity": "sha1-9ir+CWyrDh9ootdT/fKDiIRxzrk=", - "dev": true - }, - "babel-plugin-transform-undefined-to-void": { - "version": "6.9.4", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-undefined-to-void/-/babel-plugin-transform-undefined-to-void-6.9.4.tgz", - "integrity": "sha1-viQcqBQEAwZ4t0hxcyK4nQyP4oA=", - "dev": true - }, - "babel-preset-minify": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/babel-preset-minify/-/babel-preset-minify-0.5.1.tgz", - "integrity": "sha512-1IajDumYOAPYImkHbrKeiN5AKKP9iOmRoO2IPbIuVp0j2iuCcj0n7P260z38siKMZZ+85d3mJZdtW8IgOv+Tzg==", - "dev": true, - "requires": { - "babel-plugin-minify-builtins": "^0.5.0", - "babel-plugin-minify-constant-folding": "^0.5.0", - "babel-plugin-minify-dead-code-elimination": "^0.5.1", - "babel-plugin-minify-flip-comparisons": "^0.4.3", - "babel-plugin-minify-guarded-expressions": "^0.4.4", - "babel-plugin-minify-infinity": "^0.4.3", - "babel-plugin-minify-mangle-names": "^0.5.0", - "babel-plugin-minify-numeric-literals": "^0.4.3", - "babel-plugin-minify-replace": "^0.5.0", - "babel-plugin-minify-simplify": "^0.5.1", - "babel-plugin-minify-type-constructors": "^0.4.3", - "babel-plugin-transform-inline-consecutive-adds": "^0.4.3", - "babel-plugin-transform-member-expression-literals": "^6.9.4", - "babel-plugin-transform-merge-sibling-variables": "^6.9.4", - "babel-plugin-transform-minify-booleans": "^6.9.4", - "babel-plugin-transform-property-literals": "^6.9.4", - "babel-plugin-transform-regexp-constructors": "^0.4.3", - "babel-plugin-transform-remove-console": "^6.9.4", - "babel-plugin-transform-remove-debugger": "^6.9.4", - "babel-plugin-transform-remove-undefined": "^0.5.0", - "babel-plugin-transform-simplify-comparison-operators": "^6.9.4", - "babel-plugin-transform-undefined-to-void": "^6.9.4", - "lodash": "^4.17.11" - } - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "base64-js": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", - "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==", - "dev": true - }, - "big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true - }, - "binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "dev": true - }, - "bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "dev": true, - "optional": true, - "requires": { - "file-uri-to-path": "1.0.0" - } - }, - "bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true - }, - "bn.js": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", - "dev": true - }, - "browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dev": true, - "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "dev": true, - "requires": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "browserify-rsa": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", - "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "randombytes": "^2.0.1" - } - }, - "browserify-sign": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", - "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", - "dev": true, - "requires": { - "bn.js": "^4.1.1", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.2", - "elliptic": "^6.0.0", - "inherits": "^2.0.1", - "parse-asn1": "^5.0.0" - } - }, - "browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", - "dev": true, - "requires": { - "pako": "~1.0.5" - } - }, - "browserslist": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.18.1.tgz", - "integrity": "sha512-8ScCzdpPwR2wQh8IT82CA2VgDwjHyqMovPBZSNH54+tm4Jk2pCuv90gmAdH6J84OCRWi0b4gMe6O6XPXuJnjgQ==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001280", - "electron-to-chromium": "^1.3.896", - "escalade": "^3.1.1", - "node-releases": "^2.0.1", - "picocolors": "^1.0.0" - }, - "dependencies": { - "caniuse-lite": { - "version": "1.0.30001282", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001282.tgz", - "integrity": "sha512-YhF/hG6nqBEllymSIjLtR2iWDDnChvhnVJqp+vloyt2tEHFG1yBR+ac2B/rOw0qOK0m0lEXU2dv4E/sMk5P9Kg==", - "dev": true - }, - "electron-to-chromium": { - "version": "1.3.906", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.906.tgz", - "integrity": "sha512-UjoECdcOYIVzWmrbtNnYpPrDuu+RtiO5W08Vdbid9ydGQMSdnqtJUtvOqQEAVQqpoXN9kSW9YnQufvzLQMYQOw==", - "dev": true - }, - "node-releases": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", - "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", - "dev": true - } - } - }, - "buffer": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", - "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", - "dev": true, - "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "dev": true - }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", - "dev": true - }, - "builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", - "dev": true - }, - "cacache": { - "version": "12.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", - "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", - "dev": true, - "requires": { - "bluebird": "^3.5.5", - "chownr": "^1.1.1", - "figgy-pudding": "^3.5.1", - "glob": "^7.1.4", - "graceful-fs": "^4.1.15", - "infer-owner": "^1.0.3", - "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.3", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" - } - }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true - }, - "chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "dev": true, - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - }, - "dependencies": { - "fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "dev": true, - "optional": true, - "requires": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - } - } - } - }, - "chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true - }, - "chrome-trace-event": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", - "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "requires": { - "restore-cursor": "^3.1.0" - } - }, - "cli-width": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", - "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", - "dev": true - }, - "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, - "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - }, - "dependencies": { - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - } - } - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dev": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "dev": true - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "console-browserify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", - "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", - "dev": true - }, - "constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", - "dev": true - }, - "convert-source-map": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", - "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - } - }, - "copy-concurrently": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", - "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", - "dev": true, - "requires": { - "aproba": "^1.1.1", - "fs-write-stream-atomic": "^1.0.8", - "iferr": "^0.1.5", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.0" - } - }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true - }, - "core-js": { - "version": "3.6.5", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz", - "integrity": "sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==", - "dev": true - }, - "core-js-compat": { - "version": "3.6.5", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.5.tgz", - "integrity": "sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng==", - "dev": true, - "requires": { - "browserslist": "^4.8.5", - "semver": "7.0.0" - }, - "dependencies": { - "semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true - } - } - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, - "create-ecdh": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", - "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.0.0" - } - }, - "create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dev": true, - "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "dev": true, - "requires": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - } - }, - "cyclist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", - "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", - "dev": true - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true - }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true - }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dev": true, - "requires": { - "object-keys": "^1.0.12" - } - }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "des.js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", - "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "detect-file": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", - "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", - "dev": true - }, - "diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - } - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "domain-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", - "dev": true - }, - "duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", - "dev": true, - "requires": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - } - }, - "elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "dev": true, - "requires": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true - }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "requires": { - "once": "^1.4.0" - } - }, - "enhanced-resolve": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz", - "integrity": "sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.5.0", - "tapable": "^1.0.0" - }, - "dependencies": { - "memory-fs": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", - "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", - "dev": true, - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - } - } - }, - "errno": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", - "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", - "dev": true, - "requires": { - "prr": "~1.0.1" - } - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "eslint": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", - "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "ajv": "^6.10.0", - "chalk": "^2.1.0", - "cross-spawn": "^6.0.5", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "eslint-scope": "^5.0.0", - "eslint-utils": "^1.4.3", - "eslint-visitor-keys": "^1.1.0", - "espree": "^6.1.2", - "esquery": "^1.0.1", - "esutils": "^2.0.2", - "file-entry-cache": "^5.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", - "globals": "^12.1.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "inquirer": "^7.0.0", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.14", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "optionator": "^0.8.3", - "progress": "^2.0.0", - "regexpp": "^2.0.1", - "semver": "^6.1.2", - "strip-ansi": "^5.2.0", - "strip-json-comments": "^3.0.1", - "table": "^5.2.3", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "glob-parent": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", - "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", - "dev": true, - "requires": { - "type-fest": "^0.8.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "eslint-scope": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz", - "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==", - "dev": true, - "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - }, - "eslint-utils": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", - "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^1.1.0" - } - }, - "eslint-visitor-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", - "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", - "dev": true - }, - "espree": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", - "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", - "dev": true, - "requires": { - "acorn": "^7.1.1", - "acorn-jsx": "^5.2.0", - "eslint-visitor-keys": "^1.1.0" - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "esquery": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.2.0.tgz", - "integrity": "sha512-weltsSqdeWIX9G2qQZz7KlTRJdkkOCTPgLYJUz1Hacf48R4YOwGPHO3+ORfWedqJKbq5WQmsgK90n+pFLIKt/Q==", - "dev": true, - "requires": { - "estraverse": "^5.0.0" - }, - "dependencies": { - "estraverse": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.0.0.tgz", - "integrity": "sha512-j3acdrMzqrxmJTNj5dbr1YbjacrYgAxVMeF0gK16E3j494mOe7xygM/ZLIguEQ0ETwAg2hlJCtHRGav+y0Ny5A==", - "dev": true - } - } - }, - "esrecurse": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", - "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", - "dev": true, - "requires": { - "estraverse": "^4.1.0" - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "events": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.1.0.tgz", - "integrity": "sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg==", - "dev": true - }, - "evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dev": true, - "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", - "dev": true, - "requires": { - "homedir-polyfill": "^1.0.1" - } - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dev": true, - "requires": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "fast-deep-equal": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", - "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", - "dev": true - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "figgy-pudding": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", - "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", - "dev": true - }, - "figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, - "file-entry-cache": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", - "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", - "dev": true, - "requires": { - "flat-cache": "^2.0.1" - } - }, - "file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "dev": true, - "optional": true - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "find-cache-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" - } - }, - "findup-sync": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", - "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", - "dev": true, - "requires": { - "detect-file": "^1.0.0", - "is-glob": "^4.0.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" - } - }, - "flat-cache": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", - "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", - "dev": true, - "requires": { - "flatted": "^2.0.0", - "rimraf": "2.6.3", - "write": "1.0.3" - } - }, - "flatted": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", - "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", - "dev": true - }, - "flush-write-stream": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", - "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "readable-stream": "^2.3.6" - } - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true - }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "dev": true, - "requires": { - "map-cache": "^0.2.2" - } - }, - "from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - } - }, - "fs-readdir-recursive": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", - "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", - "dev": true - }, - "fs-write-stream-atomic": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", - "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "iferr": "^0.1.5", - "imurmurhash": "^0.1.4", - "readable-stream": "1 || 2" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true - }, - "gensync": { - "version": "1.0.0-beta.1", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", - "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", - "dev": true - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true - }, - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "global-modules": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", - "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", - "dev": true, - "requires": { - "global-prefix": "^3.0.0" - }, - "dependencies": { - "global-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", - "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", - "dev": true, - "requires": { - "ini": "^1.3.5", - "kind-of": "^6.0.2", - "which": "^1.3.1" - } - } - } - }, - "global-prefix": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", - "dev": true, - "requires": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" - } - }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true - }, - "graceful-fs": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", - "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", - "dev": true - }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dev": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "hash-base": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", - "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "dev": true, - "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "homedir-polyfill": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", - "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", - "dev": true, - "requires": { - "parse-passwd": "^1.0.0" - } - }, - "https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", - "dev": true - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ieee754": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", - "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", - "dev": true - }, - "iferr": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", - "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", - "dev": true - }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - }, - "import-fresh": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", - "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "import-local": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", - "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", - "dev": true, - "requires": { - "pkg-dir": "^3.0.0", - "resolve-cwd": "^2.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "infer-owner": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, - "inquirer": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.1.0.tgz", - "integrity": "sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg==", - "dev": true, - "requires": { - "ansi-escapes": "^4.2.1", - "chalk": "^3.0.0", - "cli-cursor": "^3.1.0", - "cli-width": "^2.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.15", - "mute-stream": "0.0.8", - "run-async": "^2.4.0", - "rxjs": "^6.5.3", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6" - }, - "dependencies": { - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "dev": true, - "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - }, - "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "interpret": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", - "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", - "dev": true - }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dev": true, - "requires": { - "loose-envify": "^1.0.0" - } - }, - "invert-kv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", - "dev": true - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true, - "requires": { - "binary-extensions": "^1.0.0" - } - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", - "dev": true - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true - }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true - }, - "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true - }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true - }, - "json5": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", - "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - }, - "lcid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", - "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", - "dev": true, - "requires": { - "invert-kv": "^2.0.0" - } - }, - "leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true - }, - "levenary": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz", - "integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==", - "dev": true, - "requires": { - "leven": "^3.1.0" - } - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "loader-runner": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", - "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", - "dev": true - }, - "loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - }, - "dependencies": { - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - } - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "requires": { - "yallist": "^3.0.2" - } - }, - "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, - "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" - } - }, - "map-age-cleaner": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", - "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", - "dev": true, - "requires": { - "p-defer": "^1.0.0" - } - }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true - }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, - "requires": { - "object-visit": "^1.0.0" - } - }, - "md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "mem": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", - "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", - "dev": true, - "requires": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^2.0.0", - "p-is-promise": "^2.0.0" - } - }, - "memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", - "dev": true, - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true - }, - "mississippi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", - "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", - "dev": true, - "requires": { - "concat-stream": "^1.5.0", - "duplexify": "^3.4.2", - "end-of-stream": "^1.1.0", - "flush-write-stream": "^1.0.0", - "from2": "^2.1.0", - "parallel-transform": "^1.1.0", - "pump": "^3.0.0", - "pumpify": "^1.3.3", - "stream-each": "^1.1.0", - "through2": "^2.0.0" - } - }, - "mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dev": true, - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "move-concurrently": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", - "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", - "dev": true, - "requires": { - "aproba": "^1.1.1", - "copy-concurrently": "^1.0.0", - "fs-write-stream-atomic": "^1.0.8", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.3" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "dev": true - }, - "nan": { - "version": "2.14.1", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz", - "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==", - "dev": true, - "optional": true - }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - } - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "neo-async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", - "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", - "dev": true - }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true - }, - "node-libs-browser": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", - "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", - "dev": true, - "requires": { - "assert": "^1.1.1", - "browserify-zlib": "^0.2.0", - "buffer": "^4.3.0", - "console-browserify": "^1.1.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.11.0", - "domain-browser": "^1.1.1", - "events": "^3.0.0", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "0.0.1", - "process": "^0.11.10", - "punycode": "^1.2.4", - "querystring-es3": "^0.2.0", - "readable-stream": "^2.3.3", - "stream-browserify": "^2.0.1", - "stream-http": "^2.7.2", - "string_decoder": "^1.0.0", - "timers-browserify": "^2.0.4", - "tty-browserify": "0.0.0", - "url": "^0.11.0", - "util": "^0.11.0", - "vm-browserify": "^1.0.1" - }, - "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - } - } - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "dev": true, - "requires": { - "path-key": "^2.0.0" - } - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dev": true, - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dev": true, - "requires": { - "isobject": "^3.0.0" - } - }, - "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" - } - }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", - "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - } - }, - "os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", - "dev": true - }, - "os-locale": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", - "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", - "dev": true, - "requires": { - "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" - } - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true - }, - "p-defer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", - "dev": true - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true - }, - "p-is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", - "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", - "dev": true - }, - "pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true - }, - "parallel-transform": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", - "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", - "dev": true, - "requires": { - "cyclist": "^1.0.1", - "inherits": "^2.0.3", - "readable-stream": "^2.1.5" - } - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "requires": { - "callsites": "^3.0.0" - } - }, - "parse-asn1": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", - "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==", - "dev": true, - "requires": { - "asn1.js": "^4.0.0", - "browserify-aes": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, - "parse-passwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", - "dev": true - }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true - }, - "path-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", - "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", - "dev": true - }, - "path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", - "dev": true - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "pbkdf2": { - "version": "3.0.17", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", - "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", - "dev": true, - "requires": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - }, - "pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "dev": true, - "requires": { - "find-up": "^3.0.0" - }, - "dependencies": { - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - } - } - }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true - }, - "private": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", - "dev": true - }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", - "dev": true - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true - }, - "promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", - "dev": true - }, - "prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", - "dev": true - }, - "public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "pumpify": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", - "dev": true, - "requires": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - }, - "dependencies": { - "pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - } - } - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", - "dev": true - }, - "querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", - "dev": true - }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "dev": true, - "requires": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - } - }, - "regenerate": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", - "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", - "dev": true - }, - "regenerate-unicode-properties": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", - "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", - "dev": true, - "requires": { - "regenerate": "^1.4.0" - } - }, - "regenerator-runtime": { - "version": "0.13.5", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", - "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==", - "dev": true - }, - "regenerator-transform": { - "version": "0.14.4", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.4.tgz", - "integrity": "sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw==", - "dev": true, - "requires": { - "@babel/runtime": "^7.8.4", - "private": "^0.1.8" - } - }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - }, - "regexpp": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", - "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", - "dev": true - }, - "regexpu-core": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz", - "integrity": "sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ==", - "dev": true, - "requires": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.2.0", - "regjsgen": "^0.5.1", - "regjsparser": "^0.6.4", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.2.0" - } - }, - "regjsgen": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.1.tgz", - "integrity": "sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg==", - "dev": true - }, - "regjsparser": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", - "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", - "dev": true, - "requires": { - "jsesc": "~0.5.0" - }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true - } - } - }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true - }, - "repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", - "dev": true - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true - }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, - "resolve": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", - "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", - "dev": true, - "requires": { - "path-parse": "^1.0.6" - } - }, - "resolve-cwd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", - "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", - "dev": true, - "requires": { - "resolve-from": "^3.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", - "dev": true - } - } - }, - "resolve-dir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", - "dev": true, - "requires": { - "expand-tilde": "^2.0.0", - "global-modules": "^1.0.0" - }, - "dependencies": { - "global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", - "dev": true, - "requires": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" - } - } - } - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "dev": true - }, - "restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "requires": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - } - }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true - }, - "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "run-async": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.0.tgz", - "integrity": "sha512-xJTbh/d7Lm7SBhc1tNvTpeCHaEzoyxPrqNlvSdMfBTYwaY++UJFyXUOxAtsRUXjlqOfj8luNaR9vjCh4KeV+pg==", - "dev": true, - "requires": { - "is-promise": "^2.1.0" - } - }, - "run-queue": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", - "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", - "dev": true, - "requires": { - "aproba": "^1.1.1" - } - }, - "rxjs": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz", - "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dev": true, - "requires": { - "ret": "~0.1.10" - } - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "schema-utils": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.5.tgz", - "integrity": "sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ==", - "dev": true, - "requires": { - "ajv": "^6.12.0", - "ajv-keywords": "^3.4.1" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, - "serialize-javascript": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz", - "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==", - "dev": true - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true - }, - "set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", - "dev": true - }, - "sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true - }, - "signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", - "dev": true - }, - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "dev": true - }, - "slice-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", - "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - } - } - }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "requires": { - "kind-of": "^3.2.0" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "source-list-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "dev": true, - "requires": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "source-map-support": { - "version": "0.5.16", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz", - "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", - "dev": true - }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.0" - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "ssri": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", - "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", - "dev": true, - "requires": { - "figgy-pudding": "^3.5.1" - } - }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "dev": true, - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "stream-browserify": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", - "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", - "dev": true, - "requires": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" - } - }, - "stream-each": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", - "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "stream-shift": "^1.0.0" - } - }, - "stream-http": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", - "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", - "dev": true, - "requires": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.3.6", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" - } - }, - "stream-shift": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", - "dev": true - }, - "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - } - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - } - } - }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "dev": true - }, - "strip-json-comments": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.0.tgz", - "integrity": "sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w==", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "table": { - "version": "5.4.6", - "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", - "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", - "dev": true, - "requires": { - "ajv": "^6.10.2", - "lodash": "^4.17.14", - "slice-ansi": "^2.1.0", - "string-width": "^3.0.0" - }, - "dependencies": { - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - } - } - }, - "tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", - "dev": true - }, - "terser": { - "version": "4.6.11", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.6.11.tgz", - "integrity": "sha512-76Ynm7OXUG5xhOpblhytE7X58oeNSmC8xnNhjWVo8CksHit0U0kO4hfNbPrrYwowLWFgM2n9L176VNx2QaHmtA==", - "dev": true, - "requires": { - "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" - }, - "dependencies": { - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "terser-webpack-plugin": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz", - "integrity": "sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA==", - "dev": true, - "requires": { - "cacache": "^12.0.2", - "find-cache-dir": "^2.1.0", - "is-wsl": "^1.1.0", - "schema-utils": "^1.0.0", - "serialize-javascript": "^2.1.2", - "source-map": "^0.6.1", - "terser": "^4.1.2", - "webpack-sources": "^1.4.0", - "worker-farm": "^1.7.0" - }, - "dependencies": { - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true - }, - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "timers-browserify": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", - "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==", - "dev": true, - "requires": { - "setimmediate": "^1.0.4" - } - }, - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "requires": { - "os-tmpdir": "~1.0.2" - } - }, - "to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", - "dev": true - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true - }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - }, - "tslib": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", - "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==", - "dev": true - }, - "tty-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", - "dev": true - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2" - } - }, - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true - }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true - }, - "unicode-canonical-property-names-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", - "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", - "dev": true - }, - "unicode-match-property-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", - "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", - "dev": true, - "requires": { - "unicode-canonical-property-names-ecmascript": "^1.0.4", - "unicode-property-aliases-ecmascript": "^1.0.4" - } - }, - "unicode-match-property-value-ecmascript": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", - "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", - "dev": true - }, - "unicode-property-aliases-ecmascript": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", - "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", - "dev": true - }, - "union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - } - }, - "unique-filename": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", - "dev": true, - "requires": { - "unique-slug": "^2.0.0" - } - }, - "unique-slug": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", - "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4" - } - }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "dev": true, - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dev": true, - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true - } - } - }, - "upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "dev": true - }, - "uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "dev": true - }, - "url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "dev": true, - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", - "dev": true - } - } - }, - "use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true - }, - "util": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", - "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", - "dev": true, - "requires": { - "inherits": "2.0.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - } - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "v8-compile-cache": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz", - "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==", - "dev": true - }, - "vm-browserify": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", - "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", - "dev": true - }, - "watchpack": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.1.tgz", - "integrity": "sha512-+IF9hfUFOrYOOaKyfaI7h7dquUIOgyEMoQMLA7OP5FxegKA2+XdXThAZ9TU2kucfhDH7rfMHs1oPYziVGWRnZA==", - "dev": true, - "requires": { - "chokidar": "^2.1.8", - "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0" - } - }, - "webpack": { - "version": "4.42.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.42.1.tgz", - "integrity": "sha512-SGfYMigqEfdGchGhFFJ9KyRpQKnipvEvjc1TwrXEPCM6H5Wywu10ka8o3KGrMzSMxMQKt8aCHUFh5DaQ9UmyRg==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/wasm-edit": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0", - "acorn": "^6.2.1", - "ajv": "^6.10.2", - "ajv-keywords": "^3.4.1", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^4.1.0", - "eslint-scope": "^4.0.3", - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^2.4.0", - "loader-utils": "^1.2.3", - "memory-fs": "^0.4.1", - "micromatch": "^3.1.10", - "mkdirp": "^0.5.3", - "neo-async": "^2.6.1", - "node-libs-browser": "^2.2.1", - "schema-utils": "^1.0.0", - "tapable": "^1.1.3", - "terser-webpack-plugin": "^1.4.3", - "watchpack": "^1.6.0", - "webpack-sources": "^1.4.1" - }, - "dependencies": { - "acorn": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", - "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", - "dev": true - }, - "eslint-scope": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", - "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", - "dev": true, - "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - }, - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - } - } - }, - "webpack-cli": { - "version": "3.3.11", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.11.tgz", - "integrity": "sha512-dXlfuml7xvAFwYUPsrtQAA9e4DOe58gnzSxhgrO/ZM/gyXTBowrsYeubyN4mqGhYdpXMFNyQ6emjJS9M7OBd4g==", - "dev": true, - "requires": { - "chalk": "2.4.2", - "cross-spawn": "6.0.5", - "enhanced-resolve": "4.1.0", - "findup-sync": "3.0.0", - "global-modules": "2.0.0", - "import-local": "2.0.0", - "interpret": "1.2.0", - "loader-utils": "1.2.3", - "supports-color": "6.1.0", - "v8-compile-cache": "2.0.3", - "yargs": "13.2.4" - }, - "dependencies": { - "emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", - "dev": true - }, - "enhanced-resolve": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", - "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.4.0", - "tapable": "^1.0.0" - } - }, - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - }, - "loader-utils": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", - "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^2.0.0", - "json5": "^1.0.1" - } - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "v8-compile-cache": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz", - "integrity": "sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w==", - "dev": true - } - } - }, - "webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "dev": true, - "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true - }, - "worker-farm": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", - "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", - "dev": true, - "requires": { - "errno": "~0.1.7" - } - }, - "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - }, - "dependencies": { - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - } - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "write": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", - "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", - "dev": true, - "requires": { - "mkdirp": "^0.5.1" - } - }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true - }, - "y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true - }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "yargs": { - "version": "13.2.4", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.4.tgz", - "integrity": "sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg==", - "dev": true, - "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "os-locale": "^3.1.0", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.0" - }, - "dependencies": { - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - } - } - }, - "yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - } - } -} diff --git a/v2/internal/runtime/js/package.json b/v2/internal/runtime/js/package.json deleted file mode 100644 index 1c4d079f..00000000 --- a/v2/internal/runtime/js/package.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "name": "wails-runtime", - "version": "1.0.0", - "description": "The Javascript Wails Runtime", - "main": "index.js", - "scripts": { - "build:desktop": "npx eslint core/ && npx webpack --env desktop --colors", - "build:server": "npx eslint core/ && npx webpack --env server --colors", - "test": "echo \"Error: no test specified\" && exit 1" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/wailsapp/runtime.git" - }, - "keywords": [ - "Wails", - "Go", - "Javascript", - "Runtime" - ], - "browserslist": [ - "> 5%", - "IE 9" - ], - "author": "Lea Anthony ", - "license": "MIT", - "bugs": { - "url": "https://github.com/wailsapp/runtime/issues" - }, - "homepage": "https://github.com/wailsapp/runtime#readme", - "devDependencies": { - "@babel/cli": "^7.7.7", - "@babel/core": "^7.7.7", - "@babel/plugin-transform-object-assign": "^7.7.4", - "@babel/preset-env": "^7.7.7", - "babel-loader": "^8.0.6", - "babel-preset-minify": "^0.5.1", - "core-js": "^3.6.1", - "eslint": "^6.8.0", - "webpack": "^4.41.5", - "webpack-cli": "^3.3.10" - }, - "dependencies": {} -} diff --git a/v2/internal/runtime/js/package.json.md5 b/v2/internal/runtime/js/package.json.md5 deleted file mode 100644 index c565f69d..00000000 --- a/v2/internal/runtime/js/package.json.md5 +++ /dev/null @@ -1 +0,0 @@ -7a2c438e79cf603ba763055e515650be \ No newline at end of file diff --git a/v2/internal/runtime/js/runtime/.npmignore b/v2/internal/runtime/js/runtime/.npmignore deleted file mode 100644 index e8310385..00000000 --- a/v2/internal/runtime/js/runtime/.npmignore +++ /dev/null @@ -1 +0,0 @@ -src \ No newline at end of file diff --git a/v2/internal/runtime/js/runtime/README.md b/v2/internal/runtime/js/runtime/README.md deleted file mode 100644 index 1859d402..00000000 --- a/v2/internal/runtime/js/runtime/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Wails Runtime - -This module is the Javascript runtime library for the [Wails](https://wails.app) framework. It is intended to be installed as part of a [Wails](https://wails.app) V2 project, not a standalone module. diff --git a/v2/internal/runtime/js/runtime/bridge.js b/v2/internal/runtime/js/runtime/bridge.js deleted file mode 100644 index a58076a9..00000000 --- a/v2/internal/runtime/js/runtime/bridge.js +++ /dev/null @@ -1,1726 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : - typeof define === 'function' && define.amd ? define(['exports'], factory) : - (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.bridge = {})); -}(this, (function (exports) { 'use strict'; - - function noop() { } - const identity = x => x; - function run(fn) { - return fn(); - } - function blank_object() { - return Object.create(null); - } - function run_all(fns) { - fns.forEach(run); - } - function is_function(thing) { - return typeof thing === 'function'; - } - function safe_not_equal(a, b) { - return a != a ? b == b : a !== b || ((a && typeof a === 'object') || typeof a === 'function'); - } - function is_empty(obj) { - return Object.keys(obj).length === 0; - } - function subscribe(store, ...callbacks) { - if (store == null) { - return noop; - } - const unsub = store.subscribe(...callbacks); - return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub; - } - function component_subscribe(component, store, callback) { - component.$$.on_destroy.push(subscribe(store, callback)); - } - function action_destroyer(action_result) { - return action_result && is_function(action_result.destroy) ? action_result.destroy : noop; - } - - const is_client = typeof window !== 'undefined'; - let now = is_client - ? () => window.performance.now() - : () => Date.now(); - let raf = is_client ? cb => requestAnimationFrame(cb) : noop; - - const tasks = new Set(); - function run_tasks(now) { - tasks.forEach(task => { - if (!task.c(now)) { - tasks.delete(task); - task.f(); - } - }); - if (tasks.size !== 0) - raf(run_tasks); - } - /** - * Creates a new task that runs on each raf frame - * until it returns a falsy value or is aborted - */ - function loop(callback) { - let task; - if (tasks.size === 0) - raf(run_tasks); - return { - promise: new Promise(fulfill => { - tasks.add(task = { c: callback, f: fulfill }); - }), - abort() { - tasks.delete(task); - } - }; - } - - function append(target, node) { - target.appendChild(node); - } - function insert(target, node, anchor) { - target.insertBefore(node, anchor || null); - } - function detach(node) { - node.parentNode.removeChild(node); - } - function destroy_each(iterations, detaching) { - for (let i = 0; i < iterations.length; i += 1) { - if (iterations[i]) - iterations[i].d(detaching); - } - } - function element(name) { - return document.createElement(name); - } - function text(data) { - return document.createTextNode(data); - } - function space() { - return text(' '); - } - function empty() { - return text(''); - } - function listen(node, event, handler, options) { - node.addEventListener(event, handler, options); - return () => node.removeEventListener(event, handler, options); - } - function attr(node, attribute, value) { - if (value == null) - node.removeAttribute(attribute); - else if (node.getAttribute(attribute) !== value) - node.setAttribute(attribute, value); - } - function children(element) { - return Array.from(element.childNodes); - } - function set_data(text, data) { - data = '' + data; - if (text.wholeText !== data) - text.data = data; - } - function custom_event(type, detail) { - const e = document.createEvent('CustomEvent'); - e.initCustomEvent(type, false, false, detail); - return e; - } - - const active_docs = new Set(); - let active = 0; - // https://github.com/darkskyapp/string-hash/blob/master/index.js - function hash(str) { - let hash = 5381; - let i = str.length; - while (i--) - hash = ((hash << 5) - hash) ^ str.charCodeAt(i); - return hash >>> 0; - } - function create_rule(node, a, b, duration, delay, ease, fn, uid = 0) { - const step = 16.666 / duration; - let keyframes = '{\n'; - for (let p = 0; p <= 1; p += step) { - const t = a + (b - a) * ease(p); - keyframes += p * 100 + `%{${fn(t, 1 - t)}}\n`; - } - const rule = keyframes + `100% {${fn(b, 1 - b)}}\n}`; - const name = `__svelte_${hash(rule)}_${uid}`; - const doc = node.ownerDocument; - active_docs.add(doc); - const stylesheet = doc.__svelte_stylesheet || (doc.__svelte_stylesheet = doc.head.appendChild(element('style')).sheet); - const current_rules = doc.__svelte_rules || (doc.__svelte_rules = {}); - if (!current_rules[name]) { - current_rules[name] = true; - stylesheet.insertRule(`@keyframes ${name} ${rule}`, stylesheet.cssRules.length); - } - const animation = node.style.animation || ''; - node.style.animation = `${animation ? `${animation}, ` : ''}${name} ${duration}ms linear ${delay}ms 1 both`; - active += 1; - return name; - } - function delete_rule(node, name) { - const previous = (node.style.animation || '').split(', '); - const next = previous.filter(name - ? anim => anim.indexOf(name) < 0 // remove specific animation - : anim => anim.indexOf('__svelte') === -1 // remove all Svelte animations - ); - const deleted = previous.length - next.length; - if (deleted) { - node.style.animation = next.join(', '); - active -= deleted; - if (!active) - clear_rules(); - } - } - function clear_rules() { - raf(() => { - if (active) - return; - active_docs.forEach(doc => { - const stylesheet = doc.__svelte_stylesheet; - let i = stylesheet.cssRules.length; - while (i--) - stylesheet.deleteRule(i); - doc.__svelte_rules = {}; - }); - active_docs.clear(); - }); - } - - let current_component; - function set_current_component(component) { - current_component = component; - } - function get_current_component() { - if (!current_component) - throw new Error('Function called outside component initialization'); - return current_component; - } - function onMount(fn) { - get_current_component().$$.on_mount.push(fn); - } - - const dirty_components = []; - const binding_callbacks = []; - const render_callbacks = []; - const flush_callbacks = []; - const resolved_promise = Promise.resolve(); - let update_scheduled = false; - function schedule_update() { - if (!update_scheduled) { - update_scheduled = true; - resolved_promise.then(flush); - } - } - function add_render_callback(fn) { - render_callbacks.push(fn); - } - let flushing = false; - const seen_callbacks = new Set(); - function flush() { - if (flushing) - return; - flushing = true; - do { - // first, call beforeUpdate functions - // and update components - for (let i = 0; i < dirty_components.length; i += 1) { - const component = dirty_components[i]; - set_current_component(component); - update(component.$$); - } - set_current_component(null); - dirty_components.length = 0; - while (binding_callbacks.length) - binding_callbacks.pop()(); - // then, once components are updated, call - // afterUpdate functions. This may cause - // subsequent updates... - for (let i = 0; i < render_callbacks.length; i += 1) { - const callback = render_callbacks[i]; - if (!seen_callbacks.has(callback)) { - // ...so guard against infinite loops - seen_callbacks.add(callback); - callback(); - } - } - render_callbacks.length = 0; - } while (dirty_components.length); - while (flush_callbacks.length) { - flush_callbacks.pop()(); - } - update_scheduled = false; - flushing = false; - seen_callbacks.clear(); - } - function update($$) { - if ($$.fragment !== null) { - $$.update(); - run_all($$.before_update); - const dirty = $$.dirty; - $$.dirty = [-1]; - $$.fragment && $$.fragment.p($$.ctx, dirty); - $$.after_update.forEach(add_render_callback); - } - } - - let promise; - function wait() { - if (!promise) { - promise = Promise.resolve(); - promise.then(() => { - promise = null; - }); - } - return promise; - } - function dispatch(node, direction, kind) { - node.dispatchEvent(custom_event(`${direction ? 'intro' : 'outro'}${kind}`)); - } - const outroing = new Set(); - let outros; - function group_outros() { - outros = { - r: 0, - c: [], - p: outros // parent group - }; - } - function check_outros() { - if (!outros.r) { - run_all(outros.c); - } - outros = outros.p; - } - function transition_in(block, local) { - if (block && block.i) { - outroing.delete(block); - block.i(local); - } - } - function transition_out(block, local, detach, callback) { - if (block && block.o) { - if (outroing.has(block)) - return; - outroing.add(block); - outros.c.push(() => { - outroing.delete(block); - if (callback) { - if (detach) - block.d(1); - callback(); - } - }); - block.o(local); - } - } - const null_transition = { duration: 0 }; - function create_bidirectional_transition(node, fn, params, intro) { - let config = fn(node, params); - let t = intro ? 0 : 1; - let running_program = null; - let pending_program = null; - let animation_name = null; - function clear_animation() { - if (animation_name) - delete_rule(node, animation_name); - } - function init(program, duration) { - const d = program.b - t; - duration *= Math.abs(d); - return { - a: t, - b: program.b, - d, - duration, - start: program.start, - end: program.start + duration, - group: program.group - }; - } - function go(b) { - const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition; - const program = { - start: now() + delay, - b - }; - if (!b) { - // @ts-ignore todo: improve typings - program.group = outros; - outros.r += 1; - } - if (running_program || pending_program) { - pending_program = program; - } - else { - // if this is an intro, and there's a delay, we need to do - // an initial tick and/or apply CSS animation immediately - if (css) { - clear_animation(); - animation_name = create_rule(node, t, b, duration, delay, easing, css); - } - if (b) - tick(0, 1); - running_program = init(program, duration); - add_render_callback(() => dispatch(node, b, 'start')); - loop(now => { - if (pending_program && now > pending_program.start) { - running_program = init(pending_program, duration); - pending_program = null; - dispatch(node, running_program.b, 'start'); - if (css) { - clear_animation(); - animation_name = create_rule(node, t, running_program.b, running_program.duration, 0, easing, config.css); - } - } - if (running_program) { - if (now >= running_program.end) { - tick(t = running_program.b, 1 - t); - dispatch(node, running_program.b, 'end'); - if (!pending_program) { - // we're done - if (running_program.b) { - // intro — we can tidy up immediately - clear_animation(); - } - else { - // outro — needs to be coordinated - if (!--running_program.group.r) - run_all(running_program.group.c); - } - } - running_program = null; - } - else if (now >= running_program.start) { - const p = now - running_program.start; - t = running_program.a + running_program.d * easing(p / running_program.duration); - tick(t, 1 - t); - } - } - return !!(running_program || pending_program); - }); - } - } - return { - run(b) { - if (is_function(config)) { - wait().then(() => { - // @ts-ignore - config = config(); - go(b); - }); - } - else { - go(b); - } - }, - end() { - clear_animation(); - running_program = pending_program = null; - } - }; - } - - const globals = (typeof window !== 'undefined' - ? window - : typeof globalThis !== 'undefined' - ? globalThis - : global); - function create_component(block) { - block && block.c(); - } - function mount_component(component, target, anchor) { - const { fragment, on_mount, on_destroy, after_update } = component.$$; - fragment && fragment.m(target, anchor); - // onMount happens before the initial afterUpdate - add_render_callback(() => { - const new_on_destroy = on_mount.map(run).filter(is_function); - if (on_destroy) { - on_destroy.push(...new_on_destroy); - } - else { - // Edge case - component was destroyed immediately, - // most likely as a result of a binding initialising - run_all(new_on_destroy); - } - component.$$.on_mount = []; - }); - after_update.forEach(add_render_callback); - } - function destroy_component(component, detaching) { - const $$ = component.$$; - if ($$.fragment !== null) { - run_all($$.on_destroy); - $$.fragment && $$.fragment.d(detaching); - // TODO null out other refs, including component.$$ (but need to - // preserve final state?) - $$.on_destroy = $$.fragment = null; - $$.ctx = []; - } - } - function make_dirty(component, i) { - if (component.$$.dirty[0] === -1) { - dirty_components.push(component); - schedule_update(); - component.$$.dirty.fill(0); - } - component.$$.dirty[(i / 31) | 0] |= (1 << (i % 31)); - } - function init(component, options, instance, create_fragment, not_equal, props, dirty = [-1]) { - const parent_component = current_component; - set_current_component(component); - const $$ = component.$$ = { - fragment: null, - ctx: null, - // state - props, - update: noop, - not_equal, - bound: blank_object(), - // lifecycle - on_mount: [], - on_destroy: [], - before_update: [], - after_update: [], - context: new Map(parent_component ? parent_component.$$.context : []), - // everything else - callbacks: blank_object(), - dirty, - skip_bound: false - }; - let ready = false; - $$.ctx = instance - ? instance(component, options.props || {}, (i, ret, ...rest) => { - const value = rest.length ? rest[0] : ret; - if ($$.ctx && not_equal($$.ctx[i], $$.ctx[i] = value)) { - if (!$$.skip_bound && $$.bound[i]) - $$.bound[i](value); - if (ready) - make_dirty(component, i); - } - return ret; - }) - : []; - $$.update(); - ready = true; - run_all($$.before_update); - // `false` as a special case of no DOM component - $$.fragment = create_fragment ? create_fragment($$.ctx) : false; - if (options.target) { - if (options.hydrate) { - const nodes = children(options.target); - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - $$.fragment && $$.fragment.l(nodes); - nodes.forEach(detach); - } - else { - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - $$.fragment && $$.fragment.c(); - } - if (options.intro) - transition_in(component.$$.fragment); - mount_component(component, options.target, options.anchor); - flush(); - } - set_current_component(parent_component); - } - /** - * Base class for Svelte components. Used when dev=false. - */ - class SvelteComponent { - $destroy() { - destroy_component(this, 1); - this.$destroy = noop; - } - $on(type, callback) { - const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = [])); - callbacks.push(callback); - return () => { - const index = callbacks.indexOf(callback); - if (index !== -1) - callbacks.splice(index, 1); - }; - } - $set($$props) { - if (this.$$set && !is_empty($$props)) { - this.$$.skip_bound = true; - this.$$set($$props); - this.$$.skip_bound = false; - } - } - } - - const subscriber_queue = []; - /** - * Create a `Writable` store that allows both updating and reading by subscription. - * @param {*=}value initial value - * @param {StartStopNotifier=}start start and stop notifications for subscriptions - */ - function writable(value, start = noop) { - let stop; - const subscribers = []; - function set(new_value) { - if (safe_not_equal(value, new_value)) { - value = new_value; - if (stop) { // store is ready - const run_queue = !subscriber_queue.length; - for (let i = 0; i < subscribers.length; i += 1) { - const s = subscribers[i]; - s[1](); - subscriber_queue.push(s, value); - } - if (run_queue) { - for (let i = 0; i < subscriber_queue.length; i += 2) { - subscriber_queue[i][0](subscriber_queue[i + 1]); - } - subscriber_queue.length = 0; - } - } - } - } - function update(fn) { - set(fn(value)); - } - function subscribe(run, invalidate = noop) { - const subscriber = [run, invalidate]; - subscribers.push(subscriber); - if (subscribers.length === 1) { - stop = start(set) || noop; - } - run(value); - return () => { - const index = subscribers.indexOf(subscriber); - if (index !== -1) { - subscribers.splice(index, 1); - } - if (subscribers.length === 0) { - stop(); - stop = null; - } - }; - } - return { set, update, subscribe }; - } - - function log(message) { - // eslint-disable-next-line - console.log( - '%c wails bridge %c ' + message + ' ', - 'background: #aa0000; color: #fff; border-radius: 3px 0px 0px 3px; padding: 1px; font-size: 0.7rem', - 'background: #009900; color: #fff; border-radius: 0px 3px 3px 0px; padding: 1px; font-size: 0.7rem' - ); - } - - /** Overlay */ - const overlayVisible = writable(false); - - function showOverlay() { - overlayVisible.set(true); - } - function hideOverlay() { - overlayVisible.set(false); - } - - /** Menubar **/ - const menuVisible = writable(false); - - /** Trays **/ - - const trays = writable([]); - function setTray(tray) { - trays.update((current) => { - // Remove existing if it exists, else add - const index = current.findIndex(item => item.ID === tray.ID); - if ( index === -1 ) { - current.push(tray); - } else { - current[index] = tray; - } - return current; - }); - } - function updateTrayLabel(tray) { - trays.update((current) => { - // Remove existing if it exists, else add - const index = current.findIndex(item => item.ID === tray.ID); - if ( index === -1 ) { - return log("ERROR: Attempted to update tray index ", tray.ID) - } - current[index].Label = tray.Label; - return current; - }); - } - - function deleteTrayMenu(id) { - trays.update((current) => { - // Remove existing if it exists, else add - const index = current.findIndex(item => item.ID === id); - if ( index === -1 ) { - return log("ERROR: Attempted to delete tray index ") - } - current.splice(index, 1); - return current; - }); - } - - let selectedMenu = writable(null); - - function fade(node, { delay = 0, duration = 400, easing = identity } = {}) { - const o = +getComputedStyle(node).opacity; - return { - delay, - duration, - easing, - css: t => `opacity: ${t * o}` - }; - } - - /* Overlay.svelte generated by Svelte v3.32.2 */ - - function add_css() { - var style = element("style"); - style.id = "svelte-1m56lfo-style"; - style.textContent = ".wails-reconnect-overlay.svelte-1m56lfo{position:fixed;top:0;left:0;width:100%;height:100%;backdrop-filter:blur(20px) saturate(160%) contrast(45%) brightness(140%);z-index:999999\n }.wails-reconnect-overlay-content.svelte-1m56lfo{position:relative;top:50%;transform:translateY(-50%);margin:0;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAAA7CAMAAAAEsocZAAAC91BMVEUAAACzQ0PjMjLkMjLZLS7XLS+vJCjkMjKlEx6uGyHjMDGiFx7GJyrAISjUKy3mMzPlMjLjMzOsGyDKJirkMjK6HyXmMjLgMDC6IiLcMjLULC3MJyrRKSy+IibmMzPmMjK7ISXlMjLIJimzHSLkMjKtGiHZLC7BIifgMDCpGSDFIivcLy+yHSKoGR+eFBzNKCvlMjKxHSPkMTKxHSLmMjLKJyq5ICXDJCe6ISXdLzDkMjLmMzPFJSm2HyTlMTLhMDGyHSKUEBmhFx24HyTCJCjHJijjMzOiFh7mMjJ6BhDaLDCuGyOKABjnMzPGJinJJiquHCGEChSmGB/pMzOiFh7VKy3OKCu1HiSvHCLjMTLMKCrBIyeICxWxHCLDIyjSKizBIyh+CBO9ISa6ISWDChS9Iie1HyXVLC7FJSrLKCrlMjLiMTGPDhicFRywGyKXFBuhFx1/BxO7IiXkMTGeFBx8BxLkMTGnGR/GJCi4ICWsGyGJDxXSLS2yGiHSKi3CJCfnMzPQKiyECRTKJiq6ISWUERq/Iye0HiPDJCjGJSm6ICaPDxiTEBrdLy+3HyXSKiy0HyOQEBi4ICWhFh1+CBO9IieODhfSKyzWLC2LDhh8BxHKKCq7ISWaFBzkMzPqNDTTLC3EJSiHDBacExyvGyO1HyTPKCy+IieoGSC7ISaVEhrMKCvQKyusGyG0HiKACBPIJSq/JCaABxR5BRLEJCnkMzPJJinEJimPDRZ2BRKqHx/jMjLnMzPgMDHULC3NKSvQKSzsNDTWLS7SKyy3HyTKJyrDJSjbLzDYLC6mGB/GJSnVLC61HiPLKCrHJSm/Iye8Iia6ICWzHSKxHCLaLi/PKSupGR+7ICXpMzPbLi/IJinJJSmsGyGrGiCkFx6PDheJCxaFChXBIyfAIieSDxmBCBPlMjLeLzDdLzC5HySMDRe+ISWvGyGcFBzSKSzPJyvMJyrEJCjDIyefFRyWERriMDHUKiy/ISaZExv0NjbwNTXuNDTrMzMI0c+yAAAAu3RSTlMAA8HR/gwGgAj+MEpGCsC+hGpjQjYnIxgWBfzx7urizMrFqqB1bF83KhsR/fz8+/r5+fXv7unZ1tC+t6mmopqKdW1nYVpVRjUeHhIQBPr59/b28/Hx8ODg3NvUw8O/vKeim5aNioiDgn1vZWNjX1xUU1JPTUVFPT08Mi4qJyIh/Pv7+/n4+Pf39fT08/Du7efn5uXj4uHa19XNwsG/vrq2tbSuramlnpyYkpGNiIZ+enRraGVjVVBKOzghdjzRsAAABJVJREFUWMPtllVQG1EYhTc0ASpoobS0FCulUHd3oUjd3d3d3d3d3d2b7CYhnkBCCHGDEIK7Vh56d0NpOgwkYfLQzvA9ZrLfnPvfc+8uVEst/yheBJup3Nya2MjU6pa/jWLZtxjXpZFtVB4uVNI6m5gIruNkVFebqIb5Ug2ym4TIEM/gtUOGbg613oBzjAzZFrZ+lXu/3TIiMXXS5M6HTvrNHeLpZLEh6suGNW9fzZ9zd/qVi2eOHygqi5cDE5GUrJocONgzyqo0UXNSUlKSEhMztFqtXq9vNxImAmS3g7Y6QlbjdBWVGW36jt4wDGTUXjUsafh5zJWRkdFuZGtWGnCRmg+HasiGMUClTTzW0ZuVgLlGDIPM4Lhi0IrVq+tv2hS21fNrSONQgpM9DsJ4t3fM9PkvJuKj2ZjrZwvILKvaSTgciUSirjt6dOfOpyd169bDb9rMOwF9Hj4OD100gY0YXYb299bjzMrqj9doNByJWlVXFB9DT5dmJuvy+cq83JyuS6ayEYSHulKL8dmFnBkrCeZlHKMrC5XRhXGCZB2Ty1fkleRQaMCFT2DBsEafzRFJu7/2MicbKynPhQUDLiZwMWLJZKNLzoLbJBYVcurSmbmn+rcyJ8vCMgmlmaW6gnwun/+3C96VpAUuET1ZgRR36r2xWlnYSnf3oKABA14uXDDvydxHs6cpTV1p3hlJ2rJCiUjIZCByItXg8sHJijuvT64CuMTABUYvb6NN1Jdp1PH7D7f3bo2eS5KvW4RJr7atWT5w4MBBg9zdBw9+37BS7QIoFS5WnIaj12dr1DEXFgdvr4fh4eFl+u/wz8uf3jjHic8s4DL2Dal0IANyUBeCRCcwOBJV26JsjSpGwHVuSai69jvqD+jr56OgtKy0zAAK5mLTVBKVKL5tNthGAR9JneJQ/bFsHNzy+U7IlCYROxtMpIjR0ceoQVnowracLLpAQWETqV361bPoFo3cEbz2zYLZM7t3HWXcxmiBOgttS1ycWkTXMWh4mGigdug9DFdttqCFgTN6nD0q1XEVSoCxEjyFCi2eNC6Z69MRVIImJ6JQSf5gcFVCuF+aDhCa1F6MJFDaiNBQAh2TMfWBjhmLsAxUjG/fmjs0qjJck8D0GPBcuUuZW1LS/tIsPzqmQt17PvZQknlwnf4tHDBc+7t5VV3QQCkdc+Ur8/hdrz0but0RCumWiYbiKmLJ7EVbRomj4Q7+y5wsaXvfTGFpQcHB7n2WbG4MGdniw2Tm8xl5Yhr7MrSYHQ3uampz10aWyHyuzxvqaW/6W4MjXAUD3QV2aw97ZxhGjxCohYf5TpTHMXU1BbsAuoFnkRygVieIGAbqiF7rrH4rfWpKJouBCtyHJF8ctEyGubBa+C6NsMYEUonJFITHZqWBxXUA12Dv76Tf/PgOBmeNiiLG1pcKo1HAq8jLpY4JU1yWEixVNaOgoRJAKBSZHTZTU+wJOMtUDZvlVITC6FTlksyrEBoPHXpxxbzdaqzigUtVDkJVIOtVQ9UEOR4VGUh/kHWq0edJ6CxnZ+eePXva2bnY/cF/I1RLLf8vvwDANdMSMegxcAAAAABJRU5ErkJggg==);background-repeat:no-repeat;background-position:center\n }.wails-reconnect-overlay-loadingspinner.svelte-1m56lfo{pointer-events:none;width:2.5em;height:2.5em;border:.4em solid transparent;border-color:#f00 #eee0 #f00 #eee0;border-radius:50%;animation:svelte-1m56lfo-loadingspin 1s linear infinite;margin:auto;padding:2.5em\n }@keyframes svelte-1m56lfo-loadingspin{100%{transform:rotate(360deg)}}"; - append(document.head, style); - } - - // (8:0) {#if $overlayVisible } - function create_if_block(ctx) { - let div2; - let div2_transition; - let current; - - return { - c() { - div2 = element("div"); - div2.innerHTML = `
`; - attr(div2, "class", "wails-reconnect-overlay svelte-1m56lfo"); - }, - m(target, anchor) { - insert(target, div2, anchor); - current = true; - }, - i(local) { - if (current) return; - - add_render_callback(() => { - if (!div2_transition) div2_transition = create_bidirectional_transition(div2, fade, { duration: 200 }, true); - div2_transition.run(1); - }); - - current = true; - }, - o(local) { - if (!div2_transition) div2_transition = create_bidirectional_transition(div2, fade, { duration: 200 }, false); - div2_transition.run(0); - current = false; - }, - d(detaching) { - if (detaching) detach(div2); - if (detaching && div2_transition) div2_transition.end(); - } - }; - } - - function create_fragment(ctx) { - let if_block_anchor; - let current; - let if_block = /*$overlayVisible*/ ctx[0] && create_if_block(); - - return { - c() { - if (if_block) if_block.c(); - if_block_anchor = empty(); - }, - m(target, anchor) { - if (if_block) if_block.m(target, anchor); - insert(target, if_block_anchor, anchor); - current = true; - }, - p(ctx, [dirty]) { - if (/*$overlayVisible*/ ctx[0]) { - if (if_block) { - if (dirty & /*$overlayVisible*/ 1) { - transition_in(if_block, 1); - } - } else { - if_block = create_if_block(); - if_block.c(); - transition_in(if_block, 1); - if_block.m(if_block_anchor.parentNode, if_block_anchor); - } - } else if (if_block) { - group_outros(); - - transition_out(if_block, 1, 1, () => { - if_block = null; - }); - - check_outros(); - } - }, - i(local) { - if (current) return; - transition_in(if_block); - current = true; - }, - o(local) { - transition_out(if_block); - current = false; - }, - d(detaching) { - if (if_block) if_block.d(detaching); - if (detaching) detach(if_block_anchor); - } - }; - } - - function instance($$self, $$props, $$invalidate) { - let $overlayVisible; - component_subscribe($$self, overlayVisible, $$value => $$invalidate(0, $overlayVisible = $$value)); - return [$overlayVisible]; - } - - class Overlay extends SvelteComponent { - constructor(options) { - super(); - if (!document.getElementById("svelte-1m56lfo-style")) add_css(); - init(this, options, instance, create_fragment, safe_not_equal, {}); - } - } - - /* Menu.svelte generated by Svelte v3.32.2 */ - - function add_css$1() { - var style = element("style"); - style.id = "svelte-1oysp7o-style"; - style.textContent = ".menu.svelte-1oysp7o.svelte-1oysp7o{padding:3px;background-color:#0008;color:#EEF;border-radius:5px;margin-top:5px;position:absolute;backdrop-filter:blur(3px) saturate(160%) contrast(45%) brightness(140%);border:1px solid rgb(88,88,88);box-shadow:0 0 1px rgb(146,146,148) inset}.menuitem.svelte-1oysp7o.svelte-1oysp7o{display:flex;align-items:center;padding:1px 5px}.menuitem.svelte-1oysp7o.svelte-1oysp7o:hover{display:flex;align-items:center;background-color:rgb(57,131,223);padding:1px 5px;border-radius:5px}.menuitem.svelte-1oysp7o img.svelte-1oysp7o{padding-right:5px}"; - append(document.head, style); - } - - function get_each_context(ctx, list, i) { - const child_ctx = ctx.slice(); - child_ctx[2] = list[i]; - return child_ctx; - } - - // (8:0) {#if !hidden} - function create_if_block$1(ctx) { - let div; - let if_block = /*menu*/ ctx[0].Menu && create_if_block_1(ctx); - - return { - c() { - div = element("div"); - if (if_block) if_block.c(); - attr(div, "class", "menu svelte-1oysp7o"); - }, - m(target, anchor) { - insert(target, div, anchor); - if (if_block) if_block.m(div, null); - }, - p(ctx, dirty) { - if (/*menu*/ ctx[0].Menu) { - if (if_block) { - if_block.p(ctx, dirty); - } else { - if_block = create_if_block_1(ctx); - if_block.c(); - if_block.m(div, null); - } - } else if (if_block) { - if_block.d(1); - if_block = null; - } - }, - d(detaching) { - if (detaching) detach(div); - if (if_block) if_block.d(); - } - }; - } - - // (10:4) {#if menu.Menu } - function create_if_block_1(ctx) { - let each_1_anchor; - let each_value = /*menu*/ ctx[0].Menu.Items; - let each_blocks = []; - - for (let i = 0; i < each_value.length; i += 1) { - each_blocks[i] = create_each_block(get_each_context(ctx, each_value, i)); - } - - return { - c() { - for (let i = 0; i < each_blocks.length; i += 1) { - each_blocks[i].c(); - } - - each_1_anchor = empty(); - }, - m(target, anchor) { - for (let i = 0; i < each_blocks.length; i += 1) { - each_blocks[i].m(target, anchor); - } - - insert(target, each_1_anchor, anchor); - }, - p(ctx, dirty) { - if (dirty & /*menu*/ 1) { - each_value = /*menu*/ ctx[0].Menu.Items; - let i; - - for (i = 0; i < each_value.length; i += 1) { - const child_ctx = get_each_context(ctx, each_value, i); - - if (each_blocks[i]) { - each_blocks[i].p(child_ctx, dirty); - } else { - each_blocks[i] = create_each_block(child_ctx); - each_blocks[i].c(); - each_blocks[i].m(each_1_anchor.parentNode, each_1_anchor); - } - } - - for (; i < each_blocks.length; i += 1) { - each_blocks[i].d(1); - } - - each_blocks.length = each_value.length; - } - }, - d(detaching) { - destroy_each(each_blocks, detaching); - if (detaching) detach(each_1_anchor); - } - }; - } - - // (13:12) {#if menuItem.Image } - function create_if_block_2(ctx) { - let div; - let img; - let img_src_value; - - return { - c() { - div = element("div"); - img = element("img"); - attr(img, "alt", ""); - if (img.src !== (img_src_value = "data:image/png;base64," + /*menuItem*/ ctx[2].Image)) attr(img, "src", img_src_value); - attr(img, "class", "svelte-1oysp7o"); - }, - m(target, anchor) { - insert(target, div, anchor); - append(div, img); - }, - p(ctx, dirty) { - if (dirty & /*menu*/ 1 && img.src !== (img_src_value = "data:image/png;base64," + /*menuItem*/ ctx[2].Image)) { - attr(img, "src", img_src_value); - } - }, - d(detaching) { - if (detaching) detach(div); - } - }; - } - - // (11:8) {#each menu.Menu.Items as menuItem} - function create_each_block(ctx) { - let div1; - let t0; - let div0; - let t1_value = /*menuItem*/ ctx[2].Label + ""; - let t1; - let t2; - let if_block = /*menuItem*/ ctx[2].Image && create_if_block_2(ctx); - - return { - c() { - div1 = element("div"); - if (if_block) if_block.c(); - t0 = space(); - div0 = element("div"); - t1 = text(t1_value); - t2 = space(); - attr(div0, "class", "menulabel"); - attr(div1, "class", "menuitem svelte-1oysp7o"); - }, - m(target, anchor) { - insert(target, div1, anchor); - if (if_block) if_block.m(div1, null); - append(div1, t0); - append(div1, div0); - append(div0, t1); - append(div1, t2); - }, - p(ctx, dirty) { - if (/*menuItem*/ ctx[2].Image) { - if (if_block) { - if_block.p(ctx, dirty); - } else { - if_block = create_if_block_2(ctx); - if_block.c(); - if_block.m(div1, t0); - } - } else if (if_block) { - if_block.d(1); - if_block = null; - } - - if (dirty & /*menu*/ 1 && t1_value !== (t1_value = /*menuItem*/ ctx[2].Label + "")) set_data(t1, t1_value); - }, - d(detaching) { - if (detaching) detach(div1); - if (if_block) if_block.d(); - } - }; - } - - function create_fragment$1(ctx) { - let if_block_anchor; - let if_block = !/*hidden*/ ctx[1] && create_if_block$1(ctx); - - return { - c() { - if (if_block) if_block.c(); - if_block_anchor = empty(); - }, - m(target, anchor) { - if (if_block) if_block.m(target, anchor); - insert(target, if_block_anchor, anchor); - }, - p(ctx, [dirty]) { - if (!/*hidden*/ ctx[1]) { - if (if_block) { - if_block.p(ctx, dirty); - } else { - if_block = create_if_block$1(ctx); - if_block.c(); - if_block.m(if_block_anchor.parentNode, if_block_anchor); - } - } else if (if_block) { - if_block.d(1); - if_block = null; - } - }, - i: noop, - o: noop, - d(detaching) { - if (if_block) if_block.d(detaching); - if (detaching) detach(if_block_anchor); - } - }; - } - - function instance$1($$self, $$props, $$invalidate) { - let { menu } = $$props; - let { hidden = true } = $$props; - - $$self.$$set = $$props => { - if ("menu" in $$props) $$invalidate(0, menu = $$props.menu); - if ("hidden" in $$props) $$invalidate(1, hidden = $$props.hidden); - }; - - return [menu, hidden]; - } - - class Menu extends SvelteComponent { - constructor(options) { - super(); - if (!document.getElementById("svelte-1oysp7o-style")) add_css$1(); - init(this, options, instance$1, create_fragment$1, safe_not_equal, { menu: 0, hidden: 1 }); - } - } - - /* TrayMenu.svelte generated by Svelte v3.32.2 */ - - const { document: document_1 } = globals; - - function add_css$2() { - var style = element("style"); - style.id = "svelte-esze1k-style"; - style.textContent = ".tray-menu.svelte-esze1k{padding-left:0.5rem;padding-right:0.5rem;overflow:visible;font-size:14px}.label.svelte-esze1k{text-align:right;padding-right:10px}"; - append(document_1.head, style); - } - - // (47:4) {#if tray.ProcessedMenu } - function create_if_block$2(ctx) { - let menu; - let current; - - menu = new Menu({ - props: { - menu: /*tray*/ ctx[0].ProcessedMenu, - hidden: /*hidden*/ ctx[1] - } - }); - - return { - c() { - create_component(menu.$$.fragment); - }, - m(target, anchor) { - mount_component(menu, target, anchor); - current = true; - }, - p(ctx, dirty) { - const menu_changes = {}; - if (dirty & /*tray*/ 1) menu_changes.menu = /*tray*/ ctx[0].ProcessedMenu; - if (dirty & /*hidden*/ 2) menu_changes.hidden = /*hidden*/ ctx[1]; - menu.$set(menu_changes); - }, - i(local) { - if (current) return; - transition_in(menu.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(menu.$$.fragment, local); - current = false; - }, - d(detaching) { - destroy_component(menu, detaching); - } - }; - } - - function create_fragment$2(ctx) { - let span1; - let span0; - let t0_value = /*tray*/ ctx[0].Label + ""; - let t0; - let t1; - let current; - let mounted; - let dispose; - let if_block = /*tray*/ ctx[0].ProcessedMenu && create_if_block$2(ctx); - - return { - c() { - span1 = element("span"); - span0 = element("span"); - t0 = text(t0_value); - t1 = space(); - if (if_block) if_block.c(); - attr(span0, "class", "label svelte-esze1k"); - attr(span1, "class", "tray-menu svelte-esze1k"); - }, - m(target, anchor) { - insert(target, span1, anchor); - append(span1, span0); - append(span0, t0); - append(span1, t1); - if (if_block) if_block.m(span1, null); - current = true; - - if (!mounted) { - dispose = [ - listen(span0, "click", /*trayClicked*/ ctx[3]), - action_destroyer(clickOutside.call(null, span1)), - listen(span1, "click_outside", /*closeMenu*/ ctx[2]) - ]; - - mounted = true; - } - }, - p(ctx, [dirty]) { - if ((!current || dirty & /*tray*/ 1) && t0_value !== (t0_value = /*tray*/ ctx[0].Label + "")) set_data(t0, t0_value); - - if (/*tray*/ ctx[0].ProcessedMenu) { - if (if_block) { - if_block.p(ctx, dirty); - - if (dirty & /*tray*/ 1) { - transition_in(if_block, 1); - } - } else { - if_block = create_if_block$2(ctx); - if_block.c(); - transition_in(if_block, 1); - if_block.m(span1, null); - } - } else if (if_block) { - group_outros(); - - transition_out(if_block, 1, 1, () => { - if_block = null; - }); - - check_outros(); - } - }, - i(local) { - if (current) return; - transition_in(if_block); - current = true; - }, - o(local) { - transition_out(if_block); - current = false; - }, - d(detaching) { - if (detaching) detach(span1); - if (if_block) if_block.d(); - mounted = false; - run_all(dispose); - } - }; - } - - function clickOutside(node) { - const handleClick = event => { - if (node && !node.contains(event.target) && !event.defaultPrevented) { - node.dispatchEvent(new CustomEvent("click_outside", node)); - } - }; - - document.addEventListener("click", handleClick, true); - - return { - destroy() { - document.removeEventListener("click", handleClick, true); - } - }; - } - - function instance$2($$self, $$props, $$invalidate) { - let hidden; - let $selectedMenu; - component_subscribe($$self, selectedMenu, $$value => $$invalidate(4, $selectedMenu = $$value)); - let { tray = null } = $$props; - - function closeMenu() { - selectedMenu.set(null); - } - - function trayClicked() { - if ($selectedMenu !== tray) { - selectedMenu.set(tray); - } else { - selectedMenu.set(null); - } - } - - $$self.$$set = $$props => { - if ("tray" in $$props) $$invalidate(0, tray = $$props.tray); - }; - - $$self.$$.update = () => { - if ($$self.$$.dirty & /*$selectedMenu, tray*/ 17) { - $$invalidate(1, hidden = $selectedMenu !== tray); - } - }; - - return [tray, hidden, closeMenu, trayClicked, $selectedMenu]; - } - - class TrayMenu extends SvelteComponent { - constructor(options) { - super(); - if (!document_1.getElementById("svelte-esze1k-style")) add_css$2(); - init(this, options, instance$2, create_fragment$2, safe_not_equal, { tray: 0 }); - } - } - - /* Menubar.svelte generated by Svelte v3.32.2 */ - - function add_css$3() { - var style = element("style"); - style.id = "svelte-1i0zb4n-style"; - style.textContent = ".tray-menus.svelte-1i0zb4n{display:flex;flex-direction:row;justify-content:flex-end}.wails-menubar.svelte-1i0zb4n{position:relative;display:block;top:0;height:2rem;width:100%;border-bottom:1px solid #b3b3b3;box-shadow:0 0 10px 0 #33333360}.time.svelte-1i0zb4n{padding-left:0.5rem;padding-right:1.5rem;overflow:visible;font-size:14px}"; - append(document.head, style); - } - - function get_each_context$1(ctx, list, i) { - const child_ctx = ctx.slice(); - child_ctx[9] = list[i]; - return child_ctx; - } - - // (38:0) {#if $menuVisible } - function create_if_block$3(ctx) { - let div; - let span1; - let t0; - let span0; - let t1; - let div_transition; - let current; - let each_value = /*$trays*/ ctx[2]; - let each_blocks = []; - - for (let i = 0; i < each_value.length; i += 1) { - each_blocks[i] = create_each_block$1(get_each_context$1(ctx, each_value, i)); - } - - const out = i => transition_out(each_blocks[i], 1, 1, () => { - each_blocks[i] = null; - }); - - return { - c() { - div = element("div"); - span1 = element("span"); - - for (let i = 0; i < each_blocks.length; i += 1) { - each_blocks[i].c(); - } - - t0 = space(); - span0 = element("span"); - t1 = text(/*dateTimeString*/ ctx[0]); - attr(span0, "class", "time svelte-1i0zb4n"); - attr(span1, "class", "tray-menus svelte-1i0zb4n"); - attr(div, "class", "wails-menubar svelte-1i0zb4n"); - }, - m(target, anchor) { - insert(target, div, anchor); - append(div, span1); - - for (let i = 0; i < each_blocks.length; i += 1) { - each_blocks[i].m(span1, null); - } - - append(span1, t0); - append(span1, span0); - append(span0, t1); - current = true; - }, - p(ctx, dirty) { - if (dirty & /*$trays*/ 4) { - each_value = /*$trays*/ ctx[2]; - let i; - - for (i = 0; i < each_value.length; i += 1) { - const child_ctx = get_each_context$1(ctx, each_value, i); - - if (each_blocks[i]) { - each_blocks[i].p(child_ctx, dirty); - transition_in(each_blocks[i], 1); - } else { - each_blocks[i] = create_each_block$1(child_ctx); - each_blocks[i].c(); - transition_in(each_blocks[i], 1); - each_blocks[i].m(span1, t0); - } - } - - group_outros(); - - for (i = each_value.length; i < each_blocks.length; i += 1) { - out(i); - } - - check_outros(); - } - - if (!current || dirty & /*dateTimeString*/ 1) set_data(t1, /*dateTimeString*/ ctx[0]); - }, - i(local) { - if (current) return; - - for (let i = 0; i < each_value.length; i += 1) { - transition_in(each_blocks[i]); - } - - add_render_callback(() => { - if (!div_transition) div_transition = create_bidirectional_transition(div, fade, {}, true); - div_transition.run(1); - }); - - current = true; - }, - o(local) { - each_blocks = each_blocks.filter(Boolean); - - for (let i = 0; i < each_blocks.length; i += 1) { - transition_out(each_blocks[i]); - } - - if (!div_transition) div_transition = create_bidirectional_transition(div, fade, {}, false); - div_transition.run(0); - current = false; - }, - d(detaching) { - if (detaching) detach(div); - destroy_each(each_blocks, detaching); - if (detaching && div_transition) div_transition.end(); - } - }; - } - - // (41:4) {#each $trays as tray} - function create_each_block$1(ctx) { - let traymenu; - let current; - traymenu = new TrayMenu({ props: { tray: /*tray*/ ctx[9] } }); - - return { - c() { - create_component(traymenu.$$.fragment); - }, - m(target, anchor) { - mount_component(traymenu, target, anchor); - current = true; - }, - p(ctx, dirty) { - const traymenu_changes = {}; - if (dirty & /*$trays*/ 4) traymenu_changes.tray = /*tray*/ ctx[9]; - traymenu.$set(traymenu_changes); - }, - i(local) { - if (current) return; - transition_in(traymenu.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(traymenu.$$.fragment, local); - current = false; - }, - d(detaching) { - destroy_component(traymenu, detaching); - } - }; - } - - function create_fragment$3(ctx) { - let if_block_anchor; - let current; - let mounted; - let dispose; - let if_block = /*$menuVisible*/ ctx[1] && create_if_block$3(ctx); - - return { - c() { - if (if_block) if_block.c(); - if_block_anchor = empty(); - }, - m(target, anchor) { - if (if_block) if_block.m(target, anchor); - insert(target, if_block_anchor, anchor); - current = true; - - if (!mounted) { - dispose = listen(window, "keydown", /*handleKeydown*/ ctx[3]); - mounted = true; - } - }, - p(ctx, [dirty]) { - if (/*$menuVisible*/ ctx[1]) { - if (if_block) { - if_block.p(ctx, dirty); - - if (dirty & /*$menuVisible*/ 2) { - transition_in(if_block, 1); - } - } else { - if_block = create_if_block$3(ctx); - if_block.c(); - transition_in(if_block, 1); - if_block.m(if_block_anchor.parentNode, if_block_anchor); - } - } else if (if_block) { - group_outros(); - - transition_out(if_block, 1, 1, () => { - if_block = null; - }); - - check_outros(); - } - }, - i(local) { - if (current) return; - transition_in(if_block); - current = true; - }, - o(local) { - transition_out(if_block); - current = false; - }, - d(detaching) { - if (if_block) if_block.d(detaching); - if (detaching) detach(if_block_anchor); - mounted = false; - dispose(); - } - }; - } - - function instance$3($$self, $$props, $$invalidate) { - let day; - let dom; - let mon; - let currentTime; - let dateTimeString; - let $menuVisible; - let $trays; - component_subscribe($$self, menuVisible, $$value => $$invalidate(1, $menuVisible = $$value)); - component_subscribe($$self, trays, $$value => $$invalidate(2, $trays = $$value)); - let time = new Date(); - - onMount(() => { - const interval = setInterval( - () => { - $$invalidate(4, time = new Date()); - }, - 1000 - ); - - return () => { - clearInterval(interval); - }; - }); - - function handleKeydown(e) { - // Backtick toggle - if (e.keyCode == 192) { - menuVisible.update(current => { - return !current; - }); - } - } - - $$self.$$.update = () => { - if ($$self.$$.dirty & /*time*/ 16) { - $$invalidate(5, day = time.toLocaleString("default", { weekday: "short" })); - } - - if ($$self.$$.dirty & /*time*/ 16) { - $$invalidate(6, dom = time.getDate()); - } - - if ($$self.$$.dirty & /*time*/ 16) { - $$invalidate(7, mon = time.toLocaleString("default", { month: "short" })); - } - - if ($$self.$$.dirty & /*time*/ 16) { - $$invalidate(8, currentTime = time.toLocaleString("en-US", { - hour: "numeric", - minute: "numeric", - hour12: true - }).toLowerCase()); - } - - if ($$self.$$.dirty & /*day, dom, mon, currentTime*/ 480) { - $$invalidate(0, dateTimeString = `${day} ${dom} ${mon} ${currentTime}`); - } - }; - - return [ - dateTimeString, - $menuVisible, - $trays, - handleKeydown, - time, - day, - dom, - mon, - currentTime - ]; - } - - class Menubar extends SvelteComponent { - constructor(options) { - super(); - if (!document.getElementById("svelte-1i0zb4n-style")) add_css$3(); - init(this, options, instance$3, create_fragment$3, safe_not_equal, {}); - } - } - - /* - _ __ _ __ - | | / /___ _(_) /____ - | | /| / / __ `/ / / ___/ - | |/ |/ / /_/ / / (__ ) - |__/|__/\__,_/_/_/____/ - The electron alternative for Go - (c) Lea Anthony 2019-present - */ - - let websocket = null; - let callback = null; - let connectTimer; - - function StartWebsocket(userCallback) { - - callback = userCallback; - - window.onbeforeunload = function() { - if( websocket ) { - websocket.onclose = function () { }; - websocket.close(); - websocket = null; - } - }; - - // ...and attempt to connect - connect(); - - } - - function setupIPCBridge() { - window.wailsInvoke = (message) => { - websocket.send(message); - }; - } - - // Handles incoming websocket connections - function handleConnect() { - log('Connected to backend'); - setupIPCBridge(); - hideOverlay(); - clearInterval(connectTimer); - websocket.onclose = handleDisconnect; - websocket.onmessage = handleMessage; - } - - // Handles websocket disconnects - function handleDisconnect() { - log('Disconnected from backend'); - websocket = null; - showOverlay(); - connect(); - } - - // Try to connect to the backend every 1s (default value). - function connect() { - connectTimer = setInterval(function () { - if (websocket == null) { - websocket = new WebSocket('ws://' + window.location.hostname + ':34115/bridge'); - websocket.onopen = handleConnect; - websocket.onerror = function (e) { - e.stopImmediatePropagation(); - e.stopPropagation(); - e.preventDefault(); - websocket = null; - return false; - }; - } - }, 1000); - } - - // Adds a script to the Dom. - // Removes it if second parameter is true. - function addScript(script, remove) { - const s = document.createElement('script'); - s.setAttribute('type', 'text/javascript'); - s.textContent = script; - document.head.appendChild(s); - - // Remove internal messages from the DOM - if (remove) { - s.parentNode.removeChild(s); - } - } - - function handleMessage(message) { - // As a bridge we ignore js and css injections - switch (message.data[0]) { - // Wails library - inject! - case 'b': - message = message.data.slice(1); - addScript(message); - log('Loaded Wails Runtime'); - - // We need to now send a message to the backend telling it - // we have loaded (System Start) - window.wailsInvoke('SS'); - - // Now wails runtime is loaded, wails for the ready event - // and callback to the main app - // window.wails.Events.On('wails:loaded', function () { - if (callback) { - log('Notifying application'); - callback(window.wails); - } - // }); - break; - // Notifications - case 'n': - window.wails._.Notify(message.data.slice(1)); - break; - // // Binding - // case 'b': - // const binding = message.data.slice(1); - // //log("Binding: " + binding) - // window.wails._.NewBinding(binding); - // break; - // // Call back - case 'c': - const callbackData = message.data.slice(1); - window.wails._.Callback(callbackData); - break; - // Tray - case 'T': - const trayMessage = message.data.slice(1); - switch (trayMessage[0]) { - case 'S': - // Set tray - const trayJSON = trayMessage.slice(1); - let tray = JSON.parse(trayJSON); - setTray(tray); - break; - case 'U': - // Update label - const updateTrayLabelJSON = trayMessage.slice(1); - let trayLabelData = JSON.parse(updateTrayLabelJSON); - updateTrayLabel(trayLabelData); - break; - case 'D': - // Delete Tray Menu - const id = trayMessage.slice(1); - deleteTrayMenu(id); - break; - default: - log('Unknown tray message: ' + message.data); - } - break; - - default: - log('Unknown message: ' + message.data); - } - } - - /* - _ __ _ __ - | | / /___ _(_) /____ - | | /| / / __ `/ / / ___/ - | |/ |/ / /_/ / / (__ ) - |__/|__/\__,_/_/_/____/ - The electron alternative for Go - (c) Lea Anthony 2019-present - */ - - function setupMenuBar() { - new Menubar({ - target: document.body, - }); - } - - // Sets up the overlay - function setupOverlay() { - new Overlay({ - target: document.body, - anchor: document.querySelector('#wails-bridge'), - }); - } - - function InitBridge(callback) { - - setupMenuBar(); - - // Setup the overlay - setupOverlay(); - - // Start by showing the overlay... - showOverlay(); - - // ...and attempt to connect - StartWebsocket(callback); - } - - exports.InitBridge = InitBridge; - - Object.defineProperty(exports, '__esModule', { value: true }); - -}))); diff --git a/v2/internal/runtime/js/runtime/events.js b/v2/internal/runtime/js/runtime/events.js deleted file mode 100644 index 4f1f1060..00000000 --- a/v2/internal/runtime/js/runtime/events.js +++ /dev/null @@ -1,76 +0,0 @@ -/* - _ __ _ __ -| | / /___ _(_) /____ -| | /| / / __ `/ / / ___/ -| |/ |/ / /_/ / / (__ ) -|__/|__/\__,_/_/_/____/ -The electron alternative for Go -(c) Lea Anthony 2019-present -*/ - -/* jshint esversion: 6 */ - - -/** - * Registers an event listener that will be invoked `maxCallbacks` times before being destroyed - * - * @export - * @param {string} eventName - * @param {function} callback - * @param {number} maxCallbacks - */ -function OnMultiple(eventName, callback, maxCallbacks) { - window.wails.Events.OnMultiple(eventName, callback, maxCallbacks); -} - -/** - * Registers an event listener that will be invoked every time the event is emitted - * - * @export - * @param {string} eventName - * @param {function} callback - */ -function On(eventName, callback) { - OnMultiple(eventName, callback); -} - -/** - * Registers an event listener that will be invoked once then destroyed - * - * @export - * @param {string} eventName - * @param {function} callback - */ -function Once(eventName, callback) { - OnMultiple(eventName, callback, 1); -} - - -/** - * Emit an event with the given name and data - * - * @export - * @param {string} eventName - */ -function Emit(eventName) { - var args = [eventName].slice.call(arguments); - return window.wails.Events.Emit.apply(null, args); -} - -/** - * Registers listeners for when the system theme changes - * - * @export - * @param {function} callback - */ -function OnThemeChange(callback) { - On('wails:system:themechange', callback); -} - -module.exports = { - OnMultiple: OnMultiple, - On: On, - Once: Once, - Emit: Emit, - OnThemeChange: OnThemeChange, -}; \ No newline at end of file diff --git a/v2/internal/runtime/js/runtime/init.js b/v2/internal/runtime/js/runtime/init.js deleted file mode 100644 index 742ee1dc..00000000 --- a/v2/internal/runtime/js/runtime/init.js +++ /dev/null @@ -1,33 +0,0 @@ -/* - _ __ _ __ -| | / /___ _(_) /____ -| | /| / / __ `/ / / ___/ -| |/ |/ / /_/ / / (__ ) -|__/|__/\__,_/_/_/____/ -The electron alternative for Go -(c) Lea Anthony 2019-present -*/ -/* jshint esversion: 6 */ - -const bridge = require('./bridge'); - -/** - * ready will execute the callback when Wails has loaded - * and initialised. - * - * @param {function} callback - */ -function ready(callback) { - - // If window.wails exists, we are ready - if( window.wails ) { - return callback(); - } - - // If not we need to setup the bridge - bridge.InitBridge(callback); -} - -module.exports = { - ready: ready, -}; \ No newline at end of file diff --git a/v2/internal/runtime/js/runtime/log.js b/v2/internal/runtime/js/runtime/log.js deleted file mode 100644 index 9133e2a7..00000000 --- a/v2/internal/runtime/js/runtime/log.js +++ /dev/null @@ -1,113 +0,0 @@ -/* - _ __ _ __ -| | / /___ _(_) /____ -| | /| / / __ `/ / / ___/ -| |/ |/ / /_/ / / (__ ) -|__/|__/\__,_/_/_/____/ -The electron alternative for Go -(c) Lea Anthony 2019-present -*/ - -/* jshint esversion: 6 */ - - -/** - * Log the given message with the backend - * - * @export - * @param {string} message - */ -function Print(message) { - window.wails.Log.Print(message); -} - -/** - * Log the given trace message with the backend - * - * @export - * @param {string} message - */ -function Trace(message) { - window.wails.Log.Trace(message); -} - -/** - * Log the given debug message with the backend - * - * @export - * @param {string} message - */ -function Debug(message) { - window.wails.Log.Debug(message); -} - -/** - * Log the given info message with the backend - * - * @export - * @param {string} message - */ -function Info(message) { - window.wails.Log.Info(message); -} - -/** - * Log the given warning message with the backend - * - * @export - * @param {string} message - */ -function Warning(message) { - window.wails.Log.Warning(message); -} - -/** - * Log the given error message with the backend - * - * @export - * @param {string} message - */ -function Error(message) { - window.wails.Log.Error(message); -} - -/** - * Log the given fatal message with the backend - * - * @param {string} message - */ -function Fatal(message) { - window.wails.Log.Fatal(message); -} - - -/** - * Sets the Log level to the given log level - * - * @param {number} loglevel - */ -function SetLogLevel(loglevel) { - window.wails.Log.SetLogLevel(loglevel); -} - -// Log levels -const Level = { - TRACE: 1, - DEBUG: 2, - INFO: 3, - WARNING: 4, - ERROR: 5, -}; - - -module.exports = { - Print: Print, - Trace: Trace, - Debug: Debug, - Info: Info, - Warning: Warning, - Error: Error, - Fatal: Fatal, - SetLogLevel: SetLogLevel, - Level: Level, -}; diff --git a/v2/internal/runtime/js/runtime/main.js b/v2/internal/runtime/js/runtime/main.js deleted file mode 100644 index 25380731..00000000 --- a/v2/internal/runtime/js/runtime/main.js +++ /dev/null @@ -1,20 +0,0 @@ -/* - _ __ _ __ -| | / /___ _(_) /____ -| | /| / / __ `/ / / ___/ -| |/ |/ / /_/ / / (__ ) -|__/|__/\__,_/_/_/____/ -The electron alternative for Go -(c) Lea Anthony 2019-present -*/ -/* jshint esversion: 6 */ - -const Log = require('./log'); -const Events = require('./events'); -const Init = require('./init'); - -module.exports = { - Events: Events, - ready: Init.ready, - Log: Log, -}; \ No newline at end of file diff --git a/v2/internal/runtime/js/runtime/package-lock.json b/v2/internal/runtime/js/runtime/package-lock.json deleted file mode 100644 index 71ef2a7b..00000000 --- a/v2/internal/runtime/js/runtime/package-lock.json +++ /dev/null @@ -1,517 +0,0 @@ -{ - "name": "@wails/runtime", - "version": "1.3.20", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", - "dev": true - }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "dev": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" - } - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, - "dts-dom": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/dts-dom/-/dts-dom-3.6.0.tgz", - "integrity": "sha512-on5jxTgt+A6r0Zyyz6ZRHXaAO7J1VPnOd6+AmvI1vH440AlAZZNc5rUHzgPuTjGlrVr1rOWQYNl7ZJK6rDohbw==", - "dev": true - }, - "dts-gen": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/dts-gen/-/dts-gen-0.5.8.tgz", - "integrity": "sha512-kIAV6dlHaF7r5J+tIuOC1BJls2P72YM0cyWQUR88zcJEpX2ccRZe+HmXLfkkvfPwjvSO3FEqUiyC8On/grx5qw==", - "dev": true, - "requires": { - "dts-dom": "^3.6.0", - "parse-git-config": "^1.1.1", - "typescript": "^3.5.1", - "yargs": "^4.8.1" - } - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "fs-exists-sync": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz", - "integrity": "sha1-mC1ok6+RjnLQjeyehnP/K1qNat0=", - "dev": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", - "dev": true - }, - "git-config-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/git-config-path/-/git-config-path-1.0.1.tgz", - "integrity": "sha1-bTP37WPbDQ4RgTFQO6s6ykfVRmQ=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "fs-exists-sync": "^0.1.0", - "homedir-polyfill": "^1.0.0" - } - }, - "graceful-fs": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", - "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", - "dev": true - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "homedir-polyfill": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", - "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", - "dev": true, - "requires": { - "parse-passwd": "^1.0.0" - } - }, - "hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, - "ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", - "dev": true - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "is-core-module": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", - "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", - "dev": true - }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "dev": true, - "requires": { - "invert-kv": "^1.0.0" - } - }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - } - }, - "lodash.assign": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", - "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", - "dev": true - }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true - }, - "os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", - "dev": true, - "requires": { - "lcid": "^1.0.0" - } - }, - "parse-git-config": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/parse-git-config/-/parse-git-config-1.1.1.tgz", - "integrity": "sha1-06mYQxcTL1c5hxK7pDjhKVkN34w=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "fs-exists-sync": "^0.1.0", - "git-config-path": "^1.0.1", - "ini": "^1.3.4" - } - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, - "requires": { - "error-ex": "^1.2.0" - } - }, - "parse-passwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", - "dev": true - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, - "requires": { - "pinkie": "^2.0.0" - } - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true, - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true, - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true - }, - "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", - "dev": true - }, - "resolve": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", - "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", - "dev": true, - "requires": { - "is-core-module": "^2.1.0", - "path-parse": "^1.0.6" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true - }, - "spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true - }, - "spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz", - "integrity": "sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==", - "dev": true - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "requires": { - "is-utf8": "^0.2.0" - } - }, - "typescript": { - "version": "3.9.7", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.7.tgz", - "integrity": "sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw==", - "dev": true - }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "which-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", - "dev": true - }, - "window-size": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz", - "integrity": "sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU=", - "dev": true - }, - "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", - "dev": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - } - }, - "y18n": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", - "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", - "dev": true - }, - "yargs": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-4.8.1.tgz", - "integrity": "sha1-wMQpJMpKqmsObaFznfshZDn53cA=", - "dev": true, - "requires": { - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "lodash.assign": "^4.0.3", - "os-locale": "^1.4.0", - "read-pkg-up": "^1.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^1.0.1", - "which-module": "^1.0.0", - "window-size": "^0.2.0", - "y18n": "^3.2.1", - "yargs-parser": "^2.4.1" - } - }, - "yargs-parser": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-2.4.1.tgz", - "integrity": "sha1-hVaN488VD/SfpRgl8DqMiA3cxcQ=", - "dev": true, - "requires": { - "camelcase": "^3.0.0", - "lodash.assign": "^4.0.6" - } - } - } -} diff --git a/v2/internal/runtime/js/runtime/package.json b/v2/internal/runtime/js/runtime/package.json deleted file mode 100644 index 548838a0..00000000 --- a/v2/internal/runtime/js/runtime/package.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "name": "@wails/runtime", - "version": "1.3.20", - "description": "Wails V2 Javascript runtime library", - "main": "main.js", - "types": "runtime.d.ts", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/wailsapp/wails.git" - }, - "keywords": [ - "Wails", - "Javascript", - "Go" - ], - "author": "Lea Anthony ", - "license": "MIT", - "bugs": { - "url": "https://github.com/wailsapp/wails/issues" - }, - "homepage": "https://github.com/wailsapp/wails#readme", - "devDependencies": { - "dts-gen": "^0.5.8" - } -} diff --git a/v2/internal/runtime/js/runtime/runtime.d.ts b/v2/internal/runtime/js/runtime/runtime.d.ts deleted file mode 100644 index 2b112d76..00000000 --- a/v2/internal/runtime/js/runtime/runtime.d.ts +++ /dev/null @@ -1,26 +0,0 @@ -export = wailsapp__runtime; - -interface Level { - TRACE: 1, - DEBUG: 2, - INFO: 3, - WARNING: 4, - ERROR: 5, -} - -declare const wailsapp__runtime: { - EventsEmit(eventName: string, data?: any): void; - EventsOn(eventName: string, callback: (data?: any) => void): void; - EventsOnMultiple(eventName: string, callback: (data?: any) => void, maxCallbacks: number): void; - EventsOnce(eventName: string, callback: (data?: any) => void): void; - // Init(callback: () => void): void; - LogTrace(message: string): void; - LogDebug(message: string): void; - LogError(message: string): void; - LogFatal(message: string): void; - LogInfo(message: string): void; - LogWarning(message: string): void; - LogLevel: Level; -}; - - diff --git a/v2/internal/runtime/js/runtime/src/Menu.svelte b/v2/internal/runtime/js/runtime/src/Menu.svelte deleted file mode 100644 index bed890d6..00000000 --- a/v2/internal/runtime/js/runtime/src/Menu.svelte +++ /dev/null @@ -1,56 +0,0 @@ -s - - -{#if !hidden} - -{/if} - - \ No newline at end of file diff --git a/v2/internal/runtime/js/runtime/src/Menubar.svelte b/v2/internal/runtime/js/runtime/src/Menubar.svelte deleted file mode 100644 index eeb87b84..00000000 --- a/v2/internal/runtime/js/runtime/src/Menubar.svelte +++ /dev/null @@ -1,58 +0,0 @@ - - -{#if $menuVisible } -
- - - - - - -
-{/if} - - - - \ No newline at end of file diff --git a/v2/internal/runtime/js/runtime/src/Overlay.svelte b/v2/internal/runtime/js/runtime/src/Overlay.svelte deleted file mode 100644 index 0600e36b..00000000 --- a/v2/internal/runtime/js/runtime/src/Overlay.svelte +++ /dev/null @@ -1,55 +0,0 @@ - - -{#if $overlayVisible } -
-
-
-
-
-{/if} - - \ No newline at end of file diff --git a/v2/internal/runtime/js/runtime/src/TrayMenu.svelte b/v2/internal/runtime/js/runtime/src/TrayMenu.svelte deleted file mode 100644 index f4c9503c..00000000 --- a/v2/internal/runtime/js/runtime/src/TrayMenu.svelte +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - {tray.Label} - {#if tray.ProcessedMenu } - - {/if} - - - \ No newline at end of file diff --git a/v2/internal/runtime/js/runtime/src/log.js b/v2/internal/runtime/js/runtime/src/log.js deleted file mode 100644 index 256637e8..00000000 --- a/v2/internal/runtime/js/runtime/src/log.js +++ /dev/null @@ -1,9 +0,0 @@ - -export function log(message) { - // eslint-disable-next-line - console.log( - '%c wails bridge %c ' + message + ' ', - 'background: #aa0000; color: #fff; border-radius: 3px 0px 0px 3px; padding: 1px; font-size: 0.7rem', - 'background: #009900; color: #fff; border-radius: 0px 3px 3px 0px; padding: 1px; font-size: 0.7rem' - ); -} \ No newline at end of file diff --git a/v2/internal/runtime/js/runtime/src/main.js b/v2/internal/runtime/js/runtime/src/main.js deleted file mode 100644 index bf421990..00000000 --- a/v2/internal/runtime/js/runtime/src/main.js +++ /dev/null @@ -1,45 +0,0 @@ -/* - _ __ _ __ -| | / /___ _(_) /____ -| | /| / / __ `/ / / ___/ -| |/ |/ / /_/ / / (__ ) -|__/|__/\__,_/_/_/____/ -The electron alternative for Go -(c) Lea Anthony 2019-present -*/ -/* jshint esversion: 6 */ - -import Overlay from './Overlay.svelte'; -import MenuBar from './Menubar.svelte'; -import {showOverlay} from "./store"; -import {StartWebsocket} from "./websocket"; - -let components = {}; - -function setupMenuBar() { - components.menubar = new MenuBar({ - target: document.body, - }); -} - -// Sets up the overlay -function setupOverlay() { - components.overlay = new Overlay({ - target: document.body, - anchor: document.querySelector('#wails-bridge'), - }); -} - -export function InitBridge(callback) { - - setupMenuBar() - - // Setup the overlay - setupOverlay(); - - // Start by showing the overlay... - showOverlay(); - - // ...and attempt to connect - StartWebsocket(callback); -} diff --git a/v2/internal/runtime/js/runtime/src/package-lock.json b/v2/internal/runtime/js/runtime/src/package-lock.json deleted file mode 100644 index dc8d67b1..00000000 --- a/v2/internal/runtime/js/runtime/src/package-lock.json +++ /dev/null @@ -1,525 +0,0 @@ -{ - "name": "bridge", - "version": "1.0.0", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@babel/code-frame": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", - "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", - "dev": true, - "requires": { - "@babel/highlight": "^7.12.13" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", - "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", - "dev": true - }, - "@babel/highlight": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.12.13.tgz", - "integrity": "sha512-kocDQvIbgMKlWxXe9fof3TQ+gkIPOUSEYhJjqUjvKMez3krV7vbzYCDq39Oj11UAVK7JqPVGQPlgE85dPNlQww==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "@rollup/plugin-commonjs": { - "version": "17.1.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-17.1.0.tgz", - "integrity": "sha512-PoMdXCw0ZyvjpCMT5aV4nkL0QywxP29sODQsSGeDpr/oI49Qq9tRtAsb/LbYbDzFlOydVEqHmmZWFtXJEAX9ew==", - "dev": true, - "requires": { - "@rollup/pluginutils": "^3.1.0", - "commondir": "^1.0.1", - "estree-walker": "^2.0.1", - "glob": "^7.1.6", - "is-reference": "^1.2.1", - "magic-string": "^0.25.7", - "resolve": "^1.17.0" - }, - "dependencies": { - "estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true - } - } - }, - "@rollup/plugin-node-resolve": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.1.1.tgz", - "integrity": "sha512-zlBXR4eRS+2m79TsUZWhsd0slrHUYdRx4JF+aVQm+MI0wsKdlpC2vlDVjmlGvtZY1vsefOT9w3JxvmWSBei+Lg==", - "dev": true, - "requires": { - "@rollup/pluginutils": "^3.1.0", - "@types/resolve": "1.17.1", - "builtin-modules": "^3.1.0", - "deepmerge": "^4.2.2", - "is-module": "^1.0.0", - "resolve": "^1.19.0" - } - }, - "@rollup/pluginutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", - "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", - "dev": true, - "requires": { - "@types/estree": "0.0.39", - "estree-walker": "^1.0.1", - "picomatch": "^2.2.2" - } - }, - "@types/estree": { - "version": "0.0.39", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", - "dev": true - }, - "@types/node": { - "version": "14.14.25", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.25.tgz", - "integrity": "sha512-EPpXLOVqDvisVxtlbvzfyqSsFeQxltFbluZNRndIb8tr9KiBnYNLzrc1N3pyKUCww2RNrfHDViqDWWE1LCJQtQ==", - "dev": true - }, - "@types/resolve": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", - "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "dev": true - }, - "builtin-modules": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", - "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", - "dev": true - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "estree-walker": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", - "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", - "dev": true - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "optional": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "is-core-module": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", - "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", - "dev": true - }, - "is-reference": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", - "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", - "dev": true, - "requires": { - "@types/estree": "*" - } - }, - "jest-worker": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", - "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", - "dev": true, - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" - }, - "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "magic-string": { - "version": "0.25.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", - "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", - "dev": true, - "requires": { - "sourcemap-codec": "^1.4.4" - } - }, - "merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", - "dev": true - }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "require-relative": { - "version": "0.8.7", - "resolved": "https://registry.npmjs.org/require-relative/-/require-relative-0.8.7.tgz", - "integrity": "sha1-eZlTn8ngR6N5KPoZb44VY9q9Nt4=", - "dev": true - }, - "resolve": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", - "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", - "dev": true, - "requires": { - "is-core-module": "^2.1.0", - "path-parse": "^1.0.6" - } - }, - "rollup": { - "version": "2.38.5", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.38.5.tgz", - "integrity": "sha512-VoWt8DysFGDVRGWuHTqZzT02J0ASgjVq/hPs9QcBOGMd7B+jfTr/iqMVEyOi901rE3xq+Deq66GzIT1yt7sGwQ==", - "dev": true, - "requires": { - "fsevents": "~2.3.1" - } - }, - "rollup-plugin-svelte": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-svelte/-/rollup-plugin-svelte-7.1.0.tgz", - "integrity": "sha512-vopCUq3G+25sKjwF5VilIbiY6KCuMNHP1PFvx2Vr3REBNMDllKHFZN2B9jwwC+MqNc3UPKkjXnceLPEjTjXGXg==", - "dev": true, - "requires": { - "require-relative": "^0.8.7", - "rollup-pluginutils": "^2.8.2" - } - }, - "rollup-plugin-terser": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", - "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.10.4", - "jest-worker": "^26.2.1", - "serialize-javascript": "^4.0.0", - "terser": "^5.0.0" - } - }, - "rollup-pluginutils": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", - "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", - "dev": true, - "requires": { - "estree-walker": "^0.6.1" - }, - "dependencies": { - "estree-walker": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", - "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", - "dev": true - } - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - }, - "serialize-javascript": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", - "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } - }, - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true - }, - "source-map-support": { - "version": "0.5.19", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", - "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "svelte": { - "version": "3.32.2", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.32.2.tgz", - "integrity": "sha512-Zxh1MQQl/+vnToKbU1Per+PoMN8Jb2MeKJcGxiOsCGR677hXw7jkMfbnNXq33+dxIzV/HfA4xtoSPJrqeB0VUg==", - "dev": true - }, - "terser": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.5.1.tgz", - "integrity": "sha512-6VGWZNVP2KTUcltUQJ25TtNjx/XgdDsBDKGt8nN0MpydU36LmbPPcMBd2kmtZNNGVVDLg44k7GKeHHj+4zPIBQ==", - "dev": true, - "requires": { - "commander": "^2.20.0", - "source-map": "~0.7.2", - "source-map-support": "~0.5.19" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - } - } -} diff --git a/v2/internal/runtime/js/runtime/src/package.json b/v2/internal/runtime/js/runtime/src/package.json deleted file mode 100644 index 1f0d6e22..00000000 --- a/v2/internal/runtime/js/runtime/src/package.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "name": "bridge", - "version": "1.0.0", - "description": "Wails bridge", - "main": "main.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1", - "build": "npx rollup -c", - "watch": "npx rollup -c -w" - }, - "author": "", - "license": "ISC", - "devDependencies": { - "@rollup/plugin-commonjs": "^17.1.0", - "@rollup/plugin-node-resolve": "^11.1.1", - "rollup": "^2.38.5", - "rollup-plugin-svelte": "^7.1.0", - "rollup-plugin-terser": "^7.0.2", - "svelte": "^3.32.2" - } -} diff --git a/v2/internal/runtime/js/runtime/src/rollup.config.js b/v2/internal/runtime/js/runtime/src/rollup.config.js deleted file mode 100644 index cbca60af..00000000 --- a/v2/internal/runtime/js/runtime/src/rollup.config.js +++ /dev/null @@ -1,37 +0,0 @@ -import resolve from '@rollup/plugin-node-resolve'; -// import commonjs from '@rollup/plugin-commonjs'; -import svelte from 'rollup-plugin-svelte'; -import { terser } from "rollup-plugin-terser"; - -export default [ - // browser-friendly UMD build - { - input: 'main.js', - output: { - name: 'bridge', - file: '../bridge.js', - format: 'umd', - exports: "named" - }, - plugins: [ - svelte({ - // Optionally, preprocess components with svelte.preprocess: - // https://svelte.dev/docs#svelte_preprocess - // preprocess: { - // style: ({content}) => { - // return transformStyles(content); - // } - // }, - - // Emit CSS as "files" for other plugins to process. default is true - emitCss: false, - - }), - resolve({browser: true}), // so Rollup can find `ms` - // commonjs() // so Rollup can convert `ms` to an ES module - // terser(), - ] - }, - - -]; \ No newline at end of file diff --git a/v2/internal/runtime/js/runtime/src/store.js b/v2/internal/runtime/js/runtime/src/store.js deleted file mode 100644 index a0b4571b..00000000 --- a/v2/internal/runtime/js/runtime/src/store.js +++ /dev/null @@ -1,64 +0,0 @@ - -import { writable } from 'svelte/store'; -import {log} from "./log"; - -/** Overlay */ -export const overlayVisible = writable(false); - -export function showOverlay() { - overlayVisible.set(true); -} -export function hideOverlay() { - overlayVisible.set(false); -} - -/** Menubar **/ -export const menuVisible = writable(false); - -export function showMenuBar() { - menuVisible.set(true); -} -export function hideMenuBar() { - menuVisible.set(false); -} - -/** Trays **/ - -export const trays = writable([]); -export function setTray(tray) { - trays.update((current) => { - // Remove existing if it exists, else add - const index = current.findIndex(item => item.ID === tray.ID); - if ( index === -1 ) { - current.push(tray); - } else { - current[index] = tray; - } - return current; - }) -} -export function updateTrayLabel(tray) { - trays.update((current) => { - // Remove existing if it exists, else add - const index = current.findIndex(item => item.ID === tray.ID); - if ( index === -1 ) { - return log("ERROR: Attempted to update tray index ", tray.ID, "but it doesn't exist") - } - current[index].Label = tray.Label; - return current; - }) -} - -export function deleteTrayMenu(id) { - trays.update((current) => { - // Remove existing if it exists, else add - const index = current.findIndex(item => item.ID === id); - if ( index === -1 ) { - return log("ERROR: Attempted to delete tray index ", id, "but it doesn't exist") - } - current.splice(index, 1); - return current; - }) -} - -export let selectedMenu = writable(null); \ No newline at end of file diff --git a/v2/internal/runtime/js/runtime/src/websocket.js b/v2/internal/runtime/js/runtime/src/websocket.js deleted file mode 100644 index a3e3aeb7..00000000 --- a/v2/internal/runtime/js/runtime/src/websocket.js +++ /dev/null @@ -1,158 +0,0 @@ -/* - _ __ _ __ -| | / /___ _(_) /____ -| | /| / / __ `/ / / ___/ -| |/ |/ / /_/ / / (__ ) -|__/|__/\__,_/_/_/____/ -The electron alternative for Go -(c) Lea Anthony 2019-present -*/ -/* jshint esversion: 6 */ - - -import {deleteTrayMenu, hideOverlay, setTray, showOverlay, updateTrayLabel} from './store'; -import {log} from './log'; - -let websocket = null; -let callback = null; -let connectTimer; - -export function StartWebsocket(userCallback) { - - callback = userCallback; - - window.onbeforeunload = function() { - if( websocket ) { - websocket.onclose = function () { }; - websocket.close(); - websocket = null; - } - }; - - // ...and attempt to connect - connect(); - -} - -function setupIPCBridge() { - window.wailsInvoke = (message) => { - websocket.send(message); - }; -} - -// Handles incoming websocket connections -function handleConnect() { - log('Connected to backend'); - setupIPCBridge(); - hideOverlay(); - clearInterval(connectTimer); - websocket.onclose = handleDisconnect; - websocket.onmessage = handleMessage; -} - -// Handles websocket disconnects -function handleDisconnect() { - log('Disconnected from backend'); - websocket = null; - showOverlay(); - connect(); -} - -// Try to connect to the backend every 1s (default value). -function connect() { - connectTimer = setInterval(function () { - if (websocket == null) { - websocket = new WebSocket('ws://' + window.location.hostname + ':34115/bridge'); - websocket.onopen = handleConnect; - websocket.onerror = function (e) { - e.stopImmediatePropagation(); - e.stopPropagation(); - e.preventDefault(); - websocket = null; - return false; - }; - } - }, 1000); -} - -// Adds a script to the Dom. -// Removes it if second parameter is true. -function addScript(script, remove) { - const s = document.createElement('script'); - s.setAttribute('type', 'text/javascript'); - s.textContent = script; - document.head.appendChild(s); - - // Remove internal messages from the DOM - if (remove) { - s.parentNode.removeChild(s); - } -} - -function handleMessage(message) { - // As a bridge we ignore js and css injections - switch (message.data[0]) { - // Wails library - inject! - case 'b': - message = message.data.slice(1); - addScript(message); - log('Loaded Wails Runtime'); - - // We need to now send a message to the backend telling it - // we have loaded (System Start) - window.wailsInvoke('SS'); - - // Now wails runtime is loaded, wails for the ready event - // and callback to the main app - // window.wails.Events.On('wails:loaded', function () { - if (callback) { - log('Notifying application'); - callback(window.wails); - } - // }); - break; - // Notifications - case 'n': - window.wails._.Notify(message.data.slice(1)); - break; - // // Binding - // case 'b': - // const binding = message.data.slice(1); - // //log("Binding: " + binding) - // window.wails._.NewBinding(binding); - // break; - // // Call back - case 'c': - const callbackData = message.data.slice(1); - window.wails._.Callback(callbackData); - break; - // Tray - case 'T': - const trayMessage = message.data.slice(1); - switch (trayMessage[0]) { - case 'S': - // Set tray - const trayJSON = trayMessage.slice(1); - let tray = JSON.parse(trayJSON); - setTray(tray); - break; - case 'U': - // Update label - const updateTrayLabelJSON = trayMessage.slice(1); - let trayLabelData = JSON.parse(updateTrayLabelJSON); - updateTrayLabel(trayLabelData); - break; - case 'D': - // Delete Tray Menu - const id = trayMessage.slice(1); - deleteTrayMenu(id); - break; - default: - log('Unknown tray message: ' + message.data); - } - break; - - default: - log('Unknown message: ' + message.data); - } -} diff --git a/v2/internal/runtime/js/server/darwin.js b/v2/internal/runtime/js/server/darwin.js deleted file mode 100644 index c2af8faa..00000000 --- a/v2/internal/runtime/js/server/darwin.js +++ /dev/null @@ -1,17 +0,0 @@ -/* - _ __ _ __ -| | / /___ _(_) /____ -| | /| / / __ `/ / / ___/ -| |/ |/ / /_/ / / (__ ) -|__/|__/\__,_/_/_/____/ -The electron alternative for Go -(c) Lea Anthony 2019-present -*/ - -/* jshint esversion: 6 */ - -/** - * Initialises platform specific code - */ - -export function Init() { } diff --git a/v2/internal/runtime/js/server/ipc.js b/v2/internal/runtime/js/server/ipc.js deleted file mode 100644 index 1332dd2c..00000000 --- a/v2/internal/runtime/js/server/ipc.js +++ /dev/null @@ -1,52 +0,0 @@ -/* - _ __ _ __ -| | / /___ _(_) /____ -| | /| / / __ `/ / / ___/ -| |/ |/ / /_/ / / (__ ) -|__/|__/\__,_/_/_/____/ -The electron alternative for Go -(c) Lea Anthony 2019-present -*/ -/* jshint esversion: 6 */ - -// IPC Listeners -var listeners = []; - -/** - * Adds a listener to IPC messages - * @param {function} callback - */ -export function AddIPCListener(callback) { - listeners.push(callback); -} - -/** - * Invoke sends the given message to the backend - * - * @param {string} message - */ -function Invoke(message) { - if (window.wailsbridge && window.wailsbridge.websocket) { - window.wailsbridge.websocket.send(JSON.stringify(message)); - } else { - console.log('Invoke called with: ' + message + ' but no runtime is available'); - } - - // Also send to listeners - if (listeners.length > 0) { - for (var i = 0; i < listeners.length; i++) { - listeners[i](message); - } - } -} - -/** - * Sends a message to the backend based on the given type, payload and callbackID - * - * @export - * @param {string} message - */ - -export function SendMessage(message) { - Invoke(message); -} diff --git a/v2/internal/runtime/js/server/linux.js b/v2/internal/runtime/js/server/linux.js deleted file mode 100644 index 718c01d8..00000000 --- a/v2/internal/runtime/js/server/linux.js +++ /dev/null @@ -1,17 +0,0 @@ -/* - _ __ _ __ -| | / /___ _(_) /____ -| | /| / / __ `/ / / ___/ -| |/ |/ / /_/ / / (__ ) -|__/|__/\__,_/_/_/____/ -The electron alternative for Go -(c) Lea Anthony 2019-present -*/ - -/* jshint esversion: 6 */ - -/** - * Initialises platform specific code - */ - -export function Init() { } \ No newline at end of file diff --git a/v2/internal/runtime/js/webpack.config.js b/v2/internal/runtime/js/webpack.config.js deleted file mode 100644 index 62cb81a2..00000000 --- a/v2/internal/runtime/js/webpack.config.js +++ /dev/null @@ -1,4 +0,0 @@ -/* eslint-disable */ -module.exports = (env) => { - return require(`./webpack.${env}.js`); -}; \ No newline at end of file diff --git a/v2/internal/runtime/js/webpack.desktop.js b/v2/internal/runtime/js/webpack.desktop.js deleted file mode 100644 index 8ad1d61d..00000000 --- a/v2/internal/runtime/js/webpack.desktop.js +++ /dev/null @@ -1,51 +0,0 @@ -/* eslint-disable */ - -const path = require('path'); - -const platform = process.env.WAILSPLATFORM; -if (!platform) { - console.error("FATAL: Environment variable WAILSPLATFORM not set!"); - process.exit(1); -} - -module.exports = { - entry: './core/desktop', - mode: 'production', - output: { - path: path.resolve(__dirname, '..', 'assets'), - filename: 'desktop_'+platform+'.js', - library: 'Wails' - }, - resolve: { - alias: { - ipc$: path.resolve(__dirname, 'desktop/ipc.js'), - platform$: path.resolve(__dirname, `desktop/${platform}.js`) - } - }, - module: { - rules: [ - { - test: /\.m?js$/, - exclude: /(node_modules|bower_components)/, - use: { - loader: 'babel-loader', - options: { - plugins: ['@babel/plugin-transform-object-assign'], - presets: [ - [ - '@babel/preset-env', - { - 'useBuiltIns': 'entry', - 'corejs': { - 'version': 3, - 'proposals': true - } - } - ] - ] - } - } - } - ] - } -}; diff --git a/v2/internal/runtime/js/webpack.server.js b/v2/internal/runtime/js/webpack.server.js deleted file mode 100644 index 58ed73b6..00000000 --- a/v2/internal/runtime/js/webpack.server.js +++ /dev/null @@ -1,54 +0,0 @@ -/* eslint-disable */ - -const path = require('path'); - -const platform = process.env.WAILSPLATFORM; -if (!platform) { - console.error("FATAL: Environment variable WAILSPLATFORM not set!"); - process.exit(1); -} - -module.exports = { - entry: './core/server', - mode: 'production', - output: { - path: path.resolve(__dirname, '..', 'assets'), - filename: 'server.js', - library: 'Wails' - }, - resolve: { - alias: { - ipc$: path.resolve(__dirname, 'server/ipc.js'), - platform$: path.resolve(__dirname, `server/${platform}.js`) - } - }, - module: { - rules: [ - { - test: /\.m?js$/, - include: [ - path.resolve(__dirname, "server"), - ], - exclude: /(node_modules|bower_components)/, - use: { - loader: 'babel-loader', - options: { - plugins: ['@babel/plugin-transform-object-assign'], - presets: [ - [ - '@babel/preset-env', - { - 'useBuiltIns': 'entry', - 'corejs': { - 'version': 3, - 'proposals': true - } - } - ] - ] - } - } - } - ] - } -}; diff --git a/v2/internal/runtime/scripts/rebuild.go b/v2/internal/runtime/scripts/rebuild.go deleted file mode 100644 index 847bce76..00000000 --- a/v2/internal/runtime/scripts/rebuild.go +++ /dev/null @@ -1,84 +0,0 @@ -package main - -import ( - "bytes" - "fmt" - "log" - "os" - "strings" - - "github.com/wailsapp/wails/v2/internal/fs" - "github.com/wailsapp/wails/v2/internal/shell" -) - -func main() { - - sourceDir := fs.RelativePath("../../../internal/runtime/js") - - platforms := []string{"darwin", "windows", "linux"} - - for _, platform := range platforms { - println("Building JS Runtime for " + platform) - envvars := []string{"WAILSPLATFORM=" + platform} - - // Split up the InstallCommand and execute it - stdout, stderr, err := shell.RunCommand(sourceDir, "npm", "install") - if err != nil { - for _, l := range strings.Split(stdout, "\n") { - fmt.Printf(" %s\n", l) - } - for _, l := range strings.Split(stderr, "\n") { - fmt.Printf(" %s\n", l) - } - } - - runtimeDir := fs.RelativePath("../js") - cmd := shell.CreateCommand(runtimeDir, "npm", "run", "build:desktop") - cmd.Env = append(os.Environ(), envvars...) - var stdo, stde bytes.Buffer - cmd.Stdout = &stdo - cmd.Stderr = &stde - err = cmd.Run() - if err != nil { - for _, l := range strings.Split(stdo.String(), "\n") { - fmt.Printf(" %s\n", l) - } - for _, l := range strings.Split(stde.String(), "\n") { - fmt.Printf(" %s\n", l) - } - log.Fatal(err) - } - - wailsJS := fs.RelativePath("../assets/desktop_" + platform + ".js") - runtimeData, err := os.ReadFile(wailsJS) - if err != nil { - log.Fatal(err) - } - - // Copy this file to bridge directory for embedding - bridgeDir := fs.RelativePath("../../bridge/" + platform + ".js") - println("Copying", wailsJS, "to", bridgeDir) - err = fs.CopyFile(wailsJS, bridgeDir) - if err != nil { - log.Fatal(err) - } - - // Convert to C structure - runtimeC := ` -// runtime.c (c) 2019-Present Lea Anthony. -// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL -// This file was auto-generated. DO NOT MODIFY. -const unsigned char runtime[]={` - for _, b := range runtimeData { - runtimeC += fmt.Sprintf("0x%x, ", b) - } - runtimeC += "0x00};" - - // Save file - outputFile := fs.RelativePath(fmt.Sprintf("../../ffenestri/runtime_%s.c", platform)) - - if err := os.WriteFile(outputFile, []byte(runtimeC), 0600); err != nil { - log.Fatal(err) - } - } -} diff --git a/v2/internal/webserver/routes.go b/v2/internal/webserver/routes.go deleted file mode 100644 index 3b65b2e7..00000000 --- a/v2/internal/webserver/routes.go +++ /dev/null @@ -1,49 +0,0 @@ -package webserver - -import ( - "encoding/json" - "fmt" - "net/http" - "strings" -) - -func (w *WebServer) setUpRoutes() error { - // Handle Index + assets - http.HandleFunc("/", w.serveAssets) - - // Handle Bindings - http.HandleFunc("/bindings.js", w.serveBindings) - - // Handle Wails - http.HandleFunc("/wails.js", w.serveWails) - - // Handle websocket connection - http.HandleFunc("/ws", w.websocketConnection) - - return nil -} - -func (w *WebServer) serveAssets(resp http.ResponseWriter, req *http.Request) { - fileserver := http.FileServer(w.assets) - fileserver.ServeHTTP(resp, req) -} - -func (w *WebServer) serveBindings(resp http.ResponseWriter, req *http.Request) { - resp.Header().Add("content-type", "application/javascript") - bindings, err := w.bindings.ToJSON() - if err != nil { - w.logger.Error("Failed to convert bindings to JSON: %v", err) - fmt.Fprintf(resp, "") - return - } - w.logger.Debug("Sending bindings to webclient: %v", bindings) - b, _ := json.Marshal(bindings) - fmt.Fprintf(resp, fmt.Sprintf("window.wailsbindings=%s; window.SetBindings(window.wailsbindings);", b)) -} - -func (w *WebServer) serveWails(resp http.ResponseWriter, req *http.Request) { - resp.Header().Add("content-type", "application/javascript") - if data, err := w.assets.String("/wails.js"); err == nil { - fmt.Fprintf(resp, strings.Replace(data, ":8080", fmt.Sprintf(":%d", w.port), 1)) - } -} diff --git a/v2/internal/webserver/webassets.go b/v2/internal/webserver/webassets.go deleted file mode 100644 index 9f73c8f7..00000000 --- a/v2/internal/webserver/webassets.go +++ /dev/null @@ -1,9 +0,0 @@ -package webserver - -import "github.com/wailsapp/wails/v2/internal/assetdb" - -var ( - // WebAssets is our single asset db instance. - // It will be constructed by a dynamically generated method in this directory. - WebAssets *assetdb.AssetDB = assetdb.NewAssetDB() -) diff --git a/v2/internal/webserver/webserver.go b/v2/internal/webserver/webserver.go deleted file mode 100644 index 4b143d25..00000000 --- a/v2/internal/webserver/webserver.go +++ /dev/null @@ -1,87 +0,0 @@ -package webserver - -import ( - "fmt" - "net/http" - "sync" - - "github.com/wailsapp/wails/v2/internal/assetdb" - "github.com/wailsapp/wails/v2/internal/binding" - "github.com/wailsapp/wails/v2/internal/logger" - "github.com/wailsapp/wails/v2/internal/messagedispatcher" - "github.com/wailsapp/wails/v2/internal/subsystem" -) - -// WebServer serves the application over http -type WebServer struct { - port int - ip string - assets *assetdb.AssetDB - logger *logger.Logger - dispatcher *messagedispatcher.Dispatcher - event *subsystem.Event - server *http.Server - bindings *binding.Bindings - - lock sync.Mutex - connections map[string]*WebClient -} - -// NewWebServer creates a new WebServer -func NewWebServer(logger *logger.Logger) *WebServer { - - // Return a WebServer with default values - return &WebServer{ - assets: db, - connections: make(map[string]*WebClient), - logger: logger, - } -} - -// URL returns the URL that the server is serving from -func (w *WebServer) URL() string { - return fmt.Sprintf("http://%s:%d", w.ip, w.port) -} - -// SetPort sets the server port to listen on -func (w *WebServer) SetPort(port int) { - w.port = port -} - -// SetIP sets the server ip to listen on -func (w *WebServer) SetIP(ip string) { - w.ip = ip -} - -// SetBindings provides the webserver with the mapping of bindings to provide to a client -func (w *WebServer) SetBindings(bindings *binding.Bindings) { - w.bindings = bindings -} - -// Start the webserver -func (w *WebServer) Start(dispatcher *messagedispatcher.Dispatcher, event *subsystem.Event) error { - var err error - - // Create the server - w.server = &http.Server{Addr: fmt.Sprintf("%s:%d", w.ip, w.port)} - w.event = event - - // Set up the Web Server's routes - err = w.setUpRoutes() - if err != nil { - return err - } - - // Save the dispatcher - w.dispatcher = dispatcher - - // Start the WebServer - err = w.server.ListenAndServe() - - // Return any error except http.ErrServerClosed - if err != nil && err != http.ErrServerClosed { - return err - } - - return nil -} diff --git a/v2/internal/webserver/websockets.go b/v2/internal/webserver/websockets.go deleted file mode 100644 index f12f0a96..00000000 --- a/v2/internal/webserver/websockets.go +++ /dev/null @@ -1,239 +0,0 @@ -package webserver - -import ( - "context" - "net/http" - "strings" - - "github.com/wailsapp/wails/v2/pkg/menu" - "github.com/wailsapp/wails/v2/pkg/runtime" - - "github.com/wailsapp/wails/v2/internal/logger" - ws "nhooyr.io/websocket" - "nhooyr.io/websocket/wsjson" -) - -// WebClient represents an individual web session -type WebClient struct { - conn *ws.Conn - identifier string - logger *logger.Logger - running bool -} - -func (wc *WebClient) WindowSetMinSize(width int, height int) { - wc.logger.Info("Not implemented in server build") -} - -func (wc *WebClient) WindowSetMaxSize(width int, height int) { - wc.logger.Info("Not implemented in server build") -} - -func (wc *WebClient) DeleteTrayMenuByID(id string) { - wc.logger.Info("Not implemented in server build") -} - -func (wc *WebClient) SetTrayMenu(trayMenuJSON string) { - wc.logger.Info("Not implemented in server build") -} - -func (wc *WebClient) UpdateTrayMenuLabel(trayMenuJSON string) { - wc.logger.Info("Not implemented in server build") -} - -func (wc *WebClient) MessageDialog(dialogOptions runtime.MessageDialogOptions, callbackID string) { - wc.logger.Info("Not implemented in server build") -} - -func (wc *WebClient) SetApplicationMenu(menuJSON string) { - wc.logger.Info("Not implemented in server build") -} - -func (wc *WebClient) UpdateTrayMenu(trayMenuJSON string) { - wc.logger.Info("Not implemented in server build") -} - -func (wc *WebClient) UpdateContextMenu(contextMenuJSON string) { - wc.logger.Info("Not implemented in server build") -} - -func (wc *WebClient) OpenFileDialog(dialogOptions runtime.OpenDialogOptions, callbackID string) { - wc.logger.Info("Not implemented in server build") -} - -func (wc *WebClient) OpenMultipleFilesDialog(dialogOptions runtime.OpenDialogOptions, callbackID string) { - wc.logger.Info("Not implemented in server build") -} - -func (wc *WebClient) OpenDirectoryDialog(dialogOptions runtime.OpenDialogOptions, callbackID string) { - wc.logger.Info("Not implemented in server build") -} - -func (wc *WebClient) SaveDialog(dialogOptions runtime.SaveDialogOptions, callbackID string) { - wc.logger.Info("Not implemented in server build") -} - -func (wc *WebClient) WindowShow() { - wc.logger.Info("Not implemented in server build") -} - -func (wc *WebClient) WindowHide() { - wc.logger.Info("Not implemented in server build") -} - -func (wc *WebClient) WindowCenter() { - wc.logger.Info("Not implemented in server build") -} - -func (wc *WebClient) WindowMaximise() { - wc.logger.Info("Not implemented in server build") -} - -func (wc *WebClient) WindowUnmaximise() { - wc.logger.Info("Not implemented in server build") -} - -func (wc *WebClient) WindowMinimise() { - wc.logger.Info("Not implemented in server build") -} - -func (wc *WebClient) WindowUnminimise() { - wc.logger.Info("Not implemented in server build") -} - -func (wc *WebClient) WindowPosition(x int, y int) { - wc.logger.Info("Not implemented in server build") -} - -func (wc *WebClient) WindowSize(width int, height int) { - wc.logger.Info("Not implemented in server build") -} - -func (wc *WebClient) DarkModeEnabled(callbackID string) { - wc.logger.Info("Not implemented in server build") -} - -func (wc *WebClient) UpdateMenu(menu *menu.Menu) { - wc.logger.Info("Not implemented in server build") -} - -func (wc *WebClient) UpdateTray(menu *menu.Menu) { - wc.logger.Info("Not implemented in server build") -} - -func (wc *WebClient) UpdateTrayLabel(label string) { - wc.logger.Info("Not implemented in server build") -} - -func (wc *WebClient) UpdateTrayIcon(name string) { - wc.logger.Info("Not implemented in server build") -} - -// Quit terminates the webclient session -func (wc *WebClient) Quit() { - wc.running = false -} - -// NotifyEvent sends the event -func (wc *WebClient) NotifyEvent(message string) { - wc.SendMessage("E" + message) -} - -// CallResult sends the result of the Go function call back to the -// originator in the frontend -func (wc *WebClient) CallResult(message string) { - wc.SendMessage("R" + message) -} - -// WindowSetTitle is a noop in the webclient -func (wc *WebClient) WindowSetTitle(title string) {} - -// WindowFullscreen is a noop in the webclient -func (wc *WebClient) WindowFullscreen() {} - -// WindowUnfullscreen is a noop in the webclient -func (wc *WebClient) WindowUnfullscreen() {} - -// WindowSetColour is a noop in the webclient -func (wc *WebClient) WindowSetColour(colour int) { -} - -// Run processes messages from the remote webclient -func (wc *WebClient) Run(w *WebServer) { - dispatcher := w.dispatcher.RegisterClient(wc) - defer w.dispatcher.RemoveClient(dispatcher) - defer w.unregisterClient(wc.identifier) - - for wc.running { - var v interface{} - - ctx, cancel := context.WithCancel(context.Background()) - defer cancel() - if err := wsjson.Read(ctx, wc.conn, &v); err != nil { - if ws.CloseStatus(err) == ws.StatusNormalClosure || ws.CloseStatus(err) == ws.StatusGoingAway { - break - } - if ws.CloseStatus(err) != -1 { - w.logger.Debug("Connection error: %s - %s", wc.identifier, err) - break - } - - if !strings.Contains(err.Error(), "status = Status") { - w.logger.Debug("Error encountered on socket: %v", err) - break - } - } - dispatcher.DispatchMessage(v.(string)) - } - - err := wc.conn.Close(ws.StatusNormalClosure, "Goodbye") - if err != nil { - w.logger.Error("Error encountered on socket: %v", err) - return - } - w.logger.Debug("Connection closed: %v", wc.identifier) -} - -// SendMessage converts the string to a []byte and passes it to -// the connection's Writer to send to the remote client -// The Writer itself prevents multiple users at the same time. -func (wc *WebClient) SendMessage(message string) { - wc.logger.Debug("WebClient.SendMessage() - %s", message) - ctx, cancel := context.WithCancel(context.Background()) - defer cancel() - err := wc.conn.Write(ctx, ws.MessageText, []byte(message)) - if err != nil { - wc.logger.Error("Error encountered writing to webclient: %v", err) - } -} - -// unregisterClient is called automatically by a WebClient session during termination -// so that it's registration can be removed -func (w *WebServer) unregisterClient(identifier string) { - w.logger.Debug("Removing WebClient : %v", identifier) - w.lock.Lock() - delete(w.connections, identifier) - w.lock.Unlock() -} - -func (w *WebServer) websocketConnection(resp http.ResponseWriter, req *http.Request) { - conn, err := ws.Accept(resp, req, nil) - if err != nil { - w.logger.Debug("Failed to upgrade websocket connection") - return - } - wc := &WebClient{ - conn: conn, - identifier: req.RemoteAddr, - logger: w.logger, - running: true, - } - w.lock.Lock() - w.connections[wc.identifier] = wc - w.lock.Unlock() - - w.logger.Debug("Connection from: %v", wc.identifier) - - go wc.Run(w) - -} diff --git a/v2/pkg/commands/build/base.go b/v2/pkg/commands/build/base.go index 6c5b09ff..bd85e1c3 100644 --- a/v2/pkg/commands/build/base.go +++ b/v2/pkg/commands/build/base.go @@ -18,9 +18,7 @@ import ( "github.com/pkg/errors" "github.com/leaanthony/slicer" - "github.com/wailsapp/wails/v2/internal/assetdb" "github.com/wailsapp/wails/v2/internal/fs" - "github.com/wailsapp/wails/v2/internal/html" "github.com/wailsapp/wails/v2/internal/project" "github.com/wailsapp/wails/v2/internal/shell" "github.com/wailsapp/wails/v2/pkg/clilogger" @@ -65,49 +63,6 @@ func (b *BaseBuilder) fileExists(path string) bool { return true } -// buildCustomAssets will iterate through the projects static directory and add all files -// to the application wide asset database. -func (b *BaseBuilder) buildCustomAssets(projectData *project.Project) error { - - // Add trailing slash to Asset directory - customAssetsDir := filepath.Join(projectData.Path, "assets", "custom") + "/" - if !b.fileExists(customAssetsDir) { - err := fs.MkDirs(customAssetsDir) - if err != nil { - return err - } - } - - assets := assetdb.NewAssetDB() - err := filepath.Walk(customAssetsDir, func(path string, info os.FileInfo, err error) error { - if err != nil { - return err - } - normalisedPath := filepath.ToSlash(path) - localPath := strings.TrimPrefix(normalisedPath, customAssetsDir) - if len(localPath) == 0 { - return nil - } - if data, err := os.ReadFile(filepath.Join(customAssetsDir, localPath)); err == nil { - assets.AddAsset(localPath, data) - } - - return nil - }) - if err != nil { - return err - } - - // Write assetdb out to root directory - assetsDbFilename := fs.RelativePath("../../../assetsdb.go") - b.addFileToDelete(assetsDbFilename) - err = os.WriteFile(assetsDbFilename, []byte(assets.Serialize("assets", "wails")), 0644) - if err != nil { - return err - } - return nil -} - func (b *BaseBuilder) convertFileToIntegerString(filename string) (string, error) { rawData, err := os.ReadFile(filename) if err != nil { @@ -601,14 +556,6 @@ func (b *BaseBuilder) BuildFrontend(outputLogger *clilogger.CLILogger) error { return nil } -// ExtractAssets gets the assets from the index.html file -func (b *BaseBuilder) ExtractAssets() (*html.AssetBundle, error) { - - // Read in html - //return html.NewAssetBundle(b.projectData.HTML) - return nil, nil -} - func upsertEnv(env []string, key string, update func(v string) string) []string { newEnv := make([]string, len(env), len(env)+1) found := false diff --git a/v2/pkg/commands/build/build.go b/v2/pkg/commands/build/build.go index e256170f..797989bf 100644 --- a/v2/pkg/commands/build/build.go +++ b/v2/pkg/commands/build/build.go @@ -93,10 +93,6 @@ func Build(options *Options) (string, error) { switch projectData.OutputType { case "desktop": builder = newDesktopBuilder(options) - case "hybrid": - builder = newHybridBuilder(options) - case "server": - builder = newServerBuilder(options) case "dev": builder = newDesktopBuilder(options) default: @@ -208,12 +204,6 @@ func Build(options *Options) (string, error) { outputLogger.Println("Done.") } - // Post compilation tasks - err = builder.PostCompilation(options) - if err != nil { - return "", err - } - compileBinary := options.CompiledBinary hookArgs := map[string]string{ "${platform}": options.Platform + "/" + options.Arch, diff --git a/v2/pkg/commands/build/builder.go b/v2/pkg/commands/build/builder.go index 81dd5d30..725e9871 100644 --- a/v2/pkg/commands/build/builder.go +++ b/v2/pkg/commands/build/builder.go @@ -10,9 +10,7 @@ type Builder interface { SetProjectData(projectData *project.Project) BuildAssets(*Options) error BuildFrontend(*clilogger.CLILogger) error - BuildRuntime(*Options) error CompileProject(*Options) error OutputFilename(*Options) string - PostCompilation(*Options) error CleanUp() } diff --git a/v2/pkg/commands/build/desktop.go b/v2/pkg/commands/build/desktop.go index f779f6a4..218866bf 100644 --- a/v2/pkg/commands/build/desktop.go +++ b/v2/pkg/commands/build/desktop.go @@ -1,11 +1,7 @@ package build import ( - "fmt" - "os" - "github.com/wailsapp/wails/v2/internal/fs" - "github.com/wailsapp/wails/v2/internal/html" "github.com/wailsapp/wails/v2/pkg/buildassets" ) @@ -32,129 +28,5 @@ func (d *DesktopBuilder) BuildAssets(options *Options) error { } } - // We only build assets for cgo builds - //userTags := slicer.String(options.UserTags) - //if userTags.Contains("cgo") { - // // Get a list of assets from the HTML - // assets, err := d.BaseBuilder.ExtractAssets() - // if err != nil { - // return err - // } - // - // // Build base assets (HTML/JS/CSS/etc) - // err = d.BuildBaseAssets(assets, options) - // if err != nil { - // return err - // } - //} - - return nil -} - -// BuildBaseAssets builds the assets for the desktop application -func (d *DesktopBuilder) BuildBaseAssets(assets *html.AssetBundle, options *Options) error { - var err error - - outputLogger := options.Logger - outputLogger.Print("Building assets: ") - - // Get target asset directory - assetDir, err := fs.RelativeToCwd("build") - if err != nil { - return err - } - - // Make dir if it doesn't exist - if !fs.DirExists(assetDir) { - err := fs.Mkdir(assetDir) - if err != nil { - return err - } - } - - // Dump assets as C - assetsFile, err := assets.WriteToCFile(assetDir) - if err != nil { - return err - } - d.addFileToDelete(assetsFile) - - // Process Icon - err = d.processApplicationIcon(assetDir, options) - if err != nil { - return err - } - - // Process Tray Icons - err = d.processTrayIcons(assetDir, options) - if err != nil { - return err - } - - // Process Dialog Icons - err = d.processDialogIcons(assetDir, options) - if err != nil { - return err - } - - outputLogger.Println("Done.") - - return nil -} - -// processApplicationIcon will copy a default icon if one doesn't exist, then, if -// needed, will compile the icon -func (d *DesktopBuilder) processApplicationIcon(assetDir string, options *Options) error { - iconFile, err := buildassets.ReadFile(options.ProjectData, "appicon.png") - if err != nil { - return err - } - - // Compile Icon - return d.compileIcon(assetDir, iconFile) -} - -// BuildRuntime builds the Wails javascript runtime and then converts it into a C file -func (d *DesktopBuilder) BuildRuntime(options *Options) error { - - outputLogger := options.Logger - - sourceDir := fs.RelativePath("../../../internal/runtime/js") - - if err := d.NpmInstall(sourceDir, options.Verbosity == VERBOSE); err != nil { - return err - } - - outputLogger.Print("Embedding Runtime: ") - envvars := []string{"WAILSPLATFORM=" + options.Platform} - if err := d.NpmRunWithEnvironment(sourceDir, "build:desktop", false, envvars); err != nil { - return err - } - - wailsJS := fs.RelativePath("../../../internal/runtime/assets/desktop.js") - runtimeData, err := os.ReadFile(wailsJS) - if err != nil { - return err - } - outputLogger.Println("done.") - - // Convert to C structure - runtimeC := ` -// runtime.c (c) 2019-Present Lea Anthony. -// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL -// This file was auto-generated. DO NOT MODIFY. -const unsigned char runtime[]={` - for _, b := range runtimeData { - runtimeC += fmt.Sprintf("0x%x, ", b) - } - runtimeC += "0x00};" - - // Save file - outputFile := fs.RelativePath("../../../internal/ffenestri/runtime.c") - - if err := os.WriteFile(outputFile, []byte(runtimeC), 0600); err != nil { - return err - } - return nil } diff --git a/v2/pkg/commands/build/desktop_darwin.go b/v2/pkg/commands/build/desktop_darwin.go deleted file mode 100644 index 7c045783..00000000 --- a/v2/pkg/commands/build/desktop_darwin.go +++ /dev/null @@ -1,212 +0,0 @@ -//go:build darwin -// +build darwin - -package build - -import ( - "fmt" - "log" - "os" - "path/filepath" - "strconv" - "strings" - - "github.com/leaanthony/slicer" - "github.com/wailsapp/wails/v2/internal/fs" -) - -func (d *DesktopBuilder) convertToHexLiteral(bytes []byte) string { - result := "" - for _, b := range bytes { - result += fmt.Sprintf("0x%x, ", b) - } - return result -} - -// compileIcon will compile the icon found at /icon.png into the application -func (d *DesktopBuilder) compileIcon(assetDir string, iconFile []byte) error { - return nil -} - -// We will compile all tray icons found at /assets/trayicons/*.png into the application -func (d *DesktopBuilder) processTrayIcons(assetDir string, options *Options) error { - - var err error - - // Get all the tray icon filenames - trayIconDirectory := filepath.Join(options.ProjectData.BuildDir, "tray") - - // If the directory doesn't exist, create it - if !fs.DirExists(trayIconDirectory) { - err = fs.MkDirs(trayIconDirectory) - if err != nil { - return err - } - } - - var trayIconFilenames []string - trayIconFilenames, err = filepath.Glob(trayIconDirectory + "/*.png") - if err != nil { - log.Fatal(err) - return err - } - - // Setup target - targetFilename := "trayicons" - targetFile := filepath.Join(assetDir, targetFilename+".h") - d.addFileToDelete(targetFile) - - var dataBytes []byte - - // Use a strings builder - var cdata strings.Builder - - // Write header - header := `// trayicons.h -// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL. -// This file was auto-generated. DO NOT MODIFY. - -` - cdata.WriteString(header) - - var variableList slicer.StringSlicer - - // Loop over icons - for count, filename := range trayIconFilenames { - - // Load the tray icon - dataBytes, err = os.ReadFile(filename) - if err != nil { - return err - } - - iconname := strings.TrimSuffix(filepath.Base(filename), ".png") - trayIconName := fmt.Sprintf("trayIcon%dName", count) - variableList.Add(trayIconName) - cdata.WriteString(fmt.Sprintf("const unsigned char %s[] = { %s0x00 };\n", trayIconName, d.convertToHexLiteral([]byte(iconname)))) - - trayIconLength := fmt.Sprintf("trayIcon%dLength", count) - variableList.Add(trayIconLength) - lengthAsString := strconv.Itoa(len(dataBytes)) - cdata.WriteString(fmt.Sprintf("const unsigned char %s[] = { %s0x00 };\n", trayIconLength, d.convertToHexLiteral([]byte(lengthAsString)))) - - trayIconData := fmt.Sprintf("trayIcon%dData", count) - variableList.Add(trayIconData) - cdata.WriteString(fmt.Sprintf("const unsigned char %s[] = { ", trayIconData)) - - // Convert each byte to hex - for _, b := range dataBytes { - cdata.WriteString(fmt.Sprintf("0x%x, ", b)) - } - - cdata.WriteString("0x00 };\n") - } - - // Write out main trayIcons data - cdata.WriteString("const unsigned char *trayIcons[] = { ") - cdata.WriteString(variableList.Join(", ")) - if len(trayIconFilenames) > 0 { - cdata.WriteString(", ") - } - cdata.WriteString("0x00 };\n") - - err = os.WriteFile(targetFile, []byte(cdata.String()), 0600) - if err != nil { - return err - } - return nil -} - -// PostCompilation is called after the compilation step, if successful -func (d *DesktopBuilder) PostCompilation(options *Options) error { - return nil -} - -// We will compile all dialog icons found at /icons/dialog/*.png into the application -func (d *DesktopBuilder) processDialogIcons(assetDir string, options *Options) error { - - var err error - - // Get all the dialog icon filenames - dialogIconDirectory := filepath.Join(options.ProjectData.BuildDir, "dialog") - var dialogIconFilenames []string - - // If the directory does not exist, create it - if !fs.DirExists(dialogIconDirectory) { - err = fs.MkDirs(dialogIconDirectory) - if err != nil { - return err - } - } - - dialogIconFilenames, err = filepath.Glob(dialogIconDirectory + "/*.png") - if err != nil { - log.Fatal(err) - return err - } - - // Setup target - targetFilename := "userdialogicons" - targetFile := filepath.Join(assetDir, targetFilename+".h") - d.addFileToDelete(targetFile) - - var dataBytes []byte - - // Use a strings builder - var cdata strings.Builder - - // Write header - header := `// userdialogicons.h -// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL. -// This file was auto-generated. DO NOT MODIFY. - -` - cdata.WriteString(header) - - var variableList slicer.StringSlicer - - // Loop over icons - for count, filename := range dialogIconFilenames { - - // Load the tray icon - dataBytes, err = os.ReadFile(filename) - if err != nil { - return err - } - - iconname := strings.TrimSuffix(filepath.Base(filename), ".png") - dialogIconName := fmt.Sprintf("userDialogIcon%dName", count) - variableList.Add(dialogIconName) - cdata.WriteString(fmt.Sprintf("const unsigned char %s[] = { %s0x00 };\n", dialogIconName, d.convertToHexLiteral([]byte(iconname)))) - - dialogIconLength := fmt.Sprintf("userDialogIcon%dLength", count) - variableList.Add(dialogIconLength) - lengthAsString := strconv.Itoa(len(dataBytes)) - cdata.WriteString(fmt.Sprintf("const unsigned char %s[] = { %s0x00 };\n", dialogIconLength, d.convertToHexLiteral([]byte(lengthAsString)))) - - dialogIconData := fmt.Sprintf("userDialogIcon%dData", count) - variableList.Add(dialogIconData) - cdata.WriteString(fmt.Sprintf("const unsigned char %s[] = { ", dialogIconData)) - - // Convert each byte to hex - for _, b := range dataBytes { - cdata.WriteString(fmt.Sprintf("0x%x, ", b)) - } - - cdata.WriteString("0x00 };\n") - } - - // Write out main dialogIcons data - cdata.WriteString("const unsigned char *userDialogIcons[] = { ") - cdata.WriteString(variableList.Join(", ")) - if len(dialogIconFilenames) > 0 { - cdata.WriteString(", ") - } - cdata.WriteString("0x00 };\n") - - err = os.WriteFile(targetFile, []byte(cdata.String()), 0600) - if err != nil { - return err - } - return nil -} diff --git a/v2/pkg/commands/build/desktop_linux.go b/v2/pkg/commands/build/desktop_linux.go deleted file mode 100644 index bde635b1..00000000 --- a/v2/pkg/commands/build/desktop_linux.go +++ /dev/null @@ -1,232 +0,0 @@ -//go:build linux -// +build linux - -package build - -// compileIcon will compile the icon found at /icon.png into the application -func (d *DesktopBuilder) compileIcon(assetDir string, iconFile []byte) error { - // - //// Load icon into a databuffer - //targetFilename := "icon" - //targetFile := filepath.Join(assetDir, targetFilename+".h") - // - //d.addFileToDelete(targetFile) - // - //// Create a new XPM encoder - //enc := xpm.NewEncoder(targetFilename) - // - //// Open the PNG file - //f, err := os.Open(iconFile) - //if err != nil { - // return err - //} - //m, err := png.Decode(f) - //if err != nil { - // return err - //} - //err = f.Close() - //if err != nil { - // return err - //} - // - //var buf strings.Builder - // - //// Generate and output the XPM data - //err = enc.Encode(&buf, m) - //if err != nil { - // return err - //} - // - //// Massage the output so we can extern reference it - //output := buf.String() - //output = strings.Replace(output, "static char", "const char", 1) - // - //// save icon.c - //err = os.WriteFile(targetFile, []byte(output), 0755) - // - //return err - return nil -} - -// We will compile all tray icons found at /assets/trayicons/*.png into the application -func (d *DesktopBuilder) processTrayIcons(assetDir string, options *Options) error { - // - // var err error - // - // // Get all the tray icon filenames - // trayIconDirectory := filepath.Join(options.ProjectData.BuildDir, "tray") - // - // // If the directory doesn't exist, create it - // if !fs.DirExists(trayIconDirectory) { - // err = fs.MkDirs(trayIconDirectory) - // if err != nil { - // return err - // } - // } - // - // var trayIconFilenames []string - // trayIconFilenames, err = filepath.Glob(trayIconDirectory + "/*.png") - // if err != nil { - // log.Fatal(err) - // return err - // } - // - // // Setup target - // targetFilename := "trayicons" - // targetFile := filepath.Join(assetDir, targetFilename+".h") - // d.addFileToDelete(targetFile) - // - // var dataBytes []byte - // - // // Use a strings builder - // var cdata strings.Builder - // - // // Write header - // header := `// trayicons.h - //// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL. - //// This file was auto-generated. DO NOT MODIFY. - // - //` - // cdata.WriteString(header) - // - // var variableList slicer.StringSlicer - // - // // Loop over icons - // for count, filename := range trayIconFilenames { - // - // // Load the tray icon - // dataBytes, err = ioutil.ReadFile(filename) - // if err != nil { - // return err - // } - // - // iconname := strings.TrimSuffix(filepath.Base(filename), ".png") - // trayIconName := fmt.Sprintf("trayIcon%dName", count) - // variableList.Add(trayIconName) - // cdata.WriteString(fmt.Sprintf("const unsigned char %s[] = { %s0x00 };\n", trayIconName, d.convertToHexLiteral([]byte(iconname)))) - // - // trayIconLength := fmt.Sprintf("trayIcon%dLength", count) - // variableList.Add(trayIconLength) - // lengthAsString := strconv.Itoa(len(dataBytes)) - // cdata.WriteString(fmt.Sprintf("const unsigned char %s[] = { %s0x00 };\n", trayIconLength, d.convertToHexLiteral([]byte(lengthAsString)))) - // - // trayIconData := fmt.Sprintf("trayIcon%dData", count) - // variableList.Add(trayIconData) - // cdata.WriteString(fmt.Sprintf("const unsigned char %s[] = { ", trayIconData)) - // - // // Convert each byte to hex - // for _, b := range dataBytes { - // cdata.WriteString(fmt.Sprintf("0x%x, ", b)) - // } - // - // cdata.WriteString("0x00 };\n") - // } - // - // // Write out main trayIcons data - // cdata.WriteString("const unsigned char *trayIcons[] = { ") - // cdata.WriteString(variableList.Join(", ")) - // if len(trayIconFilenames) > 0 { - // cdata.WriteString(", ") - // } - // cdata.WriteString("0x00 };\n") - // - // err = ioutil.WriteFile(targetFile, []byte(cdata.String()), 0600) - // if err != nil { - // return err - // } - return nil -} - -// We will compile all dialog icons found at /icons/dialog/*.png into the application -func (d *DesktopBuilder) processDialogIcons(assetDir string, options *Options) error { - - // var err error - // - // // Get all the dialog icon filenames - // dialogIconDirectory := filepath.Join(options.ProjectData.BuildDir, "dialog") - // var dialogIconFilenames []string - // - // // If the directory does not exist, create it - // if !fs.DirExists(dialogIconDirectory) { - // err = fs.MkDirs(dialogIconDirectory) - // if err != nil { - // return err - // } - // } - // - // dialogIconFilenames, err = filepath.Glob(dialogIconDirectory + "/*.png") - // if err != nil { - // log.Fatal(err) - // return err - // } - // - // // Setup target - // targetFilename := "userdialogicons" - // targetFile := filepath.Join(assetDir, targetFilename+".h") - // d.addFileToDelete(targetFile) - // - // var dataBytes []byte - // - // // Use a strings builder - // var cdata strings.Builder - // - // // Write header - // header := `// userdialogicons.h - //// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL. - //// This file was auto-generated. DO NOT MODIFY. - // - //` - // cdata.WriteString(header) - // - // var variableList slicer.StringSlicer - // - // // Loop over icons - // for count, filename := range dialogIconFilenames { - // - // // Load the tray icon - // dataBytes, err = ioutil.ReadFile(filename) - // if err != nil { - // return err - // } - // - // iconname := strings.TrimSuffix(filepath.Base(filename), ".png") - // dialogIconName := fmt.Sprintf("userDialogIcon%dName", count) - // variableList.Add(dialogIconName) - // cdata.WriteString(fmt.Sprintf("const unsigned char %s[] = { %s0x00 };\n", dialogIconName, d.convertToHexLiteral([]byte(iconname)))) - // - // dialogIconLength := fmt.Sprintf("userDialogIcon%dLength", count) - // variableList.Add(dialogIconLength) - // lengthAsString := strconv.Itoa(len(dataBytes)) - // cdata.WriteString(fmt.Sprintf("const unsigned char %s[] = { %s0x00 };\n", dialogIconLength, d.convertToHexLiteral([]byte(lengthAsString)))) - // - // dialogIconData := fmt.Sprintf("userDialogIcon%dData", count) - // variableList.Add(dialogIconData) - // cdata.WriteString(fmt.Sprintf("const unsigned char %s[] = { ", dialogIconData)) - // - // // Convert each byte to hex - // for _, b := range dataBytes { - // cdata.WriteString(fmt.Sprintf("0x%x, ", b)) - // } - // - // cdata.WriteString("0x00 };\n") - // } - // - // // Write out main dialogIcons data - // cdata.WriteString("const unsigned char *userDialogIcons[] = { ") - // cdata.WriteString(variableList.Join(", ")) - // if len(dialogIconFilenames) > 0 { - // cdata.WriteString(", ") - // } - // cdata.WriteString("0x00 };\n") - // - // err = ioutil.WriteFile(targetFile, []byte(cdata.String()), 0600) - // if err != nil { - // return err - // } - return nil -} - -// PostCompilation is called after the compilation step, if successful -func (d *DesktopBuilder) PostCompilation(options *Options) error { - return nil -} diff --git a/v2/pkg/commands/build/desktop_windows.go b/v2/pkg/commands/build/desktop_windows.go deleted file mode 100644 index 30f5e91d..00000000 --- a/v2/pkg/commands/build/desktop_windows.go +++ /dev/null @@ -1,200 +0,0 @@ -//go:build windows -// +build windows - -package build - -// PostCompilation is called after the compilation step, if successful -func (d *DesktopBuilder) PostCompilation(options *Options) error { - // Dump the DLLs - //userTags := slicer.String(options.UserTags) - //if userTags.Contains("cgo") { - // err := os.WriteFile(filepath.Join(options.BuildDirectory, "WebView2Loader.dll"), x64.WebView2Loader, 0755) - // if err != nil { - // return err - // } - //} - return nil -} - -// We will compile all tray icons found at /assets/trayicons/*.png into the application -func (d *DesktopBuilder) processTrayIcons(assetDir string, options *Options) error { - // - // var err error - // - // // Get all the tray icon filenames - // trayIconDirectory := filepath.Join(options.ProjectData.BuildDir, "tray") - // - // // If the directory doesn't exist, create it - // if !fs.DirExists(trayIconDirectory) { - // err = fs.MkDirs(trayIconDirectory) - // if err != nil { - // return err - // } - // } - // - // var trayIconFilenames []string - // trayIconFilenames, err = filepath.Glob(trayIconDirectory + "/*.png") - // if err != nil { - // log.Fatal(err) - // return err - // } - // - // // Setup target - // targetFilename := "trayicons" - // targetFile := filepath.Join(assetDir, targetFilename+".h") - // d.addFileToDelete(targetFile) - // - // var dataBytes []byte - // - // // Use a strings builder - // var cdata strings.Builder - // - // // Write header - // header := `// trayicons.h - //// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL. - //// This file was auto-generated. DO NOT MODIFY. - // - //` - // cdata.WriteString(header) - // - // var variableList slicer.StringSlicer - // - // // Loop over icons - // for count, filename := range trayIconFilenames { - // - // // Load the tray icon - // dataBytes, err = ioutil.ReadFile(filename) - // if err != nil { - // return err - // } - // - // iconname := strings.TrimSuffix(filepath.Base(filename), ".png") - // trayIconName := fmt.Sprintf("trayIcon%dName", count) - // variableList.Add(trayIconName) - // cdata.WriteString(fmt.Sprintf("const unsigned char %s[] = { %s0x00 };\n", trayIconName, d.convertToHexLiteral([]byte(iconname)))) - // - // trayIconLength := fmt.Sprintf("trayIcon%dLength", count) - // variableList.Add(trayIconLength) - // lengthAsString := strconv.Itoa(len(dataBytes)) - // cdata.WriteString(fmt.Sprintf("const unsigned char %s[] = { %s0x00 };\n", trayIconLength, d.convertToHexLiteral([]byte(lengthAsString)))) - // - // trayIconData := fmt.Sprintf("trayIcon%dData", count) - // variableList.Add(trayIconData) - // cdata.WriteString(fmt.Sprintf("const unsigned char %s[] = { ", trayIconData)) - // - // // Convert each byte to hex - // for _, b := range dataBytes { - // cdata.WriteString(fmt.Sprintf("0x%x, ", b)) - // } - // - // cdata.WriteString("0x00 };\n") - // } - // - // // Write out main trayIcons data - // cdata.WriteString("const unsigned char *trayIcons[] = { ") - // cdata.WriteString(variableList.Join(", ")) - // if len(trayIconFilenames) > 0 { - // cdata.WriteString(", ") - // } - // cdata.WriteString("0x00 };\n") - // - // err = ioutil.WriteFile(targetFile, []byte(cdata.String()), 0600) - // if err != nil { - // return err - // } - return nil -} - -// compileIcon will compile the icon found at /icon.png into the application -func (d *DesktopBuilder) compileIcon(assetDir string, iconFile []byte) error { - return nil -} - -// We will compile all dialog icons found at /icons/dialog/*.png into the application -func (d *DesktopBuilder) processDialogIcons(assetDir string, options *Options) error { - - // var err error - // - // // Get all the dialog icon filenames - // dialogIconDirectory := filepath.Join(options.ProjectData.BuildDir, "dialog") - // var dialogIconFilenames []string - // - // // If the directory does not exist, create it - // if !fs.DirExists(dialogIconDirectory) { - // err = fs.MkDirs(dialogIconDirectory) - // if err != nil { - // return err - // } - // } - // - // dialogIconFilenames, err = filepath.Glob(dialogIconDirectory + "/*.png") - // if err != nil { - // log.Fatal(err) - // return err - // } - // - // // Setup target - // targetFilename := "userdialogicons" - // targetFile := filepath.Join(assetDir, targetFilename+".h") - // d.addFileToDelete(targetFile) - // - // var dataBytes []byte - // - // // Use a strings builder - // var cdata strings.Builder - // - // // Write header - // header := `// userdialogicons.h - //// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL. - //// This file was auto-generated. DO NOT MODIFY. - // - //` - // cdata.WriteString(header) - // - // var variableList slicer.StringSlicer - // - // // Loop over icons - // for count, filename := range dialogIconFilenames { - // - // // Load the tray icon - // dataBytes, err = ioutil.ReadFile(filename) - // if err != nil { - // return err - // } - // - // iconname := strings.TrimSuffix(filepath.Base(filename), ".png") - // dialogIconName := fmt.Sprintf("userDialogIcon%dName", count) - // variableList.Add(dialogIconName) - // cdata.WriteString(fmt.Sprintf("const unsigned char %s[] = { %s0x00 };\n", dialogIconName, d.convertToHexLiteral([]byte(iconname)))) - // - // dialogIconLength := fmt.Sprintf("userDialogIcon%dLength", count) - // variableList.Add(dialogIconLength) - // lengthAsString := strconv.Itoa(len(dataBytes)) - // cdata.WriteString(fmt.Sprintf("const unsigned char %s[] = { %s0x00 };\n", dialogIconLength, d.convertToHexLiteral([]byte(lengthAsString)))) - // - // dialogIconData := fmt.Sprintf("userDialogIcon%dData", count) - // variableList.Add(dialogIconData) - // cdata.WriteString(fmt.Sprintf("const unsigned char %s[] = { ", dialogIconData)) - // - // // Convert each byte to hex - // for _, b := range dataBytes { - // cdata.WriteString(fmt.Sprintf("0x%x, ", b)) - // } - // - // cdata.WriteString("0x00 };\n") - // } - // - // // Write out main dialogIcons data - // cdata.WriteString("const unsigned char *userDialogIcons[] = { ") - // cdata.WriteString(variableList.Join(", ")) - // if len(dialogIconFilenames) > 0 { - // cdata.WriteString(", ") - // } - // cdata.WriteString("0x00 };\n") - // - // err = ioutil.WriteFile(targetFile, []byte(cdata.String()), 0600) - // if err != nil { - // return err - // } - return nil -} diff --git a/v2/pkg/commands/build/hybrid.go b/v2/pkg/commands/build/hybrid.go deleted file mode 100644 index d21c78e6..00000000 --- a/v2/pkg/commands/build/hybrid.go +++ /dev/null @@ -1,95 +0,0 @@ -package build - -import ( - "github.com/wailsapp/wails/v2/internal/project" - "github.com/wailsapp/wails/v2/pkg/clilogger" -) - -// HybridBuilder builds applications as a server -type HybridBuilder struct { - *BaseBuilder - desktop *DesktopBuilder - server *ServerBuilder -} - -func newHybridBuilder(options *Options) Builder { - result := &HybridBuilder{ - BaseBuilder: NewBaseBuilder(options), - desktop: newDesktopBuilder(options), - server: newServerBuilder(options), - } - return result -} - -// BuildAssets builds the assets for the desktop application -func (b *HybridBuilder) BuildAssets(options *Options) error { - var err error - - // Build base assets (HTML/JS/CSS/etc) - err = b.BuildBaseAssets(options) - if err != nil { - return err - } - return nil -} - -// BuildFrontend builds the assets for the desktop application -func (b *HybridBuilder) BuildFrontend(_ *clilogger.CLILogger) error { - panic("To be implemented") - return nil -} - -// BuildAssets builds the assets for the desktop application -func (b *HybridBuilder) BuildBaseAssets(options *Options) error { - - assets, err := b.BaseBuilder.ExtractAssets() - if err != nil { - return err - } - - err = b.desktop.BuildBaseAssets(assets, options) - if err != nil { - return err - } - - err = b.server.BuildBaseAssets(assets) - if err != nil { - return err - } - - return nil -} - -func (b *HybridBuilder) BuildRuntime(options *Options) error { - err := b.desktop.BuildRuntime(options) - if err != nil { - return err - } - - err = b.server.BuildRuntime(options) - if err != nil { - return err - } - - return nil -} - -func (b *HybridBuilder) SetProjectData(projectData *project.Project) { - b.BaseBuilder.SetProjectData(projectData) - b.desktop.SetProjectData(projectData) - b.server.SetProjectData(projectData) -} - -func (b *HybridBuilder) CompileProject(options *Options) error { - return b.BaseBuilder.CompileProject(options) -} - -func (b *HybridBuilder) CleanUp() { - b.desktop.CleanUp() - b.server.CleanUp() -} - -// PostCompilation is called after the compilation step, if successful -func (s *HybridBuilder) PostCompilation(_ *Options) error { - return nil -} diff --git a/v2/pkg/commands/build/internal/packager/icons/dialog/README.md b/v2/pkg/commands/build/internal/packager/icons/dialog/README.md deleted file mode 100644 index b9ddc278..00000000 --- a/v2/pkg/commands/build/internal/packager/icons/dialog/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Default Dialog Icons - -This directory contains the default dialog icons. These are pre-compiled into a single C file (`defaultDialogIcons.c`) which resides in the `ffenestri` directory. If these icons are ever updated, then there is a need to run: `go run build.go` in this directory. This will generate a new `defaultDialogIcons.c` file in the `ffenestri` directory. \ No newline at end of file diff --git a/v2/pkg/commands/build/internal/packager/icons/dialog/build.go b/v2/pkg/commands/build/internal/packager/icons/dialog/build.go deleted file mode 100644 index 344f30c8..00000000 --- a/v2/pkg/commands/build/internal/packager/icons/dialog/build.go +++ /dev/null @@ -1,100 +0,0 @@ -package main - -import ( - "fmt" - "log" - "os" - "path/filepath" - "strconv" - "strings" - - "github.com/leaanthony/slicer" -) - -func convertToHexLiteral(bytes []byte) string { - result := "" - for _, b := range bytes { - result += fmt.Sprintf("0x%x, ", b) - } - return result -} - -func main() { - dialogIconFilenames, err := filepath.Glob("*.png") - if err != nil { - log.Fatal(err) - } - - // Build icons for Mac - err = buildMacIcons(dialogIconFilenames) - if err != nil { - log.Fatal(err) - } -} - -func buildMacIcons(dialogIconFilenames []string) error { - - // Setup target - targetFile := "../../../../../../../internal/ffenestri/defaultdialogicons_darwin.c" - - var dataBytes []byte - var err error - - // Use a strings builder - var cdata strings.Builder - - // Write header - header := `// defaultdialogicons_darwin.c -// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL. -// This file was auto-generated. DO NOT MODIFY. - -` - cdata.WriteString(header) - - var variableList slicer.StringSlicer - - // Loop over icons - for count, filename := range dialogIconFilenames { - - // Load the tray icon - dataBytes, err = os.ReadFile(filename) - if err != nil { - log.Fatal(err) - } - - iconname := strings.TrimSuffix(filepath.Base(filename), ".png") - dialogIconName := fmt.Sprintf("defaultDialogIcon%dName", count) - variableList.Add(dialogIconName) - cdata.WriteString(fmt.Sprintf("const unsigned char %s[] = { %s0x00 };\n", dialogIconName, convertToHexLiteral([]byte(iconname)))) - - dialogIconLength := fmt.Sprintf("defaultDialogIcon%dLength", count) - variableList.Add(dialogIconLength) - lengthAsString := strconv.Itoa(len(dataBytes)) - cdata.WriteString(fmt.Sprintf("const unsigned char %s[] = { %s0x00 };\n", dialogIconLength, convertToHexLiteral([]byte(lengthAsString)))) - - dialogIconData := fmt.Sprintf("defaultDialogIcon%dData", count) - variableList.Add(dialogIconData) - cdata.WriteString(fmt.Sprintf("const unsigned char %s[] = { ", dialogIconData)) - - // Convert each byte to hex - for _, b := range dataBytes { - cdata.WriteString(fmt.Sprintf("0x%x, ", b)) - } - - cdata.WriteString("0x00 };\n") - } - - // Write out main dialogIcons data - cdata.WriteString("const unsigned char *defaultDialogIcons[] = { ") - cdata.WriteString(variableList.Join(", ")) - if len(dialogIconFilenames) > 0 { - cdata.WriteString(", ") - } - cdata.WriteString("0x00 };\n") - - err = os.WriteFile(targetFile, []byte(cdata.String()), 0600) - if err != nil { - log.Fatal(err) - } - return nil -} diff --git a/v2/pkg/commands/build/internal/packager/icons/dialog/info-dark.png b/v2/pkg/commands/build/internal/packager/icons/dialog/info-dark.png deleted file mode 100644 index 9ff6655ee1e8521c643dd76100bab11a6c3f65e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 780 zcmeAS@N?(olHy`uVBq!ia0y~yU~m9o4rT@hhPm4t-!L#Rv;_EsxH2#>{2yqbaQoRs z1_lQ0k|4iehM#jbKKGtzCH+{AYhB=j8AdE=x!TFG5`xz*oH*pbUMA+TKtKHBht_f( z{@j+owhRnRJf1F&ArXh)hTojlWWXb;<2^CfL4fsp>YxArXD6Rp=)j%0?6~=7iAlH9 zc4kJ@Jl&ks?)Ix0Ad1qHjM|Vzs?w52_FIVyU$ddHy&vl%n`xld+JZ~VlO&RYBQV0$%Z<6X_Y?#{X{ujQ+( z_?bQ*xg$42HjC$=Q1!DlDo$C8gd&t~xlI%8jCv3wS!%d4K!3uWt0v#w1Ds1&-c99H zxhC{db$K7FD)(+1CSRopHm8FQLKf>!uMjDEapLE~?mf*q%Vd53hKc-)Y1mWoIy;r& zslW!6A_kkzJv|l-`pVZlWEk>Q?wzt=$WLwYkzr65PS@Z&(7Unm5aWl&L+(;s2i&Es zLM&%aSlHF~wIpfHWB$``+iY}hT%M-#YL%l)@!wXVb|ZN7aek~b!`uCEl| zJ^dl~re}%WYJ%dvUqi!dZ-&Kxzgll`rM~jR{B^t9=C4~{6H>>>?$y6l@PF`u1FAYq7j3_H$M$=uDn8nr{=)b|juYo;{%?o&Y*EZpfV=MQY&X|j#IHdrO5bIA+ypPb=pFV_n= zrynqtu(17_YV&lKPx1@C;tF<|YnFdEU*q|GdvT?C&+f`Qzt)=0D%Ek$`=}PSPTa_0 z!-eATJ)GL@d@PUKPJDm9=jiRv`xJ#AGi;e@zwf-+I)w*WH~Qtymp)DZWF^e+v4?Yg zveDZ2_9xEoY7h~B?bu}{cja;XnVDPOe|EKHm-@P1^pdPr>H6r&{hRoj979jBY6$hN zW@PF58((|pl*7z3tJ)@Lr*8PQ;V+-mp4(Ry+HUcFIOxFrZQ*S$zok`d8Ob42o;0W! z9+$Yl*qof?$>^i~v)%8{!;Y73dl}4{{S2aaawx}`d$0NLf7qngzfeCS!e4oTXTj&L z-}Ybk_xurYNvT+(;t-V3t}L)o=8t)FQwPWLEdgE)+)iQl*@ZX?LxUbX{Hs1MHZfDO z>o(VWH~u3xK1u87>IMsJI+p9Yh2b58TCR7;>`0lLUgsOQuRgl}NzV9{+oZXyJfYc4 zBE>(mneTSmDWB@P;*{uhKU!|O@EOi-*QSbRzc))5Y}w&|;Z&}>{=s+Ih2_m=OeQSr zFKCCG@G;MvxV3%W&Bct`i?14gITN{Pf18G{oLdcillsD$i{V=Bu83i$;pzRZ8b_%?j$k~~J|{P)ZzkEa_YItZ`&dD^Sf zf8j*lC6I>b1&SLVMT`@e1ZY??ewjsiAEl8;n$2~1E)SN!+Cl(D!|LSrM(W^HTv z4UTu`zFfyy&-ze4@khQyoxs6B9;PFKXQm5s2TT`?Kd$2td;HFX4GdQ&6nGzF3h_SX ztH~YUtGWHDj>FccHZwLbn9lf+ag6Co#<9bi+yRF*`=9F^=zX3Ouz?{zV1w&nrai8Q z)kL`yCZD=dqSKITl^U{%!A$G&wyeizU-_2(J$&=4-G&_<2b^5Ze9cWGdOLDbGQO^9 zTi6tnEf@7v;Pz4W=?^dF)>Q0`uCaHh`JdkKa4Um^lVIQNtByLoZ4pI>E9x42{#H#` z8QC6x~wQ&vr2HmwL2T{RcyGq;O_Uu2i|f%_{*tdQ4?l! zE_+^G+`0;x)RU@>rt{ysF3#NZ1xwdPorfP+*3R!vfE8C&W)t?LN`ZyRE P7#KWV{an^LB{Ts5m^Yzu diff --git a/v2/pkg/commands/build/internal/packager/icons/dialog/info-light.png b/v2/pkg/commands/build/internal/packager/icons/dialog/info-light.png deleted file mode 100644 index 1fb32e8a9988bdb6b611bb47e705182219d755e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 764 zcmeAS@N?(olHy`uVBq!ia0y~yU~m9o4rT@hhPm4t-!L#Rlm_^OxH1d`sEn+QU|?WS zD+%%oX85!8B=47+t9|uq!WD1bA1rX@IQsI=mJJg+vI8~c_eoBfY;GnMQGH;RKLZ1k zfTxRNNW|f{;Wsxm8Sscs^mTBU;=A+R-~ax5CX4W1W^%ONH}fLG%#QtwT zraRsL&HVm7cVqCQOTxQ#-m;v0F~v^2uF?3QetG^wv69;#o;_R9vN5ShGTYzd^o>|; zq5lvRUG>{NKBp zlbAXm@W0#NqaWeprLdNdndMERt?s|GZn3Ph-iBM5@ZI2gHD92|5fJe%{^(sMaXzjiIR6xNnuD6D&#E~9bkCxhyX;ADo! zsuGh=wUvEA)1j#*Ob@)JL_@_I zy0oINy|ge+z562R;reYl$?MD>pAOxBubF>+`DeD~D4E&0g?3q+-uX;Ey0xl2};>s}iKvku3DFXw8 zK}nEbFvIUq)+Y{J+pj0N@Ew@4Njt;uo#nAc55-Q27seO%o}Sh(-2Lt0isqWaoFFw- zDeG8ehHK#r49q`0T^vIyZoQd)y==7ukE`jznOVs^JB06e*DU`3f7kB3$O^Rtm9EX7 z9{jbDiL&P+U5W89Md;k1)k7)$NriW?l~Uz-1vGduQry}+}O1nwhS z)GIm4Z%m5iu-$Nw&u4dc+y{fhzpPI5ZL2-gwDsQxH%IqMANGi&Mtx}u47wkwh8cP+ zWIiV0&GCMUUB|a4oH~YP3rrV(s+~61nRjRIRAsrXqIL57jXEW|EDx^#5w-gNcCV*< z7`jg{n6lkW@W%=x`OG&r+>1j#MqiN^b;&UkIv=sX>9L(b%dJy>$=`$6JtTOa*RKit z&n)%XFu-0hcS-%Le%o9uMCdcS<_Q>m7pZ<6KzRdgxgVpldH>Fqh z9(rUQ(ZtGmKTQS=V^5H;(H|^=yXb$jud|h1;1|9C3NXQZBEs zpWj!>eb1bIi3g<(B7!A%3!S$xV))nmIqL3}hzYjJ4LsapQ$%Iw3m%xbY4L;)Nk$C& zl-uo%8}7f2KF!x;AdtiKw$+8dMMF)(?~cg7|F3%#<77@=@=MixS#wautNi)KSN4s+ z<_G*W4yo_>p!tmRg#SjHo(d+5o*RWdEH?^!xH+92;yi9l<>B0*EvdJZhp|#K^?H$t z!}_NhJ{(Mo3>Gex6nd~!vMac$LB%h#vX7;rvX70`(ZNWgqMMELgBb6u5FW;xOCIG~ zsT{ank`eNW<-&?P+e5QoeN8L%o^f^J+h5k{*FQHNoynooae_@p>ivl}{3 zhBMRB=H|1vy7hZKPu_WHX4%Tpc|H$!$Su6FCjRX;{q6e`cc0{*Yq~M;Gdtg(PIt?- z4xH+8?UqF|EpMd#JhOab>rJM2-xp3czI|xx{NVN1X7+$U!XAd3f98FCx6WJ$RIGWr L`njxgN@xNA-G3Q7 diff --git a/v2/pkg/commands/build/internal/packager/icons/dialog/question-dark.png b/v2/pkg/commands/build/internal/packager/icons/dialog/question-dark.png deleted file mode 100644 index c2387420ef7e9060fc9576d7bfe0da524e26f27e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 941 zcmeAS@N?(olHy`uVBq!ia0y~yU~m9o4rT@hhPm4t-!L#R%na}eab;j&_&+GYRaur0 z1_lPBk|4iehMzLeHd>3HT+7z)=k4(A@q>d3f=MAJ2HLULF3c!P<(@q$*Mo_ZdCu0k zZ(r=LxYJxXzbshBkb!||qNj^vNW|f{;n~%z40!DBusF6B3WrDpFF$vB+vflOANMU; zs>#Cl?&aqE)9SY;nN)sO>#eVQ>YloOd0dRh#_6wqzt8r!x&CddzQEb-vH72LOS6S* zN>y$|@UK39_E(nDEX#TiTN|#@q(>5cug^0@9*$Vcb2H9B`tp6fS^2!nw;0)WeL15g zyZB~o&i~c_{wO{2E&1u-&!VS){_wB$eE(l$UKhSCY+n+`&imnaZ_TZ8tFyfC4k!G1 zQ?pm*SHjM;_#E~R=|5%)hiJ&$Hp|Z_NHS8XE*AXd6Q8gooV)MO{eT5$bbi#ub;0$|l;YN7Ucr^|POudoiSJ!@ZJU?hJK`rRTryO6p$quU729 zd&OG|?k3t47z@4@F|x@2;5y&XW_{`b))imN{LcNEB(Ns2!b;^(?!`N8S`(eB_OJJs zxfCgG%Kk}7yob+IKQ-#c^WYQ4JPmP6W_Twoj(M-ikiB(I*Ein9k%Ff!*{5I9Ym0LG zIkR?--Ws`}O7VA-wYAbDf@&MOC(K_c;ce}@cVkyaW53(~Tc@g6O2cdt9^5D~v`}I@ z=DdPoc4?=ivZ8>%N=EkE28%YLIM}rxC>2MW_9D5px*C3Gbis`zYZL3 zDq8(L?=AZ`CwZ}7TLR@SEYJN@$h!T5(XSnR_U|=Lew}sV`{U2+%n~&EEgm~x%SkyA zB>h>0-S=u>c=L1;>y6l@P7~kuJXzq z3=9k=B|(0{48NJU9Fm@PHSw|S(3W(0dsA)W6hF&j-}Z-kD5e`fSdsJM(DVr+SGHPT zJY5~MXWsk5q8Qm5>!+qLFtB{|ba4!+xbfVzj`Qyys_k(poWH(~$(q9Cg-^T=nWD<=MrQHmATO4zmY)5;k3 zX;KSrue8~_>lN#ou7Bb6a&7@LHA2=Kth@5RY}NOut+Q6VIuYBd(3aKEyYOR;8PDaC zZL{>5?9Q-h+A^Pdq;WHQ)4|zZ*RAy;x=p5f6)jLP47%~xefOake-r#0rtDbKn%4C% zrmXtJhDSmh1Nkz;{2TH)lqVU?Hd^^fTYaJLXECFt)^8WJZ8^L`^iow;^O*^=rhlwY zSUipUbFIsHYnF+8wg$z@pF8XY@@95~1g)OLu+Cty#It}SYn2YpJ7+&xFr;cBzr@99 zZ>;+DeKyQtysY9`oYtbm{mVo^$Kmr!Lq3O7%W@ec-tq>`*!6LR@U5lQ2c~bZ+buf9 zHTwFjYUQbKS=mm8G4UvF%y3xaxn|pwG`>ppTWl{RIj;&${F<*&b6K8it1Xjl@ulX* zht9j-aj(~(Zxz}-oy++H|Ggbq;W3Fi%j8~c@DRSkWxDHn)*Qye+X9zK@49kM=H}l9 zHH|GQ%hyMAe%V?j>bK*v`2GY@X=6#zEF#nwYNHU)#fYtc0 zb^6?jPwL;IHz>;>9M^>a?jdM_~~@uPW*Glpc;mcbs1h#vI|Alu4$}Xw&1Zw z%8b5UaXbH}f0{j^-pBQTVW_;Qk)&9L%YszhlPQ{eU5@Fzn&0Pe-c##J#LS~czaRbc zN!S*B+~4v5`?DQ?vhVjr39&6U=<}bcW)j^VR1*+uTlVWctDpbKuPl#t+ILyk9W65`A#`#Pz}z4DrY1Je*i76h3;0X&+FY*&g)y*J-7<3$G+w&P;lK zJmTEZmY(!d;XD~BeYLo=XN1bd!;JNor}5geoz}cw9DMF`Om zk|%1lxoVv*G1R#nxq>Hg;iaIpH{OYN@8w&w^wxZl%#BvQGwba`<~Vm>o%Z^&P4B8@ zt(5{rwmjT-^7mQiM%>usS^S>y)U;k-?GoKDVza}xy-oVukZUbH{kX*b>)wg6OM6at zl-^G1Y-4D)igEPtf-cVY1C;On3L_p-6Ev90UU Z*GsT+thVn9W?*1o@O1TaS?83{1OTrfG*18k diff --git a/v2/pkg/commands/build/internal/packager/icons/dialog/question-light.png b/v2/pkg/commands/build/internal/packager/icons/dialog/question-light.png deleted file mode 100644 index 0d3b6ba02167cdfc38e93eadac6d8e5f3dc71124..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 930 zcmeAS@N?(olHy`uVBq!ia0y~yU~m9o4rT@hhPm4t-!L#RObhS{ab*~kz>52<76Su= zVM&l*FvCxoXB&O3#ZRvFWb1eM_V~d;1;L~c69etoYZqperE<@nl*`1)JZJ0Nw=Z^A z-f1qJU$txQ6$S>TE>9Q7kch)?f^R1^8SuoOjtvwL5M!GC6gpujH?e zp678%cvA7C{`%j+r!!ZuW=dr!p1tobJuBC036pYPX7;h@0^7pX({^_LGpboMY1Q!# zt4hvyvV!+C3%|^JY#Q#OQMg8+P~fd(o%!1PT4BrFuYAv3l0GfSefjSAhp%zBd&sKgh8?Pycx}>BYgMqj5YR43hq= zbYu3=y&STCR#V%l88TmAy*IEaaxo7+_h);%&SoyZ`*w38{{Q%Iu)g&M#uqR6T**7BX1nEmf5X2O_vh%hcc~@Ia^Mz+Je+5M5DD1yc zY&@@Kx>m zUhyLERE`?Q)?FSB#vA9hnz2kgTefTgL-Dd&0TGWV!6_zPt1f)0jhinLdTQ4TF814! zTPKuCbqky?|CqT!ySMe)F{_5HqGv+)FFl*E?)^8tlH1qrexJU#n(=V2McIj>s|H!H-^_dkhQ= z#w9_1!3@8hn7ER*H$9um$GS;U`~4&9n|{Z>?F;pom~Nb-u6$^hg2orM;!E}rhG z4w`dsaYu}*)tf^M3@nd4T^vIyZoQd)yKIwzKx=zJkRT&tcId0f*9)_(-~Z41e{}ye z6@x^E-1UF*5?fQwzq!d6x2NLcBiCvj``KL1ORQ-82-{UJ52Bztr7qo3B3Z>_GF>=)Q9_Elfx($)ox)3O&hJ+>2g#nhOw z$6SEMhmePpz8Mpfyu1sjv9OfF^BFg8sMOqbfVX|878PqwvA&pgcK7tEL} z^s>72_?v>Y@(R)ktEM-!%~QENsjM?BefDq8$VE%!?lZBUSUAfz;+63$9u@X|oM|;P z|NKAAVz?q@s;dzX`ZkxyLkiC7_F8p*lf|;7tnq0=mDkR3x!X#=Bzy2v%LK2 z`<5@MTFhN5Z!NPC*GWuSu=Mmvl_`;jlBa(4U%lzy8PlvaDTe+bAJdPh6#bdPyC<>n zLHzHs&9e+dTo`u2qe>AzQ7$$@-x2h;pP3Lw|~#SMPh~?k(*>{ZEe=f09bJ6c=73mETn`%_Poe z&n(IO7qJm%cg&G8wPK$Zyzcq2lqr`on%XzaYhJ+Nz|yKYOTg#ij3r$MRiqm!&JC61S~+ttuoIqI)7MCGl6iPo>42W>=Qj`(57;?#f7%V~OQI$n=+YZ*Wtq zs&tQq!~&h05nG(DI^}N6NWICY*?nbEPWnS5GyaGjTS~es6|^NL5Zo%?&!`zK~r?U|Tq)jshhTbQ1DgK~ym zdfMw{bJsICKX%obJ3rib>$0^gO%Gm?a{MZ~`D@wz8!{Wp{;%tL?mXi*_lED{1rGua zbh#@%HxyJBL{fiQ(Yo&j$tak60vz6njx0cuB->=zY1S-otUHx3vIVCg!06qwX Ai2wiq diff --git a/v2/pkg/commands/build/internal/packager/icons/dialog/warning-dark.png b/v2/pkg/commands/build/internal/packager/icons/dialog/warning-dark.png deleted file mode 100644 index db432321b616ea1b443acd6edc0635da2306cf95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 830 zcmeAS@N?(olHy`uVBq!ia0y~yU~m9o4rT@hhPm4t-!L#RR0Q~hxH2#>{2vH#Y{io` z3=9nFB|(0{49vfm)}8Eoy-7xxr+SI=q;C%wl)I~P9Q}0X+Ley%KuvYNedcESBlhvh z6fiI_`FXlHhD02`6O!HE(-GswLR0>>bGP`#-$09UjN$r zcw$A#56jAPb!Qnr*ZS7{nll2@9tAy%K9ah#U zD02N_F@+`R-2APIU$1jt+;Df!^CB6Zr+U{hFsf+J&MFn{UfLs7tn4+WA7qo8v4mUx)u2=5^;9lbd&*E(mns z+9ttwwL7-ZKrL(6i>;2U#C3L9yOeVqd=SXBkYM!b^<=ixYv4%S$6U7WtitxEdKoFx zE=Nji&=9;~l_qzdM~I~+dv)Ve<#{zZ9}2l&J5SM{EVF2j+fS?YF^gkVeztGg zE<|TVu@ObuAS$!TTGp`Q#43=E#GelF{r5}E*TkGj+V diff --git a/v2/pkg/commands/build/internal/packager/icons/dialog/warning-dark2x.png b/v2/pkg/commands/build/internal/packager/icons/dialog/warning-dark2x.png deleted file mode 100644 index 3325d22d287bdaaf97d0841e3a90678ab0686203..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1274 zcmeAS@N?(olHy`uVBq!ia0y~yU}ykg4rT@hhA$5${$yZam=@p@;>y6l@PF`u1FAWPEX%rd?APPH2=|!-wy3rQK+UW z!hX!UCRVU|>WtEK1_tIwo-U3d6}R3@yV7V|0@BMCv z0;Gh6+=?&0zqLr+&aUj?;dXv`yOMO#I4^m$a$;)H9u3WqQXNvdaSH_2m zcrJN&F_x_#~cneVSXi|&8cWtO6R@5muMut|Tiy3OJt7af;= z!s_q8KS$3^TPf8O=eDuC>DTY&#@C{L=S01CWdEP-Ry8f8YVWNd9_JksLfmh%dA`YN z=y5RmKY7*fc!jgqSNv-6S=GEa>zmny#@^`KmaCQwe8HzT)`-mMsFX_?%&dTlpVZ3tO`FMy7usbv!|>Y;us57 z=tNY7o!`YeC;G{0r`%H|+$SdN6|3bCUl7fp^J4N27c)(c1?)MTXP;znzZ9Qv;lFYJ zi+x%g3)X)ZoMm|0F!2}bhN2_B87W5tTe}!O)z-Lv&A8j%VEXjKQk@%L6%)d*#V_bw zq;p~_%LPU46~SNLI3Jj7q z>q83^4E?Px)t;KYb@!#}^mme<=O6gvpYcy>R(;2VV4iC}KSVwoBo%A%D$5+nBd`R<-CAHajMMa*5&2PWVH-s*{A-=F;ibrV!eu& zt9e6I|7(5YM^)eX#h$6pj&xtW?LPahm+p4`VbK=1Z_4YP_22&O`0Iy1?V?`S{7-LK zD9gkX?PT#rQLMTroh4;e9s5izhMChA#juM$y_C33&B64$;Edea7W0`M7TaFx49FHg zepls6m35x%>#gjwMYsIkCBEY>kUj7-4nPTl?m1DOB(Owp#N4<_$ObW}W|WIBd?mUcs85 ze@hcO^o4KE-ZbH7eoxKh-VGjKj<;I)K6mg+-?2mCpHos|=~bD)kN>m$S5$Q9tXNjZ zTIco8{a7CtAJfSYO?NgZpmaIH38EP^v3k37i7YJ&q zNN9K{YA)^RG0}Lsw%@U=EA;~0ZvWl2};>s}iKvku3DFXw8 zK}nEbFvIUqC!XuuyPDV~pC0hg&PeimH^nkv@x`Mp6O1qHEaktaqG?Wn?;)qcv_!29mwIFvefhBzU7`)b^n+D{@;D>hCtHI zVn5Z8~}Q;~SiXwMbDX_jAAV-CH4WR<$FV}`?)6W+&L?<*9%=-uFV zqSuO%$GgbJK(jrWsoC(G{R}4ge-dp8j}24zFy%Zx;?sR&*Zc5HXN&-3iQluGH=OWx7nE`Dot7SPUS>&P+re7~mV3+t_# z-dXDdGD|o7+_0UMd0X6P)snOuJO|VzKHcnTdiYmSQ)05v;?q+MCyG=}Fq-Idks)}= z|6{>3^uDq`aP+r%tJu?-ad+*V7xydw^-k$%R7yV3dGy1n&+}d0*as@zXMg0?$#_(d z)mmY(ntkflUqPi?q#PVi&H1~5Npnh}*b7tf_w%`poZ=);C9B>$#$>$q7pr$g>Y}Gh zQlggCWlvq_*9_B^22rzz-1;~86%)?C*1zC-miwABN5tn}Qn#I#E3(Yl;5+4G)0XKB zf0WYegAeTgb~caIQGx3a`zy6Y@k-uWlXmHR`8!{ahs)(t_RQADUB$WPQ+KEDGk*L} zc*lRvyYbH7n>qTDHl!U2JTqNzcJNE1N3UnR-B}>}+2K$_QsyCtONNscinV_i-(?`| zW+dgs81&TAK}*6bQAgY**-~2AGsow~tjwhBW6wf_W(RM3KI_Ij;{^%1eUW7>Y61Mie_GjF&?>{&9 z_o==YF0ESgym8a-iO()+wQimJ|Iww|(%1X+T88HA7UkQ^MUy`EfBeBd z^O4)mMXfivoJISu9sd-0#Nz%g>vP-NEatl}*yv$->Eyy|&o^6NshYn`?)6*84UrvX z@ohqR>rE}g9j*Lzwv|;KbX;F?X0^RZez;9rP|?pTHF^89?95mEJfdqQE0tdpa8dK` hs_QEP7rXI#>F;cxyCh|6U>B&|@^tlcS?83{1OPKS3ZVc1 diff --git a/v2/pkg/commands/build/packager_linux.go b/v2/pkg/commands/build/packager_linux.go index 61436eb7..6b297d3e 100644 --- a/v2/pkg/commands/build/packager_linux.go +++ b/v2/pkg/commands/build/packager_linux.go @@ -1,113 +1,5 @@ package build func packageApplication(_ *Options) error { - // - //// Check we have AppImage tools - // - //// Create AppImage build directory - //buildDirectory, err := getApplicationBuildDirectory(options, "linux") - //if err != nil { - // return err - //} - // - //defer deleteLinuxPackFiles(buildDirectory) - // - //// Get the name of the application and ensure we lower+kebab case it - //name := filepath.Base(options.ProjectData.OutputFilename) - // - //// Calculate asset directory - //assetDir := getPackageAssetsDirectory() - // - //// Copy default icon if one doesn't exist - //baseBuildDirectory, err := getBuildBaseDirectory(options) - //if err != nil { - // return err - //} - //iconFile := filepath.Join(baseBuildDirectory, "icon.png") - //if !fs.FileExists(iconFile) { - // err = fs.CopyFile(defaultIconPath(), iconFile) - // if err != nil { - // return err - // } - //} - // - //// Copy Icon - //targetIcon := filepath.Join(buildDirectory, name+".png") - //err = fs.CopyFile(iconFile, targetIcon) - //if err != nil { - // return err - //} - // - //// Copy app.desktop - //dotDesktopFile := filepath.Join(baseBuildDirectory, "linux", name+".desktop") - //if !fs.FileExists(dotDesktopFile) { - // bytes, err := ioutil.ReadFile(filepath.Join(assetDir, "app.desktop")) - // if err != nil { - // return err - // } - // appDesktop := string(bytes) - // appDesktop = strings.ReplaceAll(appDesktop, `{{.Name}}`, name) - // err = ioutil.WriteFile(dotDesktopFile, []byte(appDesktop), 0644) - // if err != nil { - // return err - // } - //} - // - //// Copy AppRun file - //// targetFilename = filepath.Join(buildDirectory, "AppRun") - //// if !fs.FileExists(targetFilename) { - //// bytes, err := ioutil.ReadFile(filepath.Join(assetDir, "AppRun")) - //// if err != nil { - //// return err - //// } - //// appRun := string(bytes) - //// appRun = strings.ReplaceAll(appRun, `{{.OutputFilename}}`, name) - // - //// err = ioutil.WriteFile(targetFilename, []byte(appRun), 0644) - //// if err != nil { - //// return err - //// } - //// } - // - //// Copy Binary - //sourceFile := filepath.Join(options.ProjectData.Path, options.ProjectData.OutputFilename) - //targetFile := filepath.Join(buildDirectory, options.ProjectData.OutputFilename) - //err = fs.CopyFile(sourceFile, targetFile) - //if err != nil { - // return err - //} - //err = os.Chmod(targetFile, 0777) - //if err != nil { - // return err - //} - // - ///** Pack App **/ - // - //// Make file executable - //// Set environment variable: OUTPUT=outputfilename - //command := shell.NewCommand("linuxdeploy-x86_64.AppImage") - //command.Dir(buildDirectory) - // - //argslice := slicer.String() - //argslice.Add("--appdir", "AppDir") - //argslice.Add("-d", filepath.Join("..", name+".desktop")) - //argslice.Add("-i", name+".png") - //argslice.Add("-e", name) - //argslice.Add("--output", "appimage") - //command.AddArgs(argslice.AsSlice()) - // - //command.Env("OUTPUT", name+".AppImage") - // - //err = command.Run() - //if err != nil { - // println(command.Stdout()) - // println(command.Stderr()) - // return err - //} - // - //// Copy app to project dir - // - //println(buildDirectory) - return nil } diff --git a/v2/pkg/commands/build/server-assetdb.go.template b/v2/pkg/commands/build/server-assetdb.go.template deleted file mode 100644 index f4720fee..00000000 --- a/v2/pkg/commands/build/server-assetdb.go.template +++ /dev/null @@ -1,11 +0,0 @@ -package webserver - -// This sets up the assets that are defined in `webassets.go` -func init() { - html = []byte{$HTMLBYTES$} - js = []byte{$JSBYTES$} - css = []byte{$CSSBYTES$} - wailsjs = []byte{$WAILSJSBYTES$} - jsurl = []byte{$JSURLBYTES$} - cssurl = []byte{$CSSURLBYTES$} -} \ No newline at end of file diff --git a/v2/pkg/commands/build/server.go b/v2/pkg/commands/build/server.go deleted file mode 100644 index d591c55f..00000000 --- a/v2/pkg/commands/build/server.go +++ /dev/null @@ -1,112 +0,0 @@ -package build - -import ( - "fmt" - "os" - "strings" - - "github.com/wailsapp/wails/v2/internal/fs" - "github.com/wailsapp/wails/v2/internal/html" -) - -// ServerBuilder builds applications as a server -type ServerBuilder struct { - *BaseBuilder -} - -func newServerBuilder(options *Options) *ServerBuilder { - result := &ServerBuilder{ - BaseBuilder: NewBaseBuilder(options), - } - return result -} - -// BuildAssets builds the assets for the desktop application -func (s *ServerBuilder) BuildAssets(_ *Options) error { - var err error - - assets, err := s.BaseBuilder.ExtractAssets() - if err != nil { - return err - } - - // Build embedded assets (HTML/JS/CSS/etc) - err = s.BuildBaseAssets(assets) - if err != nil { - return err - } - - return nil -} - -// PostCompilation is called after the compilation step, if successful -func (s *ServerBuilder) PostCompilation(_ *Options) error { - return nil -} - -// BuildBaseAssets builds the base assets -func (s *ServerBuilder) BuildBaseAssets(assets *html.AssetBundle) error { - db, err := assets.ConvertToAssetDB() - if err != nil { - return err - } - - // Fetch, update, and reinject index.html - index, err := db.Read("index.html") - if err != nil { - return fmt.Errorf(`failed to locate "index.html"`) - } - splits := strings.Split(string(index), "") - if len(splits) != 2 { - return fmt.Errorf("unable to locate a tag in your frontend/index.html") - } - injectScript := `` - result := []string{} - result = append(result, splits[0]) - result = append(result, injectScript) - result = append(result, "") - result = append(result, splits[1]) - - db.Remove("index.html") // Remove the non-prefixed index.html - db.AddAsset("/index.html", []byte(strings.Join(result, ""))) - - // Add wails.js - wailsjsPath := fs.RelativePath("../../../internal/runtime/assets/server.js") - if rawData, err := os.ReadFile(wailsjsPath); err == nil { - db.AddAsset("/wails.js", rawData) - } - - targetFile := fs.RelativePath("../../../internal/webserver/webassetsdb.go") - s.addFileToDelete(targetFile) - f, err := os.Create(targetFile) - if err != nil { - return err - } - - _, err = f.WriteString(db.Serialize("db", "webserver")) - if err != nil { - // Ignore error - we already have one! - _ = f.Close() - return err - } - return f.Close() -} - -// BuildRuntime builds the javascript runtime used by the HTML client to connect to the websocket -func (s *ServerBuilder) BuildRuntime(options *Options) error { - - sourceDir := fs.RelativePath("../../../internal/runtime/js") - if err := s.NpmInstall(sourceDir, options.Verbosity == VERBOSE); err != nil { - return err - } - - options.Logger.Print(" - Embedding Runtime...") - envvars := []string{"WAILSPLATFORM=" + options.Platform} - var err error - if err = s.NpmRunWithEnvironment(sourceDir, "build:server", false, envvars); err != nil { - return err - } - - options.Logger.Println("done.") - return nil -} diff --git a/v2/pkg/parser/applicationVariableName.go b/v2/pkg/parser/applicationVariableName.go deleted file mode 100644 index de425293..00000000 --- a/v2/pkg/parser/applicationVariableName.go +++ /dev/null @@ -1,50 +0,0 @@ -package parser - -import "go/ast" - -func (p *Package) getApplicationVariableName(file *ast.File, wailsImportName string) string { - - // Iterate through the whole file looking for the application name - applicationVariableName := "" - - // Inspect the file - ast.Inspect(file, func(n ast.Node) bool { - // Parse Assignments looking for application name - if assignStmt, ok := n.(*ast.AssignStmt); ok { - - // Check the RHS is of the form: - // `app := wails.CreateApp()` or - // `app := wails.CreateAppWithOptions` - for _, rhs := range assignStmt.Rhs { - ce, ok := rhs.(*ast.CallExpr) - if !ok { - continue - } - se, ok := ce.Fun.(*ast.SelectorExpr) - if !ok { - continue - } - i, ok := se.X.(*ast.Ident) - if !ok { - continue - } - // Have we found the wails import name? - if i.Name == wailsImportName { - // Check we are calling a function to create the app - if se.Sel.Name == "CreateApp" || se.Sel.Name == "CreateAppWithOptions" { - if len(assignStmt.Lhs) == 1 { - i, ok := assignStmt.Lhs[0].(*ast.Ident) - if ok { - // Found the app variable name - applicationVariableName = i.Name - return false - } - } - } - } - } - } - return true - }) - return applicationVariableName -} diff --git a/v2/pkg/parser/comments.go b/v2/pkg/parser/comments.go deleted file mode 100644 index 019e9880..00000000 --- a/v2/pkg/parser/comments.go +++ /dev/null @@ -1,21 +0,0 @@ -package parser - -import ( - "go/ast" - "strings" -) - -func parseComments(comments *ast.CommentGroup) []string { - var result []string - - if comments == nil { - return result - } - - for _, comment := range comments.List { - commentText := strings.TrimPrefix(comment.Text, "//") - result = append(result, commentText) - } - - return result -} diff --git a/v2/pkg/parser/conversion.go b/v2/pkg/parser/conversion.go deleted file mode 100644 index 99daa62f..00000000 --- a/v2/pkg/parser/conversion.go +++ /dev/null @@ -1,156 +0,0 @@ -package parser - -import ( - "fmt" - "strings" - - "github.com/leaanthony/slicer" -) - -// JSType represents a javascript type -type JSType string - -const ( - // JsString is a JS string - JsString JSType = "string" - // JsBoolean is a JS bool - JsBoolean = "boolean" - // JsInt is a JS number - JsInt = "number" - // JsFloat is a JS number - JsFloat = "number" - // JsArray is a JS array - JsArray = "Array" - // JsObject is a JS object - JsObject = "Object" - // JsUnsupported represents a type that cannot be converted - JsUnsupported = "*" -) - -func goTypeToJS(input *Field) string { - switch input.Type { - case "string": - return "string" - case "int", "int8", "int16", "int32", "int64", "uint", "uint8", "uint16", "uint32", "uint64": - return "number" - case "float32", "float64": - return "number" - case "bool": - return "boolean" - // case reflect.Array, reflect.Slice: - // return JsArray - // case reflect.Ptr, reflect.Struct, reflect.Map, reflect.Interface: - // return JsObject - case "struct": - return input.Struct.Name - default: - fmt.Printf("Unsupported input to goTypeToJS: %+v", input) - return "*" - } -} - -// goTypeToTS converts the given field into a Typescript type -// The pkgName is the package that the field is being output in. -// This is used to ensure we don't qualify local structs. -func goTypeToTS(input *Field, pkgName string) string { - var result string - switch input.Type { - case "string": - result = "string" - case "int", "int8", "int16", "int32", "int64", "uint", "uint8", "uint16", "uint32", "uint64": - result = "number" - case "float32", "float64": - result = "number" - case "bool": - result = "boolean" - case "struct": - if input.Struct.Package.Name != "" { - if input.Struct.Package.Name != pkgName { - result = input.Struct.Package.Name + "." - } - } - result += input.Struct.Name - // case reflect.Array, reflect.Slice: - // return string(JsArray) - // case reflect.Ptr, reflect.Struct: - // fqt := input.Type().String() - // return strings.Split(fqt, ".")[1] - // case reflect.Map, reflect.Interface: - // return string(JsObject) - default: - fmt.Printf("Unsupported input to goTypeToTS: %+v", input) - return JsUnsupported - } - - if input.IsArray { - result = result + "[]" - } - - return result -} - -func goTypeToTSDeclaration(input *Field, pkgName string) string { - var result string - switch input.Type { - case "string": - result = "string" - case "int", "int8", "int16", "int32", "int64", "uint", "uint8", "uint16", "uint32", "uint64": - result = "number" - case "float32", "float64": - result = "number" - case "bool": - result = "boolean" - case "struct": - if input.Struct.Package.Name != "" { - if input.Struct.Package.Name != pkgName { - result = `import("./_` + input.Struct.Package.Name + `").` - } - } - result += input.Struct.Name - // case reflect.Array, reflect.Slice: - // return string(JsArray) - // case reflect.Ptr, reflect.Struct: - // fqt := input.Type().String() - // return strings.Split(fqt, ".")[1] - // case reflect.Map, reflect.Interface: - // return string(JsObject) - default: - fmt.Printf("Unsupported input to goTypeToTS: %+v", input) - return JsUnsupported - } - - if input.IsArray { - result = result + "[]" - } - - return result -} - -func isUnresolvedType(typeName string) bool { - switch typeName { - case "string": - return false - case "int", "int8", "int16", "int32", "int64", "uint", "uint8", "uint16", "uint32", "uint64": - return false - case "float32", "float64": - return false - case "bool": - return false - case "struct": - return false - default: - return true - } -} - -var reservedJSWords []string = []string{"abstract", "arguments", "await", "boolean", "break", "byte", "case", "catch", "char", "class", "const", "continue", "debugger", "default", "delete", "do", "double", "else", "enum", "eval", "export", "extends", "false", "final", "finally", "float", "for", "function", "goto", "if", "implements", "import", "in", "instanceof", "int", "interface", "let", "long", "native", "new", "null", "package", "private", "protected", "public", "return", "short", "static", "super", "switch", "synchronized", "this", "throw", "throws", "transient", "true", "try", "typeof", "var", "void", "volatile", "while", "with", "yield", "Array", "Date", "eval", "function", "hasOwnProperty", "Infinity", "isFinite", "isNaN", "isPrototypeOf", "length", "Math", "NaN", "Number", "Object", "prototype", "String", "toString", "undefined", "valueOf"} -var jsReservedWords *slicer.StringSlicer = slicer.String(reservedJSWords) - -func isJSReservedWord(input string) bool { - return jsReservedWords.Contains(input) -} - -func startsWithLowerCaseLetter(input string) bool { - firstLetter := string(input[0]) - return strings.ToLower(firstLetter) == firstLetter -} diff --git a/v2/pkg/parser/field.go b/v2/pkg/parser/field.go deleted file mode 100644 index bcdc7642..00000000 --- a/v2/pkg/parser/field.go +++ /dev/null @@ -1,309 +0,0 @@ -package parser - -import ( - "fmt" - "go/ast" - "strings" - - "github.com/fatih/structtag" -) - -// Field defines a parsed struct field -type Field struct { - - // Name of the field - Name string - - // The type of the field. - // "struct" if it's a struct - Type string - - // A pointer to the struct if the Type is "struct" - Struct *Struct - - // User comments on the field - Comments []string - - // Indicates if the Field is an array of type "Type" - IsArray bool - - // JSON field name defined by a json tag - JSONOptions -} - -type JSONOptions struct { - Name string - IsOptional bool - Ignored bool -} - -// JSType returns the Javascript type for this field -func (f *Field) JSType() string { - return string(goTypeToJS(f)) -} - -// JSName returns the Javascript name for this field -func (f *Field) JSName() string { - if f.JSONOptions.Name != "" { - return f.JSONOptions.Name - } - return f.Name -} - -// TSName returns the Typescript name for this field -func (f *Field) TSName() string { - result := f.Name - if f.JSONOptions.Name != "" { - result = f.JSONOptions.Name - } - if f.IsOptional { - result += "?" - } - return result -} - -// AsTSDeclaration returns a TS definition of a single type field -func (f *Field) AsTSDeclaration(pkgName string) string { - return f.TSName() + ": " + f.TypeAsTSType(pkgName) -} - -// NameForPropertyDoc returns a formatted name for the jsdoc @property declaration -func (f *Field) NameForPropertyDoc() string { - if f.IsOptional { - return "[" + f.JSName() + "]" - } - return f.JSName() -} - -// TypeForPropertyDoc returns a formatted name for the jsdoc @property declaration -func (f *Field) TypeForPropertyDoc() string { - result := goTypeToJS(f) - if f.IsArray { - result += "[]" - } - return result -} - -// TypeAsTSType converts the Field type to something TS wants -func (f *Field) TypeAsTSType(pkgName string) string { - var result = "" - switch f.Type { - case "string": - result = "string" - case "int", "int8", "int16", "int32", "int64", "uint", "uint8", "uint16", "uint32", "uint64": - result = "number" - case "float32", "float64": - result = "number" - case "bool": - result = "boolean" - case "struct": - if f.Struct.Package != nil { - if f.Struct.Package.Name != pkgName { - result = f.Struct.Package.Name + "." - } - } - result = result + f.Struct.Name - default: - result = "any" - } - - return result -} - -func (p *Parser) parseField(file *ast.File, field *ast.Field, pkg *Package) ([]*Field, error) { - var result []*Field - - var fieldType string - var strct *Struct - var isArray bool - - var jsonOptions JSONOptions - - // Determine type - switch t := field.Type.(type) { - case *ast.Ident: - fieldType = t.Name - - unresolved := isUnresolvedType(fieldType) - - // Check if this type is actually a struct - if unresolved { - // Assume it is a struct - // Parse the struct - var err error - strct, err = p.parseStruct(pkg, t.Name) - if err != nil { - return nil, err - } - - if strct == nil { - fieldName := "" - if len(field.Names) > 0 { - fieldName = field.Names[0].Name - } - return nil, fmt.Errorf("unresolved type in field %s: %s", fieldName, fieldType) - } - - fieldType = "struct" - - } - case *ast.StarExpr: - fieldType = "struct" - packageName, structName, err := parseStructNameFromStarExpr(t) - if err != nil { - return nil, err - } - - // If this is an external package, find it - if packageName != "" { - referencedGoPackage := pkg.getImportByName(packageName, file) - referencedPackage := p.getPackageByID(referencedGoPackage.ID) - - // If we found the struct, save it as an external package reference - if referencedPackage != nil { - pkg.addExternalReference(referencedPackage) - } - - // We save this to pkg anyway, because we want to know if this package - // was NOT found - pkg = referencedPackage - } - - // If this is a package in our project, parse the struct! - if pkg != nil { - - // Parse the struct - strct, err = p.parseStruct(pkg, structName) - if err != nil { - return nil, err - } - - } - - case *ast.ArrayType: - isArray = true - // Parse the Elt (There must be a better way!) - switch t := t.Elt.(type) { - case *ast.Ident: - fieldType = t.Name - case *ast.StarExpr: - fieldType = "struct" - packageName, structName, err := parseStructNameFromStarExpr(t) - if err != nil { - return nil, err - } - - // If this is an external package, find it - if packageName != "" { - referencedGoPackage := pkg.getImportByName(packageName, file) - referencedPackage := p.getPackageByID(referencedGoPackage.ID) - - // If we found the struct, save it as an external package reference - if referencedPackage != nil { - pkg.addExternalReference(referencedPackage) - } - - // We save this to pkg anyway, because we want to know if this package - // was NOT found - pkg = referencedPackage - } - - // If this is a package in our project, parse the struct! - if pkg != nil { - - // Parse the struct - strct, err = p.parseStruct(pkg, structName) - if err != nil { - return nil, err - } - - } - default: - // We will default to "Array" for eg nested arrays - fieldType = "any" - } - - default: - return nil, fmt.Errorf("unsupported field found in struct: %+v", t) - } - - // Parse json tag if available - if field.Tag != nil { - err := parseJSONOptions(field.Tag.Value, &jsonOptions) - if err != nil { - return nil, err - } - } - - // Loop over names if we have - if len(field.Names) > 0 { - - for _, name := range field.Names { - - // TODO: Check field names are valid in JS - if isJSReservedWord(name.Name) { - return nil, fmt.Errorf("unable to use field name %s - reserved word in Javascript", name.Name) - } - - // Create a field per name - thisField := &Field{ - Comments: parseComments(field.Doc), - } - thisField.Name = name.Name - thisField.Type = fieldType - thisField.Struct = strct - thisField.IsArray = isArray - thisField.JSONOptions = jsonOptions - - result = append(result, thisField) - } - return result, nil - } - - // When we have no name - thisField := &Field{ - Comments: parseComments(field.Doc), - } - thisField.Type = fieldType - thisField.Struct = strct - thisField.IsArray = isArray - result = append(result, thisField) - - return result, nil -} - -func parseJSONOptions(fieldTag string, jsonOptions *JSONOptions) error { - - // Remove backticks - fieldTag = strings.Trim(fieldTag, "`") - - // Parse the tag - tags, err := structtag.Parse(fieldTag) - if err != nil { - return err - } - - jsonTag, err := tags.Get("json") - if err != nil { - return err - } - - if jsonTag == nil { - return nil - } - - // Save the name - jsonOptions.Name = jsonTag.Name - - // Check if this field is ignored - if jsonTag.Name == "-" { - jsonOptions.Ignored = true - } - - // Check if this field is optional - if jsonTag.HasOption("omitempty") { - jsonOptions.IsOptional = true - } - - return nil -} diff --git a/v2/pkg/parser/findBoundStructs.go b/v2/pkg/parser/findBoundStructs.go deleted file mode 100644 index 91876a8b..00000000 --- a/v2/pkg/parser/findBoundStructs.go +++ /dev/null @@ -1,152 +0,0 @@ -package parser - -import ( - "fmt" - "go/ast" -) - -// findBoundStructs will search through the Wails project looking -// for which structs have been bound using the `Bind()` method -func (p *Parser) findBoundStructs(pkg *Package) error { - - // Iterate through the files in the package looking for the bound structs - for _, fileAst := range pkg.Gopackage.Syntax { - - // Find the wails import name - wailsImportName := pkg.getWailsImportName(fileAst) - - // If this file doesn't import wails, continue - if wailsImportName == "" { - continue - } - - applicationVariableName := pkg.getApplicationVariableName(fileAst, wailsImportName) - if applicationVariableName == "" { - continue - } - - var parseError error - - ast.Inspect(fileAst, func(n ast.Node) bool { - // Parse Call expressions looking for bind calls - callExpr, ok := n.(*ast.CallExpr) - if !ok { - return true - } - // Check this is the right kind of expression (something.something()) - f, ok := callExpr.Fun.(*ast.SelectorExpr) - if !ok { - return true - } - ident, ok := f.X.(*ast.Ident) - if !ok { - return true - } - - if ident.Name != applicationVariableName { - return true - } - - if f.Sel.Name != "Bind" { - return true - } - - if len(callExpr.Args) != 1 { - return true - } - - // Work out what was bound - switch boundItem := callExpr.Args[0].(type) { - - // app.Bind( someFunction() ) - case *ast.CallExpr: - switch fn := boundItem.Fun.(type) { - case *ast.Ident: - // boundStructs = append(boundStructs, newStruct(pkg.Name, fn.Name)) - strct, err := p.getFunctionReturnType(pkg, fn.Name) - if err != nil { - parseError = err - return false - } - if strct == nil { - parseError = fmt.Errorf("unable to resolve function returntype: %s", fn.Name) - return false - } - strct.Package.boundStructs.Add(strct.Name) - case *ast.SelectorExpr: - ident, ok := fn.X.(*ast.Ident) - if !ok { - return true - } - packageName := ident.Name - functionName := fn.Sel.Name - println("Found bound function:", packageName+"."+functionName) - - // Get package for package name - externalPackageName := pkg.getImportByName(packageName, fileAst) - externalPackage := p.getPackageByID(externalPackageName.ID) - - strct, err := p.getFunctionReturnType(externalPackage, functionName) - if err != nil { - parseError = err - return false - } - if strct == nil { - // Unable to resolve function - return true - } - externalPackage.boundStructs.Add(strct.Name) - } - - // Binding struct pointer literals - case *ast.UnaryExpr: - - if boundItem.Op.String() != "&" { - return true - } - - cl, ok := boundItem.X.(*ast.CompositeLit) - if !ok { - return true - } - - switch boundStructExp := cl.Type.(type) { - - // app.Bind( &myStruct{} ) - case *ast.Ident: - pkg.boundStructs.Add(boundStructExp.Name) - - // app.Bind( &mypackage.myStruct{} ) - case *ast.SelectorExpr: - var structName = "" - var packageName = "" - switch x := boundStructExp.X.(type) { - case *ast.Ident: - packageName = x.Name - default: - // TODO: Save these warnings - // println("Identifier in binding not supported:") - return true - } - structName = boundStructExp.Sel.Name - referencedPackage := pkg.getImportByName(packageName, fileAst) - packageWrapper := p.getPackageByID(referencedPackage.ID) - packageWrapper.boundStructs.Add(structName) - } - - default: - // TODO: Save these warnings - // println("Unsupported bind expression:") - // spew.Dump(boundItem) - } - - return true - }) - - if parseError != nil { - return parseError - } - } - - return nil -} diff --git a/v2/pkg/parser/generate.go b/v2/pkg/parser/generate.go deleted file mode 100644 index f3f8e393..00000000 --- a/v2/pkg/parser/generate.go +++ /dev/null @@ -1,250 +0,0 @@ -package parser - -import ( - "bytes" - _ "embed" - "os" - "path/filepath" - "text/template" - - "github.com/pkg/errors" - "github.com/wailsapp/wails/v2/internal/fs" -) - -//go:embed index.template -var indexTemplate string - -//go:embed index.d.template -var indexDTemplate string - -//go:embed package.template -var packageTemplate string - -//go:embed package.d.template -var packageDTemplate string - -//go:embed globals.d.template -var globalsDTemplate string - -//go:embed package.json -var packageJSON string - -// GenerateWailsFrontendPackage will generate a Javascript/Typescript -// package in `/frontend/wails` that defines which methods -// and structs are bound to your frontend -func GenerateWailsFrontendPackage() (*ParserReport, error) { - - dir, err := os.Getwd() - if err != nil { - return nil, err - } - - p := NewParser() - - err = p.ParseProject(dir) - if err != nil { - return nil, err - } - - err = p.generateModule() - - return p.parserReport(), err -} - -func (p *Parser) generateModule() error { - - moduleDir, err := createBackendJSDirectory() - if err != nil { - return err - } - - packagesToGenerate := p.packagesToGenerate() - - for _, pkg := range packagesToGenerate { - - err := generatePackage(pkg, moduleDir) - if err != nil { - return err - } - } - - // Copy the standard files - tgtFile := filepath.Join(moduleDir, "package.json") - err = fs.CopyFile(packageJSON, tgtFile) - if err != nil { - return err - } - - // Generate the globals.d.ts file - err = generateGlobalsTS(moduleDir, packagesToGenerate) - if err != nil { - return err - } - - // Generate the index.js file - err = generateIndexJS(moduleDir, packagesToGenerate) - if err != nil { - return err - } - // Generate the index.d.ts file - err = generateIndexTS(moduleDir, packagesToGenerate) - if err != nil { - return err - } - - return nil -} - -func createBackendJSDirectory() (string, error) { - - // Calculate the package directory - // Note this is *always* called from the project directory - // so using paths relative to CWD is fine - dir, err := fs.RelativeToCwd("./frontend/backend") - if err != nil { - return "", errors.Wrap(err, "Error creating backend module directory") - } - - // Remove directory if it exists - REGENERATION! - err = os.RemoveAll(dir) - if err != nil { - return "", errors.Wrap(err, "Error removing module directory") - } - - // Make the directory - err = fs.Mkdir(dir) - - return dir, err -} - -func generatePackage(pkg *Package, moduledir string) error { - - // Load typescript template - typescriptTemplateData := fs.MustLoadString(packageDTemplate) - typescriptTemplate, err := template.New("typescript").Parse(typescriptTemplateData) - if err != nil { - return errors.Wrap(err, "Error creating template") - } - - // Execute javascript template - var buffer bytes.Buffer - err = typescriptTemplate.Execute(&buffer, pkg) - if err != nil { - return errors.Wrap(err, "Error generating code") - } - - // Save typescript file - err = os.WriteFile(filepath.Join(moduledir, "_"+pkg.Name+".d.ts"), buffer.Bytes(), 0755) - if err != nil { - return errors.Wrap(err, "Error writing backend package file") - } - - // Load javascript template - javascriptTemplateData := fs.MustLoadString(packageTemplate) - javascriptTemplate, err := template.New("javascript").Parse(javascriptTemplateData) - if err != nil { - return errors.Wrap(err, "Error creating template") - } - - // Reset the buffer - buffer.Reset() - - err = javascriptTemplate.Execute(&buffer, pkg) - if err != nil { - return errors.Wrap(err, "Error generating code") - } - - // Save javascript file - err = os.WriteFile(filepath.Join(moduledir, "_"+pkg.Name+".js"), buffer.Bytes(), 0755) - if err != nil { - return errors.Wrap(err, "Error writing backend package file") - } - - return nil -} - -func generateIndexJS(dir string, packages []*Package) error { - - // Load template - templateData := fs.MustLoadString(indexTemplate) - packagesTemplate, err := template.New("index").Parse(templateData) - if err != nil { - return errors.Wrap(err, "Error creating template") - } - - // Execute template - var buffer bytes.Buffer - err = packagesTemplate.Execute(&buffer, packages) - if err != nil { - return errors.Wrap(err, "Error generating code") - } - - // Calculate target filename - indexJS := filepath.Join(dir, "index.js") - - err = os.WriteFile(indexJS, buffer.Bytes(), 0755) - if err != nil { - return errors.Wrap(err, "Error writing backend package index.js file") - } - - return nil -} -func generateIndexTS(dir string, packages []*Package) error { - - // Load template - templateData := fs.MustLoadString(indexDTemplate) - indexTSTemplate, err := template.New("index.d").Parse(templateData) - if err != nil { - return errors.Wrap(err, "Error creating template") - } - - // Execute template - var buffer bytes.Buffer - err = indexTSTemplate.Execute(&buffer, packages) - if err != nil { - return errors.Wrap(err, "Error generating code") - } - - // Calculate target filename - indexJS := filepath.Join(dir, "index.d.ts") - - err = os.WriteFile(indexJS, buffer.Bytes(), 0755) - if err != nil { - return errors.Wrap(err, "Error writing backend package index.d.ts file") - } - - return nil -} - -func generateGlobalsTS(dir string, packages []*Package) error { - - // Load template - templateData := fs.MustLoadString(globalsDTemplate) - packagesTemplate, err := template.New("globals").Parse(templateData) - if err != nil { - return errors.Wrap(err, "Error creating template") - } - - // Execute template - var buffer bytes.Buffer - err = packagesTemplate.Execute(&buffer, packages) - if err != nil { - return errors.Wrap(err, "Error generating code") - } - - // Calculate target filename - indexJS := filepath.Join(dir, "globals.d.ts") - - err = os.WriteFile(indexJS, buffer.Bytes(), 0755) - if err != nil { - return errors.Wrap(err, "Error writing backend package globals.d.ts file") - } - - return nil -} - -func (p *Parser) parserReport() *ParserReport { - return &ParserReport{ - Packages: p.packagesToGenerate(), - } -} diff --git a/v2/pkg/parser/getFunctionReturnType.go b/v2/pkg/parser/getFunctionReturnType.go deleted file mode 100644 index f5f2c6cd..00000000 --- a/v2/pkg/parser/getFunctionReturnType.go +++ /dev/null @@ -1,69 +0,0 @@ -package parser - -import ( - "fmt" - "go/ast" -) - -func (p *Parser) getFunctionReturnType(pkg *Package, functionName string) (*Struct, error) { - - var result *Struct - - // Iterate through the files in the package looking for the bound structs - for _, fileAst := range pkg.Gopackage.Syntax { - - var parseError error - - ast.Inspect(fileAst, func(n ast.Node) bool { - // Parse Call expressions looking for bind calls - funcDecl, ok := n.(*ast.FuncDecl) - if !ok { - return true - } - - if funcDecl.Name.Name == functionName { - result, parseError = p.parseFunctionReturnType(fileAst, funcDecl, pkg) - return false - } - - return true - }) - - if parseError != nil { - return nil, parseError - } - - if result != nil { - return result, nil - } - } - - return result, nil -} - -func (p *Parser) parseFunctionReturnType(file *ast.File, funcDecl *ast.FuncDecl, pkg *Package) (*Struct, error) { - - var result *Struct - - if funcDecl.Type.Results == nil { - return nil, fmt.Errorf("bound function %s has no return values", funcDecl.Name.Name) - } - - // We expect only 1 return value for a function return - if len(funcDecl.Type.Results.List) > 1 { - return nil, fmt.Errorf("bound function %s has more than 1 return value", funcDecl.Name.Name) - } - - parsedFields, err := p.parseField(file, funcDecl.Type.Results.List[0], pkg) - if err != nil { - return nil, err - } - - if len(parsedFields) > 1 { - return nil, fmt.Errorf("bound function %s has more than 1 return value", funcDecl.Name.Name) - } - - result = parsedFields[0].Struct - - return result, nil -} diff --git a/v2/pkg/parser/globals.d.template b/v2/pkg/parser/globals.d.template deleted file mode 100644 index acf85a7a..00000000 --- a/v2/pkg/parser/globals.d.template +++ /dev/null @@ -1,27 +0,0 @@ -// @ts-check -// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL -// This file is automatically generated. DO NOT EDIT - -interface Window { - - go: { - - {{- range . }}{{$packageName:=.Name}} - {{- if .HasBoundStructs }} - {{ $packageName }}: { - {{- range .Structs }} - {{- if .IsBound }} - {{if .Comments }}{{range .Comments}}// {{ . }}{{end}}{{end}} - {{.Name}}: { - {{range .Methods}} - {{if .Comments }}{{range .Comments}}// {{ . }}{{end}}{{end}} - {{.Name}}: ({{.InputsAsTSText $packageName}}) => Promise<{{.OutputsAsTSText $packageName}}>, - {{end}} - } - {{- end}} - {{- end}} - } - {{- end}} - {{- end}} - } -} \ No newline at end of file diff --git a/v2/pkg/parser/index.d.template b/v2/pkg/parser/index.d.template deleted file mode 100644 index f48417d0..00000000 --- a/v2/pkg/parser/index.d.template +++ /dev/null @@ -1,7 +0,0 @@ -// @ts-check -// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL -// This file is automatically generated. DO NOT EDIT - -{{- range .}} -export const {{.Name}}: typeof import("./_{{.Name}}"); -{{- end}} diff --git a/v2/pkg/parser/index.template b/v2/pkg/parser/index.template deleted file mode 100644 index f1801e04..00000000 --- a/v2/pkg/parser/index.template +++ /dev/null @@ -1,13 +0,0 @@ -// @ts-check -// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL -// This file is automatically generated. DO NOT EDIT - -{{- range .}} -const {{.Name}} = require('./_{{.Name}}'); -{{- end}} - -module.exports = { - {{- range .}} - {{.Name}}: {{.Name}}, - {{- end}} -} \ No newline at end of file diff --git a/v2/pkg/parser/method.go b/v2/pkg/parser/method.go deleted file mode 100644 index 3ba3b10c..00000000 --- a/v2/pkg/parser/method.go +++ /dev/null @@ -1,174 +0,0 @@ -package parser - -import ( - "fmt" - "go/ast" - "strings" -) - -// Method defines a struct method -type Method struct { - Name string - Comments []string - Inputs []*Field - Returns []*Field -} - -func (p *Parser) parseStructMethods(boundStruct *Struct) error { - - for _, fileAst := range boundStruct.Package.Gopackage.Syntax { - - // Track errors - var parseError error - - ast.Inspect(fileAst, func(n ast.Node) bool { - - if funcDecl, ok := n.(*ast.FuncDecl); ok { - - if funcDecl.Recv == nil { - return true - } - - // This is a struct method - for _, field := range funcDecl.Recv.List { - switch f := field.Type.(type) { - case *ast.StarExpr: - // This is a struct pointer method - ident, ok := f.X.(*ast.Ident) // _ ? - if !ok { - continue - } - - // Check this method is for this struct - if ident.Name != boundStruct.Name { - continue - } - - // If this method is not Public, ignore - if string(funcDecl.Name.Name[0]) != strings.ToUpper((string(funcDecl.Name.Name[0]))) { - continue - } - - // Create our struct - structMethod := &Method{ - Name: funcDecl.Name.Name, - Comments: parseComments(funcDecl.Doc), - } - - // Save the input parameters - if funcDecl.Type.Params != nil { - for _, inputField := range funcDecl.Type.Params.List { - fields, err := p.parseField(fileAst, inputField, boundStruct.Package) - if err != nil { - parseError = err - return false - } - - // If this field was a struct, flag that it is used as data - if len(fields) > 0 { - if fields[0].Struct != nil { - fields[0].Struct.IsUsedAsData = true - } - } - - structMethod.Inputs = append(structMethod.Inputs, fields...) - } - } - - // Save the output parameters - if funcDecl.Type.Results != nil { - for _, outputField := range funcDecl.Type.Results.List { - fields, err := p.parseField(fileAst, outputField, boundStruct.Package) - if err != nil { - parseError = err - return false - } - - // If this field was a struct, flag that it is used as data - if len(fields) > 0 { - if fields[0].Struct != nil { - fields[0].Struct.IsUsedAsData = true - } - } - - structMethod.Returns = append(structMethod.Returns, fields...) - } - } - - // Append this method to the parsed struct - boundStruct.Methods = append(boundStruct.Methods, structMethod) - - default: - // Unsupported - continue - } - } - } - return true - }) - - // If we got an error, return it - if parseError != nil { - return parseError - } - } - - return nil -} - -// InputsAsTSText generates a string with the method inputs -// formatted in a way acceptable to Typescript -func (m *Method) InputsAsTSText(pkgName string) string { - var inputs []string - - for _, input := range m.Inputs { - inputText := fmt.Sprintf("%s: %s", input.Name, goTypeToTS(input, pkgName)) - inputs = append(inputs, inputText) - } - - return strings.Join(inputs, ", ") -} - -// OutputsAsTSText generates a string with the method inputs -// formatted in a way acceptable to Javascript -func (m *Method) OutputsAsTSText(pkgName string) string { - - if len(m.Returns) == 0 { - return "void" - } - - var result []string - - for _, output := range m.Returns { - result = append(result, goTypeToTS(output, pkgName)) - } - return strings.Join(result, ", ") -} - -// OutputsAsTSDeclarationText generates a string with the method inputs -// formatted in a way acceptable to Javascript -func (m *Method) OutputsAsTSDeclarationText(pkgName string) string { - - if len(m.Returns) == 0 { - return "void" - } - - var result []string - - for _, output := range m.Returns { - result = append(result, goTypeToTSDeclaration(output, pkgName)) - } - return strings.Join(result, ", ") -} - -// InputsAsJSText generates a string with the method inputs -// formatted in a way acceptable to Javascript -func (m *Method) InputsAsJSText() string { - var inputs []string - - for _, input := range m.Inputs { - inputs = append(inputs, input.Name) - } - - return strings.Join(inputs, ", ") -} diff --git a/v2/pkg/parser/package.d copy.template b/v2/pkg/parser/package.d copy.template deleted file mode 100644 index 5206b962..00000000 --- a/v2/pkg/parser/package.d copy.template +++ /dev/null @@ -1,31 +0,0 @@ -// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL -// This file is automatically generated. DO NOT EDIT - -{{- if .DeclarationReferences }} -{{range .DeclarationReferences}} -/// {{end}}{{- end}} - -export namespace {{.Name}} { {{range .Structs}} - {{- if or .IsBound .IsUsedAsData}} - {{if .Comments }}{{range .Comments}}// {{ . }}{{end}}{{- end}} - interface {{.Name}} { {{ if .IsUsedAsData }} - {{- range .Fields}}{{if .Comments }} - {{range .Comments}}//{{ . }}{{end}}{{- end}} - {{.Name}}: {{.TypeAsTSType $.Name}}; {{- end}} {{ end }} - {{- if .IsBound }} - {{- range .Methods}} - /**{{if .Comments }} -{{range .Comments}} * {{ . }}{{end}} - *{{end}} - * @function {{.Name}} -{{range .Inputs}} * @param {{"{"}}{{.JSType}}{{"}"}} {{.Name}} -{{end}} * - * @returns {Promise<{{.OutputsAsTSText $.Name}}>} - */ - {{.Name}}({{.InputsAsTSText $.Name}}): Promise<{{.OutputsAsTSText $.Name}}>; - {{- end}}{{end}} - }{{- end}} - {{end}} - -} - diff --git a/v2/pkg/parser/package.d.template b/v2/pkg/parser/package.d.template deleted file mode 100644 index 6eccdb0f..00000000 --- a/v2/pkg/parser/package.d.template +++ /dev/null @@ -1,42 +0,0 @@ -// @ts-check -// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL -// This file is automatically generated. DO NOT EDIT - -{{- range .Structs}} -{{- if .IsBound}} -export namespace {{.Name}} { - {{- range .Methods}} - {{- if .Comments }} - {{range .Comments}} - // {{ . }}{{end}} - {{- end}} - function {{.Name}}({{.InputsAsTSText $.Name}}): Promise<{{.OutputsAsTSDeclarationText $.Name}}>; - {{- end}} -} -{{- end}} -{{- if .IsUsedAsData}} -{{if .Comments }} -/** -{{range .Comments}} *{{ . }}{{end}} - */ -export type {{.Name}} = { -{{- range .Fields}} - {{- if not .Ignored}} - {{- if .Comments }}{{range .Comments}} - //{{ . }}{{end}}{{- end}} - {{ .AsTSDeclaration $.Name}}; {{- end}} -{{- end}} -}; - -/** -{{if .Comments }}{{range .Comments}} *{{ . }}{{end}}{{end}} - * @typedef {object} {{.Name}} -{{- range .Fields}}{{- if not .JSONOptions.Ignored }} - * @property {{"{"}}{{.TypeForPropertyDoc}}{{"}"}} {{.NameForPropertyDoc}} {{- if .Comments}} - {{- range .Comments}}{{ . }}{{- end}}{{- end}}{{- end}} -{{- end}} - */ -export var {{.Name}}: any; - -{{- end}} -{{- end}} -{{- end}} diff --git a/v2/pkg/parser/package.go b/v2/pkg/parser/package.go deleted file mode 100644 index e9357efd..00000000 --- a/v2/pkg/parser/package.go +++ /dev/null @@ -1,152 +0,0 @@ -package parser - -import ( - "go/ast" - "strings" - - "github.com/leaanthony/slicer" - "golang.org/x/tools/go/packages" -) - -// Package is a wrapper around the go parsed package -type Package struct { - - // A unique Name for this package. - // This is calculated and may not be the same as the one - // defined in Go - but that's ok! - Name string - - // the package we are wrapping - Gopackage *packages.Package - - // a list of struct names that are bound in this package - boundStructs slicer.StringSlicer - - // Structs used in this package - parsedStructs map[string]*Struct - - // A list of external packages we reference from this package - externalReferences slicer.InterfaceSlicer -} - -func newPackage(pkg *packages.Package) *Package { - return &Package{ - Gopackage: pkg, - parsedStructs: make(map[string]*Struct), - } -} - -func (p *Package) getWailsImportName(file *ast.File) string { - // Scan the imports for the wails v2 import - for _, details := range file.Imports { - if details.Path.Value == `"github.com/wailsapp/wails/v2"` { - if details.Name != nil { - return details.Name.Name - } - - // Get the import name from the package - imp := p.getImportByPath("github.com/wailsapp/wails/v2") - if imp != nil { - return imp.Name - } - } - } - return "" -} - -func (p *Package) getImportByName(importName string, file *ast.File) *packages.Package { - - // Check if the file has aliased the import - for _, imp := range file.Imports { - if imp.Name != nil { - if imp.Name.Name == importName { - // Yes it has. Get the import by path - return p.getImportByPath(imp.Path.Value) - } - } - } - - // We need to find which package import has this name - for _, imp := range p.Gopackage.Imports { - if imp.Name == importName { - return imp - } - } - - // Looks like this package is outside the project... - return nil -} - -func (p *Package) getImportByPath(packagePath string) *packages.Package { - packagePath = strings.Trim(packagePath, "\"") - return p.Gopackage.Imports[packagePath] -} - -func (p *Package) getStruct(structName string) *Struct { - return p.parsedStructs[structName] -} - -func (p *Package) addStruct(strct *Struct) { - p.parsedStructs[strct.Name] = strct -} - -// HasBoundStructs returns true if any of its structs -// are bound -func (p *Package) HasBoundStructs() bool { - - for _, strct := range p.parsedStructs { - if strct.IsBound { - return true - } - } - - return false -} - -// HasDataStructs returns true if any of its structs -// are used as data -func (p *Package) HasDataStructs() bool { - for _, strct := range p.parsedStructs { - if strct.IsUsedAsData { - return true - } - } - - return false -} - -// ShouldGenerate returns true when this package should be generated -func (p *Package) ShouldGenerate() bool { - return p.HasBoundStructs() || p.HasDataStructs() -} - -// DeclarationReferences returns a list of external packages -// we reference from this package -func (p *Package) DeclarationReferences() []string { - - var referenceNames slicer.StringSlicer - - // Generics can't come soon enough! - p.externalReferences.Each(func(p interface{}) { - referenceNames.Add(p.(*Package).Name) - }) - - return referenceNames.AsSlice() -} - -// addExternalReference saves the given package as an external reference -func (p *Package) addExternalReference(pkg *Package) { - p.externalReferences.AddUnique(pkg) -} - -// Structs returns the structs that we want to generate -func (p *Package) Structs() []*Struct { - - var result []*Struct - - for _, elem := range p.parsedStructs { - result = append(result, elem) - } - - return result -} diff --git a/v2/pkg/parser/package.json b/v2/pkg/parser/package.json deleted file mode 100644 index 5d0ddb82..00000000 --- a/v2/pkg/parser/package.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "name": "go", - "version": "1.0.0", - "description": "Auto generated module wrapping your Wails backend", - "main": "index.js", - "types": "index.d.ts", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "keywords": [], - "author": "", - "license": "ISC" -} diff --git a/v2/pkg/parser/package.template b/v2/pkg/parser/package.template deleted file mode 100644 index 2c7362df..00000000 --- a/v2/pkg/parser/package.template +++ /dev/null @@ -1,44 +0,0 @@ -// @ts-check -// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL -// This file is automatically generated. DO NOT EDIT - -{{- if .DeclarationReferences }} -{{range .DeclarationReferences}} -const {{.}} = require('./_{{.}}');{{end}}{{- end}} - -{{- range $struct := .Structs }} -{{- if .IsUsedAsData }} - -/** -{{if .Comments }}{{range .Comments}} *{{ . }}{{end}}{{end}} - * @typedef {object} {{.Name}} -{{- range .Fields}}{{- if not .JSONOptions.Ignored }} - * @property {{"{"}}{{.TypeForPropertyDoc}}{{"}"}} {{.NameForPropertyDoc}} {{- if .Comments}} - {{- range .Comments}}{{ . }}{{- end}}{{- end}}{{- end}} -{{- end}} - */ -export var {{.Name}}; - -{{- end}} -{{- if .IsBound }} -{{- if .Methods }} - -{{if .Comments }}{{range .Comments}}// {{ . }}{{end}}{{end}} -export const {{.Name}} = { -{{range .Methods }} - /**{{if .Comments }} -{{range .Comments}} * {{ . }}{{end}} - *{{end}} - * @function {{.Name}} -{{range .Inputs}} * @param {{"{"}}{{.JSType}}{{"}"}} {{.Name}} -{{end}} * - * @returns {Promise<{{.OutputsAsTSText $.Name}}>} - */ - {{.Name}}: function({{.InputsAsJSText}}) { - return window.backend.{{$.Name}}.{{$struct.Name}}.{{.Name}}({{.InputsAsJSText}}); - }, -{{end}} -} - -{{- end}} -{{- end}} -{{- end}} diff --git a/v2/pkg/parser/parseBoundStructs.go b/v2/pkg/parser/parseBoundStructs.go deleted file mode 100644 index c2683943..00000000 --- a/v2/pkg/parser/parseBoundStructs.go +++ /dev/null @@ -1,75 +0,0 @@ -package parser - -import "go/ast" - -func (p *Parser) parseBoundStructs(pkg *Package) error { - - // Loop over the bound structs - for _, structName := range pkg.boundStructs.AsSlice() { - strct, err := p.parseStruct(pkg, structName) - if err != nil { - return err - } - strct.IsBound = true - } - - return nil -} - -// ParseStruct will attempt to parse the given struct using -// the package it references -func (p *Parser) parseStruct(pkg *Package, structName string) (*Struct, error) { - - // Check the parser cache for this struct - result := pkg.getStruct(structName) - if result != nil { - return result, nil - } - - // Iterate through the whole package looking for the bound structs - for _, fileAst := range pkg.Gopackage.Syntax { - - // Track errors - var parseError error - - ast.Inspect(fileAst, func(n ast.Node) bool { - if genDecl, ok := n.(*ast.GenDecl); ok { - for _, spec := range genDecl.Specs { - if typeSpec, ok := spec.(*ast.TypeSpec); ok { - if structType, ok := typeSpec.Type.(*ast.StructType); ok { - structDefinitionName := typeSpec.Name.Name - if structDefinitionName == structName { - - // Create the new struct - result = &Struct{Name: structName, Package: pkg} - - // Save comments - result.Comments = parseComments(genDecl.Doc) - - parseError = p.parseStructMethods(result) - if parseError != nil { - return false - } - - // Parse the struct fields - parseError = p.parseStructFields(fileAst, structType, result) - - // Save this struct - pkg.addStruct(result) - - return false - } - } - } - } - } - return true - }) - - // If we got an error, return it - if parseError != nil { - return nil, parseError - } - } - return result, nil -} diff --git a/v2/pkg/parser/parseStructFields.go b/v2/pkg/parser/parseStructFields.go deleted file mode 100644 index cdca538d..00000000 --- a/v2/pkg/parser/parseStructFields.go +++ /dev/null @@ -1,35 +0,0 @@ -package parser - -import ( - "go/ast" - - "github.com/pkg/errors" -) - -func (p *Parser) parseStructFields(fileAst *ast.File, structType *ast.StructType, boundStruct *Struct) error { - - // Parse the fields - for _, field := range structType.Fields.List { - fields, err := p.parseField(fileAst, field, boundStruct.Package) - if err != nil { - return errors.Wrap(err, "error parsing struct "+boundStruct.Name) - } - - // If this field was a struct, flag that it is used as data - if len(fields) > 0 { - if fields[0].Struct != nil { - fields[0].Struct.IsUsedAsData = true - } - } - - // If this field name is lowercase, it won't be exported - for _, field := range fields { - if !startsWithLowerCaseLetter(field.Name) { - boundStruct.Fields = append(boundStruct.Fields, field) - } - } - - } - - return nil -} diff --git a/v2/pkg/parser/parser.go b/v2/pkg/parser/parser.go deleted file mode 100644 index 5b49b42d..00000000 --- a/v2/pkg/parser/parser.go +++ /dev/null @@ -1,122 +0,0 @@ -// Package parser provides the ability to parse the data that is bound in Wails projects. -// Using this, it can also generate a Javascript module that represents the DTOs used, as -// well as providing wrappers for bound methods. -package parser - -import ( - "go/token" - - "github.com/pkg/errors" - "golang.org/x/tools/go/packages" -) - -// Parser is the Wails project parser -type Parser struct { - - // Placeholders for Go's parser - fileSet *token.FileSet - - // The packages we parse - // The map key is the package ID - packages map[string]*Package -} - -// NewParser creates a new Wails project parser -func NewParser() *Parser { - return &Parser{ - fileSet: token.NewFileSet(), - packages: make(map[string]*Package), - } -} - -// ParseProject will parse the Wails project in the given directory -func (p *Parser) ParseProject(dir string) error { - - var err error - - err = p.loadPackages(dir) - if err != nil { - return err - } - - // Find all the bound structs - for _, pkg := range p.packages { - err = p.findBoundStructs(pkg) - if err != nil { - return err - } - } - - // Parse the structs - for _, pkg := range p.packages { - err = p.parseBoundStructs(pkg) - if err != nil { - return err - } - } - - // Resolve package names - // We do this because some packages may have the same name - p.resolvePackageNames() - - return nil -} - -func (p *Parser) loadPackages(projectPath string) error { - mode := packages.NeedName | - packages.NeedFiles | - packages.NeedSyntax | - packages.NeedTypes | - packages.NeedImports | - packages.NeedTypesInfo | - packages.NeedModule - - cfg := &packages.Config{Fset: p.fileSet, Mode: mode, Dir: projectPath} - pkgs, err := packages.Load(cfg, "./...") - if err != nil { - return errors.Wrap(err, "Problem loading packages") - } - // Check for errors - var parseError error - for _, pkg := range pkgs { - for _, err := range pkg.Errors { - if parseError == nil { - parseError = errors.New(err.Error()) - } else { - parseError = errors.Wrap(parseError, err.Error()) - } - } - } - - if parseError != nil { - return parseError - } - - // Create a map of packages - for _, pkg := range pkgs { - p.packages[pkg.ID] = newPackage(pkg) - } - - return nil -} - -func (p *Parser) getPackageByID(id string) *Package { - return p.packages[id] -} - -func (p *Parser) packagesToGenerate() []*Package { - - var result []*Package - - for _, pkg := range p.packages { - if pkg.ShouldGenerate() { - result = append(result, pkg) - } - } - - return result -} - -type ParserReport struct { - Packages []*Package -} diff --git a/v2/pkg/parser/resolvePackageReferences.go b/v2/pkg/parser/resolvePackageReferences.go deleted file mode 100644 index 081b3f8c..00000000 --- a/v2/pkg/parser/resolvePackageReferences.go +++ /dev/null @@ -1,35 +0,0 @@ -package parser - -import ( - "fmt" - - "github.com/leaanthony/slicer" -) - -// resolvePackageNames will deterine the names for the packages, allowing -// us to create a flat structure for the imports in the frontend module -func (p *Parser) resolvePackageNames() { - - // A cache for the names - var packageNameCache slicer.StringSlicer - - // Process each package - for _, pkg := range p.packages { - pkgName := pkg.Gopackage.Name - - // Check for collision - if packageNameCache.Contains(pkgName) { - // https://www.youtube.com/watch?v=otNNGROI0Cs !!!!! - - // We start at 2 because having both "pkg" and "pkg1" is 🙄 - count := 2 - for ok := true; ok; ok = packageNameCache.Contains(pkgName) { - pkgName = fmt.Sprintf("%s%d", pkg.Gopackage.Name, count) - } - } - - // Save the name! - packageNameCache.Add(pkgName) - pkg.Name = pkgName - } -} diff --git a/v2/pkg/parser/struct.go b/v2/pkg/parser/struct.go deleted file mode 100644 index 6108309b..00000000 --- a/v2/pkg/parser/struct.go +++ /dev/null @@ -1,68 +0,0 @@ -package parser - -import ( - "fmt" - "go/ast" - - "github.com/pkg/errors" -) - -// Struct represents a struct that is used by the frontend -// in a Wails project -type Struct struct { - - // The name of the struct - Name string - - // The package this was declared in - Package *Package - - // Comments for the struct - Comments []string - - // The fields used in this struct - Fields []*Field - - // The methods available to the front end - Methods []*Method - - // Indicates if this struct is bound to the app - IsBound bool - - // Indicates if this struct is used as data - IsUsedAsData bool -} - -func parseStructNameFromStarExpr(starExpr *ast.StarExpr) (string, string, error) { - pkg := "" - name := "" - // Determine the FQN - switch x := starExpr.X.(type) { - case *ast.SelectorExpr: - switch i := x.X.(type) { - case *ast.Ident: - pkg = i.Name - default: - // TODO: Store warnings? - return "", "", errors.WithStack(fmt.Errorf("unknown type in selector for *ast.SelectorExpr: %+v", i)) - } - - name = x.Sel.Name - - // TODO: IS this used? - case *ast.StarExpr: - switch s := x.X.(type) { - case *ast.Ident: - name = s.Name - default: - // TODO: Store warnings? - return "", "", errors.WithStack(fmt.Errorf("unknown type in selector for *ast.StarExpr: %+v", s)) - } - case *ast.Ident: - name = x.Name - default: - // TODO: Store warnings? - return "", "", errors.WithStack(fmt.Errorf("unknown type in selector for *ast.StarExpr: %+v", starExpr)) - } - return pkg, name, nil -} diff --git a/v2/pkg/parser/testproject/basic.go b/v2/pkg/parser/testproject/basic.go deleted file mode 100644 index cce57e18..00000000 --- a/v2/pkg/parser/testproject/basic.go +++ /dev/null @@ -1,66 +0,0 @@ -package main - -import ( - "fmt" - - "testproject/mypackage" - - "github.com/wailsapp/wails/v2" -) - -// Basic application struct -type Basic struct { - runtime *wails.Runtime -} - -// // Another application struct -// type Another struct { -// runtime *wails.Runtime -// } - -// func (a *Another) Doit() { - -// } - -// // newBasicPointer creates a new Basic application struct -// func newBasicPointer() *Basic { -// return &Basic{} -// } - -// // newBasic creates a new Basic application struct -// func newBasic() Basic { -// return Basic{} -// } - -// WailsInit is called at application startup -func (b *Basic) WailsInit(runtime *wails.Runtime) error { - // Perform your setup here - b.runtime = runtime - runtime.Window.SetTitle("jsbundle") - return nil -} - -// WailsShutdown is called at application termination -func (b *Basic) WailsShutdown() { - // Perform your teardown here -} - -// NewPerson creates a new person -func (b *Basic) NewPerson(name string, age int) *mypackage.Person { - return &mypackage.Person{Name: name, Age: age} -} - -// Greet returns a greeting for the given name -func (b *Basic) Greet(name string) string { - return fmt.Sprintf("Hello %s!", name) -} - -// MultipleGreets returns greetings for the given name -func (b *Basic) MultipleGreets(_ string) []string { - return []string{"hi", "hello", "croeso!"} -} - -// RemovePerson Removes the given person -func (b *Basic) RemovePerson(_ *mypackage.Person) { - // dummy -} diff --git a/v2/pkg/parser/testproject/go.mod b/v2/pkg/parser/testproject/go.mod deleted file mode 100644 index 21f9e0d7..00000000 --- a/v2/pkg/parser/testproject/go.mod +++ /dev/null @@ -1,9 +0,0 @@ -module testproject - -go 1.13 - -require ( - github.com/wailsapp/wails/v2 v2.0.0-alpha -) - -replace github.com/wailsapp/wails/v2 v2.0.0-alpha => /home/lea/Data/projects/wails/v2 diff --git a/v2/pkg/parser/testproject/go.sum b/v2/pkg/parser/testproject/go.sum deleted file mode 100644 index dae10cce..00000000 --- a/v2/pkg/parser/testproject/go.sum +++ /dev/null @@ -1,83 +0,0 @@ -github.com/cheekybits/is v0.0.0-20150225183255-68e9c0620927/go.mod h1:h/aW8ynjgkuj+NQRlZcDbAbM1ORAbXjXX77sX7T289U= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= -github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= -github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= -github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= -github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= -github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= -github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI= -github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= -github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= -github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= -github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= -github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/imdario/mergo v0.3.11 h1:3tnifQM4i+fbajXKBHXWEH+KvNHqojZ778UH75j3bGA= -github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= -github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/leaanthony/clir v1.0.4/go.mod h1:k/RBkdkFl18xkkACMCLt09bhiZnrGORoxmomeMvDpE0= -github.com/leaanthony/gosod v0.0.4/go.mod h1:nGMCb1PJfXwBDbOAike78jEYlpqge+xUKFf0iBKjKxU= -github.com/leaanthony/slicer v1.5.0/go.mod h1:FwrApmf8gOrpzEWM2J/9Lh79tyq8KTX5AzRtwV7m4AY= -github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= -github.com/matryer/is v1.4.0/go.mod h1:8I/i5uYgLzgsgEloJE1U6xx5HkBQpAZvepWuujKwMRU= -github.com/matryer/try v0.0.0-20161228173917-9ac251b645a2/go.mod h1:0KeJpeMD6o+O4hW7qJOT7vyQPKrWmj26uf5wMc/IiIs= -github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= -github.com/mattn/go-runewidth v0.0.7/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= -github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= -github.com/olekukonko/tablewriter v0.0.4/go.mod h1:zq6QwlOf5SlnkVbMSr5EoBv3636FWnp+qbPhuoO21uA= -github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/tdewolff/minify v2.3.6+incompatible/go.mod h1:9Ov578KJUmAWpS6NeZwRZyT56Uf6o3Mcz9CEsg8USYs= -github.com/tdewolff/minify/v2 v2.9.5/go.mod h1:jshtBj/uUJH6JX1fuxTLnnHOA1RVJhF5MM+leJzDKb4= -github.com/tdewolff/parse v2.3.4+incompatible/go.mod h1:8oBwCsVmUkgHO8M5iCzSIDtpzXOT0WXX9cWhz+bIzJQ= -github.com/tdewolff/parse/v2 v2.5.3/go.mod h1:WzaJpRSbwq++EIQHYIRTpbYKNA3gn9it1Ik++q4zyho= -github.com/tdewolff/test v1.0.6/go.mod h1:6DAvZliBAAnD7rhVgwaM7DE5/d9NMOAJ09SqYqeK4QE= -github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= -github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= -github.com/xyproto/xpm v1.2.1/go.mod h1:cMnesLsD0PBXLgjDfTDEaKr8XyTFsnP1QycSqRw7BiY= -github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200724161237-0e2f3a69832c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= -golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20200902012652-d1954cc86c82/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -nhooyr.io/websocket v1.8.6/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= diff --git a/v2/pkg/parser/testproject/main.go b/v2/pkg/parser/testproject/main.go deleted file mode 100644 index 0968d911..00000000 --- a/v2/pkg/parser/testproject/main.go +++ /dev/null @@ -1,21 +0,0 @@ -package main - -import ( - "testproject/mypackage" - - "github.com/wailsapp/wails/v2" -) - -func main() { - // Create application with options - app := wails.CreateApp("jsbundle", 1024, 768) - - /***** Struct Literal *****/ - - // Local struct pointer literal *WORKING* - app.Bind(&Basic{}) - - // External struct pointer literal - app.Bind(&mypackage.Manager{}) - -} diff --git a/v2/pkg/parser/testproject/mypackage/mypackage.go b/v2/pkg/parser/testproject/mypackage/mypackage.go deleted file mode 100644 index 5dcac83e..00000000 --- a/v2/pkg/parser/testproject/mypackage/mypackage.go +++ /dev/null @@ -1,36 +0,0 @@ -// Package mypackage does all the things a mypackage can do -package mypackage - -type Address struct { - Number int - Street string - Town string - Postcode string -} - -// Person defines a Person in the application -type Person struct { - // Name is a name - Name string - Age int - Address *Address -} - -// Manager is the Mr Manager -type Manager struct { - Name string - TwoIC *Person -} - -// Hire me some peoples! -func (m *Manager) Hire(name, test string, bob int) *Person { - return &Person{Name: name} -} - -// func NewManagerPointer() *Manager { -// return &Manager{} -// } - -// func NewManager() Manager { -// return Manager{} -// }