@basemaps/shared 7.6.0 → 7.7.0
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.
- package/build/__tests__/api.test.js +5 -1
- package/build/__tests__/api.test.js.map +1 -1
- package/build/api.d.ts +1 -0
- package/build/api.js +4 -4
- package/build/api.js.map +1 -1
- package/package.json +3 -3
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import assert from 'node:assert';
|
|
2
2
|
import { afterEach, beforeEach, describe, it } from 'node:test';
|
|
3
3
|
import { decodeTime, encodeTime, ulid } from 'ulid';
|
|
4
|
-
import { getApiKey, OneDayMs, truncateApiKey } from '../api.js';
|
|
4
|
+
import { getApiKey, isValidApiKey, OneDayMs, truncateApiKey } from '../api.js';
|
|
5
5
|
describe('ApiKey', () => {
|
|
6
6
|
const localStorage = { getItem: () => null, setItem: () => undefined };
|
|
7
7
|
beforeEach(() => {
|
|
@@ -28,6 +28,10 @@ describe('ApiKey', () => {
|
|
|
28
28
|
currentValue = newKey;
|
|
29
29
|
assert.equal(getApiKey(), newKey);
|
|
30
30
|
});
|
|
31
|
+
it('should allow api keys that are very old', () => {
|
|
32
|
+
const fakeUlid = 'c' + encodeTime(new Date('2020-01-01T00:00:00.000Z').getTime(), 10) + ulid().slice(10);
|
|
33
|
+
assert.deepEqual(isValidApiKey(fakeUlid), { valid: true, key: fakeUlid });
|
|
34
|
+
});
|
|
31
35
|
it('should generate new keys after they expire', (t) => {
|
|
32
36
|
const setSpy = t.mock.method(localStorage, 'setItem');
|
|
33
37
|
// Generate a key that is about 31 days old
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.test.js","sourceRoot":"","sources":["../../src/__tests__/api.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAEhE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAEpD,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"api.test.js","sourceRoot":"","sources":["../../src/__tests__/api.test.ts"],"names":[],"mappings":"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"}
|
package/build/api.d.ts
CHANGED
package/build/api.js
CHANGED
|
@@ -3,7 +3,7 @@ const hasLocalStorage = () => typeof localStorage !== 'undefined';
|
|
|
3
3
|
export const OneDayMs = 24 * 60 * 60 * 1000;
|
|
4
4
|
/** Generate a new api key for the user every 30 days */
|
|
5
5
|
const ApiKeyExpireMs = 30 * OneDayMs;
|
|
6
|
-
const ApiKeyMaxAgeMs = 91 * OneDayMs;
|
|
6
|
+
export const ApiKeyMaxAgeMs = 91 * OneDayMs;
|
|
7
7
|
function newApiKey() {
|
|
8
8
|
const newKey = 'c' + ulid().toLowerCase();
|
|
9
9
|
if (hasLocalStorage())
|
|
@@ -36,11 +36,11 @@ export function isValidApiKey(apiKey) {
|
|
|
36
36
|
return { valid: false, message: 'malformed' };
|
|
37
37
|
const ulidId = apiKey.slice(1).toUpperCase();
|
|
38
38
|
try {
|
|
39
|
-
|
|
39
|
+
decodeTime(ulidId); // validate the key looks valid
|
|
40
40
|
if (apiKey.startsWith('d'))
|
|
41
41
|
return { valid: true, key: apiKey };
|
|
42
|
-
|
|
43
|
-
|
|
42
|
+
// Re-enable to disable older api keys
|
|
43
|
+
// if (Date.now() - ulidTime > ApiKeyMaxAgeMs) return { valid: false, message: 'expired' };
|
|
44
44
|
}
|
|
45
45
|
catch (e) {
|
|
46
46
|
return { valid: false, message: 'malformed' };
|
package/build/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAExC,MAAM,eAAe,GAAG,GAAY,EAAE,CAAC,OAAO,YAAY,KAAK,WAAW,CAAC;AAC3E,MAAM,CAAC,MAAM,QAAQ,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAC5C,wDAAwD;AACxD,MAAM,cAAc,GAAG,EAAE,GAAG,QAAQ,CAAC;AACrC,MAAM,cAAc,GAAG,EAAE,GAAG,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@basemaps/shared",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.7.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
"@aws-sdk/client-dynamodb": "^3.470.0",
|
|
27
27
|
"@aws-sdk/client-s3": "^3.472.0",
|
|
28
28
|
"@aws-sdk/util-dynamodb": "^3.470.0",
|
|
29
|
-
"@basemaps/config": "^7.
|
|
29
|
+
"@basemaps/config": "^7.7.0",
|
|
30
30
|
"@basemaps/geo": "^7.5.0",
|
|
31
31
|
"@chunkd/fs": "^11.2.0",
|
|
32
32
|
"@chunkd/fs-aws": "^11.2.2",
|
|
@@ -48,5 +48,5 @@
|
|
|
48
48
|
"files": [
|
|
49
49
|
"build/"
|
|
50
50
|
],
|
|
51
|
-
"gitHead": "
|
|
51
|
+
"gitHead": "c8752c8791d1e2bab45f52cb10dc2d7df3c2a5a2"
|
|
52
52
|
}
|