diff --git a/components.d.ts b/components.d.ts
new file mode 100644
index 0000000..71fe886
--- /dev/null
+++ b/components.d.ts
@@ -0,0 +1,48 @@
+/* eslint-disable */
+// @ts-nocheck
+// biome-ignore lint: disable
+// oxlint-disable
+// ------
+// Generated by unplugin-vue-components
+// Read more: https://github.com/vuejs/core/pull/3399
+import { GlobalComponents } from 'vue'
+
+export {}
+
+/* prettier-ignore */
+declare module 'vue' {
+ export interface GlobalComponents {
+ AConfigProvider: typeof import('ant-design-vue/es')['ConfigProvider']
+ ButtonCommon: typeof import('./src/components/common/ButtonCommon.vue')['default']
+ CardBase: typeof import('./src/components/common/CardBase.vue')['default']
+ CardBaseScrollable: typeof import('./src/components/common/CardBaseScrollable.vue')['default']
+ FormCommon: typeof import('./src/components/common/FormCommon.vue')['default']
+ IconCommon: typeof import('./src/components/icon/IconCommon.vue')['default']
+ LayoutVue: typeof import('./src/components/common/LayoutVue.vue')['default']
+ ModalCommon: typeof import('./src/components/common/ModalCommon.vue')['default']
+ PasswordForm: typeof import('./src/components/common/PasswordForm.vue')['default']
+ RouterLink: typeof import('vue-router')['RouterLink']
+ RouterView: typeof import('vue-router')['RouterView']
+ SpinnerCommon: typeof import('./src/components/common/SpinnerCommon.vue')['default']
+ TabPaneCommon: typeof import('./src/components/common/TabPaneCommon.vue')['default']
+ TabsCommon: typeof import('./src/components/common/TabsCommon.vue')['default']
+ }
+}
+
+// For TSX support
+declare global {
+ const AConfigProvider: typeof import('ant-design-vue/es')['ConfigProvider']
+ const ButtonCommon: typeof import('./src/components/common/ButtonCommon.vue')['default']
+ const CardBase: typeof import('./src/components/common/CardBase.vue')['default']
+ const CardBaseScrollable: typeof import('./src/components/common/CardBaseScrollable.vue')['default']
+ const FormCommon: typeof import('./src/components/common/FormCommon.vue')['default']
+ const IconCommon: typeof import('./src/components/icon/IconCommon.vue')['default']
+ const LayoutVue: typeof import('./src/components/common/LayoutVue.vue')['default']
+ const ModalCommon: typeof import('./src/components/common/ModalCommon.vue')['default']
+ const PasswordForm: typeof import('./src/components/common/PasswordForm.vue')['default']
+ const RouterLink: typeof import('vue-router')['RouterLink']
+ const RouterView: typeof import('vue-router')['RouterView']
+ const SpinnerCommon: typeof import('./src/components/common/SpinnerCommon.vue')['default']
+ const TabPaneCommon: typeof import('./src/components/common/TabPaneCommon.vue')['default']
+ const TabsCommon: typeof import('./src/components/common/TabsCommon.vue')['default']
+}
\ No newline at end of file
diff --git a/electron/ipcHandlers.ts b/electron/ipcHandlers.ts
index fddc0d2..3f17a12 100644
--- a/electron/ipcHandlers.ts
+++ b/electron/ipcHandlers.ts
@@ -3,6 +3,8 @@ import fs from 'fs'
import path from 'path'
import { encrypt, fromEncryptedJson } from './utils/keystore'
+const neptuneNative = require('@neptune/native')
+
// Create keystore into default wallets directory
ipcMain.handle('wallet:createKeystore', async (_event, seed, password) => {
try {
@@ -67,13 +69,50 @@ ipcMain.handle('wallet:checkKeystore', async () => {
const walletDir = path.join(process.cwd(), 'wallets')
if (!fs.existsSync(walletDir)) return { exists: false, filePath: null }
- const file = fs.readdirSync(walletDir).find((f) => f.endsWith('.json'))
- if (!file) return { exists: false, filePath: null }
+ const newestFile = fs
+ .readdirSync(walletDir)
+ .filter((f) => f.endsWith('.json'))
+ .sort(
+ (a, b) =>
+ fs.statSync(path.join(walletDir, b)).mtime.getTime() -
+ fs.statSync(path.join(walletDir, a)).mtime.getTime()
+ )[0]
- const filePath = path.join(walletDir, file)
- return { exists: true, filePath}
+ if (!newestFile) return { exists: false, filePath: null }
+
+ return { exists: true, filePath: path.join(walletDir, newestFile) }
} catch (error) {
- console.error('Error checking keystore:', error)
+ console.error('Error checking keystore ipc:', error)
return { exists: false, filePath: null, error: String(error) }
}
})
+
+ipcMain.handle('wallet:generateKeysFromSeed', async (_event, seedPhrase: string[]) => {
+ try {
+ const wallet = new neptuneNative.WalletManager()
+ return wallet.generateKeysFromSeed(seedPhrase)
+ } catch (error) {
+ console.error('Error generating keys from seed ipc:', error)
+ throw error
+ }
+})
+
+ipcMain.handle('wallet:buildTransactionWithPrimitiveProof', async (_event, args) => {
+ const { spendingKeyHex, inputAdditionRecords, outputAddresses, outputAmounts, fee } = args
+
+ try {
+ const builder = new neptuneNative.SimpleTransactionBuilder()
+ const result = await builder.buildTransactionWithPrimitiveProof(
+ import.meta.env.VITE_APP_API,
+ spendingKeyHex,
+ inputAdditionRecords,
+ outputAddresses,
+ outputAmounts,
+ fee
+ )
+ return JSON.parse(result)
+ } catch (error) {
+ console.error('Error building transaction with primitive proof ipc:', error)
+ throw error
+ }
+})
diff --git a/electron/main.ts b/electron/main.ts
index 59a63c1..94e4a3b 100644
--- a/electron/main.ts
+++ b/electron/main.ts
@@ -11,6 +11,9 @@ const createWindow = () => {
const mainWindow = new BrowserWindow({
width: 800,
height: 800,
+ minWidth: 500,
+ minHeight: 650,
+ icon: path.resolve(process.cwd(), 'public/favicon.png'),
webPreferences: {
preload: path.join(__dirname, 'preload.js'),
contextIsolation: true,
diff --git a/electron/preload.ts b/electron/preload.ts
index dd9af25..4b791e0 100644
--- a/electron/preload.ts
+++ b/electron/preload.ts
@@ -10,4 +10,8 @@ contextBridge.exposeInMainWorld('walletApi', {
decryptKeystore: (filePath: string, password: string) =>
ipcRenderer.invoke('wallet:decryptKeystore', filePath, password),
checkKeystore: () => ipcRenderer.invoke('wallet:checkKeystore'),
+ generateKeysFromSeed: (seedPhrase: string[]) =>
+ ipcRenderer.invoke('wallet:generateKeysFromSeed', seedPhrase),
+ buildTransactionWithPrimitiveProof: (args: any) =>
+ ipcRenderer.invoke('wallet:buildTransactionWithPrimitiveProof', args),
})
diff --git a/index.html b/index.html
index 089e95b..0933a1a 100644
--- a/index.html
+++ b/index.html
@@ -2,7 +2,7 @@
-
+
Neptune Web Wallet
diff --git a/package-lock.json b/package-lock.json
index b8b95d3..c6468a6 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -11,6 +11,7 @@
"packages/*"
],
"dependencies": {
+ "@neptune/native": "file:./packages/neptune-native",
"@neptune/wasm": "file:./packages/neptune-wasm",
"ant-design-vue": "^4.2.6",
"axios": "^1.6.8",
@@ -47,6 +48,8 @@
"prettier": "^3.2.5",
"sass": "^1.75.0",
"typescript": "~5.4.0",
+ "unplugin-auto-import": "^20.2.0",
+ "unplugin-vue-components": "^30.0.0",
"vite": "^5.2.8",
"vite-plugin-vue-devtools": "^7.0.25",
"vue-tsc": "^2.0.11"
@@ -146,6 +149,16 @@
"url": "https://opencollective.com/babel"
}
},
+ "node_modules/@babel/core/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
"node_modules/@babel/generator": {
"version": "7.28.5",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.5.tgz",
@@ -193,6 +206,16 @@
"node": ">=6.9.0"
}
},
+ "node_modules/@babel/helper-compilation-targets/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
"node_modules/@babel/helper-create-class-features-plugin": {
"version": "7.28.5",
"resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.5.tgz",
@@ -215,6 +238,16 @@
"@babel/core": "^7.0.0"
}
},
+ "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
"node_modules/@babel/helper-globals": {
"version": "7.28.0",
"resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz",
@@ -603,34 +636,6 @@
"node": ">= 16.4.0"
}
},
- "node_modules/@electron-forge/cli/node_modules/fs-extra": {
- "version": "10.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
- "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@electron-forge/cli/node_modules/semver": {
- "version": "7.7.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
- "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
- "dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/@electron-forge/core": {
"version": "7.10.2",
"resolved": "https://registry.npmjs.org/@electron-forge/core/-/core-7.10.2.tgz",
@@ -709,62 +714,6 @@
"node": ">= 16.4.0"
}
},
- "node_modules/@electron-forge/core-utils/node_modules/fs-extra": {
- "version": "10.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
- "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@electron-forge/core-utils/node_modules/semver": {
- "version": "7.7.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
- "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
- "dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@electron-forge/core/node_modules/fs-extra": {
- "version": "10.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
- "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@electron-forge/core/node_modules/semver": {
- "version": "7.7.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
- "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
- "dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/@electron-forge/maker-base": {
"version": "7.10.2",
"resolved": "https://registry.npmjs.org/@electron-forge/maker-base/-/maker-base-7.10.2.tgz",
@@ -780,21 +729,6 @@
"node": ">= 16.4.0"
}
},
- "node_modules/@electron-forge/maker-base/node_modules/fs-extra": {
- "version": "10.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
- "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
"node_modules/@electron-forge/maker-deb": {
"version": "7.10.2",
"resolved": "https://registry.npmjs.org/@electron-forge/maker-deb/-/maker-deb-7.10.2.tgz",
@@ -847,21 +781,6 @@
"electron-winstaller": "^5.3.0"
}
},
- "node_modules/@electron-forge/maker-squirrel/node_modules/fs-extra": {
- "version": "10.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
- "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
"node_modules/@electron-forge/maker-zip": {
"version": "7.10.2",
"resolved": "https://registry.npmjs.org/@electron-forge/maker-zip/-/maker-zip-7.10.2.tgz",
@@ -879,21 +798,6 @@
"node": ">= 16.4.0"
}
},
- "node_modules/@electron-forge/maker-zip/node_modules/fs-extra": {
- "version": "10.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
- "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
"node_modules/@electron-forge/plugin-auto-unpack-natives": {
"version": "7.10.2",
"resolved": "https://registry.npmjs.org/@electron-forge/plugin-auto-unpack-natives/-/plugin-auto-unpack-natives-7.10.2.tgz",
@@ -956,21 +860,6 @@
"node": ">= 16.4.0"
}
},
- "node_modules/@electron-forge/plugin-vite/node_modules/fs-extra": {
- "version": "10.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
- "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
"node_modules/@electron-forge/publisher-base": {
"version": "7.10.2",
"resolved": "https://registry.npmjs.org/@electron-forge/publisher-base/-/publisher-base-7.10.2.tgz",
@@ -1019,34 +908,6 @@
"node": ">= 16.4.0"
}
},
- "node_modules/@electron-forge/template-base/node_modules/fs-extra": {
- "version": "10.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
- "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@electron-forge/template-base/node_modules/semver": {
- "version": "7.7.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
- "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
- "dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/@electron-forge/template-vite": {
"version": "7.10.2",
"resolved": "https://registry.npmjs.org/@electron-forge/template-vite/-/template-vite-7.10.2.tgz",
@@ -1077,36 +938,6 @@
"node": ">= 16.4.0"
}
},
- "node_modules/@electron-forge/template-vite-typescript/node_modules/fs-extra": {
- "version": "10.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
- "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@electron-forge/template-vite/node_modules/fs-extra": {
- "version": "10.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
- "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
"node_modules/@electron-forge/template-webpack": {
"version": "7.10.2",
"resolved": "https://registry.npmjs.org/@electron-forge/template-webpack/-/template-webpack-7.10.2.tgz",
@@ -1139,36 +970,6 @@
"node": ">= 16.4.0"
}
},
- "node_modules/@electron-forge/template-webpack-typescript/node_modules/fs-extra": {
- "version": "10.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
- "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@electron-forge/template-webpack/node_modules/fs-extra": {
- "version": "10.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
- "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
"node_modules/@electron-forge/tracer": {
"version": "7.10.2",
"resolved": "https://registry.npmjs.org/@electron-forge/tracer/-/tracer-7.10.2.tgz",
@@ -1200,17 +1001,6 @@
"node": ">=10.12.0"
}
},
- "node_modules/@electron/asar/node_modules/brace-expansion": {
- "version": "1.1.12",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
- "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
"node_modules/@electron/asar/node_modules/commander": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz",
@@ -1221,19 +1011,6 @@
"node": ">= 6"
}
},
- "node_modules/@electron/asar/node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
"node_modules/@electron/fuses": {
"version": "1.8.0",
"resolved": "https://registry.npmjs.org/@electron/fuses/-/fuses-1.8.0.tgz",
@@ -1312,6 +1089,16 @@
"graceful-fs": "^4.1.6"
}
},
+ "node_modules/@electron/get/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
"node_modules/@electron/get/node_modules/universalify": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
@@ -1347,6 +1134,16 @@
"node": ">=12.13.0"
}
},
+ "node_modules/@electron/node-gyp/node_modules/brace-expansion": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
+ "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
"node_modules/@electron/node-gyp/node_modules/glob": {
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz",
@@ -1381,19 +1178,6 @@
"node": ">=10"
}
},
- "node_modules/@electron/node-gyp/node_modules/semver": {
- "version": "7.7.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
- "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
- "dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/@electron/notarize": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/@electron/notarize/-/notarize-2.5.0.tgz",
@@ -1447,21 +1231,6 @@
"node": ">=12.0.0"
}
},
- "node_modules/@electron/osx-sign/node_modules/fs-extra": {
- "version": "10.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
- "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
"node_modules/@electron/packager": {
"version": "18.4.4",
"resolved": "https://registry.npmjs.org/@electron/packager/-/packager-18.4.4.tgz",
@@ -1501,17 +1270,19 @@
"url": "https://github.com/electron/packager?sponsor=1"
}
},
- "node_modules/@electron/packager/node_modules/semver": {
- "version": "7.7.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
- "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
+ "node_modules/@electron/packager/node_modules/fs-extra": {
+ "version": "11.3.2",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.2.tgz",
+ "integrity": "sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==",
"dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
},
"engines": {
- "node": ">=10"
+ "node": ">=14.14"
}
},
"node_modules/@electron/rebuild": {
@@ -1543,44 +1314,6 @@
"node": ">=12.13.0"
}
},
- "node_modules/@electron/rebuild/node_modules/detect-libc": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz",
- "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==",
- "dev": true,
- "license": "Apache-2.0",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@electron/rebuild/node_modules/fs-extra": {
- "version": "10.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
- "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@electron/rebuild/node_modules/semver": {
- "version": "7.7.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
- "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
- "dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/@electron/universal": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/@electron/universal/-/universal-2.0.3.tgz",
@@ -1600,6 +1333,47 @@
"node": ">=16.4"
}
},
+ "node_modules/@electron/universal/node_modules/brace-expansion": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
+ "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/@electron/universal/node_modules/fs-extra": {
+ "version": "11.3.2",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.2.tgz",
+ "integrity": "sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=14.14"
+ }
+ },
+ "node_modules/@electron/universal/node_modules/minimatch": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+ "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
"node_modules/@electron/windows-sign": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/@electron/windows-sign/-/windows-sign-1.2.2.tgz",
@@ -1620,6 +1394,21 @@
"node": ">=14.14"
}
},
+ "node_modules/@electron/windows-sign/node_modules/fs-extra": {
+ "version": "11.3.2",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.2.tgz",
+ "integrity": "sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=14.14"
+ }
+ },
"node_modules/@emotion/hash": {
"version": "0.9.2",
"resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.2.tgz",
@@ -2076,30 +1865,6 @@
"url": "https://opencollective.com/eslint"
}
},
- "node_modules/@eslint/eslintrc/node_modules/brace-expansion": {
- "version": "1.1.12",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
- "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/@eslint/eslintrc/node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
"node_modules/@eslint/js": {
"version": "8.57.1",
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz",
@@ -2133,30 +1898,6 @@
"node": ">=10.10.0"
}
},
- "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": {
- "version": "1.1.12",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
- "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/@humanwhocodes/config-array/node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
"node_modules/@humanwhocodes/module-importer": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
@@ -2235,9 +1976,9 @@
}
},
"node_modules/@inquirer/core/node_modules/@types/node": {
- "version": "22.18.13",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-22.18.13.tgz",
- "integrity": "sha512-Bo45YKIjnmFtv6I1TuC8AaHBbqXtIo+Om5fE4QiU1Tj8QR/qt+8O3BAtOimG5IFmwaWiPmB3Mv3jtYzBA4Us2A==",
+ "version": "22.19.0",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.0.tgz",
+ "integrity": "sha512-xpr/lmLPQEj+TUnHmR+Ab91/glhJvsqcjB+yY0Ix9GO70H6Lb4FHH5GeqdOE5btAx7eIMwuHkp4H2MSkLcqWbA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -2522,6 +2263,27 @@
"node": ">= 12.13.0"
}
},
+ "node_modules/@napi-rs/cli": {
+ "version": "2.18.4",
+ "resolved": "https://registry.npmjs.org/@napi-rs/cli/-/cli-2.18.4.tgz",
+ "integrity": "sha512-SgJeA4df9DE2iAEpr3M2H0OKl/yjtg1BnRI5/JyowS71tUWhrfSu2LT0V3vlHET+g1hBVlrO60PmEXwUEKp8Mg==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "napi": "scripts/index.js"
+ },
+ "engines": {
+ "node": ">= 10"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/Brooooooklyn"
+ }
+ },
+ "node_modules/@neptune/native": {
+ "resolved": "packages/neptune-native",
+ "link": true
+ },
"node_modules/@neptune/wasm": {
"resolved": "packages/neptune-wasm",
"link": true
@@ -2578,19 +2340,6 @@
"node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/@npmcli/fs/node_modules/semver": {
- "version": "7.7.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
- "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
- "dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/@npmcli/move-file": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz",
@@ -2916,6 +2665,20 @@
"url": "https://opencollective.com/parcel"
}
},
+ "node_modules/@parcel/watcher/node_modules/detect-libc": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
+ "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "bin": {
+ "detect-libc": "bin/detect-libc.js"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
"node_modules/@pkgr/core": {
"version": "0.2.9",
"resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz",
@@ -3644,17 +3407,30 @@
}
}
},
- "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": {
- "version": "7.7.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
- "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
+ "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+ "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
"dev": true,
"license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
},
"engines": {
- "node": ">=10"
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/@typescript-eslint/utils": {
@@ -3828,53 +3604,53 @@
}
},
"node_modules/@vue/compiler-core": {
- "version": "3.5.22",
- "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.22.tgz",
- "integrity": "sha512-jQ0pFPmZwTEiRNSb+i9Ow/I/cHv2tXYqsnHKKyCQ08irI2kdF5qmYedmF8si8mA7zepUFmJ2hqzS8CQmNOWOkQ==",
+ "version": "3.5.23",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.23.tgz",
+ "integrity": "sha512-nW7THWj5HOp085ROk65LwaoxuzDsjIxr485F4iu63BoxsXoSqKqmsUUoP4A7Gl67DgIgi0zJ8JFgHfvny/74MA==",
"license": "MIT",
"dependencies": {
- "@babel/parser": "^7.28.4",
- "@vue/shared": "3.5.22",
+ "@babel/parser": "^7.28.5",
+ "@vue/shared": "3.5.23",
"entities": "^4.5.0",
"estree-walker": "^2.0.2",
"source-map-js": "^1.2.1"
}
},
"node_modules/@vue/compiler-dom": {
- "version": "3.5.22",
- "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.22.tgz",
- "integrity": "sha512-W8RknzUM1BLkypvdz10OVsGxnMAuSIZs9Wdx1vzA3mL5fNMN15rhrSCLiTm6blWeACwUwizzPVqGJgOGBEN/hA==",
+ "version": "3.5.23",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.23.tgz",
+ "integrity": "sha512-AT8RMw0vEzzzO0JU5gY0F6iCzaWUIh/aaRVordzMBKXRpoTllTT4kocHDssByPsvodNCfump/Lkdow2mT/O5KQ==",
"license": "MIT",
"dependencies": {
- "@vue/compiler-core": "3.5.22",
- "@vue/shared": "3.5.22"
+ "@vue/compiler-core": "3.5.23",
+ "@vue/shared": "3.5.23"
}
},
"node_modules/@vue/compiler-sfc": {
- "version": "3.5.22",
- "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.22.tgz",
- "integrity": "sha512-tbTR1zKGce4Lj+JLzFXDq36K4vcSZbJ1RBu8FxcDv1IGRz//Dh2EBqksyGVypz3kXpshIfWKGOCcqpSbyGWRJQ==",
+ "version": "3.5.23",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.23.tgz",
+ "integrity": "sha512-3QTEUo4qg7FtQwaDJa8ou1CUikx5WTtZlY61rRRDu3lK2ZKrGoAGG8mvDgOpDsQ4A1bez9s+WtBB6DS2KuFCPw==",
"license": "MIT",
"dependencies": {
- "@babel/parser": "^7.28.4",
- "@vue/compiler-core": "3.5.22",
- "@vue/compiler-dom": "3.5.22",
- "@vue/compiler-ssr": "3.5.22",
- "@vue/shared": "3.5.22",
+ "@babel/parser": "^7.28.5",
+ "@vue/compiler-core": "3.5.23",
+ "@vue/compiler-dom": "3.5.23",
+ "@vue/compiler-ssr": "3.5.23",
+ "@vue/shared": "3.5.23",
"estree-walker": "^2.0.2",
- "magic-string": "^0.30.19",
+ "magic-string": "^0.30.21",
"postcss": "^8.5.6",
"source-map-js": "^1.2.1"
}
},
"node_modules/@vue/compiler-ssr": {
- "version": "3.5.22",
- "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.22.tgz",
- "integrity": "sha512-GdgyLvg4R+7T8Nk2Mlighx7XGxq/fJf9jaVofc3IL0EPesTE86cP/8DD1lT3h1JeZr2ySBvyqKQJgbS54IX1Ww==",
+ "version": "3.5.23",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.23.tgz",
+ "integrity": "sha512-Hld2xphbMjXs9Q9WKxPf2EqmE+Rq/FEDnK/wUBtmYq74HCV4XDdSCheAaB823OQXIIFGq9ig/RbAZkF9s4U0Ow==",
"license": "MIT",
"dependencies": {
- "@vue/compiler-dom": "3.5.22",
- "@vue/shared": "3.5.22"
+ "@vue/compiler-dom": "3.5.23",
+ "@vue/shared": "3.5.23"
}
},
"node_modules/@vue/compiler-vue2": {
@@ -4022,54 +3798,80 @@
}
}
},
- "node_modules/@vue/reactivity": {
- "version": "3.5.22",
- "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.22.tgz",
- "integrity": "sha512-f2Wux4v/Z2pqc9+4SmgZC1p73Z53fyD90NFWXiX9AKVnVBEvLFOWCEgJD3GdGnlxPZt01PSlfmLqbLYzY/Fw4A==",
+ "node_modules/@vue/language-core/node_modules/brace-expansion": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
+ "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
+ "dev": true,
"license": "MIT",
"dependencies": {
- "@vue/shared": "3.5.22"
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/@vue/language-core/node_modules/minimatch": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+ "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/@vue/reactivity": {
+ "version": "3.5.23",
+ "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.23.tgz",
+ "integrity": "sha512-ji5w0qvrPyBmBx5Ldv4QGNsw0phgRreEvjt0iUf1lei2Sm8//9ZAi78uM2ZjsT5gk0YZilLuoRCIMvtuZlHMJw==",
+ "license": "MIT",
+ "dependencies": {
+ "@vue/shared": "3.5.23"
}
},
"node_modules/@vue/runtime-core": {
- "version": "3.5.22",
- "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.22.tgz",
- "integrity": "sha512-EHo4W/eiYeAzRTN5PCextDUZ0dMs9I8mQ2Fy+OkzvRPUYQEyK9yAjbasrMCXbLNhF7P0OUyivLjIy0yc6VrLJQ==",
+ "version": "3.5.23",
+ "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.23.tgz",
+ "integrity": "sha512-LMB0S6/G7mFJcpQeQaZrbsthFbWrIX8FVTzu5x9U3Ec8YW5MY1CGAnBBHNj+TPOBu3pIbtPpjrXtcaN04X+aBw==",
"license": "MIT",
"dependencies": {
- "@vue/reactivity": "3.5.22",
- "@vue/shared": "3.5.22"
+ "@vue/reactivity": "3.5.23",
+ "@vue/shared": "3.5.23"
}
},
"node_modules/@vue/runtime-dom": {
- "version": "3.5.22",
- "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.22.tgz",
- "integrity": "sha512-Av60jsryAkI023PlN7LsqrfPvwfxOd2yAwtReCjeuugTJTkgrksYJJstg1e12qle0NarkfhfFu1ox2D+cQotww==",
+ "version": "3.5.23",
+ "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.23.tgz",
+ "integrity": "sha512-r/PYc8W9THzEL0UExpTkV+d31zO+Jid/RMZIDG6aS/NekOEUHuCJkJgftySWZw7JTJO/+q9Kxkg8p+i7Q7Q+ew==",
"license": "MIT",
"dependencies": {
- "@vue/reactivity": "3.5.22",
- "@vue/runtime-core": "3.5.22",
- "@vue/shared": "3.5.22",
+ "@vue/reactivity": "3.5.23",
+ "@vue/runtime-core": "3.5.23",
+ "@vue/shared": "3.5.23",
"csstype": "^3.1.3"
}
},
"node_modules/@vue/server-renderer": {
- "version": "3.5.22",
- "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.22.tgz",
- "integrity": "sha512-gXjo+ao0oHYTSswF+a3KRHZ1WszxIqO7u6XwNHqcqb9JfyIL/pbWrrh/xLv7jeDqla9u+LK7yfZKHih1e1RKAQ==",
+ "version": "3.5.23",
+ "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.23.tgz",
+ "integrity": "sha512-NiWZsNCsXA20/VufcrW5u+Trt/PyFlpMmxaB2KERYM8eZgUoKUjXxJQb9ypq+LZ0Sp3XHJGNBR8DkhRnkKAMUw==",
"license": "MIT",
"dependencies": {
- "@vue/compiler-ssr": "3.5.22",
- "@vue/shared": "3.5.22"
+ "@vue/compiler-ssr": "3.5.23",
+ "@vue/shared": "3.5.23"
},
"peerDependencies": {
- "vue": "3.5.22"
+ "vue": "3.5.23"
}
},
"node_modules/@vue/shared": {
- "version": "3.5.22",
- "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.22.tgz",
- "integrity": "sha512-F4yc6palwq3TT0u+FYf0Ns4Tfl9GRFURDN2gWG7L1ecIaS/4fCIuFOjMTnCyjsu/OK6vaDKLCrGAa+KvvH+h4w==",
+ "version": "3.5.23",
+ "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.23.tgz",
+ "integrity": "sha512-0YZ1DYuC5o/YJPf6pFdt2KYxVGDxkDbH/1NYJnVJWUkzr8ituBEmFVQRNX2gCaAsFEjEDnLkWpgqlZA7htgS/g==",
"license": "MIT"
},
"node_modules/@vue/tsconfig": {
@@ -4429,19 +4231,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/ansi-escapes/node_modules/type-fest": {
- "version": "0.21.3",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
- "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
- "dev": true,
- "license": "(MIT OR CC0-1.0)",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/ansi-regex": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
@@ -4564,9 +4353,9 @@
}
},
"node_modules/axios": {
- "version": "1.13.1",
- "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.1.tgz",
- "integrity": "sha512-hU4EGxxt+j7TQijx1oYdAjw4xuIp1wRQSsbMFwSthCWeBQur1eF+qJ5iQ5sN3Tw8YRzQNKb8jszgBdMDVqwJcw==",
+ "version": "1.13.2",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.2.tgz",
+ "integrity": "sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==",
"license": "MIT",
"dependencies": {
"follow-redirects": "^1.15.6",
@@ -4603,9 +4392,9 @@
"license": "MIT"
},
"node_modules/baseline-browser-mapping": {
- "version": "2.8.20",
- "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.20.tgz",
- "integrity": "sha512-JMWsdF+O8Orq3EMukbUN1QfbLK9mX2CkUmQBcW2T0s8OmdAUL5LLM/6wFwSrqXzlXB13yhyK9gTKS1rIizOduQ==",
+ "version": "2.8.25",
+ "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.25.tgz",
+ "integrity": "sha512-2NovHVesVF5TXefsGX1yzx1xgr7+m9JQenvz6FQY3qd+YXkKkYiv+vTCc7OriP9mcDZpTC5mAOYN4ocd29+erA==",
"dev": true,
"license": "Apache-2.0",
"bin": {
@@ -4613,9 +4402,9 @@
}
},
"node_modules/birpc": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/birpc/-/birpc-2.6.1.tgz",
- "integrity": "sha512-LPnFhlDpdSH6FJhJyn4M0kFO7vtQ5iPw24FnG0y21q09xC7e8+1LeR31S1MAIrDAHp4m7aas4bEkTDTvMAtebQ==",
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/birpc/-/birpc-2.7.0.tgz",
+ "integrity": "sha512-tub/wFGH49vNCm0xraykcY3TcRgX/3JsALYq/Lwrtti+bTyFHkCUAWF5wgYoie8P41wYwig2mIKiqoocr1EkEQ==",
"dev": true,
"license": "MIT",
"funding": {
@@ -4658,13 +4447,14 @@
"optional": true
},
"node_modules/brace-expansion": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
- "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
+ "version": "1.1.12",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
+ "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "balanced-match": "^1.0.0"
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
}
},
"node_modules/braces": {
@@ -4802,6 +4592,16 @@
"node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
+ "node_modules/cacache/node_modules/brace-expansion": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
+ "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
"node_modules/cacache/node_modules/glob": {
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz",
@@ -4875,22 +4675,6 @@
"node": ">=8"
}
},
- "node_modules/cacheable-request/node_modules/get-stream": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
- "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "pump": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/call-bind-apply-helpers": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
@@ -4915,9 +4699,9 @@
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001751",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001751.tgz",
- "integrity": "sha512-A0QJhug0Ly64Ii3eIqHu5X51ebln3k4yTUkY1j8drqpWHVreg/VLijN48cZ1bYPiqOQuqpkIKnzr/Ul8V+p6Cw==",
+ "version": "1.0.30001754",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001754.tgz",
+ "integrity": "sha512-x6OeBXueoAceOmotzx3PO4Zpt4rzpeIFsSr6AAePTZxSkXiYDUmpypEl7e2+8NCd9bD7bXjqyef8CJYPC1jfxg==",
"dev": true,
"funding": [
{
@@ -5221,6 +5005,13 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/confbox": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.2.tgz",
+ "integrity": "sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/convert-source-map": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
@@ -5328,9 +5119,9 @@
"license": "MIT"
},
"node_modules/dayjs": {
- "version": "1.11.18",
- "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.18.tgz",
- "integrity": "sha512-zFBQ7WFRvVRhKcWoUh+ZA1g2HVgUbsZm9sbddh8EC5iv93sui8DVVz1Npvz+r6meo9VKfa8NyLWBsQK1VvIKPA==",
+ "version": "1.11.19",
+ "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.19.tgz",
+ "integrity": "sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==",
"license": "MIT"
},
"node_modules/de-indent": {
@@ -5508,17 +5299,13 @@
}
},
"node_modules/detect-libc": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
- "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==",
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz",
+ "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==",
"dev": true,
"license": "Apache-2.0",
- "optional": true,
- "bin": {
- "detect-libc": "bin/detect-libc.js"
- },
"engines": {
- "node": ">=0.10"
+ "node": ">=8"
}
},
"node_modules/detect-node": {
@@ -5540,30 +5327,6 @@
"p-limit": "^3.1.0 "
}
},
- "node_modules/dir-compare/node_modules/brace-expansion": {
- "version": "1.1.12",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
- "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/dir-compare/node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
"node_modules/dir-glob": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
@@ -5624,9 +5387,9 @@
"license": "MIT"
},
"node_modules/electron": {
- "version": "39.0.0",
- "resolved": "https://registry.npmjs.org/electron/-/electron-39.0.0.tgz",
- "integrity": "sha512-UejnuOK4jpRZUq7MkEAnR/szsRWLKBJAdvn6j3xdQLT57fVv13VSNdaUHHjSheaqGzNhCGIdkPsPJnGJVh5kiA==",
+ "version": "39.1.0",
+ "resolved": "https://registry.npmjs.org/electron/-/electron-39.1.0.tgz",
+ "integrity": "sha512-vPRbKKQUzKWZZX68fuYdz4iS/eavGcQkHOGK4ylv0YJLbBRxxUlflPRdqRGflFjwid+sja7gbNul2lArevYwrw==",
"dev": true,
"hasInstallScript": true,
"license": "MIT",
@@ -5711,20 +5474,6 @@
"node": ">=10"
}
},
- "node_modules/electron-installer-common/node_modules/semver": {
- "version": "7.7.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
- "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
- "dev": true,
- "license": "ISC",
- "optional": true,
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/electron-installer-debian": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/electron-installer-debian/-/electron-installer-debian-3.2.0.tgz",
@@ -6083,9 +5832,9 @@
"license": "MIT"
},
"node_modules/electron-to-chromium": {
- "version": "1.5.242",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.242.tgz",
- "integrity": "sha512-msZ7SYGFpXkm/iUizlMrm/FPNeYo8uSltQccLVFO3fV4RN2JWGdG7Aatztxtw3uDWp3DkupfkrosLjUnhY+iOw==",
+ "version": "1.5.245",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.245.tgz",
+ "integrity": "sha512-rdmGfW47ZhL/oWEJAY4qxRtdly2B98ooTJ0pdEI4jhVLZ6tNf8fPtov2wS1IRKwFJT92le3x4Knxiwzl7cPPpQ==",
"dev": true,
"license": "ISC"
},
@@ -6172,9 +5921,9 @@
}
},
"node_modules/electron/node_modules/@types/node": {
- "version": "22.18.13",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-22.18.13.tgz",
- "integrity": "sha512-Bo45YKIjnmFtv6I1TuC8AaHBbqXtIo+Om5fE4QiU1Tj8QR/qt+8O3BAtOimG5IFmwaWiPmB3Mv3jtYzBA4Us2A==",
+ "version": "22.19.0",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.0.tgz",
+ "integrity": "sha512-xpr/lmLPQEj+TUnHmR+Ab91/glhJvsqcjB+yY0Ix9GO70H6Lb4FHH5GeqdOE5btAx7eIMwuHkp4H2MSkLcqWbA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -6206,6 +5955,16 @@
"graceful-fs": "^4.1.6"
}
},
+ "node_modules/electron/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
"node_modules/electron/node_modules/universalify": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
@@ -6567,19 +6326,6 @@
"eslint": "^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0"
}
},
- "node_modules/eslint-plugin-vue/node_modules/semver": {
- "version": "7.7.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
- "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
- "dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/eslint-scope": {
"version": "7.2.2",
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
@@ -6610,30 +6356,6 @@
"url": "https://opencollective.com/eslint"
}
},
- "node_modules/eslint/node_modules/brace-expansion": {
- "version": "1.1.12",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
- "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/eslint/node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
"node_modules/espree": {
"version": "9.6.1",
"resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
@@ -6722,30 +6444,115 @@
}
},
"node_modules/execa": {
- "version": "9.6.0",
- "resolved": "https://registry.npmjs.org/execa/-/execa-9.6.0.tgz",
- "integrity": "sha512-jpWzZ1ZhwUmeWRhS7Qv3mhpOhLfwI+uAX4e5fOcXqwMR7EcJ0pj2kV1CVzHVMX/LphnKWD3LObjZCoJ71lKpHw==",
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
+ "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@sindresorhus/merge-streams": "^4.0.0",
- "cross-spawn": "^7.0.6",
- "figures": "^6.1.0",
- "get-stream": "^9.0.0",
- "human-signals": "^8.0.1",
- "is-plain-obj": "^4.1.0",
- "is-stream": "^4.0.1",
- "npm-run-path": "^6.0.0",
- "pretty-ms": "^9.2.0",
- "signal-exit": "^4.1.0",
- "strip-final-newline": "^4.0.0",
- "yoctocolors": "^2.1.1"
+ "cross-spawn": "^6.0.0",
+ "get-stream": "^4.0.0",
+ "is-stream": "^1.1.0",
+ "npm-run-path": "^2.0.0",
+ "p-finally": "^1.0.0",
+ "signal-exit": "^3.0.0",
+ "strip-eof": "^1.0.0"
},
"engines": {
- "node": "^18.19.0 || >=20.5.0"
+ "node": ">=6"
+ }
+ },
+ "node_modules/execa/node_modules/cross-spawn": {
+ "version": "6.0.6",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.6.tgz",
+ "integrity": "sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "nice-try": "^1.0.4",
+ "path-key": "^2.0.1",
+ "semver": "^5.5.0",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
},
- "funding": {
- "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ "engines": {
+ "node": ">=4.8"
+ }
+ },
+ "node_modules/execa/node_modules/get-stream": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
+ "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "pump": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/execa/node_modules/path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/execa/node_modules/semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
+ "node_modules/execa/node_modules/shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "shebang-regex": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/execa/node_modules/shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/execa/node_modules/signal-exit": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/execa/node_modules/which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "which": "bin/which"
}
},
"node_modules/exponential-backoff": {
@@ -6755,6 +6562,13 @@
"dev": true,
"license": "Apache-2.0"
},
+ "node_modules/exsolve": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.7.tgz",
+ "integrity": "sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/external-editor": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
@@ -6791,22 +6605,6 @@
"@types/yauzl": "^2.9.1"
}
},
- "node_modules/extract-zip/node_modules/get-stream": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
- "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "pump": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
@@ -6918,6 +6716,19 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/figures/node_modules/is-unicode-supported": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz",
+ "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/file-entry-cache": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
@@ -7025,21 +6836,6 @@
"node": ">= 12"
}
},
- "node_modules/flora-colossus/node_modules/fs-extra": {
- "version": "10.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
- "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
"node_modules/follow-redirects": {
"version": "1.15.11",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz",
@@ -7077,9 +6873,9 @@
}
},
"node_modules/fs-extra": {
- "version": "11.3.2",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.2.tgz",
- "integrity": "sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==",
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
+ "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7088,7 +6884,7 @@
"universalify": "^2.0.0"
},
"engines": {
- "node": ">=14.14"
+ "node": ">=12"
}
},
"node_modules/fs-minipass": {
@@ -7150,21 +6946,6 @@
"node": ">= 12"
}
},
- "node_modules/galactus/node_modules/fs-extra": {
- "version": "10.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
- "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
"node_modules/gar": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/gar/-/gar-1.0.4.tgz",
@@ -7280,17 +7061,16 @@
}
},
"node_modules/get-stream": {
- "version": "9.0.1",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz",
- "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==",
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
+ "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@sec-ant/readable-stream": "^0.4.1",
- "is-stream": "^4.0.1"
+ "pump": "^3.0.0"
},
"engines": {
- "node": ">=18"
+ "node": ">=8"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
@@ -7338,30 +7118,6 @@
"dev": true,
"license": "BSD-2-Clause"
},
- "node_modules/glob/node_modules/brace-expansion": {
- "version": "1.1.12",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
- "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/glob/node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
"node_modules/global-agent": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz",
@@ -7381,20 +7137,6 @@
"node": ">=10.0"
}
},
- "node_modules/global-agent/node_modules/semver": {
- "version": "7.7.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
- "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
- "dev": true,
- "license": "ISC",
- "optional": true,
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/global-dirs": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz",
@@ -7427,6 +7169,19 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/globals/node_modules/type-fest": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
+ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
+ "dev": true,
+ "license": "(MIT OR CC0-1.0)",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/globalthis": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz",
@@ -7973,26 +7728,23 @@
}
},
"node_modules/is-stream": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz",
- "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+ "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==",
"dev": true,
"license": "MIT",
"engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">=0.10.0"
}
},
"node_modules/is-unicode-supported": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz",
- "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==",
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
+ "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
"dev": true,
"license": "MIT",
"engines": {
- "node": ">=18"
+ "node": ">=10"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
@@ -8334,6 +8086,24 @@
"url": "https://opencollective.com/webpack"
}
},
+ "node_modules/local-pkg": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-1.1.2.tgz",
+ "integrity": "sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "mlly": "^1.7.4",
+ "pkg-types": "^2.3.0",
+ "quansync": "^0.2.11"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
"node_modules/locate-path": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
@@ -8394,19 +8164,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/log-symbols/node_modules/is-unicode-supported": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
- "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/log-update": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/log-update/-/log-update-5.0.1.tgz",
@@ -8728,19 +8485,16 @@
}
},
"node_modules/minimatch": {
- "version": "9.0.5",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
- "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dev": true,
"license": "ISC",
"dependencies": {
- "brace-expansion": "^2.0.1"
+ "brace-expansion": "^1.1.7"
},
"engines": {
- "node": ">=16 || 14 >=14.17"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
+ "node": "*"
}
},
"node_modules/minimist": {
@@ -8884,6 +8638,38 @@
"node": ">=10"
}
},
+ "node_modules/mlly": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.8.0.tgz",
+ "integrity": "sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "acorn": "^8.15.0",
+ "pathe": "^2.0.3",
+ "pkg-types": "^1.3.1",
+ "ufo": "^1.6.1"
+ }
+ },
+ "node_modules/mlly/node_modules/confbox": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz",
+ "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/mlly/node_modules/pkg-types": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz",
+ "integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "confbox": "^0.1.8",
+ "mlly": "^1.7.4",
+ "pathe": "^2.0.1"
+ }
+ },
"node_modules/mrmime": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz",
@@ -8966,6 +8752,10 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/neptune-native": {
+ "resolved": "packages/neptune-native",
+ "link": true
+ },
"node_modules/nice-try": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
@@ -8974,9 +8764,9 @@
"license": "MIT"
},
"node_modules/node-abi": {
- "version": "3.79.0",
- "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.79.0.tgz",
- "integrity": "sha512-Pr/5KdBQGG8TirdkS0qN3B+f3eo8zTOfZQWAxHoJqopMz2/uvRnG+S4fWu/6AZxKei2CP2p/psdQ5HFC2Ap5BA==",
+ "version": "3.80.0",
+ "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.80.0.tgz",
+ "integrity": "sha512-LyPuZJcI9HVwzXK1GPxWNzrr+vr8Hp/3UqlmWxxh8p54U1ZbclOqbSog9lWHaCX+dBaiGi6n/hIX+mKu74GmPA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -8986,19 +8776,6 @@
"node": ">=10"
}
},
- "node_modules/node-abi/node_modules/semver": {
- "version": "7.7.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
- "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
- "dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/node-addon-api": {
"version": "7.1.1",
"resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz",
@@ -9017,19 +8794,6 @@
"semver": "^7.3.5"
}
},
- "node_modules/node-api-version/node_modules/semver": {
- "version": "7.7.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
- "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
- "dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/node-fetch": {
"version": "2.7.0",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
@@ -9052,9 +8816,9 @@
}
},
"node_modules/node-releases": {
- "version": "2.0.26",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.26.tgz",
- "integrity": "sha512-S2M9YimhSjBSvYnlr5/+umAnPHE++ODwt5e2Ij6FoX45HA/s4vHdkDx1eax2pAPeAOqu4s9b7ppahsyEFdVqQA==",
+ "version": "2.0.27",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz",
+ "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==",
"dev": true,
"license": "MIT"
},
@@ -9160,6 +8924,32 @@
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
+ "node_modules/npm-run-all2/node_modules/brace-expansion": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
+ "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/npm-run-all2/node_modules/minimatch": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+ "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
"node_modules/npm-run-all2/node_modules/which": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz",
@@ -9177,33 +8967,26 @@
}
},
"node_modules/npm-run-path": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz",
- "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==",
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
+ "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "path-key": "^4.0.0",
- "unicorn-magic": "^0.3.0"
+ "path-key": "^2.0.0"
},
"engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">=4"
}
},
"node_modules/npm-run-path/node_modules/path-key": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz",
- "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
"dev": true,
"license": "MIT",
"engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">=4"
}
},
"node_modules/nth-check": {
@@ -9330,19 +9113,6 @@
"node": ">=8"
}
},
- "node_modules/ora/node_modules/is-unicode-supported": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
- "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/ora/node_modules/restore-cursor": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
@@ -9678,6 +9448,18 @@
}
}
},
+ "node_modules/pkg-types": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-2.3.0.tgz",
+ "integrity": "sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "confbox": "^0.2.2",
+ "exsolve": "^1.0.7",
+ "pathe": "^2.0.3"
+ }
+ },
"node_modules/plist": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/plist/-/plist-3.1.0.tgz",
@@ -9884,6 +9666,23 @@
"node": ">=6"
}
},
+ "node_modules/quansync": {
+ "version": "0.2.11",
+ "resolved": "https://registry.npmjs.org/quansync/-/quansync-0.2.11.tgz",
+ "integrity": "sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://github.com/sponsors/antfu"
+ },
+ {
+ "type": "individual",
+ "url": "https://github.com/sponsors/sxzz"
+ }
+ ],
+ "license": "MIT"
+ },
"node_modules/queue-microtask": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
@@ -10393,9 +10192,9 @@
"license": "MIT"
},
"node_modules/sass": {
- "version": "1.93.2",
- "resolved": "https://registry.npmjs.org/sass/-/sass-1.93.2.tgz",
- "integrity": "sha512-t+YPtOQHpGW1QWsh1CHQ5cPIr9lbbGZLZnbihP/D/qZj/yuV68m8qarcV17nvkOX81BCrvzAlq2klCQFZghyTg==",
+ "version": "1.93.3",
+ "resolved": "https://registry.npmjs.org/sass/-/sass-1.93.3.tgz",
+ "integrity": "sha512-elOcIZRTM76dvxNAjqYrucTSI0teAF/L2Lv0s6f6b7FOwcwIuA357bIE871580AjHJuSvLIRUosgV+lIWx6Rgg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -10479,14 +10278,24 @@
"compute-scroll-into-view": "^1.0.20"
}
},
+ "node_modules/scule": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/scule/-/scule-1.3.0.tgz",
+ "integrity": "sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "version": "7.7.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
+ "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
"dev": true,
"license": "ISC",
"bin": {
"semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
}
},
"node_modules/semver-compare": {
@@ -10902,6 +10711,26 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/strip-literal": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-3.1.0.tgz",
+ "integrity": "sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "js-tokens": "^9.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
+ "node_modules/strip-literal/node_modules/js-tokens": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz",
+ "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/strip-outer": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz",
@@ -11093,9 +10922,9 @@
}
},
"node_modules/terser": {
- "version": "5.44.0",
- "resolved": "https://registry.npmjs.org/terser/-/terser-5.44.0.tgz",
- "integrity": "sha512-nIVck8DK+GM/0Frwd+nIhZ84pR/BX7rmXMfYwyg+Sri5oGVE99/E3KvXqpC2xHFxyqXyGHTKBSioxxplrO4I4w==",
+ "version": "5.44.1",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-5.44.1.tgz",
+ "integrity": "sha512-t/R3R/n0MSwnnazuPpPNVO60LX0SKL45pyl9YlvxIdkH0Of7D5qM2EVe+yASRIlY5pZ73nclYJfNANGWPwFDZw==",
"dev": true,
"license": "BSD-2-Clause",
"dependencies": {
@@ -11177,6 +11006,54 @@
"license": "MIT",
"optional": true
},
+ "node_modules/tinyglobby": {
+ "version": "0.2.15",
+ "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz",
+ "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "fdir": "^6.5.0",
+ "picomatch": "^4.0.3"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/SuperchupuDev"
+ }
+ },
+ "node_modules/tinyglobby/node_modules/fdir": {
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
+ "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "peerDependencies": {
+ "picomatch": "^3 || ^4"
+ },
+ "peerDependenciesMeta": {
+ "picomatch": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/tinyglobby/node_modules/picomatch": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
+ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
"node_modules/tmp": {
"version": "0.0.33",
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
@@ -11292,9 +11169,9 @@
}
},
"node_modules/type-fest": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
- "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
+ "version": "0.21.3",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
+ "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
"dev": true,
"license": "(MIT OR CC0-1.0)",
"engines": {
@@ -11318,6 +11195,13 @@
"node": ">=14.17"
}
},
+ "node_modules/ufo": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.1.tgz",
+ "integrity": "sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/undici-types": {
"version": "6.21.0",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz",
@@ -11338,6 +11222,68 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/unimport": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/unimport/-/unimport-5.5.0.tgz",
+ "integrity": "sha512-/JpWMG9s1nBSlXJAQ8EREFTFy3oy6USFd8T6AoBaw1q2GGcF4R9yp3ofg32UODZlYEO5VD0EWE1RpI9XDWyPYg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "acorn": "^8.15.0",
+ "escape-string-regexp": "^5.0.0",
+ "estree-walker": "^3.0.3",
+ "local-pkg": "^1.1.2",
+ "magic-string": "^0.30.19",
+ "mlly": "^1.8.0",
+ "pathe": "^2.0.3",
+ "picomatch": "^4.0.3",
+ "pkg-types": "^2.3.0",
+ "scule": "^1.3.0",
+ "strip-literal": "^3.1.0",
+ "tinyglobby": "^0.2.15",
+ "unplugin": "^2.3.10",
+ "unplugin-utils": "^0.3.0"
+ },
+ "engines": {
+ "node": ">=18.12.0"
+ }
+ },
+ "node_modules/unimport/node_modules/escape-string-regexp": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
+ "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/unimport/node_modules/estree-walker": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz",
+ "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "^1.0.0"
+ }
+ },
+ "node_modules/unimport/node_modules/picomatch": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
+ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
"node_modules/unique-filename": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz",
@@ -11374,6 +11320,147 @@
"node": ">= 10.0.0"
}
},
+ "node_modules/unplugin": {
+ "version": "2.3.10",
+ "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-2.3.10.tgz",
+ "integrity": "sha512-6NCPkv1ClwH+/BGE9QeoTIl09nuiAt0gS28nn1PvYXsGKRwM2TCbFA2QiilmehPDTXIe684k4rZI1yl3A1PCUw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/remapping": "^2.3.5",
+ "acorn": "^8.15.0",
+ "picomatch": "^4.0.3",
+ "webpack-virtual-modules": "^0.6.2"
+ },
+ "engines": {
+ "node": ">=18.12.0"
+ }
+ },
+ "node_modules/unplugin-auto-import": {
+ "version": "20.2.0",
+ "resolved": "https://registry.npmjs.org/unplugin-auto-import/-/unplugin-auto-import-20.2.0.tgz",
+ "integrity": "sha512-vfBI/SvD9hJqYNinipVOAj5n8dS8DJXFlCKFR5iLDp2SaQwsfdnfLXgZ+34Kd3YY3YEY9omk8XQg0bwos3Q8ug==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "local-pkg": "^1.1.2",
+ "magic-string": "^0.30.19",
+ "picomatch": "^4.0.3",
+ "unimport": "^5.4.0",
+ "unplugin": "^2.3.10",
+ "unplugin-utils": "^0.3.0"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ },
+ "peerDependencies": {
+ "@nuxt/kit": "^4.0.0",
+ "@vueuse/core": "*"
+ },
+ "peerDependenciesMeta": {
+ "@nuxt/kit": {
+ "optional": true
+ },
+ "@vueuse/core": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/unplugin-auto-import/node_modules/picomatch": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
+ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/unplugin-utils": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/unplugin-utils/-/unplugin-utils-0.3.1.tgz",
+ "integrity": "sha512-5lWVjgi6vuHhJ526bI4nlCOmkCIF3nnfXkCMDeMJrtdvxTs6ZFCM8oNufGTsDbKv/tJ/xj8RpvXjRuPBZJuJog==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "pathe": "^2.0.3",
+ "picomatch": "^4.0.3"
+ },
+ "engines": {
+ "node": ">=20.19.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sxzz"
+ }
+ },
+ "node_modules/unplugin-utils/node_modules/picomatch": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
+ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/unplugin-vue-components": {
+ "version": "30.0.0",
+ "resolved": "https://registry.npmjs.org/unplugin-vue-components/-/unplugin-vue-components-30.0.0.tgz",
+ "integrity": "sha512-4qVE/lwCgmdPTp6h0qsRN2u642tt4boBQtcpn4wQcWZAsr8TQwq+SPT3NDu/6kBFxzo/sSEK4ioXhOOBrXc3iw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "chokidar": "^4.0.3",
+ "debug": "^4.4.3",
+ "local-pkg": "^1.1.2",
+ "magic-string": "^0.30.19",
+ "mlly": "^1.8.0",
+ "tinyglobby": "^0.2.15",
+ "unplugin": "^2.3.10",
+ "unplugin-utils": "^0.3.1"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ },
+ "peerDependencies": {
+ "@babel/parser": "^7.15.8",
+ "@nuxt/kit": "^3.2.2 || ^4.0.0",
+ "vue": "2 || 3"
+ },
+ "peerDependenciesMeta": {
+ "@babel/parser": {
+ "optional": true
+ },
+ "@nuxt/kit": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/unplugin/node_modules/picomatch": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
+ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
"node_modules/update-browserslist-db": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.4.tgz",
@@ -11429,141 +11516,6 @@
"node": ">=8"
}
},
- "node_modules/username/node_modules/cross-spawn": {
- "version": "6.0.6",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.6.tgz",
- "integrity": "sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "nice-try": "^1.0.4",
- "path-key": "^2.0.1",
- "semver": "^5.5.0",
- "shebang-command": "^1.2.0",
- "which": "^1.2.9"
- },
- "engines": {
- "node": ">=4.8"
- }
- },
- "node_modules/username/node_modules/execa": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
- "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "cross-spawn": "^6.0.0",
- "get-stream": "^4.0.0",
- "is-stream": "^1.1.0",
- "npm-run-path": "^2.0.0",
- "p-finally": "^1.0.0",
- "signal-exit": "^3.0.0",
- "strip-eof": "^1.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/username/node_modules/get-stream": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
- "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "pump": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/username/node_modules/is-stream": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
- "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/username/node_modules/npm-run-path": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
- "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "path-key": "^2.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/username/node_modules/path-key": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
- "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/username/node_modules/semver": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
- "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
- "dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver"
- }
- },
- "node_modules/username/node_modules/shebang-command": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
- "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "shebang-regex": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/username/node_modules/shebang-regex": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
- "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/username/node_modules/signal-exit": {
- "version": "3.0.7",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
- "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/username/node_modules/which": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
- "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "isexe": "^2.0.0"
- },
- "bin": {
- "which": "bin/which"
- }
- },
"node_modules/util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
@@ -11687,6 +11639,21 @@
}
}
},
+ "node_modules/vite-plugin-inspect/node_modules/fs-extra": {
+ "version": "11.3.2",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.2.tgz",
+ "integrity": "sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=14.14"
+ }
+ },
"node_modules/vite-plugin-vue-devtools": {
"version": "7.7.7",
"resolved": "https://registry.npmjs.org/vite-plugin-vue-devtools/-/vite-plugin-vue-devtools-7.7.7.tgz",
@@ -11709,6 +11676,93 @@
"vite": "^3.1.0 || ^4.0.0-0 || ^5.0.0-0 || ^6.0.0-0 || ^7.0.0-0"
}
},
+ "node_modules/vite-plugin-vue-devtools/node_modules/execa": {
+ "version": "9.6.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-9.6.0.tgz",
+ "integrity": "sha512-jpWzZ1ZhwUmeWRhS7Qv3mhpOhLfwI+uAX4e5fOcXqwMR7EcJ0pj2kV1CVzHVMX/LphnKWD3LObjZCoJ71lKpHw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@sindresorhus/merge-streams": "^4.0.0",
+ "cross-spawn": "^7.0.6",
+ "figures": "^6.1.0",
+ "get-stream": "^9.0.0",
+ "human-signals": "^8.0.1",
+ "is-plain-obj": "^4.1.0",
+ "is-stream": "^4.0.1",
+ "npm-run-path": "^6.0.0",
+ "pretty-ms": "^9.2.0",
+ "signal-exit": "^4.1.0",
+ "strip-final-newline": "^4.0.0",
+ "yoctocolors": "^2.1.1"
+ },
+ "engines": {
+ "node": "^18.19.0 || >=20.5.0"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ }
+ },
+ "node_modules/vite-plugin-vue-devtools/node_modules/get-stream": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz",
+ "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@sec-ant/readable-stream": "^0.4.1",
+ "is-stream": "^4.0.1"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/vite-plugin-vue-devtools/node_modules/is-stream": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz",
+ "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/vite-plugin-vue-devtools/node_modules/npm-run-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz",
+ "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^4.0.0",
+ "unicorn-magic": "^0.3.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/vite-plugin-vue-devtools/node_modules/path-key": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz",
+ "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/vite-plugin-vue-inspector": {
"version": "5.3.2",
"resolved": "https://registry.npmjs.org/vite-plugin-vue-inspector/-/vite-plugin-vue-inspector-5.3.2.tgz",
@@ -11738,16 +11792,16 @@
"license": "MIT"
},
"node_modules/vue": {
- "version": "3.5.22",
- "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.22.tgz",
- "integrity": "sha512-toaZjQ3a/G/mYaLSbV+QsQhIdMo9x5rrqIpYRObsJ6T/J+RyCSFwN2LHNVH9v8uIcljDNa3QzPVdv3Y6b9hAJQ==",
+ "version": "3.5.23",
+ "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.23.tgz",
+ "integrity": "sha512-CfvZv/vI52xUhumUvHtD6iFIS78nGWfX4IJnHfBGhpqMI0CwDq2YEngXOeaBFMRmiArcqczuVrLxurvesTYT9w==",
"license": "MIT",
"dependencies": {
- "@vue/compiler-dom": "3.5.22",
- "@vue/compiler-sfc": "3.5.22",
- "@vue/runtime-dom": "3.5.22",
- "@vue/server-renderer": "3.5.22",
- "@vue/shared": "3.5.22"
+ "@vue/compiler-dom": "3.5.23",
+ "@vue/compiler-sfc": "3.5.23",
+ "@vue/runtime-dom": "3.5.23",
+ "@vue/server-renderer": "3.5.23",
+ "@vue/shared": "3.5.23"
},
"peerDependencies": {
"typescript": "*"
@@ -11809,19 +11863,6 @@
"eslint": ">=6.0.0"
}
},
- "node_modules/vue-eslint-parser/node_modules/semver": {
- "version": "7.7.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
- "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
- "dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/vue-router": {
"version": "4.6.3",
"resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.6.3.tgz",
@@ -11980,6 +12021,13 @@
"node": ">=10.13.0"
}
},
+ "node_modules/webpack-virtual-modules": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz",
+ "integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/webpack/node_modules/eslint-scope": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
@@ -12266,6 +12314,16 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "packages/neptune-native": {
+ "version": "0.1.0",
+ "license": "Apache-2.0",
+ "devDependencies": {
+ "@napi-rs/cli": "^2.18.4"
+ },
+ "engines": {
+ "node": ">= 16"
+ }
+ },
"packages/neptune-wasm": {
"name": "@neptune/wasm",
"version": "0.1.0",
diff --git a/package.json b/package.json
index 68e7195..ec4a366 100644
--- a/package.json
+++ b/package.json
@@ -21,6 +21,7 @@
"format": "prettier --write src/"
},
"dependencies": {
+ "@neptune/native": "file:./packages/neptune-native",
"@neptune/wasm": "file:./packages/neptune-wasm",
"ant-design-vue": "^4.2.6",
"axios": "^1.6.8",
@@ -57,6 +58,8 @@
"prettier": "^3.2.5",
"sass": "^1.75.0",
"typescript": "~5.4.0",
+ "unplugin-auto-import": "^20.2.0",
+ "unplugin-vue-components": "^30.0.0",
"vite": "^5.2.8",
"vite-plugin-vue-devtools": "^7.0.25",
"vue-tsc": "^2.0.11"
diff --git a/packages/neptune-native-0.1.0.tgz b/packages/neptune-native-0.1.0.tgz
new file mode 100644
index 0000000..7089c75
Binary files /dev/null and b/packages/neptune-native-0.1.0.tgz differ
diff --git a/packages/neptune-native/index.d.ts b/packages/neptune-native/index.d.ts
new file mode 100644
index 0000000..a5d663b
--- /dev/null
+++ b/packages/neptune-native/index.d.ts
@@ -0,0 +1,82 @@
+/* tslint:disable */
+/* eslint-disable */
+
+/* auto-generated by NAPI-RS */
+
+/** Module initialization */
+export declare function initNativeModule(): string
+/** Quick VM test (can call immediately) */
+export declare function quickVmTest(): string
+export declare function getVersion(): string
+/** Wallet manager for key generation and transaction signing */
+export declare class WalletManager {
+ constructor()
+ /**
+ * Generate spending key from BIP39 seed phrase
+ *
+ * # Arguments
+ * * `seed_phrase` - Array of words (12, 15, 18, 21, or 24 words)
+ *
+ * # Returns
+ * JSON with spending_key_hex, view_key_hex, receiver_identifier
+ */
+ generateKeysFromSeed(seedPhrase: Array): string
+ /**
+ * Generate lock_script_and_witness (transaction signature)
+ *
+ * # Arguments
+ * * `spending_key_hex` - Hex-encoded spending key from generate_keys_from_seed
+ *
+ * # Returns
+ * JSON with lock_script_and_witness in hex format
+ */
+ createLockScriptAndWitness(spendingKeyHex: string): string
+ /** Derive ViewKey hex (0x-prefixed bincode) from a Generation spending key hex */
+ spendingKeyToViewKeyHex(spendingKeyHex: string): string
+ /** Call wallet_getAdditionRecordsFromViewKey and return JSON as string */
+ getAdditionRecordsFromViewKeyCall(rpcUrl: string, viewKeyHex: string, startBlock: number, endBlock: number | undefined | null, maxSearchDepth: number): Promise
+ /**
+ * Build RPC request to get UTXOs from view key
+ *
+ * # Arguments
+ * * `view_key_hex` - Hex-encoded view key from generate_keys_from_seed
+ * * `start_block` - Starting block height (0 for genesis)
+ * * `end_block` - Ending block height (current tip)
+ * * `max_search_depth` - Maximum blocks to search (default: 1000)
+ *
+ * # Returns
+ * JSON-RPC request ready to send
+ *
+ * # Note
+ * Method name format: namespace_method (e.g. wallet_getUtxosFromViewKey)
+ */
+ buildGetUtxosRequest(viewKeyHex: string, startBlock: number, endBlock: number, maxSearchDepth?: number | undefined | null): string
+ /** Build RPC request to test chain height (for connectivity testing) */
+ buildTestRpcRequest(): string
+ /** Build JSON-RPC request to fetch current chain height */
+ buildChainHeightRequest(): string
+ /** Build JSON-RPC request to fetch current chain header (tip) */
+ buildChainHeaderRequest(): string
+ /** Get network information */
+ getNetworkInfo(): string
+ getChainHeightCall(rpcUrl: string): Promise
+ /** Call node_getState to get server state information */
+ getStateCall(rpcUrl: string): Promise
+ /** Call mempool_submitTransaction to broadcast a pre-built transaction */
+ submitTransactionCall(rpcUrl: string, transactionHex: string): Promise
+ getUtxosFromViewKeyCall(rpcUrl: string, viewKeyHex: string, startBlock: number, endBlock: number, maxSearchDepth?: number | undefined | null): Promise
+ getArchivalMutatorSet(rpcUrl: string): Promise
+ /**
+ * Build JSON-RPC request to find the canonical block that created a UTXO (by addition_record)
+ * Method: archival_getUtxoCreationBlock
+ */
+ buildGetUtxoCreationBlockRequest(additionRecordHex: string, maxSearchDepth?: number | undefined | null): string
+ /** Perform JSON-RPC call to find the canonical block that created a UTXO (by addition_record) */
+ getUtxoCreationBlockCall(rpcUrl: string, additionRecordHex: string, maxSearchDepth?: number | undefined | null): Promise
+ /** Call wallet_sendWithSpendingKey to build and broadcast transaction */
+ generateUtxoWithProofCall(rpcUrl: string, utxoHex: string, additionRecordHex: string, senderRandomnessHex: string, receiverPreimageHex: string, maxSearchDepth: string): Promise
+}
+export declare class SimpleTransactionBuilder {
+ constructor()
+ buildTransactionWithPrimitiveProof(rpcUrl: string, spendingKeyHex: string, inputAdditionRecords: Array, outputAddresses: Array, outputAmounts: Array, fee: string): Promise
+}
diff --git a/packages/neptune-native/index.js b/packages/neptune-native/index.js
new file mode 100644
index 0000000..a2bf456
--- /dev/null
+++ b/packages/neptune-native/index.js
@@ -0,0 +1,319 @@
+/* tslint:disable */
+/* eslint-disable */
+/* prettier-ignore */
+
+/* auto-generated by NAPI-RS */
+
+const { existsSync, readFileSync } = require('fs')
+const { join } = require('path')
+
+const { platform, arch } = process
+
+let nativeBinding = null
+let localFileExisted = false
+let loadError = null
+
+function isMusl() {
+ // For Node 10
+ if (!process.report || typeof process.report.getReport !== 'function') {
+ try {
+ const lddPath = require('child_process').execSync('which ldd').toString().trim()
+ return readFileSync(lddPath, 'utf8').includes('musl')
+ } catch (e) {
+ return true
+ }
+ } else {
+ const { glibcVersionRuntime } = process.report.getReport().header
+ return !glibcVersionRuntime
+ }
+}
+
+switch (platform) {
+ case 'android':
+ switch (arch) {
+ case 'arm64':
+ localFileExisted = existsSync(join(__dirname, 'neptune-native.android-arm64.node'))
+ try {
+ if (localFileExisted) {
+ nativeBinding = require('./neptune-native.android-arm64.node')
+ } else {
+ nativeBinding = require('neptune-native-android-arm64')
+ }
+ } catch (e) {
+ loadError = e
+ }
+ break
+ case 'arm':
+ localFileExisted = existsSync(join(__dirname, 'neptune-native.android-arm-eabi.node'))
+ try {
+ if (localFileExisted) {
+ nativeBinding = require('./neptune-native.android-arm-eabi.node')
+ } else {
+ nativeBinding = require('neptune-native-android-arm-eabi')
+ }
+ } catch (e) {
+ loadError = e
+ }
+ break
+ default:
+ throw new Error(`Unsupported architecture on Android ${arch}`)
+ }
+ break
+ case 'win32':
+ switch (arch) {
+ case 'x64':
+ localFileExisted = existsSync(
+ join(__dirname, 'neptune-native.win32-x64-msvc.node')
+ )
+ try {
+ if (localFileExisted) {
+ nativeBinding = require('./neptune-native.win32-x64-msvc.node')
+ } else {
+ nativeBinding = require('neptune-native-win32-x64-msvc')
+ }
+ } catch (e) {
+ loadError = e
+ }
+ break
+ case 'ia32':
+ localFileExisted = existsSync(
+ join(__dirname, 'neptune-native.win32-ia32-msvc.node')
+ )
+ try {
+ if (localFileExisted) {
+ nativeBinding = require('./neptune-native.win32-ia32-msvc.node')
+ } else {
+ nativeBinding = require('neptune-native-win32-ia32-msvc')
+ }
+ } catch (e) {
+ loadError = e
+ }
+ break
+ case 'arm64':
+ localFileExisted = existsSync(
+ join(__dirname, 'neptune-native.win32-arm64-msvc.node')
+ )
+ try {
+ if (localFileExisted) {
+ nativeBinding = require('./neptune-native.win32-arm64-msvc.node')
+ } else {
+ nativeBinding = require('neptune-native-win32-arm64-msvc')
+ }
+ } catch (e) {
+ loadError = e
+ }
+ break
+ default:
+ throw new Error(`Unsupported architecture on Windows: ${arch}`)
+ }
+ break
+ case 'darwin':
+ localFileExisted = existsSync(join(__dirname, 'neptune-native.darwin-universal.node'))
+ try {
+ if (localFileExisted) {
+ nativeBinding = require('./neptune-native.darwin-universal.node')
+ } else {
+ nativeBinding = require('neptune-native-darwin-universal')
+ }
+ break
+ } catch {}
+ switch (arch) {
+ case 'x64':
+ localFileExisted = existsSync(join(__dirname, 'neptune-native.darwin-x64.node'))
+ try {
+ if (localFileExisted) {
+ nativeBinding = require('./neptune-native.darwin-x64.node')
+ } else {
+ nativeBinding = require('neptune-native-darwin-x64')
+ }
+ } catch (e) {
+ loadError = e
+ }
+ break
+ case 'arm64':
+ localFileExisted = existsSync(
+ join(__dirname, 'neptune-native.darwin-arm64.node')
+ )
+ try {
+ if (localFileExisted) {
+ nativeBinding = require('./neptune-native.darwin-arm64.node')
+ } else {
+ nativeBinding = require('neptune-native-darwin-arm64')
+ }
+ } catch (e) {
+ loadError = e
+ }
+ break
+ default:
+ throw new Error(`Unsupported architecture on macOS: ${arch}`)
+ }
+ break
+ case 'freebsd':
+ if (arch !== 'x64') {
+ throw new Error(`Unsupported architecture on FreeBSD: ${arch}`)
+ }
+ localFileExisted = existsSync(join(__dirname, 'neptune-native.freebsd-x64.node'))
+ try {
+ if (localFileExisted) {
+ nativeBinding = require('./neptune-native.freebsd-x64.node')
+ } else {
+ nativeBinding = require('neptune-native-freebsd-x64')
+ }
+ } catch (e) {
+ loadError = e
+ }
+ break
+ case 'linux':
+ switch (arch) {
+ case 'x64':
+ if (isMusl()) {
+ localFileExisted = existsSync(
+ join(__dirname, 'neptune-native.linux-x64-musl.node')
+ )
+ try {
+ if (localFileExisted) {
+ nativeBinding = require('./neptune-native.linux-x64-musl.node')
+ } else {
+ nativeBinding = require('neptune-native-linux-x64-musl')
+ }
+ } catch (e) {
+ loadError = e
+ }
+ } else {
+ localFileExisted = existsSync(
+ join(__dirname, 'neptune-native.linux-x64-gnu.node')
+ )
+ try {
+ if (localFileExisted) {
+ nativeBinding = require('./neptune-native.linux-x64-gnu.node')
+ } else {
+ nativeBinding = require('neptune-native-linux-x64-gnu')
+ }
+ } catch (e) {
+ loadError = e
+ }
+ }
+ break
+ case 'arm64':
+ if (isMusl()) {
+ localFileExisted = existsSync(
+ join(__dirname, 'neptune-native.linux-arm64-musl.node')
+ )
+ try {
+ if (localFileExisted) {
+ nativeBinding = require('./neptune-native.linux-arm64-musl.node')
+ } else {
+ nativeBinding = require('neptune-native-linux-arm64-musl')
+ }
+ } catch (e) {
+ loadError = e
+ }
+ } else {
+ localFileExisted = existsSync(
+ join(__dirname, 'neptune-native.linux-arm64-gnu.node')
+ )
+ try {
+ if (localFileExisted) {
+ nativeBinding = require('./neptune-native.linux-arm64-gnu.node')
+ } else {
+ nativeBinding = require('neptune-native-linux-arm64-gnu')
+ }
+ } catch (e) {
+ loadError = e
+ }
+ }
+ break
+ case 'arm':
+ if (isMusl()) {
+ localFileExisted = existsSync(
+ join(__dirname, 'neptune-native.linux-arm-musleabihf.node')
+ )
+ try {
+ if (localFileExisted) {
+ nativeBinding = require('./neptune-native.linux-arm-musleabihf.node')
+ } else {
+ nativeBinding = require('neptune-native-linux-arm-musleabihf')
+ }
+ } catch (e) {
+ loadError = e
+ }
+ } else {
+ localFileExisted = existsSync(
+ join(__dirname, 'neptune-native.linux-arm-gnueabihf.node')
+ )
+ try {
+ if (localFileExisted) {
+ nativeBinding = require('./neptune-native.linux-arm-gnueabihf.node')
+ } else {
+ nativeBinding = require('neptune-native-linux-arm-gnueabihf')
+ }
+ } catch (e) {
+ loadError = e
+ }
+ }
+ break
+ case 'riscv64':
+ if (isMusl()) {
+ localFileExisted = existsSync(
+ join(__dirname, 'neptune-native.linux-riscv64-musl.node')
+ )
+ try {
+ if (localFileExisted) {
+ nativeBinding = require('./neptune-native.linux-riscv64-musl.node')
+ } else {
+ nativeBinding = require('neptune-native-linux-riscv64-musl')
+ }
+ } catch (e) {
+ loadError = e
+ }
+ } else {
+ localFileExisted = existsSync(
+ join(__dirname, 'neptune-native.linux-riscv64-gnu.node')
+ )
+ try {
+ if (localFileExisted) {
+ nativeBinding = require('./neptune-native.linux-riscv64-gnu.node')
+ } else {
+ nativeBinding = require('neptune-native-linux-riscv64-gnu')
+ }
+ } catch (e) {
+ loadError = e
+ }
+ }
+ break
+ case 's390x':
+ localFileExisted = existsSync(
+ join(__dirname, 'neptune-native.linux-s390x-gnu.node')
+ )
+ try {
+ if (localFileExisted) {
+ nativeBinding = require('./neptune-native.linux-s390x-gnu.node')
+ } else {
+ nativeBinding = require('neptune-native-linux-s390x-gnu')
+ }
+ } catch (e) {
+ loadError = e
+ }
+ break
+ default:
+ throw new Error(`Unsupported architecture on Linux: ${arch}`)
+ }
+ break
+ default:
+ throw new Error(`Unsupported OS: ${platform}, architecture: ${arch}`)
+}
+
+if (!nativeBinding) {
+ if (loadError) {
+ throw loadError
+ }
+ throw new Error(`Failed to load native binding`)
+}
+
+const { initNativeModule, quickVmTest, getVersion, WalletManager, SimpleTransactionBuilder } = nativeBinding
+
+module.exports.initNativeModule = initNativeModule
+module.exports.quickVmTest = quickVmTest
+module.exports.getVersion = getVersion
+module.exports.WalletManager = WalletManager
+module.exports.SimpleTransactionBuilder = SimpleTransactionBuilder
diff --git a/packages/neptune-native/neptune-native.win32-x64-msvc.node b/packages/neptune-native/neptune-native.win32-x64-msvc.node
new file mode 100644
index 0000000..2ec83cf
Binary files /dev/null and b/packages/neptune-native/neptune-native.win32-x64-msvc.node differ
diff --git a/packages/neptune-native/package.json b/packages/neptune-native/package.json
new file mode 100644
index 0000000..02770a4
--- /dev/null
+++ b/packages/neptune-native/package.json
@@ -0,0 +1,45 @@
+{
+ "name": "neptune-native",
+ "version": "0.1.0",
+ "description": "Native Node.js addon for Neptune transaction building",
+ "main": "index.js",
+ "files": [
+ "index.js",
+ "index.d.ts",
+ "*.node"
+ ],
+ "scripts": {
+ "build": "npx napi build --platform --release",
+ "build:debug": "npx napi build --platform",
+ "prepublishOnly": "napi prepublish -t npm",
+ "test": "cargo test",
+ "universal": "napi universal"
+ },
+ "napi": {
+ "name": "neptune-native",
+ "triples": {
+ "defaults": true,
+ "additional": [
+ "x86_64-unknown-linux-musl",
+ "aarch64-unknown-linux-gnu",
+ "aarch64-apple-darwin",
+ "aarch64-unknown-linux-musl"
+ ]
+ }
+ },
+ "devDependencies": {
+ "@napi-rs/cli": "^2.18.4"
+ },
+ "keywords": [
+ "neptune",
+ "blockchain",
+ "native",
+ "napi",
+ "vm",
+ "proof"
+ ],
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">= 16"
+ }
+}
diff --git a/public/favicon.ico b/public/favicon.ico
deleted file mode 100644
index df36fcf..0000000
Binary files a/public/favicon.ico and /dev/null differ
diff --git a/public/favicon.png b/public/favicon.png
new file mode 100644
index 0000000..c049b11
Binary files /dev/null and b/public/favicon.png differ
diff --git a/src/App.vue b/src/App.vue
index 732bc86..a06885c 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -3,7 +3,7 @@ import { LayoutVue } from '@/components'
const config = {
token: {
- colorPrimary: '#007FCF',
+ colorPrimary: '#42A5F5',
borderRadius: 4,
},
}
diff --git a/src/api/neptuneApi.ts b/src/api/neptuneApi.ts
index 3e73965..1c1461a 100644
--- a/src/api/neptuneApi.ts
+++ b/src/api/neptuneApi.ts
@@ -12,34 +12,35 @@ export const getUtxosFromViewKey = async (
endBlock,
maxSearchDepth,
}
- return await callJsonRpc('wallet_getUtxosFromViewKey', params)
+ return await callJsonRpc('wallet_getUtxoInfo', params)
}
-export const getBalance = async (): Promise => {
- return await callJsonRpc('wallet_balance', [])
+export const getBalance = async (
+ viewKey: string,
+ startBlock: number = 0,
+ endBlock: number | null = null,
+ maxSearchDepth: number = 1000
+): Promise => {
+ const params = {
+ viewKey,
+ startBlock,
+ endBlock,
+ maxSearchDepth,
+ }
+ return await callJsonRpc('wallet_getBalanceFromViewKey', params)
}
export const getBlockHeight = async (): Promise => {
- return await callJsonRpc('chain_height', [])
+ return await callJsonRpc('chain_height')
}
export const getNetworkInfo = async (): Promise => {
- return await callJsonRpc('node_network', [])
+ return await callJsonRpc('node_network')
}
-export const getWalletAddress = async (): Promise => {
- return await callJsonRpc('wallet_address', [])
-}
-
-export const sendTransaction = async (
- toAddress: string,
- amount: string,
- fee: string
-): Promise => {
- const params = [toAddress, amount, fee]
- return await callJsonRpc('wallet_send', params)
-}
-
-export const broadcastSignedTransaction = async (signedTxData: any): Promise => {
- return await callJsonRpc('wallet_broadcastSignedTransaction', signedTxData)
+export const broadcastSignedTransaction = async (transactionHex: any): Promise => {
+ const params = {
+ transactionHex,
+ }
+ return await callJsonRpc('mempool_submitTransaction', params)
}
diff --git a/src/assets/imgs/logo.png b/src/assets/imgs/logo.png
new file mode 100644
index 0000000..c049b11
Binary files /dev/null and b/src/assets/imgs/logo.png differ
diff --git a/src/assets/scss/__mixin.scss b/src/assets/scss/__mixin.scss
index 16f3fcb..3596706 100644
--- a/src/assets/scss/__mixin.scss
+++ b/src/assets/scss/__mixin.scss
@@ -144,14 +144,12 @@ $fw: 100;
padding: var(--card-padding);
box-shadow: var(--card-shadow);
transition: var(--transition-all);
- animation: fadeIn 0.6s ease-out;
@media (max-width: 768px) {
padding: var(--card-padding-mobile);
}
&:hover {
- transform: translateY(-4px);
box-shadow: var(--card-shadow-hover);
}
}
diff --git a/src/assets/scss/__variables.scss b/src/assets/scss/__variables.scss
index 4cc3848..d810243 100644
--- a/src/assets/scss/__variables.scss
+++ b/src/assets/scss/__variables.scss
@@ -2,38 +2,34 @@
// ==================== COLORS ====================
// Primary Colors
- --primary-color: #007fcf;
- --primary-hover: #0066a6;
- --primary-light: #e8f4fc;
- --primary-bg: #f5fbff;
-
- // Secondary Colors
- --secondary-color: #ff9500;
- --secondary-hover: #e68600;
+ --primary-color: #42A5F5;
+ --primary-hover: #1E88E5;
+ --primary-light: #E3F2FD;
+ --primary-bg: #F5FBFF;
// Text Colors
- --text-primary: #2c3e50;
- --text-secondary: #5a6c7d;
- --text-muted: #8b95a5;
- --text-light: #ffffff;
+ --text-primary: #232323;
+ --text-secondary: #5A5A5A;
+ --text-muted: #8B8B8B;
+ --text-light: #FFFFFF;
// Background Colors
--bg-gradient-start: #f0f8ff;
- --bg-gradient-end: #e6f2ff;
+ --bg-gradient-end: #e3f2fd;
--bg-white: #ffffff;
--bg-light: #f8fcff;
- --bg-hover: #e8f4fc;
+ --bg-hover: #e3f2fd;
// Border Colors
- --border-light: #e6f2ff;
- --border-color: #ebf5ff;
- --border-primary: #007fcf;
+ --border-light: #e3f2fd;
+ --border-color: #e8f4fc;
+ --border-primary: #42A5F5;
// Status Colors
--success-color: #10b981;
--warning-color: #f59e0b;
--error-color: #ef4444;
- --info-color: #007fcf;
+ --info-color: #42A5F5;
// ==================== SPACING ====================
@@ -48,7 +44,7 @@
// ==================== BORDER RADIUS ====================
- --radius-sm: 8px;
+ --radius-sm: 4px;
--radius-md: 10px;
--radius-lg: 12px;
--radius-xl: 16px;
@@ -61,7 +57,7 @@
--shadow-md: 0 4px 20px rgba(0, 0, 0, 0.08);
--shadow-lg: 0 8px 30px rgba(0, 0, 0, 0.12);
--shadow-xl: 0 12px 40px rgba(0, 0, 0, 0.15);
- --shadow-primary: 0 4px 12px rgba(0, 127, 207, 0.25);
+ --shadow-primary: 0 4px 12px rgba(66, 165, 245, 0.25);
--shadow-secondary: 0 4px 12px rgba(255, 149, 0, 0.25);
// ==================== TRANSITIONS ====================
@@ -117,7 +113,7 @@
// Button
--btn-padding-y: 0.75rem;
--btn-padding-x: 1rem;
- --btn-radius: var(--radius-md);
+ --btn-radius: var(--radius-sm);
// Tabs
--tabs-height: 3px;
diff --git a/src/components/common/ButtonCommon.vue b/src/components/common/ButtonCommon.vue
index 386f95a..7a6c0e4 100644
--- a/src/components/common/ButtonCommon.vue
+++ b/src/components/common/ButtonCommon.vue
@@ -1,6 +1,7 @@
-
+
diff --git a/src/components/common/ModalCommon.vue b/src/components/common/ModalCommon.vue
new file mode 100644
index 0000000..3b61acf
--- /dev/null
+++ b/src/components/common/ModalCommon.vue
@@ -0,0 +1,302 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/common/PasswordForm.vue b/src/components/common/PasswordForm.vue
index ac6b25a..a7bbc90 100644
--- a/src/components/common/PasswordForm.vue
+++ b/src/components/common/PasswordForm.vue
@@ -13,6 +13,7 @@ interface Props {
loading?: boolean
error?: boolean
errorMessage?: string
+ validateFormat?: boolean
}
const props = withDefaults(defineProps(), {
@@ -26,6 +27,7 @@ const props = withDefaults(defineProps(), {
loading: false,
error: false,
errorMessage: 'Invalid password',
+ validateFormat: false,
})
const emit = defineEmits<{
@@ -36,14 +38,42 @@ const emit = defineEmits<{
const password = ref('')
const passwordError = ref('')
+const passwordStrength = computed(() => {
+ if (!password.value || !props.validateFormat) return { level: 0, text: '', color: '' }
+
+ let strength = 0
+ const checks = {
+ length: password.value.length >= 8,
+ uppercase: /[A-Z]/.test(password.value),
+ lowercase: /[a-z]/.test(password.value),
+ number: /[0-9]/.test(password.value),
+ special: /[!@#$%^&*(),.?":{}|<>]/.test(password.value),
+ }
+ strength = Object.values(checks).filter(Boolean).length
+ if (strength <= 2) return { level: 1, text: 'Weak', color: 'var(--error-color)' }
+ if (strength <= 3) return { level: 2, text: 'Medium', color: 'var(--warning-color)' }
+ if (strength <= 4) return { level: 3, text: 'Good', color: 'var(--info-color)' }
+ return { level: 4, text: 'Strong', color: 'var(--success-color)' }
+})
+
const canProceed = computed(() => {
- return password.value.length > 0 && !passwordError.value
+ if (!password.value || passwordError.value) return false
+
+ if (props.validateFormat) {
+ return password.value.length >= 8 && passwordStrength.value.level >= 2
+ }
+
+ return password.value.length > 0
})
const handleSubmit = () => {
if (!canProceed.value) {
if (!password.value) {
passwordError.value = 'Please enter your password'
+ } else if (props.validateFormat && password.value.length < 8) {
+ passwordError.value = 'Password must be at least 8 characters'
+ } else if (props.validateFormat && passwordStrength.value.level < 2) {
+ passwordError.value = 'Password is too weak'
}
return
}
@@ -73,6 +103,28 @@ const handleBack = () => {
@input="passwordError = ''"
@keyup.enter="handleSubmit"
/>
+
+
+
+
+
+ {{ passwordStrength.text }}
+
+
+
+
+
+ Password must be at least 8 characters with uppercase, lowercase, and numbers.
+
+
{{ errorMessage }}
@@ -132,4 +184,38 @@ const handleBack = () => {
font-size: var(--font-sm);
text-align: center;
}
+
+.password-strength {
+ margin-top: var(--spacing-sm);
+ display: flex;
+ align-items: center;
+ gap: var(--spacing-md);
+
+ .strength-bar {
+ flex: 1;
+ height: 4px;
+ background: var(--border-light);
+ border-radius: var(--radius-full);
+ overflow: hidden;
+
+ .strength-fill {
+ height: 100%;
+ transition: all 0.3s ease;
+ }
+ }
+
+ .strength-text {
+ font-size: var(--font-xs);
+ font-weight: var(--font-medium);
+ min-width: 50px;
+ text-align: right;
+ }
+}
+
+.helper-text {
+ font-size: var(--font-xs);
+ color: var(--text-muted);
+ margin: var(--spacing-xs) 0 0;
+ line-height: var(--leading-normal);
+}
diff --git a/src/components/common/TabPaneCommon.vue b/src/components/common/TabPaneCommon.vue
new file mode 100644
index 0000000..df81fe9
--- /dev/null
+++ b/src/components/common/TabPaneCommon.vue
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/common/TabsCommon.vue b/src/components/common/TabsCommon.vue
new file mode 100644
index 0000000..8c4b60b
--- /dev/null
+++ b/src/components/common/TabsCommon.vue
@@ -0,0 +1,138 @@
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/index.ts b/src/components/index.ts
index 875025f..4037e7f 100644
--- a/src/components/index.ts
+++ b/src/components/index.ts
@@ -5,6 +5,21 @@ import PasswordForm from './common/PasswordForm.vue'
import SpinnerCommon from './common/SpinnerCommon.vue'
import CardBase from './common/CardBase.vue'
import CardBaseScrollable from './common/CardBaseScrollable.vue'
+import TabsCommon from './common/TabsCommon.vue'
+import TabPaneCommon from './common/TabPaneCommon.vue'
+import ModalCommon from './common/ModalCommon.vue'
import { IconCommon } from './icon'
-export { LayoutVue, ButtonCommon, FormCommon, PasswordForm, SpinnerCommon, CardBase, CardBaseScrollable, IconCommon }
+export {
+ LayoutVue,
+ ButtonCommon,
+ FormCommon,
+ PasswordForm,
+ SpinnerCommon,
+ CardBase,
+ CardBaseScrollable,
+ TabsCommon,
+ TabPaneCommon,
+ ModalCommon,
+ IconCommon,
+}
diff --git a/src/composables/useNeptuneWallet.ts b/src/composables/useNeptuneWallet.ts
index 71e20e8..428b53b 100644
--- a/src/composables/useNeptuneWallet.ts
+++ b/src/composables/useNeptuneWallet.ts
@@ -1,12 +1,7 @@
import { useNeptuneStore } from '@/stores/neptuneStore'
import * as API from '@/api/neptuneApi'
-import type { GenerateSeedResult, ViewKeyResult } from '@/interface'
-import initWasm, {
- generate_seed,
- get_viewkey,
- address_from_seed,
- validate_seed_phrase,
-} from '@neptune/wasm'
+import type { GenerateSeedResult, PayloadBuildTransaction, ViewKeyResult, WalletState } from '@/interface'
+import initWasm, { generate_seed, address_from_seed, validate_seed_phrase } from '@neptune/wasm'
let wasmInitialized = false
let initPromise: Promise | null = null
@@ -51,8 +46,11 @@ export function useNeptuneWallet() {
store.setReceiverId(result.receiver_identifier)
const viewKeyResult = await getViewKeyFromSeed(result.seed_phrase)
- store.setViewKey(viewKeyResult.view_key)
- store.setAddress(viewKeyResult.address)
+ store.setViewKey(viewKeyResult.view_key_hex)
+ store.setSpendingKey(viewKeyResult.spending_key_hex)
+
+ const addressResult = await getAddressFromSeed(result.seed_phrase)
+ store.setAddress(addressResult)
return result
} catch (err) {
@@ -62,18 +60,11 @@ export function useNeptuneWallet() {
}
const getViewKeyFromSeed = async (seedPhrase: string[]): Promise => {
- try {
- await ensureWasmInitialized()
- const seedPhraseJson = JSON.stringify(seedPhrase)
- const resultJson = get_viewkey(seedPhraseJson, store.getNetwork)
- return JSON.parse(resultJson)
- } catch (err) {
- console.error('Error getting view key from seed:', err)
- throw err
- }
+ const result = await (window as any).walletApi.generateKeysFromSeed([...seedPhrase])
+ return JSON.parse(result)
}
- const recoverWalletFromSeed = async (seedPhrase: string[]): Promise => {
+ const recoverWalletFromSeed = async (seedPhrase: string[]): Promise => {
try {
const isValid = validate_seed_phrase(JSON.stringify(seedPhrase))
if (!isValid) throw new Error('Invalid seed phrase')
@@ -82,10 +73,20 @@ export function useNeptuneWallet() {
store.setSeedPhrase(seedPhrase)
store.setReceiverId(result.receiver_identifier)
- store.setViewKey(result.view_key)
- store.setAddress(result.address)
+ store.setViewKey(result.view_key_hex)
+ store.setSpendingKey(result.spending_key_hex)
- return result
+ const addressResult = await getAddressFromSeed(seedPhrase)
+ store.setAddress(addressResult)
+
+ return {
+ seedPhrase: seedPhrase,
+ network: store.getNetwork,
+ receiverId: result.receiver_identifier,
+ viewKey: result.view_key_hex,
+ spendingKey: result.spending_key_hex,
+ address: addressResult,
+ }
} catch (err) {
console.error('Error recovering wallet from seed:', err)
throw err
@@ -93,14 +94,9 @@ export function useNeptuneWallet() {
}
const getAddressFromSeed = async (seedPhrase: string[]): Promise => {
- try {
- await ensureWasmInitialized()
- const seedPhraseJson = JSON.stringify(seedPhrase)
- return address_from_seed(seedPhraseJson, store.getNetwork)
- } catch (err) {
- console.error('Error getting address from seed:', err)
- throw err
- }
+ await ensureWasmInitialized()
+ const seedPhraseJson = JSON.stringify(seedPhrase)
+ return address_from_seed(seedPhraseJson, store.getNetwork)
}
const decryptKeystore = async (password: string): Promise => {
@@ -118,9 +114,12 @@ export function useNeptuneWallet() {
store.setPassword(password)
store.setSeedPhrase(seedPhrase)
- store.setAddress(viewKeyResult.address)
- store.setViewKey(viewKeyResult.view_key)
+ store.setViewKey(viewKeyResult.view_key_hex)
store.setReceiverId(viewKeyResult.receiver_identifier)
+ store.setSpendingKey(viewKeyResult.spending_key_hex)
+
+ const addressResult = await getAddressFromSeed(seedPhrase)
+ store.setAddress(addressResult)
} catch (err) {
if (
err instanceof Error &&
@@ -137,6 +136,7 @@ export function useNeptuneWallet() {
const createKeystore = async (seed: string, password: string): Promise => {
try {
const result = await (window as any).walletApi.createKeystore(seed, password)
+ store.setKeystorePath(result.filePath)
return result.filePath
} catch (err) {
console.error('Error creating keystore:', err)
@@ -170,22 +170,13 @@ export function useNeptuneWallet() {
// ===== API METHODS =====
- const getUtxos = async (
- startBlock: number = 0,
- endBlock: number | null = null,
- maxSearchDepth: number = 1000
- ): Promise => {
+ const getUtxos = async (): Promise => {
try {
if (!store.getViewKey) {
throw new Error('No view key available. Please import or generate a wallet first.')
}
- const response = await API.getUtxosFromViewKey(
- store.getViewKey,
- startBlock,
- endBlock,
- maxSearchDepth
- )
+ const response = await API.getUtxosFromViewKey(store.getViewKey || '')
const result = response?.result || response
store.setUtxos(result.utxos || result || [])
@@ -198,11 +189,14 @@ export function useNeptuneWallet() {
const getBalance = async (): Promise => {
try {
- const response = await API.getBalance()
+ const response = await API.getBalance(store.getViewKey || '')
const result = response?.result || response
- store.setBalance(result.balance || result)
-
- return result
+ store.setBalance(result?.balance || result)
+ store.setPendingBalance(result?.pendingBalance || result)
+ return {
+ balance: result?.balance || result,
+ pendingBalance: result?.pendingBalance || result,
+ }
} catch (err) {
console.error('Error getting balance:', err)
throw err
@@ -233,13 +227,20 @@ export function useNeptuneWallet() {
}
}
- const sendTransaction = async (
- toAddress: string,
- amount: string,
- fee: string
- ): Promise => {
+ const buildTransactionWithPrimitiveProof = async (args: PayloadBuildTransaction): Promise => {
+ const payload = {
+ spendingKeyHex: store.getSpendingKey,
+ inputAdditionRecords: args.inputAdditionRecords,
+ outputAddresses: args.outputAddresses,
+ outputAmounts: args.outputAmounts,
+ fee: args.fee,
+ }
+ return await (window as any).walletApi.buildTransactionWithPrimitiveProof(payload)
+ }
+
+ const broadcastSignedTransaction = async (transactionHex: string): Promise => {
try {
- const response = await API.sendTransaction(toAddress, amount, fee)
+ const response = await API.broadcastSignedTransaction(transactionHex)
const result = response?.result || response
return result
} catch (err) {
@@ -254,8 +255,11 @@ export function useNeptuneWallet() {
if (store.getSeedPhrase) {
const viewKeyResult = await getViewKeyFromSeed(store.getSeedPhrase)
- store.setAddress(viewKeyResult.address)
- store.setViewKey(viewKeyResult.view_key)
+ store.setViewKey(viewKeyResult.view_key_hex)
+ store.setSpendingKey(viewKeyResult.spending_key_hex)
+
+ const addressResult = await getAddressFromSeed(store.getSeedPhrase)
+ store.setAddress(addressResult)
}
} catch (err) {
console.error('Error setting network:', err)
@@ -279,7 +283,8 @@ export function useNeptuneWallet() {
getBalance,
getBlockHeight,
getNetworkInfo,
- sendTransaction,
+ buildTransactionWithPrimitiveProof,
+ broadcastSignedTransaction,
decryptKeystore,
createKeystore,
saveKeystoreAs,
diff --git a/src/interface/common.ts b/src/interface/common.ts
index 61352fd..d6074e1 100644
--- a/src/interface/common.ts
+++ b/src/interface/common.ts
@@ -1,6 +1,7 @@
-import type { ButtonType, ButtonSize } from 'ant-design-vue/es/button'
-
// Button Component Props
+export type ButtonType = 'default' | 'primary' | 'dashed' | 'link' | 'text'
+export type ButtonSize = 'small' | 'medium' | 'large'
+
export interface ButtonProps {
type?: ButtonType
size?: ButtonSize
diff --git a/src/interface/neptune.ts b/src/interface/neptune.ts
index 9e9bfe9..90be6e5 100644
--- a/src/interface/neptune.ts
+++ b/src/interface/neptune.ts
@@ -1,12 +1,14 @@
export interface WalletState {
seedPhrase: string[] | null
- password: string | null
+ password?: string | null
receiverId: string | null
viewKey: string | null
+ spendingKey?: string | null
address: string | null
network: 'mainnet' | 'testnet'
- balance: string | null
- utxos: any[]
+ balance?: string | null
+ pendingBalance?: string | null
+ utxos?: Utxo[]
}
export interface GenerateSeedResult {
@@ -16,6 +18,26 @@ export interface GenerateSeedResult {
export interface ViewKeyResult {
receiver_identifier: string
- view_key: string
- address: string
+ spending_key_hex: string
+ view_key_hex: string
+ success?: boolean
+}
+
+export interface PayloadBuildTransaction {
+ spendingKeyHex?: string
+ inputAdditionRecords?: string[]
+ outputAddresses?: string[]
+ outputAmounts?: string[]
+ fee?: string
+}
+
+export interface PayloadBroadcastSignedTransaction {
+ transactionHex: string
+}
+
+export interface Utxo {
+ additionRecord: string
+ amount: string
+ blockHeight: number
+ utxoHash: string
}
diff --git a/src/main.ts b/src/main.ts
index d5793cb..b1b4c45 100644
--- a/src/main.ts
+++ b/src/main.ts
@@ -2,7 +2,6 @@ import { createApp } from 'vue'
import { createPinia } from 'pinia'
import i18n from '@/lang'
import App from './App.vue'
-import Antd from 'ant-design-vue'
import router from './router'
import 'ant-design-vue/dist/reset.css'
import './assets/scss/main.scss'
@@ -12,12 +11,11 @@ const app = createApp(App)
app.use(i18n)
app.use(createPinia())
app.use(router)
-app.use(Antd)
// Hide 'DOMNodeInserted'
const originalAddEventListener = Element.prototype.addEventListener
Element.prototype.addEventListener = function (type: any, listener: any, options: any) {
- if (type === 'DOMNodeInserted') return // Ignore this event type
+ if (type === 'DOMNodeInserted') return
return originalAddEventListener.call(this, type, listener, options)
}
diff --git a/src/stores/neptuneStore.ts b/src/stores/neptuneStore.ts
index 21e52f9..c740f2b 100644
--- a/src/stores/neptuneStore.ts
+++ b/src/stores/neptuneStore.ts
@@ -3,7 +3,7 @@ import { ref, computed } from 'vue'
import type { WalletState } from '@/interface'
export const useNeptuneStore = defineStore('neptune', () => {
- const defaultNetwork = (import.meta.env.VITE_NODE_NETWORK || 'testnet') as 'mainnet' | 'testnet'
+ const defaultNetwork = (import.meta.env.VITE_NODE_NETWORK || 'mainnet') as 'mainnet' | 'testnet'
// ===== STATE =====
const wallet = ref({
@@ -11,9 +11,11 @@ export const useNeptuneStore = defineStore('neptune', () => {
password: null,
receiverId: null,
viewKey: null,
+ spendingKey: null,
address: null,
network: defaultNetwork,
balance: null,
+ pendingBalance: null,
utxos: [],
})
@@ -37,6 +39,10 @@ export const useNeptuneStore = defineStore('neptune', () => {
wallet.value.viewKey = viewKey
}
+ const setSpendingKey = (spendingKey: string | null) => {
+ wallet.value.spendingKey = spendingKey
+ }
+
const setAddress = (address: string | null) => {
wallet.value.address = address
}
@@ -49,6 +55,10 @@ export const useNeptuneStore = defineStore('neptune', () => {
wallet.value.balance = balance
}
+ const setPendingBalance = (pendingBalance: string | null) => {
+ wallet.value.pendingBalance = pendingBalance
+ }
+
const setUtxos = (utxos: any[]) => {
wallet.value.utxos = utxos
}
@@ -67,9 +77,11 @@ export const useNeptuneStore = defineStore('neptune', () => {
password: null,
receiverId: null,
viewKey: null,
+ spendingKey: null,
address: null,
network: defaultNetwork,
balance: null,
+ pendingBalance: null,
utxos: [],
}
}
@@ -81,9 +93,11 @@ export const useNeptuneStore = defineStore('neptune', () => {
const getPassword = computed(() => wallet.value.password)
const getReceiverId = computed(() => wallet.value.receiverId)
const getViewKey = computed(() => wallet.value.viewKey)
+ const getSpendingKey = computed(() => wallet.value.spendingKey)
const getAddress = computed(() => wallet.value.address)
const getNetwork = computed(() => wallet.value.network)
const getBalance = computed(() => wallet.value.balance)
+ const getPendingBalance = computed(() => wallet.value.pendingBalance)
const getUtxos = computed(() => wallet.value.utxos)
const hasWallet = computed(() => wallet.value.address !== null)
const getKeystorePath = computed(() => keystorePath.value)
@@ -94,9 +108,11 @@ export const useNeptuneStore = defineStore('neptune', () => {
getPassword,
getReceiverId,
getViewKey,
+ getSpendingKey,
getAddress,
getNetwork,
getBalance,
+ getPendingBalance,
getUtxos,
hasWallet,
getKeystorePath,
@@ -104,9 +120,11 @@ export const useNeptuneStore = defineStore('neptune', () => {
setPassword,
setReceiverId,
setViewKey,
+ setSpendingKey,
setAddress,
setNetwork,
setBalance,
+ setPendingBalance,
setUtxos,
setWallet,
setKeystorePath,
diff --git a/src/utils/constants/constants.ts b/src/utils/constants/constants.ts
index bf55d8f..725c7a3 100644
--- a/src/utils/constants/constants.ts
+++ b/src/utils/constants/constants.ts
@@ -1,2 +1,3 @@
export const PAGE_FIRST = 1
-export const PER_PAGE = 40
+export const PER_PAGE = 20
+export const POLLING_INTERVAL = 1000 * 60 // 1 minute
diff --git a/src/views/Auth/AuthView.vue b/src/views/Auth/AuthView.vue
index b725a20..8789c08 100644
--- a/src/views/Auth/AuthView.vue
+++ b/src/views/Auth/AuthView.vue
@@ -33,7 +33,6 @@ const handleGoToRecover = () => {
diff --git a/src/views/Home/components/NetworkTab.vue b/src/views/Home/components/NetworkTab.vue
index 38c81bf..2c6e437 100644
--- a/src/views/Home/components/NetworkTab.vue
+++ b/src/views/Home/components/NetworkTab.vue
@@ -5,6 +5,7 @@ import { CardBase, SpinnerCommon } from '@/components'
import { useNeptuneStore } from '@/stores/neptuneStore'
import { useNeptuneWallet } from '@/composables/useNeptuneWallet'
import { message } from 'ant-design-vue'
+import { POLLING_INTERVAL } from '@/utils'
const neptuneStore = useNeptuneStore()
const { getBlockHeight } = useNeptuneWallet()
@@ -44,7 +45,7 @@ const retryConnection = async () => {
const startPolling = () => {
pollingInterval = window.setInterval(async () => {
if (!loading.value) await loadNetworkData()
- }, 10000)
+ }, POLLING_INTERVAL)
}
const stopPolling = () => {
@@ -89,7 +90,7 @@ onUnmounted(() => {
- DAA Score
+ Block Height
{{ formatNumberToLocaleString(blockHeight) }}
diff --git a/src/views/Home/components/UTXOTab.vue b/src/views/Home/components/UTXOTab.vue
index 7437372..544f148 100644
--- a/src/views/Home/components/UTXOTab.vue
+++ b/src/views/Home/components/UTXOTab.vue
@@ -1,29 +1,81 @@
-
+
+
+
+
+
@@ -32,14 +84,14 @@ const inUseUtxosAmount = ref(0)
.debug-header {
text-align: center;
margin-bottom: var(--spacing-2xl);
- padding-bottom: var(--spacing-xl);
+ padding-bottom: var(--spacing-sm);
border-bottom: 2px solid var(--border-color);
.debug-title {
font-size: var(--font-2xl);
font-weight: var(--font-bold);
color: var(--text-primary);
- margin-bottom: var(--spacing-lg);
+ margin-bottom: var(--spacing-xl);
letter-spacing: var(--tracking-wide);
display: flex;
align-items: center;
@@ -48,20 +100,54 @@ const inUseUtxosAmount = ref(0)
.debug-info {
display: flex;
- flex-direction: column;
- gap: var(--spacing-sm);
+ justify-content: flex-start;
+ gap: var(--spacing-4xl);
p {
margin: 0;
font-size: var(--font-lg);
color: var(--text-secondary);
- strong {
- font-weight: var(--font-semibold);
+ span {
+ color: var(--text-primary);
+ font-weight: var(--font-bold);
margin-right: var(--spacing-sm);
}
}
}
}
+
+ .loading-container {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ min-height: 300px;
+ }
+
+ .list-pagination {
+ :deep(.ant-table) {
+ background: transparent;
+
+ .ant-table-thead > tr > th {
+ background: var(--bg-light);
+ font-weight: var(--font-semibold);
+ color: var(--text-primary);
+ border-bottom: 2px solid var(--border-color);
+ }
+
+ .ant-table-tbody > tr > td {
+ border-bottom: 1px solid var(--border-light);
+ }
+
+ .ant-table-tbody > tr:hover > td {
+ background: var(--bg-hover);
+ }
+ }
+
+ :deep(.ant-pagination) {
+ margin-top: var(--spacing-lg);
+ text-align: center;
+ }
+ }
}
diff --git a/src/views/Home/components/index.ts b/src/views/Home/components/index.ts
index 7e349f5..cd21dbc 100644
--- a/src/views/Home/components/index.ts
+++ b/src/views/Home/components/index.ts
@@ -1,3 +1,3 @@
export { default as NetworkTab } from './NetworkTab.vue'
export { default as UTXOTab } from './UTXOTab.vue'
-export { WalletInfo, WalletBalanceAndAddress, WalletTab } from './wallet-tab'
+export { WalletInfo, WalletBalance, WalletAddress, WalletTab } from './wallet-tab'
diff --git a/src/views/Home/components/wallet-tab/SendTransactionComponent.vue b/src/views/Home/components/wallet-tab/SendTransactionComponent.vue
new file mode 100644
index 0000000..f329d1d
--- /dev/null
+++ b/src/views/Home/components/wallet-tab/SendTransactionComponent.vue
@@ -0,0 +1,466 @@
+
+
+
+
+
+
+
+
+
+
Recipient Address:
+
+ {{ displayAddress }}
+
+
+
+
+
+
+
Amount:
+
{{ outputAmounts }} NPT
+
+
+
+
Priority Fee:
+
{{ fee }} NPT
+
+
+
+
+
+ Cancel
+
+
+ Confirm & Send
+
+
+
+
+
+
+
diff --git a/src/views/Home/components/wallet-tab/WalletAddress.vue b/src/views/Home/components/wallet-tab/WalletAddress.vue
new file mode 100644
index 0000000..5108508
--- /dev/null
+++ b/src/views/Home/components/wallet-tab/WalletAddress.vue
@@ -0,0 +1,133 @@
+
+
+
+
+
+
+
Receive Address:
+
+
+ {{ receiveAddress }}
+
+
+
+
+
+
+
diff --git a/src/views/Home/components/wallet-tab/WalletBalance.vue b/src/views/Home/components/wallet-tab/WalletBalance.vue
new file mode 100644
index 0000000..76e2988
--- /dev/null
+++ b/src/views/Home/components/wallet-tab/WalletBalance.vue
@@ -0,0 +1,69 @@
+
+
+
+
+
Available
+
+
+ {{ props.availableBalance }} NPT
+
+
+ Pending
+
+ {{ props.isLoadingData ? '...' : props.pendingBalance }}
+ NPT
+
+
+
+
+
+
diff --git a/src/views/Home/components/wallet-tab/WalletBalanceAndAddress.vue b/src/views/Home/components/wallet-tab/WalletBalanceAndAddress.vue
deleted file mode 100644
index 3b512c5..0000000
--- a/src/views/Home/components/wallet-tab/WalletBalanceAndAddress.vue
+++ /dev/null
@@ -1,239 +0,0 @@
-
-
-
-
-
-
Loading wallet data...
-
-
-
-
No wallet found. Please create or import a wallet.
-
-
-
-
-
-
Available
-
- Loading...
- {{ formatNumberToLocaleString(props.availableBalance) }} NPT
-
-
- Pending
-
- {{ props.isLoadingData ? '...' : formatNumberToLocaleString(props.pendingBalance) }}
- NPT
-
-
-
-
-
-
-
Receive Address:
-
-
- {{ receiveAddress || 'No address available' }}
-
-
-
-
-
-
-
-
-
-
diff --git a/src/views/Home/components/wallet-tab/WalletInfo.vue b/src/views/Home/components/wallet-tab/WalletInfo.vue
index 09ff633..71bbca5 100644
--- a/src/views/Home/components/wallet-tab/WalletInfo.vue
+++ b/src/views/Home/components/wallet-tab/WalletInfo.vue
@@ -1,26 +1,32 @@