├── .DS_Store
├── .gitignore
├── .idea
├── .gitignore
├── JetClient
│ └── state.xml
├── aws.xml
├── go_spider_boss.iml
├── modules.xml
└── vcs.xml
├── README.md
├── app.go
├── boss_spider.go
├── build
├── .DS_Store
├── README.md
├── appicon.png
├── darwin
│ ├── Info.dev.plist
│ └── Info.plist
└── windows
│ ├── .DS_Store
│ ├── icon.ico
│ ├── info.json
│ ├── installer
│ ├── project.nsi
│ └── wails_tools.nsh
│ └── wails.exe.manifest
├── demo_image
├── img.png
├── img_1.png
├── img_2.png
└── img_3.png
├── frontend
├── .DS_Store
├── index.html
├── package-lock.json
├── package.json
├── package.json.md5
├── src
│ ├── .DS_Store
│ ├── App.vue
│ ├── assets
│ │ ├── fonts
│ │ │ ├── OFL.txt
│ │ │ ├── lato400.woff
│ │ │ └── nunito-v16-latin-regular.woff2
│ │ └── images
│ │ │ ├── cool-background.png
│ │ │ └── logo-universal.png
│ ├── components
│ │ ├── colour_card.vue
│ │ ├── input_style.vue
│ │ ├── mofang.vue
│ │ ├── orange_card.vue
│ │ ├── start.vue
│ │ ├── start_button.vue
│ │ └── start_button_black.vue
│ ├── main.js
│ └── style.css
├── vite.config.js
└── wailsjs
│ ├── .DS_Store
│ ├── go
│ └── main
│ │ ├── App.d.ts
│ │ └── App.js
│ └── runtime
│ ├── package.json
│ ├── runtime.d.ts
│ └── runtime.js
├── go.mod
├── go.sum
├── main.go
└── wails.json
/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TaterTotX/go_spider_boss/95c0a114f452cb46aba3104c493c53c6d239cdb0/.DS_Store
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | build/bin
2 | node_modules
3 | frontend/dist
4 |
--------------------------------------------------------------------------------
/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # 默认忽略的文件
2 | /shelf/
3 | /workspace.xml
4 | # 基于编辑器的 HTTP 客户端请求
5 | /httpRequests/
6 | # Datasource local storage ignored files
7 | /dataSources/
8 | /dataSources.local.xml
9 |
--------------------------------------------------------------------------------
/.idea/JetClient/state.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/aws.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/.idea/go_spider_boss.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Boss直聘自动打招呼机器人
2 |
3 | ## 运行效果图
4 |
5 | [
](demo_image/img.png)
6 |
7 | ## [安装包地址](https://github.com/zypotato/go_spider_boss/releases/tag/%E5%AE%89%E8%A3%85%E5%8C%85)
8 |
9 |
10 |
11 |
12 | ## 使用说明
13 | ### **第一步**: 安装浏览器
14 | >需要安装谷歌浏览器 https://www.google.com/intl/zh-CN/chrome/ 建议直接安装在默认路径不要改 防止后面路径报错
15 |
16 | ### **第二步**: 打开程序输入信息
17 | >筛选关键词支持正则表达式 示范: (?i)java开发|算法工程师, 信息全部输入后直接点击启动按钮即可,浏览器和网址都会自动开启
18 |
19 | **注意⚠️ 程序会在你点击启动按钮60秒后会自动打招呼,以下步骤请尽快完成**
20 |
21 | ### **第三步**: 程序启动后会自动开启boss直聘网站(手动关闭其他标签页)
22 | > 登录你的账户,输入你的岗位关键词,选好筛选项地址,岗位要求之类的信息,全部选择好之后进入下一步。(注意把你的自动招呼设置关闭,防止重复打招呼)
23 |
24 |
25 | ### **第四步**: 页面缩放至25% 如下图
26 | [
](demo_image/img_2.png)
27 | >页面设置结束后等待程序自动运行即可
28 | >
29 | >
30 | >希望大家早日找到工作 加油!
31 | >
32 | >
33 | >
34 | [](https://star-history.com/#zypotato/go_spider_boss.git&Date)
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
--------------------------------------------------------------------------------
/app.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import (
4 | "context"
5 | "fmt"
6 | "time"
7 | )
8 |
9 | // App struct
10 | type App struct {
11 | ctx context.Context
12 | }
13 |
14 | // NewApp creates a new App application struct
15 | func NewApp() *App {
16 | return &App{}
17 | }
18 |
19 | // startup is called when the app starts. The context is saved
20 | // so we can call the runtime methods
21 | func (a *App) startup(ctx context.Context) {
22 | a.ctx = ctx
23 | }
24 |
25 | func (a *App) Greet(name, helloText, regexp_text string) string {
26 | // 启动 boss_spider_main 协程
27 | resultChan := make(chan string)
28 | ws := make(chan string)
29 | go func() {
30 | if len(helloText) < 3 {
31 | resultChan <- "报错啦 看看是不是打招呼语忘记填啦"
32 | return
33 | } else if len(regexp_text) < 3 {
34 | resultChan <- "报错啦 看看是不是岗位关键词忘记填啦"
35 | return
36 | }
37 |
38 | go start_chrome_main(ws, resultChan)
39 |
40 | resultChan <- boss_spider_main(ws, helloText, regexp_text)
41 |
42 | }()
43 |
44 | // 设置 1 秒的超时时间
45 | select {
46 | case result := <-resultChan:
47 | // 如果 boss_spider_main 在 1 秒内返回,则返回结果
48 | return fmt.Sprintf(result)
49 | case <-time.After(1 * time.Second):
50 | // 如果 boss_spider_main 在 1 秒内没有返回,则返回启动成功的信息
51 | return fmt.Sprintf("启动成功,请在一分钟内完成操作")
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/boss_spider.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import (
4 | "bufio"
5 | "fmt"
6 | "github.com/go-rod/rod"
7 | "github.com/go-rod/rod/lib/input"
8 | "log"
9 | "os/exec"
10 | "regexp"
11 | "runtime"
12 | "strings"
13 | "time"
14 | )
15 |
16 | // 获取常量信息方法
17 | func get_const_info() (string, string, string, string, string, string, time.Duration) {
18 |
19 | chat_speed := 3 * time.Second
20 | const next_page_element_xpath string = "//*[@class=\"ui-icon-arrow-right\"]"
21 | const job_list_elements_xpath string = "//*[@id=\"wrap\"]//li/div[1]/a/div[1]/span[1]"
22 | const chat_with_boss_elements_xpath string = "//*[@class=\"info-public\"]"
23 | const chat_input_element_xpath string = "//*[@id=\"chat-input\"]"
24 | const send_message_xpath string = "//*[@class=\"btn-v2 btn-sure-v2 btn-send\"]"
25 | const message_history_xpath string = "//*[@class=\"item-myself\"]"
26 | return next_page_element_xpath, job_list_elements_xpath, chat_with_boss_elements_xpath, chat_input_element_xpath, send_message_xpath, message_history_xpath, chat_speed
27 | }
28 |
29 | // BrowserController 结构体,包含一个rod浏览器实例
30 | type BrowserController struct {
31 | Browser *rod.Browser
32 | }
33 |
34 | // NewBrowserController 用于创建BrowserController实例的函数
35 | func NewBrowserController(url string) (*BrowserController, error) {
36 | // 使用提供的URL创建一个新的浏览器实例
37 | browser := rod.New().ControlURL(url).MustConnect()
38 | return &BrowserController{Browser: browser}, nil
39 | }
40 |
41 | // 打招呼方法
42 | func page_message_send(bc *BrowserController, message_history_xpath, chat_input_element_xpath, hello_text, send_message_xpath string, chat_speed time.Duration) {
43 | pages, _ := bc.Browser.Pages()
44 | page := pages[0]
45 | message_history_elements, _ := page.ElementsX(message_history_xpath)
46 | //判断是否有消息发送记录
47 | if len(message_history_elements) == 0 {
48 | chat_input_element := page.MustElementX(chat_input_element_xpath)
49 | err := chat_input_element.Input(hello_text)
50 | if err != nil {
51 | fmt.Println(err.Error())
52 | }
53 | time.Sleep(chat_speed)
54 |
55 | send_message_element := page.MustElementX(send_message_xpath)
56 | send_message_element.MustClick()
57 | time.Sleep(chat_speed)
58 | page.MustNavigateBack()
59 |
60 | } else {
61 | page.MustNavigateBack()
62 | }
63 |
64 | }
65 |
66 | func boss_spider_main(ws chan string, hello_text, regexp_text string) string {
67 | u := <-ws
68 |
69 | //定义常量
70 | next_page_element_xpath, job_list_elements_xpath, chat_with_boss_elements_xpath, chat_input_element_xpath, send_message_xpath, message_history_xpath, chat_speed := get_const_info()
71 |
72 | boss_spider, _ := NewBrowserController(u)
73 | time.Sleep(5 * time.Second)
74 | boss_spider.Browser.MustPage().MustNavigate("https://www.zhipin.com/web/geek/job?query=")
75 | time.Sleep(60 * time.Second)
76 |
77 | ////翻页次数
78 | for i := 0; i < 11; i++ {
79 |
80 | //获取页面元素信息
81 | pages, err := boss_spider.Browser.Pages()
82 | if err != nil {
83 | return "报错啦 看看是不是信息没填对呀"
84 | } else if len(pages) == 0 {
85 | // 如果没有错误,但是pages的长度为0,说明没有获取到页面
86 | return "报错啦,没有获取到页面信息 看看是不是信息没填对呀"
87 | }
88 | page := pages[0]
89 | job_list_elements, _ := page.ElementsX(job_list_elements_xpath)
90 | next_page_element, _ := page.ElementX(next_page_element_xpath)
91 | chat_with_boss_elements, _ := page.ElementsX(chat_with_boss_elements_xpath)
92 |
93 | //获取当前页面岗位信息
94 | for j := 0; j < len(job_list_elements); j++ {
95 |
96 | //重新定位
97 | pages, _ = boss_spider.Browser.Pages()
98 | page = pages[0]
99 | job_list_elements, _ = page.ElementsX(job_list_elements_xpath)
100 | chat_with_boss_elements, _ = page.ElementsX(chat_with_boss_elements_xpath)
101 | key_todo := page.Keyboard
102 | mouse_todo := page.Mouse
103 |
104 | //获取岗位和聊天信息
105 | job_name, _ := job_list_elements[j].Text()
106 | chat_with_boss_element := chat_with_boss_elements[j]
107 |
108 | if j > 16 {
109 | for n := 0; n < 4; n++ {
110 | key_todo.MustType(input.PageDown)
111 | time.Sleep(time.Second * 1)
112 | mouse_todo.MustMoveTo(1.2, 1.2)
113 | }
114 |
115 | }
116 |
117 | //判断岗位是否符合条件
118 | pattern := regexp.MustCompile(regexp_text)
119 | if pattern.MatchString(job_name) {
120 | fmt.Println(job_name, chat_with_boss_element)
121 |
122 | //点击跳转
123 | wait := page.MustWaitNavigation()
124 | chat_with_boss_element.MustClick()
125 | pages, _ = boss_spider.Browser.Pages()
126 | page = pages[0]
127 | wait()
128 | time.Sleep(chat_speed)
129 |
130 | //发送消息并返回
131 | page_message_send(boss_spider, message_history_xpath, chat_input_element_xpath, hello_text, send_message_xpath, chat_speed)
132 | time.Sleep(chat_speed)
133 |
134 | }
135 | }
136 | pages, _ = boss_spider.Browser.Pages()
137 | page = pages[0]
138 | next_page_element, _ = page.ElementX(next_page_element_xpath)
139 | next_page_element.MustClick()
140 | time.Sleep(chat_speed)
141 |
142 | }
143 | return ""
144 |
145 | }
146 |
147 | func start_chrome_main(wsChan, resultChan chan string) {
148 | // 创建一个字符串通道用于在协程之间传递 WebSocket URL
149 |
150 | chrome := "C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe"
151 | if runtime.GOOS == "darwin" {
152 | chrome = "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
153 | }
154 | cmd := exec.Command(chrome, "--remote-debugging-port=9222")
155 |
156 | // 获取命令的标准输出管道
157 | stdoutPipe, _ := cmd.StdoutPipe()
158 | // 获取命令的标准错误输出管道
159 | stderrPipe, _ := cmd.StderrPipe()
160 |
161 | // 启动命令
162 | if err := cmd.Start(); err != nil {
163 |
164 | log.Printf("命令启动失败:", err)
165 | resultChan <- "浏览器启动失败,请检查浏览器启动路径是否在C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe 并以管理员身份运行此程序"
166 |
167 | return
168 | }
169 |
170 | // 创建一个 go 协程来读取标准输出
171 | go func() {
172 | scanner := bufio.NewScanner(stdoutPipe)
173 | for scanner.Scan() {
174 | fmt.Println(scanner.Text())
175 | }
176 | }()
177 |
178 | // 创建另一个 go 协程来读取标准错误输出
179 | go func() {
180 | scanner := bufio.NewScanner(stderrPipe)
181 | for scanner.Scan() {
182 | line := scanner.Text()
183 | // 检查行是否包含特定的前缀
184 | if strings.HasPrefix(line, "DevTools listening on") {
185 | // 使用 Split 函数分割字符串并获取 "on" 之后的部分
186 | parts := strings.Split(line, "on ")
187 | if len(parts) > 1 {
188 | // 打印 "on" 之后的部分
189 | wsChan <- parts[1]
190 | break // 如果您只想打印第一次出现的地址,请加上 break
191 | }
192 | }
193 | }
194 | close(wsChan) // 关闭通道,表示没有更多的值会被发送
195 | }()
196 |
197 | // 等待命令完成
198 | if err := cmd.Wait(); err != nil {
199 | fmt.Println("命令执行出错:", err)
200 | }
201 |
202 | }
203 |
--------------------------------------------------------------------------------
/build/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TaterTotX/go_spider_boss/95c0a114f452cb46aba3104c493c53c6d239cdb0/build/.DS_Store
--------------------------------------------------------------------------------
/build/README.md:
--------------------------------------------------------------------------------
1 | # Build Directory
2 |
3 | The build directory is used to house all the build files and assets for your application.
4 |
5 | The structure is:
6 |
7 | * bin - Output directory
8 | * darwin - macOS specific files
9 | * windows - Windows specific files
10 |
11 | ## Mac
12 |
13 | The `darwin` directory holds files specific to Mac builds.
14 | These may be customised and used as part of the build. To return these files to the default state, simply delete them
15 | and
16 | build with `wails build`.
17 |
18 | The directory contains the following files:
19 |
20 | - `Info.plist` - the main plist file used for Mac builds. It is used when building using `wails build`.
21 | - `Info.dev.plist` - same as the main plist file but used when building using `wails dev`.
22 |
23 | ## Windows
24 |
25 | The `windows` directory contains the manifest and rc files used when building with `wails build`.
26 | These may be customised for your application. To return these files to the default state, simply delete them and
27 | build with `wails build`.
28 |
29 | - `icon.ico` - The icon used for the application. This is used when building using `wails build`. If you wish to
30 | use a different icon, simply replace this file with your own. If it is missing, a new `icon.ico` file
31 | will be created using the `appicon.png` file in the build directory.
32 | - `installer/*` - The files used to create the Windows installer. These are used when building using `wails build`.
33 | - `info.json` - Application details used for Windows builds. The data here will be used by the Windows installer,
34 | as well as the application itself (right click the exe -> properties -> details)
35 | - `wails.exe.manifest` - The main application manifest file.
--------------------------------------------------------------------------------
/build/appicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TaterTotX/go_spider_boss/95c0a114f452cb46aba3104c493c53c6d239cdb0/build/appicon.png
--------------------------------------------------------------------------------
/build/darwin/Info.dev.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | CFBundlePackageType
5 | APPL
6 | CFBundleName
7 | {{.Info.ProductName}}
8 | CFBundleExecutable
9 | {{.Name}}
10 | CFBundleIdentifier
11 | com.wails.{{.Name}}
12 | CFBundleVersion
13 | {{.Info.ProductVersion}}
14 | CFBundleGetInfoString
15 | {{.Info.Comments}}
16 | CFBundleShortVersionString
17 | {{.Info.ProductVersion}}
18 | CFBundleIconFile
19 | iconfile
20 | LSMinimumSystemVersion
21 | 10.13.0
22 | NSHighResolutionCapable
23 | true
24 | NSHumanReadableCopyright
25 | {{.Info.Copyright}}
26 | {{if .Info.FileAssociations}}
27 | CFBundleDocumentTypes
28 |
29 | {{range .Info.FileAssociations}}
30 |
31 | CFBundleTypeExtensions
32 |
33 | {{.Ext}}
34 |
35 | CFBundleTypeName
36 | {{.Name}}
37 | CFBundleTypeRole
38 | {{.Role}}
39 | CFBundleTypeIconFile
40 | {{.IconName}}
41 |
42 | {{end}}
43 |
44 | {{end}}
45 | {{if .Info.Protocols}}
46 | CFBundleURLTypes
47 |
48 | {{range .Info.Protocols}}
49 |
50 | CFBundleURLName
51 | com.wails.{{.Scheme}}
52 | CFBundleURLSchemes
53 |
54 | {{.Scheme}}
55 |
56 | CFBundleTypeRole
57 | {{.Role}}
58 |
59 | {{end}}
60 |
61 | {{end}}
62 | NSAppTransportSecurity
63 |
64 | NSAllowsLocalNetworking
65 |
66 |
67 |
68 |
69 |
--------------------------------------------------------------------------------
/build/darwin/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | CFBundlePackageType
5 | APPL
6 | CFBundleName
7 | {{.Info.ProductName}}
8 | CFBundleExecutable
9 | {{.Name}}
10 | CFBundleIdentifier
11 | com.wails.{{.Name}}
12 | CFBundleVersion
13 | {{.Info.ProductVersion}}
14 | CFBundleGetInfoString
15 | {{.Info.Comments}}
16 | CFBundleShortVersionString
17 | {{.Info.ProductVersion}}
18 | CFBundleIconFile
19 | iconfile
20 | LSMinimumSystemVersion
21 | 10.13.0
22 | NSHighResolutionCapable
23 | true
24 | NSHumanReadableCopyright
25 | {{.Info.Copyright}}
26 | {{if .Info.FileAssociations}}
27 | CFBundleDocumentTypes
28 |
29 | {{range .Info.FileAssociations}}
30 |
31 | CFBundleTypeExtensions
32 |
33 | {{.Ext}}
34 |
35 | CFBundleTypeName
36 | {{.Name}}
37 | CFBundleTypeRole
38 | {{.Role}}
39 | CFBundleTypeIconFile
40 | {{.IconName}}
41 |
42 | {{end}}
43 |
44 | {{end}}
45 | {{if .Info.Protocols}}
46 | CFBundleURLTypes
47 |
48 | {{range .Info.Protocols}}
49 |
50 | CFBundleURLName
51 | com.wails.{{.Scheme}}
52 | CFBundleURLSchemes
53 |
54 | {{.Scheme}}
55 |
56 | CFBundleTypeRole
57 | {{.Role}}
58 |
59 | {{end}}
60 |
61 | {{end}}
62 |
63 |
64 |
--------------------------------------------------------------------------------
/build/windows/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TaterTotX/go_spider_boss/95c0a114f452cb46aba3104c493c53c6d239cdb0/build/windows/.DS_Store
--------------------------------------------------------------------------------
/build/windows/icon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TaterTotX/go_spider_boss/95c0a114f452cb46aba3104c493c53c6d239cdb0/build/windows/icon.ico
--------------------------------------------------------------------------------
/build/windows/info.json:
--------------------------------------------------------------------------------
1 | {
2 | "fixed": {
3 | "file_version": "{{.Info.ProductVersion}}"
4 | },
5 | "info": {
6 | "0000": {
7 | "ProductVersion": "{{.Info.ProductVersion}}",
8 | "CompanyName": "{{.Info.CompanyName}}",
9 | "FileDescription": "{{.Info.ProductName}}",
10 | "LegalCopyright": "{{.Info.Copyright}}",
11 | "ProductName": "{{.Info.ProductName}}",
12 | "Comments": "{{.Info.Comments}}"
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/build/windows/installer/project.nsi:
--------------------------------------------------------------------------------
1 | Unicode true
2 |
3 | ####
4 | ## Please note: Template replacements don't work in this file. They are provided with default defines like
5 | ## mentioned underneath.
6 | ## If the keyword is not defined, "wails_tools.nsh" will populate them with the values from ProjectInfo.
7 | ## If they are defined here, "wails_tools.nsh" will not touch them. This allows to use this project.nsi manually
8 | ## from outside of Wails for debugging and development of the installer.
9 | ##
10 | ## For development first make a wails nsis build to populate the "wails_tools.nsh":
11 | ## > wails build --target windows/amd64 --nsis
12 | ## Then you can call makensis on this file with specifying the path to your binary:
13 | ## For a AMD64 only installer:
14 | ## > makensis -DARG_WAILS_AMD64_BINARY=..\..\bin\app.exe
15 | ## For a ARM64 only installer:
16 | ## > makensis -DARG_WAILS_ARM64_BINARY=..\..\bin\app.exe
17 | ## For a installer with both architectures:
18 | ## > makensis -DARG_WAILS_AMD64_BINARY=..\..\bin\app-amd64.exe -DARG_WAILS_ARM64_BINARY=..\..\bin\app-arm64.exe
19 | ####
20 | ## The following information is taken from the ProjectInfo file, but they can be overwritten here.
21 | ####
22 | ## !define INFO_PROJECTNAME "MyProject" # Default "{{.Name}}"
23 | ## !define INFO_COMPANYNAME "MyCompany" # Default "{{.Info.CompanyName}}"
24 | ## !define INFO_PRODUCTNAME "MyProduct" # Default "{{.Info.ProductName}}"
25 | ## !define INFO_PRODUCTVERSION "1.0.0" # Default "{{.Info.ProductVersion}}"
26 | ## !define INFO_COPYRIGHT "Copyright" # Default "{{.Info.Copyright}}"
27 | ###
28 | ## !define PRODUCT_EXECUTABLE "Application.exe" # Default "${INFO_PROJECTNAME}.exe"
29 | ## !define UNINST_KEY_NAME "UninstKeyInRegistry" # Default "${INFO_COMPANYNAME}${INFO_PRODUCTNAME}"
30 | ####
31 | ## !define REQUEST_EXECUTION_LEVEL "admin" # Default "admin" see also https://nsis.sourceforge.io/Docs/Chapter4.html
32 | ####
33 | ## Include the wails tools
34 | ####
35 | !include "wails_tools.nsh"
36 |
37 | # The version information for this two must consist of 4 parts
38 | VIProductVersion "${INFO_PRODUCTVERSION}.0"
39 | VIFileVersion "${INFO_PRODUCTVERSION}.0"
40 |
41 | VIAddVersionKey "CompanyName" "${INFO_COMPANYNAME}"
42 | VIAddVersionKey "FileDescription" "${INFO_PRODUCTNAME} Installer"
43 | VIAddVersionKey "ProductVersion" "${INFO_PRODUCTVERSION}"
44 | VIAddVersionKey "FileVersion" "${INFO_PRODUCTVERSION}"
45 | VIAddVersionKey "LegalCopyright" "${INFO_COPYRIGHT}"
46 | VIAddVersionKey "ProductName" "${INFO_PRODUCTNAME}"
47 |
48 | # Enable HiDPI support. https://nsis.sourceforge.io/Reference/ManifestDPIAware
49 | ManifestDPIAware true
50 |
51 | !include "MUI.nsh"
52 |
53 | !define MUI_ICON "..\icon.ico"
54 | !define MUI_UNICON "..\icon.ico"
55 | # !define MUI_WELCOMEFINISHPAGE_BITMAP "resources\leftimage.bmp" #Include this to add a bitmap on the left side of the Welcome Page. Must be a size of 164x314
56 | !define MUI_FINISHPAGE_NOAUTOCLOSE # Wait on the INSTFILES page so the user can take a look into the details of the installation steps
57 | !define MUI_ABORTWARNING # This will warn the user if they exit from the installer.
58 |
59 | !insertmacro MUI_PAGE_WELCOME # Welcome to the installer page.
60 | # !insertmacro MUI_PAGE_LICENSE "resources\eula.txt" # Adds a EULA page to the installer
61 | !insertmacro MUI_PAGE_DIRECTORY # In which folder install page.
62 | !insertmacro MUI_PAGE_INSTFILES # Installing page.
63 | !insertmacro MUI_PAGE_FINISH # Finished installation page.
64 |
65 | !insertmacro MUI_UNPAGE_INSTFILES # Uinstalling page
66 |
67 | !insertmacro MUI_LANGUAGE "English" # Set the Language of the installer
68 |
69 | ## The following two statements can be used to sign the installer and the uninstaller. The path to the binaries are provided in %1
70 | #!uninstfinalize 'signtool --file "%1"'
71 | #!finalize 'signtool --file "%1"'
72 |
73 | Name "${INFO_PRODUCTNAME}"
74 | OutFile "..\..\bin\${INFO_PROJECTNAME}-${ARCH}-installer.exe" # Name of the installer's file.
75 | InstallDir "$PROGRAMFILES64\${INFO_COMPANYNAME}\${INFO_PRODUCTNAME}" # Default installing folder ($PROGRAMFILES is Program Files folder).
76 | ShowInstDetails show # This will always show the installation details.
77 |
78 | Function .onInit
79 | !insertmacro wails.checkArchitecture
80 | FunctionEnd
81 |
82 | Section
83 | !insertmacro wails.setShellContext
84 |
85 | !insertmacro wails.webview2runtime
86 |
87 | SetOutPath $INSTDIR
88 |
89 | !insertmacro wails.files
90 |
91 | CreateShortcut "$SMPROGRAMS\${INFO_PRODUCTNAME}.lnk" "$INSTDIR\${PRODUCT_EXECUTABLE}"
92 | CreateShortCut "$DESKTOP\${INFO_PRODUCTNAME}.lnk" "$INSTDIR\${PRODUCT_EXECUTABLE}"
93 |
94 | !insertmacro wails.associateFiles
95 | !insertmacro wails.associateCustomProtocols
96 |
97 | !insertmacro wails.writeUninstaller
98 | SectionEnd
99 |
100 | Section "uninstall"
101 | !insertmacro wails.setShellContext
102 |
103 | RMDir /r "$AppData\${PRODUCT_EXECUTABLE}" # Remove the WebView2 DataPath
104 |
105 | RMDir /r $INSTDIR
106 |
107 | Delete "$SMPROGRAMS\${INFO_PRODUCTNAME}.lnk"
108 | Delete "$DESKTOP\${INFO_PRODUCTNAME}.lnk"
109 |
110 | !insertmacro wails.unassociateFiles
111 | !insertmacro wails.unassociateCustomProtocols
112 |
113 | !insertmacro wails.deleteUninstaller
114 | SectionEnd
115 |
--------------------------------------------------------------------------------
/build/windows/installer/wails_tools.nsh:
--------------------------------------------------------------------------------
1 | # DO NOT EDIT - Generated automatically by `wails build`
2 |
3 | !include "x64.nsh"
4 | !include "WinVer.nsh"
5 | !include "FileFunc.nsh"
6 |
7 | !ifndef INFO_PROJECTNAME
8 | !define INFO_PROJECTNAME "{{.Name}}"
9 | !endif
10 | !ifndef INFO_COMPANYNAME
11 | !define INFO_COMPANYNAME "{{.Info.CompanyName}}"
12 | !endif
13 | !ifndef INFO_PRODUCTNAME
14 | !define INFO_PRODUCTNAME "{{.Info.ProductName}}"
15 | !endif
16 | !ifndef INFO_PRODUCTVERSION
17 | !define INFO_PRODUCTVERSION "{{.Info.ProductVersion}}"
18 | !endif
19 | !ifndef INFO_COPYRIGHT
20 | !define INFO_COPYRIGHT "{{.Info.Copyright}}"
21 | !endif
22 | !ifndef PRODUCT_EXECUTABLE
23 | !define PRODUCT_EXECUTABLE "${INFO_PROJECTNAME}.exe"
24 | !endif
25 | !ifndef UNINST_KEY_NAME
26 | !define UNINST_KEY_NAME "${INFO_COMPANYNAME}${INFO_PRODUCTNAME}"
27 | !endif
28 | !define UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${UNINST_KEY_NAME}"
29 |
30 | !ifndef REQUEST_EXECUTION_LEVEL
31 | !define REQUEST_EXECUTION_LEVEL "admin"
32 | !endif
33 |
34 | RequestExecutionLevel "${REQUEST_EXECUTION_LEVEL}"
35 |
36 | !ifdef ARG_WAILS_AMD64_BINARY
37 | !define SUPPORTS_AMD64
38 | !endif
39 |
40 | !ifdef ARG_WAILS_ARM64_BINARY
41 | !define SUPPORTS_ARM64
42 | !endif
43 |
44 | !ifdef SUPPORTS_AMD64
45 | !ifdef SUPPORTS_ARM64
46 | !define ARCH "amd64_arm64"
47 | !else
48 | !define ARCH "amd64"
49 | !endif
50 | !else
51 | !ifdef SUPPORTS_ARM64
52 | !define ARCH "arm64"
53 | !else
54 | !error "Wails: Undefined ARCH, please provide at least one of ARG_WAILS_AMD64_BINARY or ARG_WAILS_ARM64_BINARY"
55 | !endif
56 | !endif
57 |
58 | !macro wails.checkArchitecture
59 | !ifndef WAILS_WIN10_REQUIRED
60 | !define WAILS_WIN10_REQUIRED "This product is only supported on Windows 10 (Server 2016) and later."
61 | !endif
62 |
63 | !ifndef WAILS_ARCHITECTURE_NOT_SUPPORTED
64 | !define WAILS_ARCHITECTURE_NOT_SUPPORTED "This product can't be installed on the current Windows architecture. Supports: ${ARCH}"
65 | !endif
66 |
67 | ${If} ${AtLeastWin10}
68 | !ifdef SUPPORTS_AMD64
69 | ${if} ${IsNativeAMD64}
70 | Goto ok
71 | ${EndIf}
72 | !endif
73 |
74 | !ifdef SUPPORTS_ARM64
75 | ${if} ${IsNativeARM64}
76 | Goto ok
77 | ${EndIf}
78 | !endif
79 |
80 | IfSilent silentArch notSilentArch
81 | silentArch:
82 | SetErrorLevel 65
83 | Abort
84 | notSilentArch:
85 | MessageBox MB_OK "${WAILS_ARCHITECTURE_NOT_SUPPORTED}"
86 | Quit
87 | ${else}
88 | IfSilent silentWin notSilentWin
89 | silentWin:
90 | SetErrorLevel 64
91 | Abort
92 | notSilentWin:
93 | MessageBox MB_OK "${WAILS_WIN10_REQUIRED}"
94 | Quit
95 | ${EndIf}
96 |
97 | ok:
98 | !macroend
99 |
100 | !macro wails.files
101 | !ifdef SUPPORTS_AMD64
102 | ${if} ${IsNativeAMD64}
103 | File "/oname=${PRODUCT_EXECUTABLE}" "${ARG_WAILS_AMD64_BINARY}"
104 | ${EndIf}
105 | !endif
106 |
107 | !ifdef SUPPORTS_ARM64
108 | ${if} ${IsNativeARM64}
109 | File "/oname=${PRODUCT_EXECUTABLE}" "${ARG_WAILS_ARM64_BINARY}"
110 | ${EndIf}
111 | !endif
112 | !macroend
113 |
114 | !macro wails.writeUninstaller
115 | WriteUninstaller "$INSTDIR\uninstall.exe"
116 |
117 | SetRegView 64
118 | WriteRegStr HKLM "${UNINST_KEY}" "Publisher" "${INFO_COMPANYNAME}"
119 | WriteRegStr HKLM "${UNINST_KEY}" "DisplayName" "${INFO_PRODUCTNAME}"
120 | WriteRegStr HKLM "${UNINST_KEY}" "DisplayVersion" "${INFO_PRODUCTVERSION}"
121 | WriteRegStr HKLM "${UNINST_KEY}" "DisplayIcon" "$INSTDIR\${PRODUCT_EXECUTABLE}"
122 | WriteRegStr HKLM "${UNINST_KEY}" "UninstallString" "$\"$INSTDIR\uninstall.exe$\""
123 | WriteRegStr HKLM "${UNINST_KEY}" "QuietUninstallString" "$\"$INSTDIR\uninstall.exe$\" /S"
124 |
125 | ${GetSize} "$INSTDIR" "/S=0K" $0 $1 $2
126 | IntFmt $0 "0x%08X" $0
127 | WriteRegDWORD HKLM "${UNINST_KEY}" "EstimatedSize" "$0"
128 | !macroend
129 |
130 | !macro wails.deleteUninstaller
131 | Delete "$INSTDIR\uninstall.exe"
132 |
133 | SetRegView 64
134 | DeleteRegKey HKLM "${UNINST_KEY}"
135 | !macroend
136 |
137 | !macro wails.setShellContext
138 | ${If} ${REQUEST_EXECUTION_LEVEL} == "admin"
139 | SetShellVarContext all
140 | ${else}
141 | SetShellVarContext current
142 | ${EndIf}
143 | !macroend
144 |
145 | # Install webview2 by launching the bootstrapper
146 | # See https://docs.microsoft.com/en-us/microsoft-edge/webview2/concepts/distribution#online-only-deployment
147 | !macro wails.webview2runtime
148 | !ifndef WAILS_INSTALL_WEBVIEW_DETAILPRINT
149 | !define WAILS_INSTALL_WEBVIEW_DETAILPRINT "Installing: WebView2 Runtime"
150 | !endif
151 |
152 | SetRegView 64
153 | # If the admin key exists and is not empty then webview2 is already installed
154 | ReadRegStr $0 HKLM "SOFTWARE\WOW6432Node\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}" "pv"
155 | ${If} $0 != ""
156 | Goto ok
157 | ${EndIf}
158 |
159 | ${If} ${REQUEST_EXECUTION_LEVEL} == "user"
160 | # If the installer is run in user level, check the user specific key exists and is not empty then webview2 is already installed
161 | ReadRegStr $0 HKCU "Software\Microsoft\EdgeUpdate\Clients{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}" "pv"
162 | ${If} $0 != ""
163 | Goto ok
164 | ${EndIf}
165 | ${EndIf}
166 |
167 | SetDetailsPrint both
168 | DetailPrint "${WAILS_INSTALL_WEBVIEW_DETAILPRINT}"
169 | SetDetailsPrint listonly
170 |
171 | InitPluginsDir
172 | CreateDirectory "$pluginsdir\webview2bootstrapper"
173 | SetOutPath "$pluginsdir\webview2bootstrapper"
174 | File "tmp\MicrosoftEdgeWebview2Setup.exe"
175 | ExecWait '"$pluginsdir\webview2bootstrapper\MicrosoftEdgeWebview2Setup.exe" /silent /install'
176 |
177 | SetDetailsPrint both
178 | ok:
179 | !macroend
180 |
181 | # Copy of APP_ASSOCIATE and APP_UNASSOCIATE macros from here https://gist.github.com/nikku/281d0ef126dbc215dd58bfd5b3a5cd5b
182 | !macro APP_ASSOCIATE EXT FILECLASS DESCRIPTION ICON COMMANDTEXT COMMAND
183 | ; Backup the previously associated file class
184 | ReadRegStr $R0 SHELL_CONTEXT "Software\Classes\.${EXT}" ""
185 | WriteRegStr SHELL_CONTEXT "Software\Classes\.${EXT}" "${FILECLASS}_backup" "$R0"
186 |
187 | WriteRegStr SHELL_CONTEXT "Software\Classes\.${EXT}" "" "${FILECLASS}"
188 |
189 | WriteRegStr SHELL_CONTEXT "Software\Classes\${FILECLASS}" "" `${DESCRIPTION}`
190 | WriteRegStr SHELL_CONTEXT "Software\Classes\${FILECLASS}\DefaultIcon" "" `${ICON}`
191 | WriteRegStr SHELL_CONTEXT "Software\Classes\${FILECLASS}\shell" "" "open"
192 | WriteRegStr SHELL_CONTEXT "Software\Classes\${FILECLASS}\shell\open" "" `${COMMANDTEXT}`
193 | WriteRegStr SHELL_CONTEXT "Software\Classes\${FILECLASS}\shell\open\command" "" `${COMMAND}`
194 | !macroend
195 |
196 | !macro APP_UNASSOCIATE EXT FILECLASS
197 | ; Backup the previously associated file class
198 | ReadRegStr $R0 SHELL_CONTEXT "Software\Classes\.${EXT}" `${FILECLASS}_backup`
199 | WriteRegStr SHELL_CONTEXT "Software\Classes\.${EXT}" "" "$R0"
200 |
201 | DeleteRegKey SHELL_CONTEXT `Software\Classes\${FILECLASS}`
202 | !macroend
203 |
204 | !macro wails.associateFiles
205 | ; Create file associations
206 | {{range .Info.FileAssociations}}
207 | !insertmacro APP_ASSOCIATE "{{.Ext}}" "{{.Name}}" "{{.Description}}" "$INSTDIR\{{.IconName}}.ico" "Open with ${INFO_PRODUCTNAME}" "$INSTDIR\${PRODUCT_EXECUTABLE} $\"%1$\""
208 |
209 | File "..\{{.IconName}}.ico"
210 | {{end}}
211 | !macroend
212 |
213 | !macro wails.unassociateFiles
214 | ; Delete app associations
215 | {{range .Info.FileAssociations}}
216 | !insertmacro APP_UNASSOCIATE "{{.Ext}}" "{{.Name}}"
217 |
218 | Delete "$INSTDIR\{{.IconName}}.ico"
219 | {{end}}
220 | !macroend
221 |
222 | !macro CUSTOM_PROTOCOL_ASSOCIATE PROTOCOL DESCRIPTION ICON COMMAND
223 | DeleteRegKey SHELL_CONTEXT "Software\Classes\${PROTOCOL}"
224 | WriteRegStr SHELL_CONTEXT "Software\Classes\${PROTOCOL}" "" "${DESCRIPTION}"
225 | WriteRegStr SHELL_CONTEXT "Software\Classes\${PROTOCOL}" "URL Protocol" ""
226 | WriteRegStr SHELL_CONTEXT "Software\Classes\${PROTOCOL}\DefaultIcon" "" "${ICON}"
227 | WriteRegStr SHELL_CONTEXT "Software\Classes\${PROTOCOL}\shell" "" ""
228 | WriteRegStr SHELL_CONTEXT "Software\Classes\${PROTOCOL}\shell\open" "" ""
229 | WriteRegStr SHELL_CONTEXT "Software\Classes\${PROTOCOL}\shell\open\command" "" "${COMMAND}"
230 | !macroend
231 |
232 | !macro CUSTOM_PROTOCOL_UNASSOCIATE PROTOCOL
233 | DeleteRegKey SHELL_CONTEXT "Software\Classes\${PROTOCOL}"
234 | !macroend
235 |
236 | !macro wails.associateCustomProtocols
237 | ; Create custom protocols associations
238 | {{range .Info.Protocols}}
239 | !insertmacro CUSTOM_PROTOCOL_ASSOCIATE "{{.Scheme}}" "{{.Description}}" "$INSTDIR\${PRODUCT_EXECUTABLE},0" "$INSTDIR\${PRODUCT_EXECUTABLE} $\"%1$\""
240 |
241 | {{end}}
242 | !macroend
243 |
244 | !macro wails.unassociateCustomProtocols
245 | ; Delete app custom protocol associations
246 | {{range .Info.Protocols}}
247 | !insertmacro CUSTOM_PROTOCOL_UNASSOCIATE "{{.Scheme}}"
248 | {{end}}
249 | !macroend
250 |
--------------------------------------------------------------------------------
/build/windows/wails.exe.manifest:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 | true/pm
12 | permonitorv2,permonitor
13 |
14 |
15 |
--------------------------------------------------------------------------------
/demo_image/img.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TaterTotX/go_spider_boss/95c0a114f452cb46aba3104c493c53c6d239cdb0/demo_image/img.png
--------------------------------------------------------------------------------
/demo_image/img_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TaterTotX/go_spider_boss/95c0a114f452cb46aba3104c493c53c6d239cdb0/demo_image/img_1.png
--------------------------------------------------------------------------------
/demo_image/img_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TaterTotX/go_spider_boss/95c0a114f452cb46aba3104c493c53c6d239cdb0/demo_image/img_2.png
--------------------------------------------------------------------------------
/demo_image/img_3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TaterTotX/go_spider_boss/95c0a114f452cb46aba3104c493c53c6d239cdb0/demo_image/img_3.png
--------------------------------------------------------------------------------
/frontend/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TaterTotX/go_spider_boss/95c0a114f452cb46aba3104c493c53c6d239cdb0/frontend/.DS_Store
--------------------------------------------------------------------------------
/frontend/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | boss直聘自动打招呼机器人
7 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/frontend/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "frontend",
3 | "version": "0.0.0",
4 | "lockfileVersion": 3,
5 | "requires": true,
6 | "packages": {
7 | "": {
8 | "name": "frontend",
9 | "version": "0.0.0",
10 | "dependencies": {
11 | "vue": "^3.2.37"
12 | },
13 | "devDependencies": {
14 | "@vitejs/plugin-vue": "^3.0.3",
15 | "vite": "^3.0.7"
16 | }
17 | },
18 | "node_modules/@babel/parser": {
19 | "version": "7.24.1",
20 | "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.24.1.tgz",
21 | "integrity": "sha512-Zo9c7N3xdOIQrNip7Lc9wvRPzlRtovHVE4lkz8WEDr7uYh/GMQhSiIgFxGIArRHYdJE5kxtZjAf8rT0xhdLCzg==",
22 | "bin": {
23 | "parser": "bin/babel-parser.js"
24 | },
25 | "engines": {
26 | "node": ">=6.0.0"
27 | }
28 | },
29 | "node_modules/@esbuild/android-arm": {
30 | "version": "0.15.18",
31 | "resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.15.18.tgz",
32 | "integrity": "sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==",
33 | "cpu": [
34 | "arm"
35 | ],
36 | "dev": true,
37 | "optional": true,
38 | "os": [
39 | "android"
40 | ],
41 | "engines": {
42 | "node": ">=12"
43 | }
44 | },
45 | "node_modules/@esbuild/linux-loong64": {
46 | "version": "0.15.18",
47 | "resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.15.18.tgz",
48 | "integrity": "sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==",
49 | "cpu": [
50 | "loong64"
51 | ],
52 | "dev": true,
53 | "optional": true,
54 | "os": [
55 | "linux"
56 | ],
57 | "engines": {
58 | "node": ">=12"
59 | }
60 | },
61 | "node_modules/@jridgewell/sourcemap-codec": {
62 | "version": "1.4.15",
63 | "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
64 | "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg=="
65 | },
66 | "node_modules/@vitejs/plugin-vue": {
67 | "version": "3.2.0",
68 | "resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-3.2.0.tgz",
69 | "integrity": "sha512-E0tnaL4fr+qkdCNxJ+Xd0yM31UwMkQje76fsDVBBUCoGOUPexu2VDUYHL8P4CwV+zMvWw6nlRw19OnRKmYAJpw==",
70 | "dev": true,
71 | "engines": {
72 | "node": "^14.18.0 || >=16.0.0"
73 | },
74 | "peerDependencies": {
75 | "vite": "^3.0.0",
76 | "vue": "^3.2.25"
77 | }
78 | },
79 | "node_modules/@vue/compiler-core": {
80 | "version": "3.4.21",
81 | "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.4.21.tgz",
82 | "integrity": "sha512-MjXawxZf2SbZszLPYxaFCjxfibYrzr3eYbKxwpLR9EQN+oaziSu3qKVbwBERj1IFIB8OLUewxB5m/BFzi613og==",
83 | "dependencies": {
84 | "@babel/parser": "^7.23.9",
85 | "@vue/shared": "3.4.21",
86 | "entities": "^4.5.0",
87 | "estree-walker": "^2.0.2",
88 | "source-map-js": "^1.0.2"
89 | }
90 | },
91 | "node_modules/@vue/compiler-dom": {
92 | "version": "3.4.21",
93 | "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.4.21.tgz",
94 | "integrity": "sha512-IZC6FKowtT1sl0CR5DpXSiEB5ayw75oT2bma1BEhV7RRR1+cfwLrxc2Z8Zq/RGFzJ8w5r9QtCOvTjQgdn0IKmA==",
95 | "dependencies": {
96 | "@vue/compiler-core": "3.4.21",
97 | "@vue/shared": "3.4.21"
98 | }
99 | },
100 | "node_modules/@vue/compiler-sfc": {
101 | "version": "3.4.21",
102 | "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.4.21.tgz",
103 | "integrity": "sha512-me7epoTxYlY+2CUM7hy9PCDdpMPfIwrOvAXud2Upk10g4YLv9UBW7kL798TvMeDhPthkZ0CONNrK2GoeI1ODiQ==",
104 | "dependencies": {
105 | "@babel/parser": "^7.23.9",
106 | "@vue/compiler-core": "3.4.21",
107 | "@vue/compiler-dom": "3.4.21",
108 | "@vue/compiler-ssr": "3.4.21",
109 | "@vue/shared": "3.4.21",
110 | "estree-walker": "^2.0.2",
111 | "magic-string": "^0.30.7",
112 | "postcss": "^8.4.35",
113 | "source-map-js": "^1.0.2"
114 | }
115 | },
116 | "node_modules/@vue/compiler-ssr": {
117 | "version": "3.4.21",
118 | "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.4.21.tgz",
119 | "integrity": "sha512-M5+9nI2lPpAsgXOGQobnIueVqc9sisBFexh5yMIMRAPYLa7+5wEJs8iqOZc1WAa9WQbx9GR2twgznU8LTIiZ4Q==",
120 | "dependencies": {
121 | "@vue/compiler-dom": "3.4.21",
122 | "@vue/shared": "3.4.21"
123 | }
124 | },
125 | "node_modules/@vue/reactivity": {
126 | "version": "3.4.21",
127 | "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.4.21.tgz",
128 | "integrity": "sha512-UhenImdc0L0/4ahGCyEzc/pZNwVgcglGy9HVzJ1Bq2Mm9qXOpP8RyNTjookw/gOCUlXSEtuZ2fUg5nrHcoqJcw==",
129 | "dependencies": {
130 | "@vue/shared": "3.4.21"
131 | }
132 | },
133 | "node_modules/@vue/runtime-core": {
134 | "version": "3.4.21",
135 | "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.4.21.tgz",
136 | "integrity": "sha512-pQthsuYzE1XcGZznTKn73G0s14eCJcjaLvp3/DKeYWoFacD9glJoqlNBxt3W2c5S40t6CCcpPf+jG01N3ULyrA==",
137 | "dependencies": {
138 | "@vue/reactivity": "3.4.21",
139 | "@vue/shared": "3.4.21"
140 | }
141 | },
142 | "node_modules/@vue/runtime-dom": {
143 | "version": "3.4.21",
144 | "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.4.21.tgz",
145 | "integrity": "sha512-gvf+C9cFpevsQxbkRBS1NpU8CqxKw0ebqMvLwcGQrNpx6gqRDodqKqA+A2VZZpQ9RpK2f9yfg8VbW/EpdFUOJw==",
146 | "dependencies": {
147 | "@vue/runtime-core": "3.4.21",
148 | "@vue/shared": "3.4.21",
149 | "csstype": "^3.1.3"
150 | }
151 | },
152 | "node_modules/@vue/server-renderer": {
153 | "version": "3.4.21",
154 | "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.4.21.tgz",
155 | "integrity": "sha512-aV1gXyKSN6Rz+6kZ6kr5+Ll14YzmIbeuWe7ryJl5muJ4uwSwY/aStXTixx76TwkZFJLm1aAlA/HSWEJ4EyiMkg==",
156 | "dependencies": {
157 | "@vue/compiler-ssr": "3.4.21",
158 | "@vue/shared": "3.4.21"
159 | },
160 | "peerDependencies": {
161 | "vue": "3.4.21"
162 | }
163 | },
164 | "node_modules/@vue/shared": {
165 | "version": "3.4.21",
166 | "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.4.21.tgz",
167 | "integrity": "sha512-PuJe7vDIi6VYSinuEbUIQgMIRZGgM8e4R+G+/dQTk0X1NEdvgvvgv7m+rfmDH1gZzyA1OjjoWskvHlfRNfQf3g=="
168 | },
169 | "node_modules/csstype": {
170 | "version": "3.1.3",
171 | "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.3.tgz",
172 | "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="
173 | },
174 | "node_modules/entities": {
175 | "version": "4.5.0",
176 | "resolved": "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz",
177 | "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
178 | "engines": {
179 | "node": ">=0.12"
180 | }
181 | },
182 | "node_modules/esbuild": {
183 | "version": "0.15.18",
184 | "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.15.18.tgz",
185 | "integrity": "sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==",
186 | "dev": true,
187 | "hasInstallScript": true,
188 | "bin": {
189 | "esbuild": "bin/esbuild"
190 | },
191 | "engines": {
192 | "node": ">=12"
193 | },
194 | "optionalDependencies": {
195 | "@esbuild/android-arm": "0.15.18",
196 | "@esbuild/linux-loong64": "0.15.18",
197 | "esbuild-android-64": "0.15.18",
198 | "esbuild-android-arm64": "0.15.18",
199 | "esbuild-darwin-64": "0.15.18",
200 | "esbuild-darwin-arm64": "0.15.18",
201 | "esbuild-freebsd-64": "0.15.18",
202 | "esbuild-freebsd-arm64": "0.15.18",
203 | "esbuild-linux-32": "0.15.18",
204 | "esbuild-linux-64": "0.15.18",
205 | "esbuild-linux-arm": "0.15.18",
206 | "esbuild-linux-arm64": "0.15.18",
207 | "esbuild-linux-mips64le": "0.15.18",
208 | "esbuild-linux-ppc64le": "0.15.18",
209 | "esbuild-linux-riscv64": "0.15.18",
210 | "esbuild-linux-s390x": "0.15.18",
211 | "esbuild-netbsd-64": "0.15.18",
212 | "esbuild-openbsd-64": "0.15.18",
213 | "esbuild-sunos-64": "0.15.18",
214 | "esbuild-windows-32": "0.15.18",
215 | "esbuild-windows-64": "0.15.18",
216 | "esbuild-windows-arm64": "0.15.18"
217 | }
218 | },
219 | "node_modules/esbuild-android-64": {
220 | "version": "0.15.18",
221 | "resolved": "https://registry.npmmirror.com/esbuild-android-64/-/esbuild-android-64-0.15.18.tgz",
222 | "integrity": "sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==",
223 | "cpu": [
224 | "x64"
225 | ],
226 | "dev": true,
227 | "optional": true,
228 | "os": [
229 | "android"
230 | ],
231 | "engines": {
232 | "node": ">=12"
233 | }
234 | },
235 | "node_modules/esbuild-android-arm64": {
236 | "version": "0.15.18",
237 | "resolved": "https://registry.npmmirror.com/esbuild-android-arm64/-/esbuild-android-arm64-0.15.18.tgz",
238 | "integrity": "sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==",
239 | "cpu": [
240 | "arm64"
241 | ],
242 | "dev": true,
243 | "optional": true,
244 | "os": [
245 | "android"
246 | ],
247 | "engines": {
248 | "node": ">=12"
249 | }
250 | },
251 | "node_modules/esbuild-darwin-64": {
252 | "version": "0.15.18",
253 | "resolved": "https://registry.npmmirror.com/esbuild-darwin-64/-/esbuild-darwin-64-0.15.18.tgz",
254 | "integrity": "sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==",
255 | "cpu": [
256 | "x64"
257 | ],
258 | "dev": true,
259 | "optional": true,
260 | "os": [
261 | "darwin"
262 | ],
263 | "engines": {
264 | "node": ">=12"
265 | }
266 | },
267 | "node_modules/esbuild-darwin-arm64": {
268 | "version": "0.15.18",
269 | "resolved": "https://registry.npmmirror.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.18.tgz",
270 | "integrity": "sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==",
271 | "cpu": [
272 | "arm64"
273 | ],
274 | "dev": true,
275 | "optional": true,
276 | "os": [
277 | "darwin"
278 | ],
279 | "engines": {
280 | "node": ">=12"
281 | }
282 | },
283 | "node_modules/esbuild-freebsd-64": {
284 | "version": "0.15.18",
285 | "resolved": "https://registry.npmmirror.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.18.tgz",
286 | "integrity": "sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==",
287 | "cpu": [
288 | "x64"
289 | ],
290 | "dev": true,
291 | "optional": true,
292 | "os": [
293 | "freebsd"
294 | ],
295 | "engines": {
296 | "node": ">=12"
297 | }
298 | },
299 | "node_modules/esbuild-freebsd-arm64": {
300 | "version": "0.15.18",
301 | "resolved": "https://registry.npmmirror.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.18.tgz",
302 | "integrity": "sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==",
303 | "cpu": [
304 | "arm64"
305 | ],
306 | "dev": true,
307 | "optional": true,
308 | "os": [
309 | "freebsd"
310 | ],
311 | "engines": {
312 | "node": ">=12"
313 | }
314 | },
315 | "node_modules/esbuild-linux-32": {
316 | "version": "0.15.18",
317 | "resolved": "https://registry.npmmirror.com/esbuild-linux-32/-/esbuild-linux-32-0.15.18.tgz",
318 | "integrity": "sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==",
319 | "cpu": [
320 | "ia32"
321 | ],
322 | "dev": true,
323 | "optional": true,
324 | "os": [
325 | "linux"
326 | ],
327 | "engines": {
328 | "node": ">=12"
329 | }
330 | },
331 | "node_modules/esbuild-linux-64": {
332 | "version": "0.15.18",
333 | "resolved": "https://registry.npmmirror.com/esbuild-linux-64/-/esbuild-linux-64-0.15.18.tgz",
334 | "integrity": "sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==",
335 | "cpu": [
336 | "x64"
337 | ],
338 | "dev": true,
339 | "optional": true,
340 | "os": [
341 | "linux"
342 | ],
343 | "engines": {
344 | "node": ">=12"
345 | }
346 | },
347 | "node_modules/esbuild-linux-arm": {
348 | "version": "0.15.18",
349 | "resolved": "https://registry.npmmirror.com/esbuild-linux-arm/-/esbuild-linux-arm-0.15.18.tgz",
350 | "integrity": "sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==",
351 | "cpu": [
352 | "arm"
353 | ],
354 | "dev": true,
355 | "optional": true,
356 | "os": [
357 | "linux"
358 | ],
359 | "engines": {
360 | "node": ">=12"
361 | }
362 | },
363 | "node_modules/esbuild-linux-arm64": {
364 | "version": "0.15.18",
365 | "resolved": "https://registry.npmmirror.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.18.tgz",
366 | "integrity": "sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==",
367 | "cpu": [
368 | "arm64"
369 | ],
370 | "dev": true,
371 | "optional": true,
372 | "os": [
373 | "linux"
374 | ],
375 | "engines": {
376 | "node": ">=12"
377 | }
378 | },
379 | "node_modules/esbuild-linux-mips64le": {
380 | "version": "0.15.18",
381 | "resolved": "https://registry.npmmirror.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.18.tgz",
382 | "integrity": "sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==",
383 | "cpu": [
384 | "mips64el"
385 | ],
386 | "dev": true,
387 | "optional": true,
388 | "os": [
389 | "linux"
390 | ],
391 | "engines": {
392 | "node": ">=12"
393 | }
394 | },
395 | "node_modules/esbuild-linux-ppc64le": {
396 | "version": "0.15.18",
397 | "resolved": "https://registry.npmmirror.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.18.tgz",
398 | "integrity": "sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==",
399 | "cpu": [
400 | "ppc64"
401 | ],
402 | "dev": true,
403 | "optional": true,
404 | "os": [
405 | "linux"
406 | ],
407 | "engines": {
408 | "node": ">=12"
409 | }
410 | },
411 | "node_modules/esbuild-linux-riscv64": {
412 | "version": "0.15.18",
413 | "resolved": "https://registry.npmmirror.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.18.tgz",
414 | "integrity": "sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==",
415 | "cpu": [
416 | "riscv64"
417 | ],
418 | "dev": true,
419 | "optional": true,
420 | "os": [
421 | "linux"
422 | ],
423 | "engines": {
424 | "node": ">=12"
425 | }
426 | },
427 | "node_modules/esbuild-linux-s390x": {
428 | "version": "0.15.18",
429 | "resolved": "https://registry.npmmirror.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.18.tgz",
430 | "integrity": "sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==",
431 | "cpu": [
432 | "s390x"
433 | ],
434 | "dev": true,
435 | "optional": true,
436 | "os": [
437 | "linux"
438 | ],
439 | "engines": {
440 | "node": ">=12"
441 | }
442 | },
443 | "node_modules/esbuild-netbsd-64": {
444 | "version": "0.15.18",
445 | "resolved": "https://registry.npmmirror.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.18.tgz",
446 | "integrity": "sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==",
447 | "cpu": [
448 | "x64"
449 | ],
450 | "dev": true,
451 | "optional": true,
452 | "os": [
453 | "netbsd"
454 | ],
455 | "engines": {
456 | "node": ">=12"
457 | }
458 | },
459 | "node_modules/esbuild-openbsd-64": {
460 | "version": "0.15.18",
461 | "resolved": "https://registry.npmmirror.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.18.tgz",
462 | "integrity": "sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==",
463 | "cpu": [
464 | "x64"
465 | ],
466 | "dev": true,
467 | "optional": true,
468 | "os": [
469 | "openbsd"
470 | ],
471 | "engines": {
472 | "node": ">=12"
473 | }
474 | },
475 | "node_modules/esbuild-sunos-64": {
476 | "version": "0.15.18",
477 | "resolved": "https://registry.npmmirror.com/esbuild-sunos-64/-/esbuild-sunos-64-0.15.18.tgz",
478 | "integrity": "sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==",
479 | "cpu": [
480 | "x64"
481 | ],
482 | "dev": true,
483 | "optional": true,
484 | "os": [
485 | "sunos"
486 | ],
487 | "engines": {
488 | "node": ">=12"
489 | }
490 | },
491 | "node_modules/esbuild-windows-32": {
492 | "version": "0.15.18",
493 | "resolved": "https://registry.npmmirror.com/esbuild-windows-32/-/esbuild-windows-32-0.15.18.tgz",
494 | "integrity": "sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==",
495 | "cpu": [
496 | "ia32"
497 | ],
498 | "dev": true,
499 | "optional": true,
500 | "os": [
501 | "win32"
502 | ],
503 | "engines": {
504 | "node": ">=12"
505 | }
506 | },
507 | "node_modules/esbuild-windows-64": {
508 | "version": "0.15.18",
509 | "resolved": "https://registry.npmmirror.com/esbuild-windows-64/-/esbuild-windows-64-0.15.18.tgz",
510 | "integrity": "sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==",
511 | "cpu": [
512 | "x64"
513 | ],
514 | "dev": true,
515 | "optional": true,
516 | "os": [
517 | "win32"
518 | ],
519 | "engines": {
520 | "node": ">=12"
521 | }
522 | },
523 | "node_modules/esbuild-windows-arm64": {
524 | "version": "0.15.18",
525 | "resolved": "https://registry.npmmirror.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.18.tgz",
526 | "integrity": "sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==",
527 | "cpu": [
528 | "arm64"
529 | ],
530 | "dev": true,
531 | "optional": true,
532 | "os": [
533 | "win32"
534 | ],
535 | "engines": {
536 | "node": ">=12"
537 | }
538 | },
539 | "node_modules/estree-walker": {
540 | "version": "2.0.2",
541 | "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz",
542 | "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
543 | },
544 | "node_modules/fsevents": {
545 | "version": "2.3.3",
546 | "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz",
547 | "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
548 | "dev": true,
549 | "hasInstallScript": true,
550 | "optional": true,
551 | "os": [
552 | "darwin"
553 | ],
554 | "engines": {
555 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
556 | }
557 | },
558 | "node_modules/function-bind": {
559 | "version": "1.1.2",
560 | "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz",
561 | "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
562 | "dev": true
563 | },
564 | "node_modules/hasown": {
565 | "version": "2.0.2",
566 | "resolved": "https://registry.npmmirror.com/hasown/-/hasown-2.0.2.tgz",
567 | "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
568 | "dev": true,
569 | "dependencies": {
570 | "function-bind": "^1.1.2"
571 | },
572 | "engines": {
573 | "node": ">= 0.4"
574 | }
575 | },
576 | "node_modules/is-core-module": {
577 | "version": "2.13.1",
578 | "resolved": "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.13.1.tgz",
579 | "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==",
580 | "dev": true,
581 | "dependencies": {
582 | "hasown": "^2.0.0"
583 | }
584 | },
585 | "node_modules/magic-string": {
586 | "version": "0.30.8",
587 | "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.8.tgz",
588 | "integrity": "sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==",
589 | "dependencies": {
590 | "@jridgewell/sourcemap-codec": "^1.4.15"
591 | },
592 | "engines": {
593 | "node": ">=12"
594 | }
595 | },
596 | "node_modules/nanoid": {
597 | "version": "3.3.7",
598 | "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.7.tgz",
599 | "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
600 | "bin": {
601 | "nanoid": "bin/nanoid.cjs"
602 | },
603 | "engines": {
604 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
605 | }
606 | },
607 | "node_modules/path-parse": {
608 | "version": "1.0.7",
609 | "resolved": "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz",
610 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
611 | "dev": true
612 | },
613 | "node_modules/picocolors": {
614 | "version": "1.0.0",
615 | "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz",
616 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
617 | },
618 | "node_modules/postcss": {
619 | "version": "8.4.38",
620 | "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.38.tgz",
621 | "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==",
622 | "dependencies": {
623 | "nanoid": "^3.3.7",
624 | "picocolors": "^1.0.0",
625 | "source-map-js": "^1.2.0"
626 | },
627 | "engines": {
628 | "node": "^10 || ^12 || >=14"
629 | }
630 | },
631 | "node_modules/resolve": {
632 | "version": "1.22.8",
633 | "resolved": "https://registry.npmmirror.com/resolve/-/resolve-1.22.8.tgz",
634 | "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
635 | "dev": true,
636 | "dependencies": {
637 | "is-core-module": "^2.13.0",
638 | "path-parse": "^1.0.7",
639 | "supports-preserve-symlinks-flag": "^1.0.0"
640 | },
641 | "bin": {
642 | "resolve": "bin/resolve"
643 | }
644 | },
645 | "node_modules/rollup": {
646 | "version": "2.79.1",
647 | "resolved": "https://registry.npmmirror.com/rollup/-/rollup-2.79.1.tgz",
648 | "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==",
649 | "dev": true,
650 | "bin": {
651 | "rollup": "dist/bin/rollup"
652 | },
653 | "engines": {
654 | "node": ">=10.0.0"
655 | },
656 | "optionalDependencies": {
657 | "fsevents": "~2.3.2"
658 | }
659 | },
660 | "node_modules/source-map-js": {
661 | "version": "1.2.0",
662 | "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.0.tgz",
663 | "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==",
664 | "engines": {
665 | "node": ">=0.10.0"
666 | }
667 | },
668 | "node_modules/supports-preserve-symlinks-flag": {
669 | "version": "1.0.0",
670 | "resolved": "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
671 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
672 | "dev": true,
673 | "engines": {
674 | "node": ">= 0.4"
675 | }
676 | },
677 | "node_modules/vite": {
678 | "version": "3.2.10",
679 | "resolved": "https://registry.npmmirror.com/vite/-/vite-3.2.10.tgz",
680 | "integrity": "sha512-Dx3olBo/ODNiMVk/cA5Yft9Ws+snLOXrhLtrI3F4XLt4syz2Yg8fayZMWScPKoz12v5BUv7VEmQHnsfpY80fYw==",
681 | "dev": true,
682 | "dependencies": {
683 | "esbuild": "^0.15.9",
684 | "postcss": "^8.4.18",
685 | "resolve": "^1.22.1",
686 | "rollup": "^2.79.1"
687 | },
688 | "bin": {
689 | "vite": "bin/vite.js"
690 | },
691 | "engines": {
692 | "node": "^14.18.0 || >=16.0.0"
693 | },
694 | "optionalDependencies": {
695 | "fsevents": "~2.3.2"
696 | },
697 | "peerDependencies": {
698 | "@types/node": ">= 14",
699 | "less": "*",
700 | "sass": "*",
701 | "stylus": "*",
702 | "sugarss": "*",
703 | "terser": "^5.4.0"
704 | },
705 | "peerDependenciesMeta": {
706 | "@types/node": {
707 | "optional": true
708 | },
709 | "less": {
710 | "optional": true
711 | },
712 | "sass": {
713 | "optional": true
714 | },
715 | "stylus": {
716 | "optional": true
717 | },
718 | "sugarss": {
719 | "optional": true
720 | },
721 | "terser": {
722 | "optional": true
723 | }
724 | }
725 | },
726 | "node_modules/vue": {
727 | "version": "3.4.21",
728 | "resolved": "https://registry.npmmirror.com/vue/-/vue-3.4.21.tgz",
729 | "integrity": "sha512-5hjyV/jLEIKD/jYl4cavMcnzKwjMKohureP8ejn3hhEjwhWIhWeuzL2kJAjzl/WyVsgPY56Sy4Z40C3lVshxXA==",
730 | "dependencies": {
731 | "@vue/compiler-dom": "3.4.21",
732 | "@vue/compiler-sfc": "3.4.21",
733 | "@vue/runtime-dom": "3.4.21",
734 | "@vue/server-renderer": "3.4.21",
735 | "@vue/shared": "3.4.21"
736 | },
737 | "peerDependencies": {
738 | "typescript": "*"
739 | },
740 | "peerDependenciesMeta": {
741 | "typescript": {
742 | "optional": true
743 | }
744 | }
745 | }
746 | }
747 | }
748 |
--------------------------------------------------------------------------------
/frontend/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "frontend",
3 | "private": true,
4 | "version": "0.0.0",
5 | "type": "module",
6 | "scripts": {
7 | "dev": "vite",
8 | "build": "vite build",
9 | "preview": "vite preview"
10 | },
11 | "dependencies": {
12 | "vue": "^3.2.37"
13 | },
14 | "devDependencies": {
15 | "@vitejs/plugin-vue": "^3.0.3",
16 | "vite": "^3.0.7"
17 | }
18 | }
--------------------------------------------------------------------------------
/frontend/package.json.md5:
--------------------------------------------------------------------------------
1 | 21d2a2199c4fb87865d8160b492f51c3
--------------------------------------------------------------------------------
/frontend/src/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TaterTotX/go_spider_boss/95c0a114f452cb46aba3104c493c53c6d239cdb0/frontend/src/.DS_Store
--------------------------------------------------------------------------------
/frontend/src/App.vue:
--------------------------------------------------------------------------------
1 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
28 |
--------------------------------------------------------------------------------
/frontend/src/assets/fonts/OFL.txt:
--------------------------------------------------------------------------------
1 | Copyright 2016 The Nunito Project Authors (contact@sansoxygen.com),
2 |
3 | This Font Software is licensed under the SIL Open Font License, Version 1.1.
4 | This license is copied below, and is also available with a FAQ at:
5 | http://scripts.sil.org/OFL
6 |
7 |
8 | -----------------------------------------------------------
9 | SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
10 | -----------------------------------------------------------
11 |
12 | PREAMBLE
13 | The goals of the Open Font License (OFL) are to stimulate worldwide
14 | development of collaborative font projects, to support the font creation
15 | efforts of academic and linguistic communities, and to provide a free and
16 | open framework in which fonts may be shared and improved in partnership
17 | with others.
18 |
19 | The OFL allows the licensed fonts to be used, studied, modified and
20 | redistributed freely as long as they are not sold by themselves. The
21 | fonts, including any derivative works, can be bundled, embedded,
22 | redistributed and/or sold with any software provided that any reserved
23 | names are not used by derivative works. The fonts and derivatives,
24 | however, cannot be released under any other type of license. The
25 | requirement for fonts to remain under this license does not apply
26 | to any document created using the fonts or their derivatives.
27 |
28 | DEFINITIONS
29 | "Font Software" refers to the set of files released by the Copyright
30 | Holder(s) under this license and clearly marked as such. This may
31 | include source files, build scripts and documentation.
32 |
33 | "Reserved Font Name" refers to any names specified as such after the
34 | copyright statement(s).
35 |
36 | "Original Version" refers to the collection of Font Software components as
37 | distributed by the Copyright Holder(s).
38 |
39 | "Modified Version" refers to any derivative made by adding to, deleting,
40 | or substituting -- in part or in whole -- any of the components of the
41 | Original Version, by changing formats or by porting the Font Software to a
42 | new environment.
43 |
44 | "Author" refers to any designer, engineer, programmer, technical
45 | writer or other person who contributed to the Font Software.
46 |
47 | PERMISSION & CONDITIONS
48 | Permission is hereby granted, free of charge, to any person obtaining
49 | a copy of the Font Software, to use, study, copy, merge, embed, modify,
50 | redistribute, and sell modified and unmodified copies of the Font
51 | Software, subject to the following conditions:
52 |
53 | 1) Neither the Font Software nor any of its individual components,
54 | in Original or Modified Versions, may be sold by itself.
55 |
56 | 2) Original or Modified Versions of the Font Software may be bundled,
57 | redistributed and/or sold with any software, provided that each copy
58 | contains the above copyright notice and this license. These can be
59 | included either as stand-alone text files, human-readable headers or
60 | in the appropriate machine-readable metadata fields within text or
61 | binary files as long as those fields can be easily viewed by the user.
62 |
63 | 3) No Modified Version of the Font Software may use the Reserved Font
64 | Name(s) unless explicit written permission is granted by the corresponding
65 | Copyright Holder. This restriction only applies to the primary font name as
66 | presented to the users.
67 |
68 | 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
69 | Software shall not be used to promote, endorse or advertise any
70 | Modified Version, except to acknowledge the contribution(s) of the
71 | Copyright Holder(s) and the Author(s) or with their explicit written
72 | permission.
73 |
74 | 5) The Font Software, modified or unmodified, in part or in whole,
75 | must be distributed entirely under this license, and must not be
76 | distributed under any other license. The requirement for fonts to
77 | remain under this license does not apply to any document created
78 | using the Font Software.
79 |
80 | TERMINATION
81 | This license becomes null and void if any of the above conditions are
82 | not met.
83 |
84 | DISCLAIMER
85 | THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
86 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
87 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
88 | OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
89 | COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
90 | INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
91 | DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
92 | FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
93 | OTHER DEALINGS IN THE FONT SOFTWARE.
94 |
--------------------------------------------------------------------------------
/frontend/src/assets/fonts/lato400.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TaterTotX/go_spider_boss/95c0a114f452cb46aba3104c493c53c6d239cdb0/frontend/src/assets/fonts/lato400.woff
--------------------------------------------------------------------------------
/frontend/src/assets/fonts/nunito-v16-latin-regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TaterTotX/go_spider_boss/95c0a114f452cb46aba3104c493c53c6d239cdb0/frontend/src/assets/fonts/nunito-v16-latin-regular.woff2
--------------------------------------------------------------------------------
/frontend/src/assets/images/cool-background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TaterTotX/go_spider_boss/95c0a114f452cb46aba3104c493c53c6d239cdb0/frontend/src/assets/images/cool-background.png
--------------------------------------------------------------------------------
/frontend/src/assets/images/logo-universal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TaterTotX/go_spider_boss/95c0a114f452cb46aba3104c493c53c6d239cdb0/frontend/src/assets/images/logo-universal.png
--------------------------------------------------------------------------------
/frontend/src/components/colour_card.vue:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
BOSS Robot
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/frontend/src/components/input_style.vue:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/frontend/src/components/mofang.vue:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
--------------------------------------------------------------------------------
/frontend/src/components/orange_card.vue:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
23 |
Hover Me
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
Pasta
39 |
40 |
41 |
42 | Spaguetti Bolognese
43 |
44 |
45 |
46 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
--------------------------------------------------------------------------------
/frontend/src/components/start.vue:
--------------------------------------------------------------------------------
1 |
20 |
21 |
22 |
23 |
24 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
72 |
73 |
74 |
75 |
76 |
--------------------------------------------------------------------------------
/frontend/src/components/start_button.vue:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
123 |
124 |
125 |
126 |
127 |
--------------------------------------------------------------------------------
/frontend/src/components/start_button_black.vue:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/frontend/src/main.js:
--------------------------------------------------------------------------------
1 | import {createApp} from 'vue'
2 | import App from './App.vue'
3 | import './style.css';
4 | import * as csshake from 'csshake';
5 | import 'animate.css';
6 |
7 |
8 | createApp(App).mount('#app')
9 |
--------------------------------------------------------------------------------
/frontend/src/style.css:
--------------------------------------------------------------------------------
1 | html {
2 | background-color: #1d1e23;
3 | /*background-image: url('./assets/images/cool-background.png'); !* 图片背景 *!*/
4 | /* 其他背景属性 */
5 | }
6 |
7 | body {
8 | margin: 0;
9 | color: white;
10 | font-family: "Nunito", -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto",
11 | "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue",
12 | sans-serif;
13 | }
14 |
15 | @font-face {
16 | font-family: "Nunito";
17 | font-style: normal;
18 | font-weight: 400;
19 | src: local(""),
20 | url("assets/fonts/lato400.woff") format("woff");
21 | }
22 |
23 | #app {
24 | height: 100vh;
25 | text-align: center;
26 | }
27 |
--------------------------------------------------------------------------------
/frontend/vite.config.js:
--------------------------------------------------------------------------------
1 | import {defineConfig} from 'vite'
2 | import vue from '@vitejs/plugin-vue'
3 |
4 | // https://vitejs.dev/config/
5 | export default defineConfig({
6 | plugins: [vue()]
7 | })
8 |
--------------------------------------------------------------------------------
/frontend/wailsjs/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TaterTotX/go_spider_boss/95c0a114f452cb46aba3104c493c53c6d239cdb0/frontend/wailsjs/.DS_Store
--------------------------------------------------------------------------------
/frontend/wailsjs/go/main/App.d.ts:
--------------------------------------------------------------------------------
1 | // Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL
2 | // This file is automatically generated. DO NOT EDIT
3 |
4 | export function Greet(arg1:string,arg2:string,arg3:string):Promise;
5 |
--------------------------------------------------------------------------------
/frontend/wailsjs/go/main/App.js:
--------------------------------------------------------------------------------
1 | // @ts-check
2 | // Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL
3 | // This file is automatically generated. DO NOT EDIT
4 |
5 | export function Greet(arg1, arg2, arg3) {
6 | return window['go']['main']['App']['Greet'](arg1, arg2, arg3);
7 | }
8 |
--------------------------------------------------------------------------------
/frontend/wailsjs/runtime/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@wailsapp/runtime",
3 | "version": "2.0.0",
4 | "description": "Wails Javascript runtime library",
5 | "main": "runtime.js",
6 | "types": "runtime.d.ts",
7 | "scripts": {
8 | },
9 | "repository": {
10 | "type": "git",
11 | "url": "git+https://github.com/wailsapp/wails.git"
12 | },
13 | "keywords": [
14 | "Wails",
15 | "Javascript",
16 | "Go"
17 | ],
18 | "author": "Lea Anthony ",
19 | "license": "MIT",
20 | "bugs": {
21 | "url": "https://github.com/wailsapp/wails/issues"
22 | },
23 | "homepage": "https://github.com/wailsapp/wails#readme"
24 | }
25 |
--------------------------------------------------------------------------------
/frontend/wailsjs/runtime/runtime.d.ts:
--------------------------------------------------------------------------------
1 | /*
2 | _ __ _ __
3 | | | / /___ _(_) /____
4 | | | /| / / __ `/ / / ___/
5 | | |/ |/ / /_/ / / (__ )
6 | |__/|__/\__,_/_/_/____/
7 | The electron alternative for Go
8 | (c) Lea Anthony 2019-present
9 | */
10 |
11 | export interface Position {
12 | x: number;
13 | y: number;
14 | }
15 |
16 | export interface Size {
17 | w: number;
18 | h: number;
19 | }
20 |
21 | export interface Screen {
22 | isCurrent: boolean;
23 | isPrimary: boolean;
24 | width : number
25 | height : number
26 | }
27 |
28 | // Environment information such as platform, buildtype, ...
29 | export interface EnvironmentInfo {
30 | buildType: string;
31 | platform: string;
32 | arch: string;
33 | }
34 |
35 | // [EventsEmit](https://wails.io/docs/reference/runtime/events#eventsemit)
36 | // emits the given event. Optional data may be passed with the event.
37 | // This will trigger any event listeners.
38 | export function EventsEmit(eventName: string, ...data: any): void;
39 |
40 | // [EventsOn](https://wails.io/docs/reference/runtime/events#eventson) sets up a listener for the given event name.
41 | export function EventsOn(eventName: string, callback: (...data: any) => void): () => void;
42 |
43 | // [EventsOnMultiple](https://wails.io/docs/reference/runtime/events#eventsonmultiple)
44 | // sets up a listener for the given event name, but will only trigger a given number times.
45 | export function EventsOnMultiple(eventName: string, callback: (...data: any) => void, maxCallbacks: number): () => void;
46 |
47 | // [EventsOnce](https://wails.io/docs/reference/runtime/events#eventsonce)
48 | // sets up a listener for the given event name, but will only trigger once.
49 | export function EventsOnce(eventName: string, callback: (...data: any) => void): () => void;
50 |
51 | // [EventsOff](https://wails.io/docs/reference/runtime/events#eventsoff)
52 | // unregisters the listener for the given event name.
53 | export function EventsOff(eventName: string, ...additionalEventNames: string[]): void;
54 |
55 | // [EventsOffAll](https://wails.io/docs/reference/runtime/events#eventsoffall)
56 | // unregisters all listeners.
57 | export function EventsOffAll(): void;
58 |
59 | // [LogPrint](https://wails.io/docs/reference/runtime/log#logprint)
60 | // logs the given message as a raw message
61 | export function LogPrint(message: string): void;
62 |
63 | // [LogTrace](https://wails.io/docs/reference/runtime/log#logtrace)
64 | // logs the given message at the `trace` log level.
65 | export function LogTrace(message: string): void;
66 |
67 | // [LogDebug](https://wails.io/docs/reference/runtime/log#logdebug)
68 | // logs the given message at the `debug` log level.
69 | export function LogDebug(message: string): void;
70 |
71 | // [LogError](https://wails.io/docs/reference/runtime/log#logerror)
72 | // logs the given message at the `error` log level.
73 | export function LogError(message: string): void;
74 |
75 | // [LogFatal](https://wails.io/docs/reference/runtime/log#logfatal)
76 | // logs the given message at the `fatal` log level.
77 | // The application will quit after calling this method.
78 | export function LogFatal(message: string): void;
79 |
80 | // [LogInfo](https://wails.io/docs/reference/runtime/log#loginfo)
81 | // logs the given message at the `info` log level.
82 | export function LogInfo(message: string): void;
83 |
84 | // [LogWarning](https://wails.io/docs/reference/runtime/log#logwarning)
85 | // logs the given message at the `warning` log level.
86 | export function LogWarning(message: string): void;
87 |
88 | // [WindowReload](https://wails.io/docs/reference/runtime/window#windowreload)
89 | // Forces a reload by the main application as well as connected browsers.
90 | export function WindowReload(): void;
91 |
92 | // [WindowReloadApp](https://wails.io/docs/reference/runtime/window#windowreloadapp)
93 | // Reloads the application frontend.
94 | export function WindowReloadApp(): void;
95 |
96 | // [WindowSetAlwaysOnTop](https://wails.io/docs/reference/runtime/window#windowsetalwaysontop)
97 | // Sets the window AlwaysOnTop or not on top.
98 | export function WindowSetAlwaysOnTop(b: boolean): void;
99 |
100 | // [WindowSetSystemDefaultTheme](https://wails.io/docs/next/reference/runtime/window#windowsetsystemdefaulttheme)
101 | // *Windows only*
102 | // Sets window theme to system default (dark/light).
103 | export function WindowSetSystemDefaultTheme(): void;
104 |
105 | // [WindowSetLightTheme](https://wails.io/docs/next/reference/runtime/window#windowsetlighttheme)
106 | // *Windows only*
107 | // Sets window to light theme.
108 | export function WindowSetLightTheme(): void;
109 |
110 | // [WindowSetDarkTheme](https://wails.io/docs/next/reference/runtime/window#windowsetdarktheme)
111 | // *Windows only*
112 | // Sets window to dark theme.
113 | export function WindowSetDarkTheme(): void;
114 |
115 | // [WindowCenter](https://wails.io/docs/reference/runtime/window#windowcenter)
116 | // Centers the window on the monitor the window is currently on.
117 | export function WindowCenter(): void;
118 |
119 | // [WindowSetTitle](https://wails.io/docs/reference/runtime/window#windowsettitle)
120 | // Sets the text in the window title bar.
121 | export function WindowSetTitle(title: string): void;
122 |
123 | // [WindowFullscreen](https://wails.io/docs/reference/runtime/window#windowfullscreen)
124 | // Makes the window full screen.
125 | export function WindowFullscreen(): void;
126 |
127 | // [WindowUnfullscreen](https://wails.io/docs/reference/runtime/window#windowunfullscreen)
128 | // Restores the previous window dimensions and position prior to full screen.
129 | export function WindowUnfullscreen(): void;
130 |
131 | // [WindowIsFullscreen](https://wails.io/docs/reference/runtime/window#windowisfullscreen)
132 | // Returns the state of the window, i.e. whether the window is in full screen mode or not.
133 | export function WindowIsFullscreen(): Promise;
134 |
135 | // [WindowSetSize](https://wails.io/docs/reference/runtime/window#windowsetsize)
136 | // Sets the width and height of the window.
137 | export function WindowSetSize(width: number, height: number): Promise;
138 |
139 | // [WindowGetSize](https://wails.io/docs/reference/runtime/window#windowgetsize)
140 | // Gets the width and height of the window.
141 | export function WindowGetSize(): Promise;
142 |
143 | // [WindowSetMaxSize](https://wails.io/docs/reference/runtime/window#windowsetmaxsize)
144 | // Sets the maximum window size. Will resize the window if the window is currently larger than the given dimensions.
145 | // Setting a size of 0,0 will disable this constraint.
146 | export function WindowSetMaxSize(width: number, height: number): void;
147 |
148 | // [WindowSetMinSize](https://wails.io/docs/reference/runtime/window#windowsetminsize)
149 | // Sets the minimum window size. Will resize the window if the window is currently smaller than the given dimensions.
150 | // Setting a size of 0,0 will disable this constraint.
151 | export function WindowSetMinSize(width: number, height: number): void;
152 |
153 | // [WindowSetPosition](https://wails.io/docs/reference/runtime/window#windowsetposition)
154 | // Sets the window position relative to the monitor the window is currently on.
155 | export function WindowSetPosition(x: number, y: number): void;
156 |
157 | // [WindowGetPosition](https://wails.io/docs/reference/runtime/window#windowgetposition)
158 | // Gets the window position relative to the monitor the window is currently on.
159 | export function WindowGetPosition(): Promise;
160 |
161 | // [WindowHide](https://wails.io/docs/reference/runtime/window#windowhide)
162 | // Hides the window.
163 | export function WindowHide(): void;
164 |
165 | // [WindowShow](https://wails.io/docs/reference/runtime/window#windowshow)
166 | // Shows the window, if it is currently hidden.
167 | export function WindowShow(): void;
168 |
169 | // [WindowMaximise](https://wails.io/docs/reference/runtime/window#windowmaximise)
170 | // Maximises the window to fill the screen.
171 | export function WindowMaximise(): void;
172 |
173 | // [WindowToggleMaximise](https://wails.io/docs/reference/runtime/window#windowtogglemaximise)
174 | // Toggles between Maximised and UnMaximised.
175 | export function WindowToggleMaximise(): void;
176 |
177 | // [WindowUnmaximise](https://wails.io/docs/reference/runtime/window#windowunmaximise)
178 | // Restores the window to the dimensions and position prior to maximising.
179 | export function WindowUnmaximise(): void;
180 |
181 | // [WindowIsMaximised](https://wails.io/docs/reference/runtime/window#windowismaximised)
182 | // Returns the state of the window, i.e. whether the window is maximised or not.
183 | export function WindowIsMaximised(): Promise;
184 |
185 | // [WindowMinimise](https://wails.io/docs/reference/runtime/window#windowminimise)
186 | // Minimises the window.
187 | export function WindowMinimise(): void;
188 |
189 | // [WindowUnminimise](https://wails.io/docs/reference/runtime/window#windowunminimise)
190 | // Restores the window to the dimensions and position prior to minimising.
191 | export function WindowUnminimise(): void;
192 |
193 | // [WindowIsMinimised](https://wails.io/docs/reference/runtime/window#windowisminimised)
194 | // Returns the state of the window, i.e. whether the window is minimised or not.
195 | export function WindowIsMinimised(): Promise;
196 |
197 | // [WindowIsNormal](https://wails.io/docs/reference/runtime/window#windowisnormal)
198 | // Returns the state of the window, i.e. whether the window is normal or not.
199 | export function WindowIsNormal(): Promise;
200 |
201 | // [WindowSetBackgroundColour](https://wails.io/docs/reference/runtime/window#windowsetbackgroundcolour)
202 | // Sets the background colour of the window to the given RGBA colour definition. This colour will show through for all transparent pixels.
203 | export function WindowSetBackgroundColour(R: number, G: number, B: number, A: number): void;
204 |
205 | // [ScreenGetAll](https://wails.io/docs/reference/runtime/window#screengetall)
206 | // Gets the all screens. Call this anew each time you want to refresh data from the underlying windowing system.
207 | export function ScreenGetAll(): Promise;
208 |
209 | // [BrowserOpenURL](https://wails.io/docs/reference/runtime/browser#browseropenurl)
210 | // Opens the given URL in the system browser.
211 | export function BrowserOpenURL(url: string): void;
212 |
213 | // [Environment](https://wails.io/docs/reference/runtime/intro#environment)
214 | // Returns information about the environment
215 | export function Environment(): Promise;
216 |
217 | // [Quit](https://wails.io/docs/reference/runtime/intro#quit)
218 | // Quits the application.
219 | export function Quit(): void;
220 |
221 | // [Hide](https://wails.io/docs/reference/runtime/intro#hide)
222 | // Hides the application.
223 | export function Hide(): void;
224 |
225 | // [Show](https://wails.io/docs/reference/runtime/intro#show)
226 | // Shows the application.
227 | export function Show(): void;
228 |
229 | // [ClipboardGetText](https://wails.io/docs/reference/runtime/clipboard#clipboardgettext)
230 | // Returns the current text stored on clipboard
231 | export function ClipboardGetText(): Promise;
232 |
233 | // [ClipboardSetText](https://wails.io/docs/reference/runtime/clipboard#clipboardsettext)
234 | // Sets a text on the clipboard
235 | export function ClipboardSetText(text: string): Promise;
236 |
--------------------------------------------------------------------------------
/frontend/wailsjs/runtime/runtime.js:
--------------------------------------------------------------------------------
1 | /*
2 | _ __ _ __
3 | | | / /___ _(_) /____
4 | | | /| / / __ `/ / / ___/
5 | | |/ |/ / /_/ / / (__ )
6 | |__/|__/\__,_/_/_/____/
7 | The electron alternative for Go
8 | (c) Lea Anthony 2019-present
9 | */
10 |
11 | export function LogPrint(message) {
12 | window.runtime.LogPrint(message);
13 | }
14 |
15 | export function LogTrace(message) {
16 | window.runtime.LogTrace(message);
17 | }
18 |
19 | export function LogDebug(message) {
20 | window.runtime.LogDebug(message);
21 | }
22 |
23 | export function LogInfo(message) {
24 | window.runtime.LogInfo(message);
25 | }
26 |
27 | export function LogWarning(message) {
28 | window.runtime.LogWarning(message);
29 | }
30 |
31 | export function LogError(message) {
32 | window.runtime.LogError(message);
33 | }
34 |
35 | export function LogFatal(message) {
36 | window.runtime.LogFatal(message);
37 | }
38 |
39 | export function EventsOnMultiple(eventName, callback, maxCallbacks) {
40 | return window.runtime.EventsOnMultiple(eventName, callback, maxCallbacks);
41 | }
42 |
43 | export function EventsOn(eventName, callback) {
44 | return EventsOnMultiple(eventName, callback, -1);
45 | }
46 |
47 | export function EventsOff(eventName, ...additionalEventNames) {
48 | return window.runtime.EventsOff(eventName, ...additionalEventNames);
49 | }
50 |
51 | export function EventsOnce(eventName, callback) {
52 | return EventsOnMultiple(eventName, callback, 1);
53 | }
54 |
55 | export function EventsEmit(eventName) {
56 | let args = [eventName].slice.call(arguments);
57 | return window.runtime.EventsEmit.apply(null, args);
58 | }
59 |
60 | export function WindowReload() {
61 | window.runtime.WindowReload();
62 | }
63 |
64 | export function WindowReloadApp() {
65 | window.runtime.WindowReloadApp();
66 | }
67 |
68 | export function WindowSetAlwaysOnTop(b) {
69 | window.runtime.WindowSetAlwaysOnTop(b);
70 | }
71 |
72 | export function WindowSetSystemDefaultTheme() {
73 | window.runtime.WindowSetSystemDefaultTheme();
74 | }
75 |
76 | export function WindowSetLightTheme() {
77 | window.runtime.WindowSetLightTheme();
78 | }
79 |
80 | export function WindowSetDarkTheme() {
81 | window.runtime.WindowSetDarkTheme();
82 | }
83 |
84 | export function WindowCenter() {
85 | window.runtime.WindowCenter();
86 | }
87 |
88 | export function WindowSetTitle(title) {
89 | window.runtime.WindowSetTitle(title);
90 | }
91 |
92 | export function WindowFullscreen() {
93 | window.runtime.WindowFullscreen();
94 | }
95 |
96 | export function WindowUnfullscreen() {
97 | window.runtime.WindowUnfullscreen();
98 | }
99 |
100 | export function WindowIsFullscreen() {
101 | return window.runtime.WindowIsFullscreen();
102 | }
103 |
104 | export function WindowGetSize() {
105 | return window.runtime.WindowGetSize();
106 | }
107 |
108 | export function WindowSetSize(width, height) {
109 | window.runtime.WindowSetSize(width, height);
110 | }
111 |
112 | export function WindowSetMaxSize(width, height) {
113 | window.runtime.WindowSetMaxSize(width, height);
114 | }
115 |
116 | export function WindowSetMinSize(width, height) {
117 | window.runtime.WindowSetMinSize(width, height);
118 | }
119 |
120 | export function WindowSetPosition(x, y) {
121 | window.runtime.WindowSetPosition(x, y);
122 | }
123 |
124 | export function WindowGetPosition() {
125 | return window.runtime.WindowGetPosition();
126 | }
127 |
128 | export function WindowHide() {
129 | window.runtime.WindowHide();
130 | }
131 |
132 | export function WindowShow() {
133 | window.runtime.WindowShow();
134 | }
135 |
136 | export function WindowMaximise() {
137 | window.runtime.WindowMaximise();
138 | }
139 |
140 | export function WindowToggleMaximise() {
141 | window.runtime.WindowToggleMaximise();
142 | }
143 |
144 | export function WindowUnmaximise() {
145 | window.runtime.WindowUnmaximise();
146 | }
147 |
148 | export function WindowIsMaximised() {
149 | return window.runtime.WindowIsMaximised();
150 | }
151 |
152 | export function WindowMinimise() {
153 | window.runtime.WindowMinimise();
154 | }
155 |
156 | export function WindowUnminimise() {
157 | window.runtime.WindowUnminimise();
158 | }
159 |
160 | export function WindowSetBackgroundColour(R, G, B, A) {
161 | window.runtime.WindowSetBackgroundColour(R, G, B, A);
162 | }
163 |
164 | export function ScreenGetAll() {
165 | return window.runtime.ScreenGetAll();
166 | }
167 |
168 | export function WindowIsMinimised() {
169 | return window.runtime.WindowIsMinimised();
170 | }
171 |
172 | export function WindowIsNormal() {
173 | return window.runtime.WindowIsNormal();
174 | }
175 |
176 | export function BrowserOpenURL(url) {
177 | window.runtime.BrowserOpenURL(url);
178 | }
179 |
180 | export function Environment() {
181 | return window.runtime.Environment();
182 | }
183 |
184 | export function Quit() {
185 | window.runtime.Quit();
186 | }
187 |
188 | export function Hide() {
189 | window.runtime.Hide();
190 | }
191 |
192 | export function Show() {
193 | window.runtime.Show();
194 | }
195 |
196 | export function ClipboardGetText() {
197 | return window.runtime.ClipboardGetText();
198 | }
199 |
200 | export function ClipboardSetText(text) {
201 | return window.runtime.ClipboardSetText(text);
202 | }
--------------------------------------------------------------------------------
/go.mod:
--------------------------------------------------------------------------------
1 | module changeme
2 |
3 | go 1.21
4 |
5 | toolchain go1.22rc2
6 |
7 | require (
8 | github.com/go-rod/rod v0.114.8
9 | github.com/wailsapp/wails/v2 v2.8.0
10 | )
11 |
12 | require (
13 | github.com/bep/debounce v1.2.1 // indirect
14 | github.com/go-ole/go-ole v1.2.6 // indirect
15 | github.com/godbus/dbus/v5 v5.1.0 // indirect
16 | github.com/google/uuid v1.3.0 // indirect
17 | github.com/jchv/go-winloader v0.0.0-20210711035445-715c2860da7e // indirect
18 | github.com/labstack/echo/v4 v4.10.2 // indirect
19 | github.com/labstack/gommon v0.4.0 // indirect
20 | github.com/leaanthony/go-ansi-parser v1.6.0 // indirect
21 | github.com/leaanthony/gosod v1.0.3 // indirect
22 | github.com/leaanthony/slicer v1.6.0 // indirect
23 | github.com/leaanthony/u v1.1.0 // indirect
24 | github.com/mattn/go-colorable v0.1.13 // indirect
25 | github.com/mattn/go-isatty v0.0.19 // indirect
26 | github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 // indirect
27 | github.com/pkg/errors v0.9.1 // indirect
28 | github.com/rivo/uniseg v0.4.4 // indirect
29 | github.com/samber/lo v1.38.1 // indirect
30 | github.com/tkrajina/go-reflector v0.5.6 // indirect
31 | github.com/valyala/bytebufferpool v1.0.0 // indirect
32 | github.com/valyala/fasttemplate v1.2.2 // indirect
33 | github.com/wailsapp/go-webview2 v1.0.10 // indirect
34 | github.com/wailsapp/mimetype v1.4.1 // indirect
35 | github.com/ysmood/fetchup v0.2.3 // indirect
36 | github.com/ysmood/goob v0.4.0 // indirect
37 | github.com/ysmood/got v0.34.1 // indirect
38 | github.com/ysmood/gson v0.7.3 // indirect
39 | github.com/ysmood/leakless v0.8.0 // indirect
40 | golang.org/x/crypto v0.18.0 // indirect
41 | golang.org/x/exp v0.0.0-20230522175609-2e198f4a06a1 // indirect
42 | golang.org/x/net v0.20.0 // indirect
43 | golang.org/x/sys v0.16.0 // indirect
44 | golang.org/x/text v0.14.0 // indirect
45 | )
46 |
47 | // replace github.com/wailsapp/wails/v2 v2.8.0 => /Users/tudou/go/pkg/mod
48 |
--------------------------------------------------------------------------------
/go.sum:
--------------------------------------------------------------------------------
1 | github.com/bep/debounce v1.2.1 h1:v67fRdBA9UQu2NhLFXrSg0Brw7CexQekrBwDMM8bzeY=
2 | github.com/bep/debounce v1.2.1/go.mod h1:H8yggRPQKLUhUoqrJC1bO2xNya7vanpDl7xR3ISbCJ0=
3 | github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
4 | github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
5 | github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
6 | github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY=
7 | github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
8 | github.com/go-rod/rod v0.114.8 h1:2Mr2kO17blDAwWU4+eOBPgRf0w+6bfUxsPc7Nzd9VXk=
9 | github.com/go-rod/rod v0.114.8/go.mod h1:aiedSEFg5DwG/fnNbUOTPMTTWX3MRj6vIs/a684Mthw=
10 | github.com/godbus/dbus/v5 v5.1.0 h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk=
11 | github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
12 | github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
13 | github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
14 | github.com/jchv/go-winloader v0.0.0-20210711035445-715c2860da7e h1:Q3+PugElBCf4PFpxhErSzU3/PY5sFL5Z6rfv4AbGAck=
15 | github.com/jchv/go-winloader v0.0.0-20210711035445-715c2860da7e/go.mod h1:alcuEEnZsY1WQsagKhZDsoPCRoOijYqhZvPwLG0kzVs=
16 | github.com/labstack/echo/v4 v4.10.2 h1:n1jAhnq/elIFTHr1EYpiYtyKgx4RW9ccVgkqByZaN2M=
17 | github.com/labstack/echo/v4 v4.10.2/go.mod h1:OEyqf2//K1DFdE57vw2DRgWY0M7s65IVQO2FzvI4J5k=
18 | github.com/labstack/gommon v0.4.0 h1:y7cvthEAEbU0yHOf4axH8ZG2NH8knB9iNSoTO8dyIk8=
19 | github.com/labstack/gommon v0.4.0/go.mod h1:uW6kP17uPlLJsD3ijUYn3/M5bAxtlZhMI6m3MFxTMTM=
20 | github.com/leaanthony/debme v1.2.1 h1:9Tgwf+kjcrbMQ4WnPcEIUcQuIZYqdWftzZkBr+i/oOc=
21 | github.com/leaanthony/debme v1.2.1/go.mod h1:3V+sCm5tYAgQymvSOfYQ5Xx2JCr+OXiD9Jkw3otUjiA=
22 | github.com/leaanthony/go-ansi-parser v1.6.0 h1:T8TuMhFB6TUMIUm0oRrSbgJudTFw9csT3ZK09w0t4Pg=
23 | github.com/leaanthony/go-ansi-parser v1.6.0/go.mod h1:+vva/2y4alzVmmIEpk9QDhA7vLC5zKDTRwfZGOp3IWU=
24 | github.com/leaanthony/gosod v1.0.3 h1:Fnt+/B6NjQOVuCWOKYRREZnjGyvg+mEhd1nkkA04aTQ=
25 | github.com/leaanthony/gosod v1.0.3/go.mod h1:BJ2J+oHsQIyIQpnLPjnqFGTMnOZXDbvWtRCSG7jGxs4=
26 | github.com/leaanthony/slicer v1.5.0/go.mod h1:FwrApmf8gOrpzEWM2J/9Lh79tyq8KTX5AzRtwV7m4AY=
27 | github.com/leaanthony/slicer v1.6.0 h1:1RFP5uiPJvT93TAHi+ipd3NACobkW53yUiBqZheE/Js=
28 | github.com/leaanthony/slicer v1.6.0/go.mod h1:o/Iz29g7LN0GqH3aMjWAe90381nyZlDNquK+mtH2Fj8=
29 | github.com/leaanthony/u v1.1.0 h1:2n0d2BwPVXSUq5yhe8lJPHdxevE2qK5G99PMStMZMaI=
30 | github.com/leaanthony/u v1.1.0/go.mod h1:9+o6hejoRljvZ3BzdYlVL0JYCwtnAsVuN9pVTQcaRfI=
31 | github.com/matryer/is v1.4.0 h1:sosSmIWwkYITGrxZ25ULNDeKiMNzFSr4V/eqBQP0PeE=
32 | github.com/matryer/is v1.4.0/go.mod h1:8I/i5uYgLzgsgEloJE1U6xx5HkBQpAZvepWuujKwMRU=
33 | github.com/mattn/go-colorable v0.1.11/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
34 | github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
35 | github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
36 | github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
37 | github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
38 | github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA=
39 | github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
40 | github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 h1:KoWmjvw+nsYOo29YJK9vDA65RGE3NrOnUtO7a+RF9HU=
41 | github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI=
42 | github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
43 | github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
44 | github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
45 | github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
46 | github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
47 | github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis=
48 | github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
49 | github.com/samber/lo v1.38.1 h1:j2XEAqXKb09Am4ebOg31SpvzUTTs6EN3VfgeLUhPdXM=
50 | github.com/samber/lo v1.38.1/go.mod h1:+m/ZKRl6ClXCE2Lgf3MsQlWfh4bn1bz6CXEOxnEXnEA=
51 | github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
52 | github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
53 | github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
54 | github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
55 | github.com/tkrajina/go-reflector v0.5.6 h1:hKQ0gyocG7vgMD2M3dRlYN6WBBOmdoOzJ6njQSepKdE=
56 | github.com/tkrajina/go-reflector v0.5.6/go.mod h1:ECbqLgccecY5kPmPmXg1MrHW585yMcDkVl6IvJe64T4=
57 | github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
58 | github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
59 | github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ=
60 | github.com/valyala/fasttemplate v1.2.2 h1:lxLXG0uE3Qnshl9QyaK6XJxMXlQZELvChBOCmQD0Loo=
61 | github.com/valyala/fasttemplate v1.2.2/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ=
62 | github.com/wailsapp/go-webview2 v1.0.10 h1:PP5Hug6pnQEAhfRzLCoOh2jJaPdrqeRgJKZhyYyDV/w=
63 | github.com/wailsapp/go-webview2 v1.0.10/go.mod h1:Uk2BePfCRzttBBjFrBmqKGJd41P6QIHeV9kTgIeOZNo=
64 | github.com/wailsapp/mimetype v1.4.1 h1:pQN9ycO7uo4vsUUuPeHEYoUkLVkaRntMnHJxVwYhwHs=
65 | github.com/wailsapp/mimetype v1.4.1/go.mod h1:9aV5k31bBOv5z6u+QP8TltzvNGJPmNJD4XlAL3U+j3o=
66 | github.com/wailsapp/wails/v2 v2.8.0 h1:b2NNn99uGPiN6P5bDsnPwOJZWtAOUhNLv7Vl+YxMTr4=
67 | github.com/wailsapp/wails/v2 v2.8.0/go.mod h1:EFUGWkUX3KofO4fmKR/GmsLy3HhPH7NbyOEaMt8lBF0=
68 | github.com/ysmood/fetchup v0.2.3 h1:ulX+SonA0Vma5zUFXtv52Kzip/xe7aj4vqT5AJwQ+ZQ=
69 | github.com/ysmood/fetchup v0.2.3/go.mod h1:xhibcRKziSvol0H1/pj33dnKrYyI2ebIvz5cOOkYGns=
70 | github.com/ysmood/goob v0.4.0 h1:HsxXhyLBeGzWXnqVKtmT9qM7EuVs/XOgkX7T6r1o1AQ=
71 | github.com/ysmood/goob v0.4.0/go.mod h1:u6yx7ZhS4Exf2MwciFr6nIM8knHQIE22lFpWHnfql18=
72 | github.com/ysmood/gop v0.0.2 h1:VuWweTmXK+zedLqYufJdh3PlxDNBOfFHjIZlPT2T5nw=
73 | github.com/ysmood/gop v0.0.2/go.mod h1:rr5z2z27oGEbyB787hpEcx4ab8cCiPnKxn0SUHt6xzk=
74 | github.com/ysmood/got v0.34.1 h1:IrV2uWLs45VXNvZqhJ6g2nIhY+pgIG1CUoOcqfXFl1s=
75 | github.com/ysmood/got v0.34.1/go.mod h1:yddyjq/PmAf08RMLSwDjPyCvHvYed+WjHnQxpH851LM=
76 | github.com/ysmood/gotrace v0.6.0 h1:SyI1d4jclswLhg7SWTL6os3L1WOKeNn/ZtzVQF8QmdY=
77 | github.com/ysmood/gotrace v0.6.0/go.mod h1:TzhIG7nHDry5//eYZDYcTzuJLYQIkykJzCRIo4/dzQM=
78 | github.com/ysmood/gson v0.7.3 h1:QFkWbTH8MxyUTKPkVWAENJhxqdBa4lYTQWqZCiLG6kE=
79 | github.com/ysmood/gson v0.7.3/go.mod h1:3Kzs5zDl21g5F/BlLTNcuAGAYLKt2lV5G8D1zF3RNmg=
80 | github.com/ysmood/leakless v0.8.0 h1:BzLrVoiwxikpgEQR0Lk8NyBN5Cit2b1z+u0mgL4ZJak=
81 | github.com/ysmood/leakless v0.8.0/go.mod h1:R8iAXPRaG97QJwqxs74RdwzcRHT1SWCGTNqY8q0JvMQ=
82 | golang.org/x/crypto v0.18.0 h1:PGVlW0xEltQnzFZ55hkuX5+KLyrMYhHld1YHO4AKcdc=
83 | golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg=
84 | golang.org/x/exp v0.0.0-20230522175609-2e198f4a06a1 h1:k/i9J1pBpvlfR+9QsetwPyERsqu1GIbi967PQMq3Ivc=
85 | golang.org/x/exp v0.0.0-20230522175609-2e198f4a06a1/go.mod h1:V1LtkGg67GoY2N1AnLN78QLrzxkLyJw7RJb1gzOOz9w=
86 | golang.org/x/net v0.0.0-20210505024714-0287a6fb4125/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
87 | golang.org/x/net v0.20.0 h1:aCL9BSgETF1k+blQaYUBx9hJ9LOGP3gAVemcZlf1Kpo=
88 | golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY=
89 | golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
90 | golang.org/x/sys v0.0.0-20200810151505-1b9f1253b3ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
91 | golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
92 | golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
93 | golang.org/x/sys v0.0.0-20210616045830-e2b7044e8c71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
94 | golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
95 | golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
96 | golang.org/x/sys v0.0.0-20211103235746-7861aae1554b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
97 | golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
98 | golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
99 | golang.org/x/sys v0.16.0 h1:xWw16ngr6ZMtmxDyKyIgsE93KNKz5HKmMa3b8ALHidU=
100 | golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
101 | golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
102 | golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
103 | golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
104 | golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
105 | golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
106 | gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
107 | gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
108 | gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
109 | gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
110 | gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
111 |
--------------------------------------------------------------------------------
/main.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import (
4 | "embed"
5 | "github.com/wailsapp/wails/v2"
6 | "github.com/wailsapp/wails/v2/pkg/options"
7 | "github.com/wailsapp/wails/v2/pkg/options/assetserver"
8 | "github.com/wailsapp/wails/v2/pkg/options/mac"
9 | )
10 |
11 | //go:embed all:frontend/dist
12 | var assets embed.FS
13 |
14 | func main() {
15 | // Create an instance of the app structure
16 | app := NewApp()
17 |
18 | //appMenu := menu.NewMenu()
19 |
20 | // Create application with options
21 | err := wails.Run(&options.App{
22 | Title: "boss直聘自动打招呼机器人",
23 | Width: 400,
24 | Height: 500,
25 | AssetServer: &assetserver.Options{
26 | Assets: assets,
27 | },
28 | BackgroundColour: &options.RGBA{R: 27, G: 38, B: 54, A: 1},
29 | OnStartup: app.startup,
30 | Bind: []interface{}{
31 | app,
32 | },
33 | DisableResize: true,
34 |
35 | Mac: &mac.Options{
36 | //TitleBar: mac.TitleBarHiddenInset(),
37 | //窗口标题栏的配置
38 | TitleBar: &mac.TitleBar{
39 | TitlebarAppearsTransparent: false, // 标题栏是否透明
40 | HideTitle: false, // 是否隐藏窗口的标题
41 | HideTitleBar: false, // 是否隐藏整个标题栏
42 | FullSizeContent: false, // 内容是否扩展到全尺寸,包括标题栏下面
43 | UseToolbar: false, // 是否使用工具栏
44 | HideToolbarSeparator: true, // 是否隐藏工具栏和内容之间的分隔线
45 |
46 | },
47 |
48 | // 应用程序的外观设置,这里设置为深色系
49 | Appearance: mac.NSAppearanceNameDarkAqua,
50 |
51 | // 网页视图是否透明
52 | WebviewIsTransparent: true,
53 | // 窗口是否半透明
54 | WindowIsTranslucent: true,
55 | // 关于窗口的信息
56 | About: &mac.AboutInfo{
57 | Title: "bossapp", // 应用程序的名称
58 | Message: "土豆© 2024", // 关于窗口中显示的信息,例如版权信息
59 |
60 | },
61 | },
62 | })
63 |
64 | if err != nil {
65 | println("Error:", err.Error())
66 | }
67 | }
68 |
--------------------------------------------------------------------------------
/wails.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://wails.io/schemas/config.v2.json",
3 | "name": "boss直聘自动打招呼机器人",
4 | "outputfilename": "boss直聘自动打招呼机器人",
5 | "frontend:install": "npm install",
6 | "frontend:build": "npm run build",
7 | "frontend:dev:watcher": "npm run dev",
8 | "frontend:dev:serverUrl": "auto",
9 | "author": {
10 | "name": "zypotato",
11 | "email": "zeyang.potato@icloud.com"
12 | }
13 | }
14 |
15 |
16 |
--------------------------------------------------------------------------------