forked from jsnbuchanan/crowd-funder-for-time-pwa
- Add vite-plugin-node-polyfills to provide Node.js built-in module polyfills - Configure build target as 'node18' for Electron environment - Switch to CommonJS format for Electron builds - Add specific polyfills for sqlite3 dependencies (util, stream, buffer) - Mark Node.js built-in modules as external in Electron builds This fixes the "Module util has been externalized" error by properly handling Node.js modules in the Electron environment, particularly for sqlite3 which depends on Node.js built-in modules.
228 lines
8.8 KiB
JSON
228 lines
8.8 KiB
JSON
{
|
|
"name": "timesafari",
|
|
"version": "0.4.6",
|
|
"description": "Time Safari Application",
|
|
"author": {
|
|
"name": "Time Safari Team"
|
|
},
|
|
"scripts": {
|
|
"dev": "vite --config vite.config.dev.mts --host",
|
|
"serve": "vite preview",
|
|
"build": "VITE_GIT_HASH=`git log -1 --pretty=format:%h` vite build --config vite.config.mts",
|
|
"lint": "eslint --ext .js,.ts,.vue --ignore-path .gitignore src",
|
|
"lint-fix": "eslint --ext .js,.ts,.vue --ignore-path .gitignore --fix src",
|
|
"prebuild": "eslint --ext .js,.ts,.vue --ignore-path .gitignore src && node sw_combine.js && node scripts/copy-wasm.js",
|
|
"test:all": "npm run test:prerequisites && npm run build && npm run test:web && npm run test:mobile",
|
|
"test:prerequisites": "node scripts/check-prerequisites.js",
|
|
"test:web": "npx playwright test -c playwright.config-local.ts --trace on",
|
|
"test:mobile": "npm run build:capacitor && npm run test:android && npm run test:ios",
|
|
"test:android": "node scripts/test-android.js",
|
|
"test:ios": "node scripts/test-ios.js",
|
|
"check:android-device": "adb devices | grep -w 'device' || (echo 'No Android device connected' && exit 1)",
|
|
"check:ios-device": "xcrun xctrace list devices 2>&1 | grep -w 'Booted' || (echo 'No iOS simulator running' && exit 1)",
|
|
"clean:electron": "rimraf dist-electron",
|
|
"build:pywebview": "vite build --config vite.config.pywebview.mts",
|
|
"build:electron": "npm run clean:electron && tsc -p tsconfig.electron.json && vite build --config vite.config.electron.mts && node scripts/build-electron.js",
|
|
"build:capacitor": "vite build --mode capacitor --config vite.config.capacitor.mts",
|
|
"build:web": "VITE_GIT_HASH=`git log -1 --pretty=format:%h` vite build --config vite.config.web.mts",
|
|
"electron:dev": "npm run build && electron .",
|
|
"electron:start": "electron .",
|
|
"clean:android": "adb uninstall app.timesafari.app || true",
|
|
"build:android": "npm run clean:android && rm -rf dist && npm run build:web && npm run build:capacitor && cd android && ./gradlew clean && ./gradlew assembleDebug && cd .. && npx cap sync android && npx capacitor-assets generate --android && npx cap open android",
|
|
"electron:build-linux": "npm run build:electron && electron-builder --linux AppImage",
|
|
"electron:build-linux-deb": "npm run build:electron && electron-builder --linux deb",
|
|
"electron:build-linux-prod": "NODE_ENV=production npm run build:electron && electron-builder --linux AppImage",
|
|
"build:electron-prod": "NODE_ENV=production npm run build:electron",
|
|
"pywebview:dev": "vite build --config vite.config.pywebview.mts && .venv/bin/python src/pywebview/main.py",
|
|
"pywebview:build": "vite build --config vite.config.pywebview.mts && .venv/bin/python src/pywebview/main.py",
|
|
"pywebview:package-linux": "vite build --mode pywebview --config vite.config.pywebview.mts && .venv/bin/python -m PyInstaller --name TimeSafari --add-data 'dist:www' src/pywebview/main.py",
|
|
"pywebview:package-win": "vite build --mode pywebview --config vite.config.pywebview.mts && .venv/Scripts/python -m PyInstaller --name TimeSafari --add-data 'dist;www' src/pywebview/main.py",
|
|
"pywebview:package-mac": "vite build --mode pywebview --config vite.config.pywebview.mts && .venv/bin/python -m PyInstaller --name TimeSafari --add-data 'dist:www' src/pywebview/main.py",
|
|
"fastlane:ios:beta": "cd ios && fastlane beta",
|
|
"fastlane:ios:release": "cd ios && fastlane release",
|
|
"fastlane:android:beta": "cd android && fastlane beta",
|
|
"fastlane:android:release": "cd android && fastlane release",
|
|
"electron:build-mac": "npm run build:electron-prod && electron-builder --mac",
|
|
"electron:build-mac-universal": "npm run build:electron-prod && electron-builder --mac --universal"
|
|
},
|
|
"dependencies": {
|
|
"@capacitor-community/sqlite": "6.0.0",
|
|
"@capacitor-mlkit/barcode-scanning": "^6.0.0",
|
|
"@capacitor/android": "^6.2.0",
|
|
"@capacitor/app": "^6.0.0",
|
|
"@capacitor/camera": "^6.0.0",
|
|
"@capacitor/cli": "^6.2.0",
|
|
"@capacitor/core": "^6.2.0",
|
|
"@capacitor/filesystem": "^6.0.0",
|
|
"@capacitor/ios": "^6.2.0",
|
|
"@capacitor/share": "^6.0.3",
|
|
"@capawesome/capacitor-file-picker": "^6.2.0",
|
|
"@dicebear/collection": "^5.4.1",
|
|
"@dicebear/core": "^5.4.1",
|
|
"@ethersproject/hdnode": "^5.7.0",
|
|
"@ethersproject/wallet": "^5.8.0",
|
|
"@fortawesome/fontawesome-svg-core": "^6.5.1",
|
|
"@fortawesome/free-solid-svg-icons": "^6.5.1",
|
|
"@fortawesome/vue-fontawesome": "^3.0.6",
|
|
"@jlongster/sql.js": "^1.6.7",
|
|
"@peculiar/asn1-ecc": "^2.3.8",
|
|
"@peculiar/asn1-schema": "^2.3.8",
|
|
"@pvermeer/dexie-encrypted-addon": "^3.0.0",
|
|
"@simplewebauthn/browser": "^10.0.0",
|
|
"@simplewebauthn/server": "^10.0.0",
|
|
"@tweenjs/tween.js": "^21.1.1",
|
|
"@types/qrcode": "^1.5.5",
|
|
"@veramo/core": "^5.6.0",
|
|
"@veramo/credential-w3c": "^5.6.0",
|
|
"@veramo/data-store": "^5.6.0",
|
|
"@veramo/did-manager": "^5.6.0",
|
|
"@veramo/did-provider-ethr": "^5.6.0",
|
|
"@veramo/did-provider-peer": "^6.0.0",
|
|
"@veramo/did-resolver": "^5.6.0",
|
|
"@veramo/key-manager": "^5.6.0",
|
|
"@vue-leaflet/vue-leaflet": "^0.10.1",
|
|
"@vueuse/core": "^12.3.0",
|
|
"@zxing/text-encoding": "^0.9.0",
|
|
"absurd-sql": "^0.0.54",
|
|
"asn1-ber": "^1.2.2",
|
|
"axios": "^1.6.8",
|
|
"cbor-x": "^1.5.9",
|
|
"class-transformer": "^0.5.1",
|
|
"dexie": "^3.2.7",
|
|
"dexie-export-import": "^4.1.4",
|
|
"did-jwt": "^7.4.7",
|
|
"did-resolver": "^4.1.0",
|
|
"dotenv": "^16.0.3",
|
|
"ethereum-cryptography": "^2.1.3",
|
|
"ethereumjs-util": "^7.1.5",
|
|
"jdenticon": "^3.2.0",
|
|
"js-generate-password": "^0.1.9",
|
|
"js-yaml": "^4.1.0",
|
|
"jsqr": "^1.4.0",
|
|
"leaflet": "^1.9.4",
|
|
"localstorage-slim": "^2.7.0",
|
|
"lru-cache": "^10.2.0",
|
|
"luxon": "^3.4.4",
|
|
"merkletreejs": "^0.3.11",
|
|
"nostr-tools": "^2.10.4",
|
|
"notiwind": "^2.0.2",
|
|
"papaparse": "^5.4.1",
|
|
"pina": "^0.20.2204228",
|
|
"pinia-plugin-persistedstate": "^3.2.1",
|
|
"qr-code-generator-vue3": "^1.4.21",
|
|
"qrcode": "^1.5.4",
|
|
"ramda": "^0.29.1",
|
|
"readable-stream": "^4.5.2",
|
|
"reflect-metadata": "^0.1.14",
|
|
"register-service-worker": "^1.7.2",
|
|
"simple-vue-camera": "^1.1.3",
|
|
"sqlite": "^5.1.1",
|
|
"sqlite3": "^5.1.7",
|
|
"stream-browserify": "^3.0.0",
|
|
"three": "^0.156.1",
|
|
"ua-parser-js": "^1.0.37",
|
|
"vue": "^3.5.13",
|
|
"vue-axios": "^3.5.2",
|
|
"vue-facing-decorator": "^3.0.4",
|
|
"vue-picture-cropper": "^0.7.0",
|
|
"vue-qrcode-reader": "^5.5.3",
|
|
"vue-router": "^4.5.0",
|
|
"web-did-resolver": "^2.0.27",
|
|
"zod": "^3.24.2"
|
|
},
|
|
"devDependencies": {
|
|
"@capacitor/assets": "^3.0.5",
|
|
"@playwright/test": "^1.45.2",
|
|
"@types/dom-webcodecs": "^0.1.7",
|
|
"@types/js-yaml": "^4.0.9",
|
|
"@types/leaflet": "^1.9.8",
|
|
"@types/luxon": "^3.4.2",
|
|
"@types/node": "^20.14.11",
|
|
"@types/node-fetch": "^2.6.12",
|
|
"@types/ramda": "^0.29.11",
|
|
"@types/sqlite3": "^3.1.11",
|
|
"@types/three": "^0.155.1",
|
|
"@types/ua-parser-js": "^0.7.39",
|
|
"@typescript-eslint/eslint-plugin": "^6.21.0",
|
|
"@typescript-eslint/parser": "^6.21.0",
|
|
"@vitejs/plugin-vue": "^5.2.1",
|
|
"@vue/eslint-config-typescript": "^11.0.3",
|
|
"autoprefixer": "^10.4.19",
|
|
"browserify-fs": "^1.0.0",
|
|
"concurrently": "^8.2.2",
|
|
"crypto-browserify": "^3.12.1",
|
|
"electron": "^33.2.1",
|
|
"electron-builder": "^25.1.8",
|
|
"eslint": "^8.57.0",
|
|
"eslint-config-prettier": "^9.1.0",
|
|
"eslint-plugin-prettier": "^5.2.1",
|
|
"eslint-plugin-vue": "^9.32.0",
|
|
"fs-extra": "^11.3.0",
|
|
"markdownlint": "^0.37.4",
|
|
"markdownlint-cli": "^0.44.0",
|
|
"npm-check-updates": "^17.1.13",
|
|
"path-browserify": "^1.0.1",
|
|
"postcss": "^8.4.38",
|
|
"prettier": "^3.2.5",
|
|
"rimraf": "^6.0.1",
|
|
"tailwindcss": "^3.4.1",
|
|
"typescript": "~5.2.2",
|
|
"vite": "^5.2.0",
|
|
"vite-plugin-node-polyfills": "^0.23.0",
|
|
"vite-plugin-pwa": "^0.19.8"
|
|
},
|
|
"main": "./dist-electron/main.js",
|
|
"build": {
|
|
"appId": "app.timesafari",
|
|
"productName": "TimeSafari",
|
|
"directories": {
|
|
"output": "dist-electron-packages"
|
|
},
|
|
"files": [
|
|
"dist-electron/**/*",
|
|
"dist/**/*"
|
|
],
|
|
"extraResources": [
|
|
{
|
|
"from": "dist",
|
|
"to": "www"
|
|
}
|
|
],
|
|
"linux": {
|
|
"target": [
|
|
"AppImage",
|
|
"deb"
|
|
],
|
|
"category": "Office",
|
|
"icon": "build/icon.png"
|
|
},
|
|
"asar": true,
|
|
"mac": {
|
|
"target": [
|
|
"dmg",
|
|
"zip"
|
|
],
|
|
"category": "public.app-category.productivity",
|
|
"icon": "build/icon.png",
|
|
"hardenedRuntime": true,
|
|
"gatekeeperAssess": false,
|
|
"entitlements": "ios/App/App/entitlements.mac.plist",
|
|
"entitlementsInherit": "ios/App/App/entitlements.mac.plist"
|
|
},
|
|
"dmg": {
|
|
"contents": [
|
|
{
|
|
"x": 130,
|
|
"y": 220
|
|
},
|
|
{
|
|
"x": 410,
|
|
"y": 220,
|
|
"type": "link",
|
|
"path": "/Applications"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|