Skip to content

Commit 7ad90e9

Browse files
committed
Add source code
1 parent b5fae8d commit 7ad90e9

File tree

18 files changed

+3719
-130
lines changed

18 files changed

+3719
-130
lines changed

.gitignore

Lines changed: 5 additions & 130 deletions
Original file line numberDiff line numberDiff line change
@@ -1,130 +1,5 @@
1-
# Logs
2-
logs
3-
*.log
4-
npm-debug.log*
5-
yarn-debug.log*
6-
yarn-error.log*
7-
lerna-debug.log*
8-
.pnpm-debug.log*
9-
10-
# Diagnostic reports (https://nodejs.org/api/report.html)
11-
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
12-
13-
# Runtime data
14-
pids
15-
*.pid
16-
*.seed
17-
*.pid.lock
18-
19-
# Directory for instrumented libs generated by jscoverage/JSCover
20-
lib-cov
21-
22-
# Coverage directory used by tools like istanbul
23-
coverage
24-
*.lcov
25-
26-
# nyc test coverage
27-
.nyc_output
28-
29-
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
30-
.grunt
31-
32-
# Bower dependency directory (https://bower.io/)
33-
bower_components
34-
35-
# node-waf configuration
36-
.lock-wscript
37-
38-
# Compiled binary addons (https://nodejs.org/api/addons.html)
39-
build/Release
40-
41-
# Dependency directories
42-
node_modules/
43-
jspm_packages/
44-
45-
# Snowpack dependency directory (https://snowpack.dev/)
46-
web_modules/
47-
48-
# TypeScript cache
49-
*.tsbuildinfo
50-
51-
# Optional npm cache directory
52-
.npm
53-
54-
# Optional eslint cache
55-
.eslintcache
56-
57-
# Optional stylelint cache
58-
.stylelintcache
59-
60-
# Microbundle cache
61-
.rpt2_cache/
62-
.rts2_cache_cjs/
63-
.rts2_cache_es/
64-
.rts2_cache_umd/
65-
66-
# Optional REPL history
67-
.node_repl_history
68-
69-
# Output of 'npm pack'
70-
*.tgz
71-
72-
# Yarn Integrity file
73-
.yarn-integrity
74-
75-
# dotenv environment variable files
76-
.env
77-
.env.development.local
78-
.env.test.local
79-
.env.production.local
80-
.env.local
81-
82-
# parcel-bundler cache (https://parceljs.org/)
83-
.cache
84-
.parcel-cache
85-
86-
# Next.js build output
87-
.next
88-
out
89-
90-
# Nuxt.js build / generate output
91-
.nuxt
92-
dist
93-
94-
# Gatsby files
95-
.cache/
96-
# Comment in the public line in if your project uses Gatsby and not Next.js
97-
# https://nextjs.org/blog/next-9-1#public-directory-support
98-
# public
99-
100-
# vuepress build output
101-
.vuepress/dist
102-
103-
# vuepress v2.x temp and cache directory
104-
.temp
105-
.cache
106-
107-
# Docusaurus cache and generated files
108-
.docusaurus
109-
110-
# Serverless directories
111-
.serverless/
112-
113-
# FuseBox cache
114-
.fusebox/
115-
116-
# DynamoDB Local files
117-
.dynamodb/
118-
119-
# TernJS port file
120-
.tern-port
121-
122-
# Stores VSCode versions used for testing VSCode extensions
123-
.vscode-test
124-
125-
# yarn v2
126-
.yarn/cache
127-
.yarn/unplugged
128-
.yarn/build-state.yml
129-
.yarn/install-state.gz
130-
.pnp.*
1+
.DS_Store
2+
/node_modules
3+
/bin
4+
/build
5+
/.pkg-cache

.tokeignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
package.json
2+
package-lock.json
3+
tsconfig.json
4+
*.md

