ac-geoip 4.0.2 → 4.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -19,14 +19,14 @@ jobs:
19
19
 
20
20
  strategy:
21
21
  matrix:
22
- node-version: [20.x, 22.x]
22
+ node-version: [22.x, 24.x]
23
23
  # See supported Node.js release schedule at https://nodejs.org/en/about/releases/
24
24
  redis-version: [6]
25
25
 
26
26
  steps:
27
- - uses: actions/checkout@v3
27
+ - uses: actions/checkout@v5
28
28
  - name: Use Node.js ${{ matrix.node-version }}
29
- uses: actions/setup-node@v3
29
+ uses: actions/setup-node@v5
30
30
  with:
31
31
  node-version: ${{ matrix.node-version }}
32
32
 
package/CHANGELOG.md CHANGED
@@ -1,3 +1,18 @@
1
+ ## [4.0.3](https://github.com/admiralcloud/ac-geoip/compare/v4.0.2..v4.0.3) (2026-04-04 11:04:37)
2
+
3
+
4
+ ### Bug Fix
5
+
6
+
7
+ * **App:** Package updates | MP | [5ed01a4cad0aa0de2bee164385f31aab1710be6d](https://github.com/admiralcloud/ac-geoip/commit/5ed01a4cad0aa0de2bee164385f31aab1710be6d)
8
+ Package updates
9
+ Related issues:
10
+ ### Style
11
+
12
+
13
+ * **App:** Lint-fix | MP | [55ae6cac606a00a5e6cc2090195c4ba1e6bc49ea](https://github.com/admiralcloud/ac-geoip/commit/55ae6cac606a00a5e6cc2090195c4ba1e6bc49ea)
14
+ Lint-fix
15
+ Related issues:
1
16
 
2
17
  ## [4.0.2](https://github.com/admiralcloud/ac-geoip/compare/v4.0.1..v4.0.2) (2026-03-21 11:29:30)
3
18
 
package/README.md CHANGED
@@ -5,7 +5,7 @@ GEOIP web service requires an account at Maxmind.
5
5
 
6
6
  You can also use the Geolite2 database from Maxmind: https://dev.maxmind.com/geoip/geoip2/geolite2/
7
7
 
8
- [![Node.js CI](https://github.com/AdmiralCloud/ac-geoip/actions/workflows/node.js.yml/badge.svg)](https://github.com/AdmiralCloud/ac-geoip/actions/workflows/node.js.yml)
8
+ [![Node.js CI](https://github.com/AdmiralCloud/ac-geoip/actions/workflows/node.js.yml/badge.svg)](https://github.com/AdmiralCloud/ac-geoip/actions/workflows/node.js.yml) [![CodeQL](https://github.com/AdmiralCloud/ac-geoip/actions/workflows/github-code-scanning/codeql/badge.svg)](https://github.com/AdmiralCloud/ac-geoip/actions/workflows/github-code-scanning/codeql)
9
9
 
10
10
  ## Breaking Change Version 4.x
11
11
  Version 4.x requires Node 20 or higher.
package/eslint.config.js CHANGED
@@ -1,32 +1,34 @@
1
1
  const globals = require('globals')
2
2
 
3
- module.exports = {
4
- ignores: [
5
- 'config/env/**'
6
- ],
7
- languageOptions: {
8
- ecmaVersion: 2022,
9
- sourceType: 'module',
10
- globals: {
11
- ...globals.commonjs,
12
- ...globals.es2015,
13
- ...globals.node,
14
- expect: 'readonly',
15
- describe: 'readonly',
16
- it: 'readonly'
3
+ module.exports = [
4
+ {
5
+ files: ['index.js', 'test/**.js'],
6
+ languageOptions: {
7
+ ecmaVersion: 2022,
8
+ sourceType: 'module',
9
+ globals: {
10
+ ...globals.commonjs,
11
+ ...globals.es2015,
12
+ ...globals.node,
13
+ expect: 'readonly',
14
+ describe: 'readonly',
15
+ it: 'readonly'
16
+ }
17
+ },
18
+ rules: {
19
+ 'no-const-assign': 'error',
20
+ 'space-before-function-paren': 'off',
21
+ 'no-extra-semi': 'off',
22
+ 'object-curly-spacing': ['error', 'always'],
23
+ 'brace-style': ['error', 'stroustrup', { allowSingleLine: true }],
24
+ 'block-spacing': 'error',
25
+ 'no-useless-escape': 'off',
26
+ 'no-console': ['warn', { allow: ['warn', 'error'] }],
27
+ 'no-unused-vars': 'error',
28
+ 'eqeqeq': 'error',
29
+ 'no-var': 'error',
30
+ 'curly': 'error',
31
+ 'prefer-const': ['error', { ignoreReadBeforeAssign: true }]
17
32
  }
18
- },
19
- rules: {
20
- 'no-const-assign': 'error', // Ensure this rule is enabled
21
- 'space-before-function-paren': 'off',
22
- 'no-extra-semi': 'off',
23
- 'object-curly-spacing': ['error', 'always'],
24
- 'brace-style': ['error', 'stroustrup', { allowSingleLine: true }],
25
- 'no-useless-escape': 'off',
26
- 'standard/no-callback-literal': 'off',
27
- 'new-cap': 'off',
28
- 'no-console': ['error', { allow: ['log', 'warn', 'error'] }],
29
- "no-unused-vars": "error", // we shouldn't clutter code with unused variables
30
- "prefer-const": ["warn", { "ignoreReadBeforeAssign": true }],
31
33
  }
32
- }
34
+ ]
package/index.js CHANGED
@@ -34,11 +34,11 @@ const acgeoip = () => {
34
34
  }
35
35
 
36
36
  const init = (params) => {
37
- if (_.has(params, 'userId')) _.set(geoip, 'userId', _.get(params, 'userId'))
38
- if (_.has(params, 'licenseKey')) _.set(geoip, 'licenseKey', _.get(params, 'licenseKey'))
39
- if (_.has(params, 'env')) _.set(geoip, 'environment', _.get(params, 'env'))
40
- if (_.has(params, 'redis')) _.set(geoip, 'redis', _.get(params, 'redis'))
41
- if (_.has(params, 'geolite')) _.set(geoip, 'geolite', _.get(params, 'geolite'))
37
+ if (_.has(params, 'userId')) { _.set(geoip, 'userId', _.get(params, 'userId')) }
38
+ if (_.has(params, 'licenseKey')) { _.set(geoip, 'licenseKey', _.get(params, 'licenseKey')) }
39
+ if (_.has(params, 'env')) { _.set(geoip, 'environment', _.get(params, 'env')) }
40
+ if (_.has(params, 'redis')) { _.set(geoip, 'redis', _.get(params, 'redis')) }
41
+ if (_.has(params, 'geolite')) { _.set(geoip, 'geolite', _.get(params, 'geolite')) }
42
42
 
43
43
  if (_.get(params, 'geolite.enabled') && _.get(params, 'geolite.useBuffer')) {
44
44
  const dbBuffer = fs.readFileSync(_.get(geoip, 'geolite.path'))
@@ -64,7 +64,7 @@ const acgeoip = () => {
64
64
  }
65
65
 
66
66
  const ip = _.get(params, 'ip')
67
- if (ipPackage.isSpecialIP(ip)) return
67
+ if (ipPackage.isSpecialIP(ip)) { return }
68
68
 
69
69
  const mapping = _.get(params, 'mapping', geoip.mapping)
70
70
  const debug = _.get(params, 'debug')
@@ -88,12 +88,12 @@ const acgeoip = () => {
88
88
  geoipResponse = getFromMemory({ ip })
89
89
  }
90
90
 
91
- if (debugPerformance) console.log('%s | getFromCache %d', functionName, performanceHelper(start, process.hrtime()))
91
+ if (debugPerformance) { console.warn('%s | getFromCache %d', functionName, performanceHelper(start, process.hrtime())) }
92
92
 
93
93
  if (!geoipResponse) {
94
94
  if (_.get(geoip, 'geolite.useBuffer') && geoip.reader) {
95
95
  geoipResponse = geoip.reader.city(ip)
96
- if (debugPerformance) console.log('%s | readFromBuffer %d', functionName, performanceHelper(start, process.hrtime()))
96
+ if (debugPerformance) { console.warn('%s | readFromBuffer %d', functionName, performanceHelper(start, process.hrtime())) }
97
97
  }
98
98
  else {
99
99
  try {
@@ -103,13 +103,13 @@ const acgeoip = () => {
103
103
  geoipReader = await Reader.open(_.get(geoip, 'geolite.path'))
104
104
  _.set(geoip, 'geolite.reader', geoipReader)
105
105
  }
106
- if (geoipReader) geoipResponse = geoipReader.city(ip)
106
+ if (geoipReader) { geoipResponse = geoipReader.city(ip) }
107
107
  }
108
108
 
109
- if (debugPerformance) console.log('%s | readFromDB %d', functionName, performanceHelper(start, process.hrtime()))
109
+ if (debugPerformance) { console.warn('%s | readFromDB %d', functionName, performanceHelper(start, process.hrtime())) }
110
110
 
111
111
  if (debug) {
112
- console.log('AC-GEOIP | From Geolite | %j', geoipResponse)
112
+ console.warn('AC-GEOIP | From Geolite | %j', geoipResponse)
113
113
  }
114
114
  }
115
115
  catch (e) {
@@ -126,14 +126,14 @@ const acgeoip = () => {
126
126
  storeInMemory({ ip, geoipResponse })
127
127
  }
128
128
 
129
- if (debugPerformance) console.log('%s | storeInCache %d', functionName, performanceHelper(start, process.hrtime()))
129
+ if (debugPerformance) { console.warn('%s | storeInCache %d', functionName, performanceHelper(start, process.hrtime())) }
130
130
  }
131
131
  }
132
132
 
133
133
  // prepare response
134
134
  if (!_.isEmpty(mapping)) {
135
135
  _.forEach(mapping, item => {
136
- if (_.get(geoipResponse, item.geoIP)) _.set(response, item.response, _.get(geoipResponse, item.geoIP))
136
+ if (_.get(geoipResponse, item.geoIP)) { _.set(response, item.response, _.get(geoipResponse, item.geoIP)) }
137
137
  })
138
138
  }
139
139
  else {
@@ -141,9 +141,9 @@ const acgeoip = () => {
141
141
  }
142
142
 
143
143
  _.set(response, 'origin', _.get(geoipResponse, 'origin'))
144
- if (_.get(geoipResponse, 'fromCache')) _.set(response, 'fromCache', true)
144
+ if (_.get(geoipResponse, 'fromCache')) { _.set(response, 'fromCache', true) }
145
145
 
146
- if (debugPerformance) console.log('%s | Finished %d', functionName, performanceHelper(start, process.hrtime()))
146
+ if (debugPerformance) { console.warn('%s | Finished %d', functionName, performanceHelper(start, process.hrtime())) }
147
147
 
148
148
  return response
149
149
  }
@@ -175,20 +175,20 @@ const acgeoip = () => {
175
175
  else {
176
176
  geoipResponse = getFromMemory({ ip })
177
177
  }
178
- if (debugPerformance) console.log('%s | getFromCache %d', functionName, performanceHelper(start, process.hrtime()))
178
+ if (debugPerformance) { console.warn('%s | getFromCache %d', functionName, performanceHelper(start, process.hrtime())) }
179
179
 
180
180
  // fetch fresh
181
181
  if (!_.get(geoipResponse, 'country')) {
182
182
  try {
183
183
  const client = new WebServiceClient(geoip.userId, geoip.licenseKey)
184
184
  geoipResponse = await client.city(ip)
185
- if (debugPerformance) console.log('%s | readFromWebservice %d', functionName, performanceHelper(start, process.hrtime()))
185
+ if (debugPerformance) { console.warn('%s | readFromWebservice %d', functionName, performanceHelper(start, process.hrtime())) }
186
186
  if (geoipResponse) {
187
187
  _.set(geoipResponse, 'origin', 'webservice')
188
188
  }
189
189
 
190
190
  if (debug) {
191
- console.log('AC-GEOIP | From Maxmind | %j', geoipResponse)
191
+ console.warn('AC-GEOIP | From Maxmind | %j', geoipResponse)
192
192
  }
193
193
  }
194
194
  catch (e) {
@@ -203,13 +203,13 @@ const acgeoip = () => {
203
203
  else {
204
204
  storeInMemory({ ip, geoipResponse })
205
205
  }
206
- if (debugPerformance) console.log('%s | storeInCache %d', functionName, performanceHelper(start, process.hrtime()))
206
+ if (debugPerformance) { console.warn('%s | storeInCache %d', functionName, performanceHelper(start, process.hrtime())) }
207
207
  }
208
208
 
209
209
  // prepare response
210
210
  if (!_.isEmpty(mapping)) {
211
211
  _.forEach(mapping, item => {
212
- if (_.get(geoipResponse, item.geoIP)) _.set(response, item.response, _.get(geoipResponse, item.geoIP))
212
+ if (_.get(geoipResponse, item.geoIP)) { _.set(response, item.response, _.get(geoipResponse, item.geoIP)) }
213
213
  })
214
214
  }
215
215
  else {
@@ -217,7 +217,7 @@ const acgeoip = () => {
217
217
  }
218
218
 
219
219
  _.set(response, 'origin', _.get(geoipResponse, 'origin'))
220
- if (_.get(geoipResponse, 'fromCache')) _.set(response, 'fromCache', true)
220
+ if (_.get(geoipResponse, 'fromCache')) { _.set(response, 'fromCache', true) }
221
221
 
222
222
  return response
223
223
  }
@@ -237,7 +237,7 @@ const acgeoip = () => {
237
237
 
238
238
  const checkRedis = async (params) => {
239
239
  const refresh = _.get(params, 'refresh')
240
- if (!geoip.redis || refresh) return
240
+ if (!geoip.redis || refresh) { return }
241
241
 
242
242
  const ip = _.get(params, 'ip')
243
243
  const redisKey = _.get(geoip, 'environment') + ':geoip:' + ip
@@ -251,11 +251,11 @@ const acgeoip = () => {
251
251
  geoipResponse.fromCache = true
252
252
  }
253
253
  if (debug) {
254
- console.log('AC-GEOIP | From Cache | %j', geoipResponse)
254
+ console.warn('AC-GEOIP | From Cache | %j', geoipResponse)
255
255
  }
256
256
  }
257
257
  catch (e) {
258
- console.log(e)
258
+ console.warn(e)
259
259
  console.error('AC-GEOIP | From Cache | Failed | %j', e)
260
260
  }
261
261
  return geoipResponse
package/package.json CHANGED
@@ -3,17 +3,18 @@
3
3
  "author": "Mark Poepping (https://www.admiralcloud.com)",
4
4
  "license": "MIT",
5
5
  "repository": "admiralcloud/ac-geoip",
6
- "version": "4.0.2",
6
+ "version": "4.0.3",
7
7
  "dependencies": {
8
8
  "@maxmind/geoip2-node": "^6.3.4",
9
- "ac-ip": "^4.1.12",
10
- "lodash": "^4.17.23",
9
+ "ac-ip": "^5.0.0",
10
+ "lodash": "^4.18.1",
11
11
  "node-cache": "^5.1.2"
12
12
  },
13
13
  "devDependencies": {
14
- "ac-semantic-release": "^0.4.10",
14
+ "ac-semantic-release": "^1.0.1",
15
15
  "chai": "^4.5.0",
16
- "eslint": "^9.39.4",
16
+ "eslint": "^10.2.0",
17
+ "globals": "^17.4.0",
17
18
  "ioredis": "^5.10.1",
18
19
  "mocha": "^11.7.5"
19
20
  },