README.md

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
# Ingress Drone Explorer - Node.js
2+
3+
[![Lines of code][nodejs-loc]][nodejs-repo]
4+
5+
An offline CLI tool to analyze reachable Portals for Ingress Drone Mark I.
6+
7+
Implementations in different languages are listed and compared in [Benchmark](#benchmark).
8+
9+
## Build from Source
10+
11+
### Requirements
12+
13+
- Node 18 (Backporting should be possible and easy)
14+
15+
### Build
16+
17+
```sh
18+
$ npm init
19+
$ npm run build
20+
$ npm run package # Package an executable with pkg
21+
```
22+
23+
Please notice the [`pkg`](https://github.com/vercel/pkg) will download necessary binary files to `~/.pkg-cache`, it may be overriden by environment variable `PKG_CACHE_PATH`:
24+
25+
```sh
26+
$ export PKG_CACHE_PATH=./.pkg-cache
27+
$ npm run package
28+
```
29+
30+
## Exploration Guide
31+
32+
### Prepare Files
33+
34+
All the files should be JSON.
35+
36+
1. Portal list file(s), should be an array of:
37+
```jsonc
38+
{
39+
"guid": "GUID of Portal",
40+
"title": "Title of Portal",
41+
"lngLat": {
42+
"lng": 90.0, // Longitude
43+
"lat": 45.0 // Latitude
44+
}
45+
}
46+
```
47+
2. Portal Key list file, should be an array of GUID (Not required but strongly recommended)
48+
49+
Maybe an IITC plugin like [this](https://github.com/lucka-me/toolkit/tree/master/Ingress/Portal-List-Exporter) helps.
50+
51+
### Usage
52+
53+
```
54+
$ ingress-drone-explorer <portal-list-file> -s <longitude,latitude> [options...]
55+
```
56+
57+
#### Options
58+
59+
Explore with key list:
60+
```sh
61+
$ ... -k <path-to-key-list-file>
62+
```
63+
64+
Output cells JSON for IITC Draw tools:
65+
```sh
66+
$ ... --output-drawn-items <path-to-output>
67+
```
68+
69+
Help information:
70+
```sh
71+
$ ingress-drone-explorer -h
72+
```
73+
74+
## Benchmark
75+
76+
### Sample Data
77+
78+
- Area: Shenzhen downtown and Hong Kong
79+
- Portals: 34,041 Portals in 13,451 cells
80+
- Keys: 11 matched
81+
- Start Point: Shenzhen Bay Sports Center
82+
- Result: 30,462 Portals and 11,342 cells are reachable
83+
84+
### Result
85+
86+
Average exploration time consumed of 100 executions on MacBook Air (M2).
87+
88+
| Implementation | Lines of Code | Commit | Consumed
89+
| ---------------------: | :-------------: | :---------------------------------: | :---
90+
| [Node.js][nodejs-repo] | ![][nodejs-loc] | `Current` | 1.295 s
91+
| [C++][cpp-repo] | ![][cpp-loc] | [`db5a976`][cpp-benchmark-commit] | 0.583 s
92+
| [Swift][swift-repo] | ![][swift-loc] | [`68ae1b4`][swift-benchmark-commit] | 3.000 s
93+
94+
The results of other implementations may be outdated, please check their repositories for latest results.
95+
96+
[nodejs-repo]: https://github.com/lucka-me/ingress-drone-explorer-nodejs
97+
[nodejs-loc]: https://img.shields.io/tokei/lines/github/lucka-me/ingress-drone-explorer-nodejs
98+
99+
[cpp-repo]: https://github.com/lucka-me/ingress-drone-explorer-cpp
100+
[cpp-loc]: https://img.shields.io/tokei/lines/github/lucka-me/ingress-drone-explorer-cpp
101+
[cpp-benchmark-commit]: https://github.com/lucka-me/ingress-drone-explorer-cpp/commit/db5a976
102+
103+
[swift-repo]: https://github.com/lucka-me/ingress-drone-explorer-swift
104+
[swift-loc]: https://img.shields.io/tokei/lines/github/lucka-me/ingress-drone-explorer-swift
105+
[swift-benchmark-commit]: https://github.com/lucka-me/ingress-drone-explorer-swift/commit/68ae1b4

0 commit comments

Comments
 (0)