@basemaps/shared 7.0.0 → 7.3.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.d.ts +0 -1
- package/build/__tests__/api.test.js +38 -37
- package/build/__tests__/api.test.js.map +1 -1
- package/build/__tests__/env.test.d.ts +0 -1
- package/build/__tests__/env.test.js +7 -6
- package/build/__tests__/env.test.js.map +1 -1
- package/build/__tests__/fqdn.test.d.ts +1 -0
- package/build/__tests__/fqdn.test.js +39 -0
- package/build/__tests__/fqdn.test.js.map +1 -0
- package/build/__tests__/url.test.d.ts +0 -1
- package/build/__tests__/url.test.js +11 -10
- package/build/__tests__/url.test.js.map +1 -1
- package/build/__tests__/util.test.d.ts +0 -1
- package/build/__tests__/util.test.js +42 -41
- package/build/__tests__/util.test.js.map +1 -1
- package/build/__tests__/vdom.test.d.ts +0 -1
- package/build/__tests__/vdom.test.js +30 -29
- package/build/__tests__/vdom.test.js.map +1 -1
- package/build/api.d.ts +0 -1
- package/build/api.js +1 -1
- package/build/api.js.map +1 -1
- package/build/cli/__tests__/git.tag.test.d.ts +0 -1
- package/build/cli/__tests__/git.tag.test.js +6 -5
- package/build/cli/__tests__/git.tag.test.js.map +1 -1
- package/build/cli/base.d.ts +0 -2
- package/build/cli/base.js +30 -9
- package/build/cli/base.js.map +1 -1
- package/build/cli/git.tag.d.ts +0 -1
- package/build/cli/info.d.ts +0 -2
- package/build/cli/info.js +3 -5
- package/build/cli/info.js.map +1 -1
- package/build/config.d.ts +0 -1
- package/build/config.js +1 -1
- package/build/config.js.map +1 -1
- package/build/const.d.ts +0 -1
- package/build/const.js +1 -1
- package/build/const.js.map +1 -1
- package/build/dynamo/__tests__/config.dynamo.test.d.ts +0 -1
- package/build/dynamo/__tests__/config.dynamo.test.js +71 -41
- package/build/dynamo/__tests__/config.dynamo.test.js.map +1 -1
- package/build/dynamo/__tests__/config.imagery.test.d.ts +0 -1
- package/build/dynamo/__tests__/config.imagery.test.js +41 -47
- package/build/dynamo/__tests__/config.imagery.test.js.map +1 -1
- package/build/dynamo/__tests__/config.provider.test.d.ts +0 -1
- package/build/dynamo/__tests__/config.provider.test.js +6 -5
- package/build/dynamo/__tests__/config.provider.test.js.map +1 -1
- package/build/dynamo/dynamo.config.base.d.ts +0 -1
- package/build/dynamo/dynamo.config.base.js +18 -11
- package/build/dynamo/dynamo.config.base.js.map +1 -1
- package/build/dynamo/dynamo.config.cached.d.ts +0 -1
- package/build/dynamo/dynamo.config.cached.js +6 -1
- package/build/dynamo/dynamo.config.cached.js.map +1 -1
- package/build/dynamo/dynamo.config.d.ts +42 -5
- package/build/dynamo/dynamo.config.js +55 -8
- package/build/dynamo/dynamo.config.js.map +1 -1
- package/build/file.system.d.ts +26 -0
- package/build/file.system.js +98 -0
- package/build/file.system.js.map +1 -0
- package/build/file.system.middleware.d.ts +20 -0
- package/build/file.system.middleware.js +23 -0
- package/build/file.system.middleware.js.map +1 -0
- package/build/imagery.url.d.ts +67 -0
- package/build/imagery.url.js +50 -0
- package/build/imagery.url.js.map +1 -0
- package/build/index.d.ts +12 -10
- package/build/index.js +12 -8
- package/build/index.js.map +1 -1
- package/build/log.d.ts +0 -1
- package/build/log.js +3 -1
- package/build/log.js.map +1 -1
- package/build/logger.fatal.error.d.ts +0 -1
- package/build/logger.fatal.error.js +6 -0
- package/build/logger.fatal.error.js.map +1 -1
- package/build/url.d.ts +0 -1
- package/build/url.js.map +1 -1
- package/build/util.d.ts +0 -1
- package/build/util.js.map +1 -1
- package/build/vdom.d.ts +0 -1
- package/build/vdom.js +25 -0
- package/build/vdom.js.map +1 -1
- package/package.json +17 -13
- package/CHANGELOG.md +0 -1118
- package/build/__tests__/api.test.d.ts.map +0 -1
- package/build/__tests__/env.test.d.ts.map +0 -1
- package/build/__tests__/url.test.d.ts.map +0 -1
- package/build/__tests__/util.test.d.ts.map +0 -1
- package/build/__tests__/vdom.test.d.ts.map +0 -1
- package/build/api.d.ts.map +0 -1
- package/build/cli/__tests__/git.tag.test.d.ts.map +0 -1
- package/build/cli/base.d.ts.map +0 -1
- package/build/cli/git.tag.d.ts.map +0 -1
- package/build/cli/info.d.ts.map +0 -1
- package/build/cog/constants.d.ts +0 -5
- package/build/cog/constants.d.ts.map +0 -1
- package/build/cog/constants.js +0 -5
- package/build/cog/constants.js.map +0 -1
- package/build/cog/gdal.config.d.ts +0 -51
- package/build/cog/gdal.config.d.ts.map +0 -1
- package/build/cog/gdal.config.js +0 -23
- package/build/cog/gdal.config.js.map +0 -1
- package/build/cog/stac.d.ts +0 -32
- package/build/cog/stac.d.ts.map +0 -1
- package/build/cog/stac.js +0 -3
- package/build/cog/stac.js.map +0 -1
- package/build/cog/types.d.ts +0 -83
- package/build/cog/types.d.ts.map +0 -1
- package/build/cog/types.js +0 -2
- package/build/cog/types.js.map +0 -1
- package/build/composite.error.d.ts +0 -2
- package/build/composite.error.d.ts.map +0 -1
- package/build/composite.error.js +0 -2
- package/build/composite.error.js.map +0 -1
- package/build/config.d.ts.map +0 -1
- package/build/const.d.ts.map +0 -1
- package/build/dynamo/__tests__/config.dynamo.test.d.ts.map +0 -1
- package/build/dynamo/__tests__/config.imagery.test.d.ts.map +0 -1
- package/build/dynamo/__tests__/config.provider.test.d.ts.map +0 -1
- package/build/dynamo/dynamo.config.base.d.ts.map +0 -1
- package/build/dynamo/dynamo.config.cached.d.ts.map +0 -1
- package/build/dynamo/dynamo.config.d.ts.map +0 -1
- package/build/file/__tests__/file.local.test.d.ts +0 -2
- package/build/file/__tests__/file.local.test.d.ts.map +0 -1
- package/build/file/__tests__/file.local.test.js +0 -49
- package/build/file/__tests__/file.local.test.js.map +0 -1
- package/build/file/__tests__/file.operator.test.helper.d.ts +0 -22
- package/build/file/__tests__/file.operator.test.helper.d.ts.map +0 -1
- package/build/file/__tests__/file.operator.test.helper.js +0 -56
- package/build/file/__tests__/file.operator.test.helper.js.map +0 -1
- package/build/file/file.config.d.ts +0 -28
- package/build/file/file.config.d.ts.map +0 -1
- package/build/file/file.config.js +0 -11
- package/build/file/file.config.js.map +0 -1
- package/build/file/index.d.ts +0 -11
- package/build/file/index.d.ts.map +0 -1
- package/build/file/index.js +0 -56
- package/build/file/index.js.map +0 -1
- package/build/index.d.ts.map +0 -1
- package/build/log.d.ts.map +0 -1
- package/build/logger.fatal.error.d.ts.map +0 -1
- package/build/url.d.ts.map +0 -1
- package/build/util.d.ts.map +0 -1
- package/build/vdom.d.ts.map +0 -1
|
@@ -1,61 +1,62 @@
|
|
|
1
|
-
import
|
|
1
|
+
import assert from 'node:assert';
|
|
2
|
+
import { afterEach, beforeEach, describe, it } from 'node:test';
|
|
2
3
|
import { decodeTime, encodeTime, ulid } from 'ulid';
|
|
3
4
|
import { getApiKey, OneDayMs, truncateApiKey } from '../api.js';
|
|
4
|
-
|
|
5
|
+
describe('ApiKey', () => {
|
|
5
6
|
const localStorage = { getItem: () => null, setItem: () => undefined };
|
|
6
|
-
|
|
7
|
+
beforeEach(() => {
|
|
7
8
|
localStorage.getItem = () => null;
|
|
8
9
|
localStorage.setItem = () => undefined;
|
|
9
10
|
global.localStorage = localStorage;
|
|
10
11
|
});
|
|
11
|
-
|
|
12
|
+
afterEach(() => {
|
|
12
13
|
delete global.localStorage;
|
|
13
14
|
});
|
|
14
|
-
|
|
15
|
+
it('should generate a ulid with prefix', () => {
|
|
15
16
|
const apiKey = getApiKey();
|
|
16
|
-
|
|
17
|
+
assert.equal(apiKey.startsWith('c'), true);
|
|
17
18
|
const ulidKey = apiKey.slice(1).toUpperCase();
|
|
18
|
-
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
19
|
+
assert.equal(decodeTime(ulidKey) > 0, true);
|
|
20
|
+
});
|
|
21
|
+
it('should get valid api keys from localStorage', (t) => {
|
|
22
|
+
let currentValue = 'foo';
|
|
23
|
+
t.mock.method(localStorage, 'getItem', () => currentValue);
|
|
24
|
+
assert.notEqual(getApiKey(), 'foo');
|
|
25
|
+
currentValue = '01ebpv4fgbxqnff6kdc184bx0j';
|
|
26
|
+
assert.notEqual(getApiKey(), '01ebpv4fgbxqnff6kdc184bx0j');
|
|
25
27
|
const newKey = 'c' + ulid().toLowerCase();
|
|
26
|
-
|
|
27
|
-
|
|
28
|
+
currentValue = newKey;
|
|
29
|
+
assert.equal(getApiKey(), newKey);
|
|
28
30
|
});
|
|
29
|
-
|
|
30
|
-
const setSpy =
|
|
31
|
-
localStorage.setItem = setSpy;
|
|
31
|
+
it('should generate new keys after they expire', (t) => {
|
|
32
|
+
const setSpy = t.mock.method(localStorage, 'setItem');
|
|
32
33
|
// Generate a key that is about 31 days old
|
|
33
34
|
const oldDate = Date.now() - OneDayMs * 31;
|
|
34
35
|
const fakeUlid = 'c' + encodeTime(oldDate, 10) + ulid().slice(10);
|
|
35
|
-
localStorage
|
|
36
|
+
t.mock.method(localStorage, 'getItem', () => fakeUlid.toLowerCase());
|
|
36
37
|
// the fake ulid should be able to be decoded too
|
|
37
|
-
const
|
|
38
|
-
|
|
38
|
+
const time = decodeTime(fakeUlid.slice(1).toUpperCase());
|
|
39
|
+
assert.equal(time - oldDate < 1000, true);
|
|
39
40
|
const newApiKey = getApiKey();
|
|
40
|
-
|
|
41
|
-
|
|
41
|
+
assert.deepEqual(setSpy.mock.calls[0].arguments, ['api-key', newApiKey]);
|
|
42
|
+
assert.notEqual(newApiKey, fakeUlid.toLocaleLowerCase());
|
|
42
43
|
// new key should be made recently (within 1second)
|
|
43
|
-
|
|
44
|
+
assert.equal(Date.now() - decodeTime(newApiKey.slice(1).toUpperCase()) < 1000, true);
|
|
44
45
|
});
|
|
45
46
|
});
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
});
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
47
|
+
describe('ApiKeyTruncate', () => {
|
|
48
|
+
it('should truncate apikeys', () => {
|
|
49
|
+
assert.equal(truncateApiKey('c01h3e17kjsw5evq8ndjxbda80e'), 'cbda80e');
|
|
50
|
+
assert.equal(truncateApiKey('d01h3e17kjsw5evq8ndjxbda80e'), 'dbda80e');
|
|
51
|
+
});
|
|
52
|
+
it('should not truncate invalid api keys', () => {
|
|
53
|
+
assert.deepEqual(truncateApiKey([{ hello: 'world' }]), 'invalid');
|
|
54
|
+
assert.equal(truncateApiKey(null), 'invalid');
|
|
55
|
+
assert.equal(truncateApiKey(1), 'invalid');
|
|
56
|
+
});
|
|
57
|
+
it('should not truncate truncated', () => {
|
|
58
|
+
assert.equal(truncateApiKey('cbda80e'), 'cbda80e');
|
|
59
|
+
assert.equal(truncateApiKey('dbda80e'), 'dbda80e');
|
|
59
60
|
});
|
|
60
61
|
});
|
|
61
62
|
//# sourceMappingURL=api.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.test.js","sourceRoot":"","sources":["../../src/__tests__/api.test.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"api.test.js","sourceRoot":"","sources":["../../src/__tests__/api.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
|
+
import assert from 'node:assert';
|
|
2
|
+
import { describe, it } from 'node:test';
|
|
1
3
|
import { Env } from '../const.js';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
o('should load a number from environment var', () => {
|
|
4
|
+
describe('Environment', () => {
|
|
5
|
+
it('should load a number from environment var', () => {
|
|
5
6
|
process.env[Env.TiffConcurrency] = '5';
|
|
6
|
-
|
|
7
|
+
assert.equal(Env.getNumber(Env.TiffConcurrency, -1), 5);
|
|
7
8
|
});
|
|
8
|
-
|
|
9
|
+
it('should default from environment var', () => {
|
|
9
10
|
delete process.env[Env.TiffConcurrency];
|
|
10
|
-
|
|
11
|
+
assert.equal(Env.getNumber(Env.TiffConcurrency, -1), -1);
|
|
11
12
|
});
|
|
12
13
|
});
|
|
13
14
|
//# sourceMappingURL=env.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.test.js","sourceRoot":"","sources":["../../src/__tests__/env.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"env.test.js","sourceRoot":"","sources":["../../src/__tests__/env.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAElC,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,GAAG,CAAC;QACvC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QACxC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import assert from 'node:assert';
|
|
2
|
+
import { beforeEach, describe, it } from 'node:test';
|
|
3
|
+
import { Fqdn } from '../file.system.middleware.js';
|
|
4
|
+
describe('fqdnMiddleware', () => {
|
|
5
|
+
const fakeNext = () => {
|
|
6
|
+
return Promise.resolve({ output: { $metadata: {} }, response: {} });
|
|
7
|
+
};
|
|
8
|
+
const fakeRequest = { input: {}, request: { hostname: 'nz-imagery.s3.ap-southeast-2.amazonaws.com' } };
|
|
9
|
+
beforeEach(() => {
|
|
10
|
+
Fqdn.isForcedFqdn = true;
|
|
11
|
+
});
|
|
12
|
+
it('should not add FQDN to s3 requests if turned off', () => {
|
|
13
|
+
Fqdn.isForcedFqdn = false;
|
|
14
|
+
fakeRequest.request.hostname = 'nz-imagery.s3.ap-southeast-2.amazonaws.com';
|
|
15
|
+
Fqdn.middleware(fakeNext, {})(fakeRequest);
|
|
16
|
+
assert.equal(fakeRequest.request.hostname, 'nz-imagery.s3.ap-southeast-2.amazonaws.com');
|
|
17
|
+
});
|
|
18
|
+
it('should add FQDN to s3 requests', () => {
|
|
19
|
+
fakeRequest.request.hostname = 'nz-imagery.s3.ap-southeast-2.amazonaws.com';
|
|
20
|
+
Fqdn.middleware(fakeNext, {})(fakeRequest);
|
|
21
|
+
assert.equal(fakeRequest.request.hostname, 'nz-imagery.s3.ap-southeast-2.amazonaws.com.');
|
|
22
|
+
});
|
|
23
|
+
it('should not add for other services', () => {
|
|
24
|
+
fakeRequest.request.hostname = 'logs.ap-southeast-2.amazonaws.com';
|
|
25
|
+
Fqdn.middleware(fakeNext, {})(fakeRequest);
|
|
26
|
+
assert.equal(fakeRequest.request.hostname, 'logs.ap-southeast-2.amazonaws.com');
|
|
27
|
+
});
|
|
28
|
+
it('should not add for other regions', () => {
|
|
29
|
+
fakeRequest.request.hostname = 'nz-imagery.s3.us-east-1.amazonaws.com';
|
|
30
|
+
Fqdn.middleware(fakeNext, {})(fakeRequest);
|
|
31
|
+
assert.equal(fakeRequest.request.hostname, 'nz-imagery.s3.us-east-1.amazonaws.com');
|
|
32
|
+
});
|
|
33
|
+
it('should not add for unknown hosts', () => {
|
|
34
|
+
fakeRequest.request.hostname = 'google.com';
|
|
35
|
+
Fqdn.middleware(fakeNext, {})(fakeRequest);
|
|
36
|
+
assert.equal(fakeRequest.request.hostname, 'google.com');
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
//# sourceMappingURL=fqdn.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fqdn.test.js","sourceRoot":"","sources":["../../src/__tests__/fqdn.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAIrD,OAAO,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAC;AAEpD,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,MAAM,QAAQ,GAA4C,GAAG,EAAE;QAC7D,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;IACtE,CAAC,CAAC;IACF,MAAM,WAAW,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,4CAA4C,EAAE,EAAE,CAAC;IAEvG,UAAU,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,WAAW,CAAC,OAAO,CAAC,QAAQ,GAAG,4CAA4C,CAAC;QAC5E,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC;QAC3C,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,4CAA4C,CAAC,CAAC;IAC3F,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,WAAW,CAAC,OAAO,CAAC,QAAQ,GAAG,4CAA4C,CAAC;QAC5E,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC;QAC3C,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,6CAA6C,CAAC,CAAC;IAC5F,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,WAAW,CAAC,OAAO,CAAC,QAAQ,GAAG,mCAAmC,CAAC;QACnE,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC;QAC3C,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,mCAAmC,CAAC,CAAC;IAClF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,WAAW,CAAC,OAAO,CAAC,QAAQ,GAAG,uCAAuC,CAAC;QACvE,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC;QAC3C,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,uCAAuC,CAAC,CAAC;IACtF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,WAAW,CAAC,OAAO,CAAC,QAAQ,GAAG,YAAY,CAAC;QAC5C,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC;QAC3C,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,16 +1,17 @@
|
|
|
1
|
-
import
|
|
1
|
+
import assert from 'node:assert';
|
|
2
|
+
import { describe, it } from 'node:test';
|
|
2
3
|
import { toQueryString } from '../url.js';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
describe('toQueryString', () => {
|
|
5
|
+
it('should create a query string', () => {
|
|
6
|
+
assert.equal(toQueryString({ api: 'foo' }), '?api=foo');
|
|
6
7
|
});
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
it('should not create empty query strings', () => {
|
|
9
|
+
assert.equal(toQueryString({}), '');
|
|
10
|
+
assert.equal(toQueryString({ api: undefined }), '');
|
|
11
|
+
assert.equal(toQueryString({ api: null }), '');
|
|
11
12
|
});
|
|
12
|
-
|
|
13
|
-
|
|
13
|
+
it('should sort keys', () => {
|
|
14
|
+
assert.equal(toQueryString({ z: 'z', a: 'a' }), '?a=a&z=z');
|
|
14
15
|
});
|
|
15
16
|
});
|
|
16
17
|
//# sourceMappingURL=url.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"url.test.js","sourceRoot":"","sources":["../../src/__tests__/url.test.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"url.test.js","sourceRoot":"","sources":["../../src/__tests__/url.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACpC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,GAAG,EAAE,SAAS,EAAS,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3D,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,GAAG,EAAE,IAAI,EAAS,CAAC,EAAE,EAAE,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAC1B,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,53 +1,54 @@
|
|
|
1
|
-
import
|
|
1
|
+
import assert from 'node:assert';
|
|
2
|
+
import { describe, it } from 'node:test';
|
|
2
3
|
import { extractYearRangeFromName, extractYearRangeFromTitle, getUrlHost, s3ToVsis3, titleizeImageryName, } from '../util.js';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
4
|
+
describe('util', () => {
|
|
5
|
+
it('extractYearRangeFromName', () => {
|
|
6
|
+
assert.deepEqual(extractYearRangeFromName('2013'), [2013, 2014]);
|
|
7
|
+
assert.deepEqual(extractYearRangeFromName('abc2017def'), [2017, 2018]);
|
|
8
|
+
assert.deepEqual(extractYearRangeFromName('2019_abc'), [2019, 2020]);
|
|
9
|
+
assert.deepEqual(extractYearRangeFromName('12019_abc'), null);
|
|
10
|
+
assert.deepEqual(extractYearRangeFromName('2019_abc2020'), [2019, 2021]);
|
|
11
|
+
assert.deepEqual(extractYearRangeFromName('2020_abc2019'), [2019, 2021]);
|
|
12
|
+
assert.deepEqual(extractYearRangeFromName('2020-23abc'), [2020, 2024]);
|
|
13
|
+
assert.deepEqual(extractYearRangeFromName('wellington_urban_2017_0.10m'), [2017, 2018]);
|
|
14
|
+
assert.deepEqual(extractYearRangeFromName('gebco_2020_305-75m'), [2020, 2021]);
|
|
14
15
|
// FIXME these are currently broken
|
|
15
16
|
// o(extractYearRangeFromName('otago_0_375m_sn3806_1975')).deepEquals([1975, 1976]);
|
|
16
17
|
});
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
it('extractYearRangeFromTitle', () => {
|
|
19
|
+
assert.deepEqual(extractYearRangeFromTitle('Banks Peninsula 0.075m Urban Aerial Photos (2019-2020)'), [2019, 2020]);
|
|
20
|
+
assert.deepEqual(extractYearRangeFromTitle('Manawatu 0.125m Urban Aerial Photos (2019)'), [2019]);
|
|
21
|
+
assert.deepEqual(extractYearRangeFromTitle('Manawatu 0.125m Urban Aerial Photos (2019a)'), null);
|
|
21
22
|
});
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
it('titleizeImageryName', () => {
|
|
24
|
+
assert.equal(titleizeImageryName('palmerston-north_urban_2016-17_12-125m_RGBA'), 'Palmerston-north urban 2016-17 12.125m RGBA');
|
|
25
|
+
assert.equal(titleizeImageryName('palmerston-north_urban_2016-17_12-125_RGBA'), 'Palmerston-north urban 2016-17 12-125 RGBA');
|
|
25
26
|
});
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
27
|
+
it('s3ToVsis3', () => {
|
|
28
|
+
assert.equal(s3ToVsis3('s3://rest/of/path'), '/vsis3/rest/of/path');
|
|
29
|
+
assert.equal(s3ToVsis3('s3:/rest/of/path'), 's3:/rest/of/path');
|
|
30
|
+
assert.equal(s3ToVsis3('/s3://rest/of/path'), '/s3://rest/of/path');
|
|
30
31
|
});
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
32
|
+
describe('getUrlHost', () => {
|
|
33
|
+
it("should normalize referer's", () => {
|
|
34
|
+
assert.equal(getUrlHost('https://127.0.0.244/'), '127.0.0.244');
|
|
35
|
+
assert.equal(getUrlHost('https://foo.d/'), 'foo.d');
|
|
36
|
+
assert.equal(getUrlHost('https://foo.d/bar/baz.html?q=1234'), 'foo.d');
|
|
37
|
+
assert.equal(getUrlHost('http://foo.d/bar/baz.html?q=1234'), 'foo.d');
|
|
38
|
+
assert.equal(getUrlHost('http://basemaps.linz.govt.nz/?p=2193'), 'basemaps.linz.govt.nz');
|
|
39
|
+
assert.equal(getUrlHost('s3://foo/bar/baz'), 'foo');
|
|
40
|
+
assert.equal(getUrlHost('http://localhost:12344/bar/baz'), 'localhost');
|
|
40
41
|
});
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
42
|
+
it('should normalize www.foo.com and foo.com ', () => {
|
|
43
|
+
assert.equal(getUrlHost('https://www.foo.com/'), 'foo.com');
|
|
44
|
+
assert.equal(getUrlHost('https://bar.foo.com/'), 'bar.foo.com');
|
|
45
|
+
assert.equal(getUrlHost('https://www3.foo.com/'), 'www3.foo.com');
|
|
46
|
+
assert.equal(getUrlHost('https://foo.com/'), 'foo.com');
|
|
46
47
|
});
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
48
|
+
it('should not die with badly formatted urls', () => {
|
|
49
|
+
assert.equal(getUrlHost('foo/bar'), 'foo/bar');
|
|
50
|
+
assert.equal(getUrlHost('some weird text'), 'some weird text');
|
|
51
|
+
assert.equal(getUrlHost(undefined), undefined);
|
|
51
52
|
});
|
|
52
53
|
});
|
|
53
54
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.test.js","sourceRoot":"","sources":["../../src/__tests__/util.test.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"util.test.js","sourceRoot":"","sources":["../../src/__tests__/util.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,52 +1,53 @@
|
|
|
1
|
-
import
|
|
1
|
+
import assert from 'node:assert';
|
|
2
|
+
import { describe, it } from 'node:test';
|
|
2
3
|
import { V, VNode, VNodeText } from '../vdom.js';
|
|
3
|
-
|
|
4
|
-
|
|
4
|
+
describe('VDom', () => {
|
|
5
|
+
it('should create text nodes', () => {
|
|
5
6
|
const res = V('div', 'text');
|
|
6
|
-
|
|
7
|
+
assert.equal(res instanceof VNode, true);
|
|
7
8
|
const tn = res.children[0];
|
|
8
|
-
|
|
9
|
-
|
|
9
|
+
assert.equal(tn.textContent, 'text');
|
|
10
|
+
assert.equal(res.toString(), '<div>text</div>');
|
|
10
11
|
});
|
|
11
|
-
|
|
12
|
+
it('should encode text nodes', () => {
|
|
12
13
|
const res = V('div', 'text & ; < > &');
|
|
13
|
-
|
|
14
|
+
assert.equal(res instanceof VNode, true);
|
|
14
15
|
const tn = res.children[0];
|
|
15
|
-
|
|
16
|
-
|
|
16
|
+
assert.equal(tn.textContent, 'text & ; < > &amp;');
|
|
17
|
+
assert.equal(res.toString(), '<div>text & ; < > &amp;</div>');
|
|
17
18
|
});
|
|
18
|
-
|
|
19
|
+
it('should not encode valid utf8', () => {
|
|
19
20
|
const res = V('div', 'Kaikōura 🦄 🌈');
|
|
20
|
-
|
|
21
|
-
|
|
21
|
+
assert.equal(res.textContent, 'Kaikōura 🦄 🌈');
|
|
22
|
+
assert.equal(res.toString(), '<div>Kaikōura 🦄 🌈</div>');
|
|
22
23
|
});
|
|
23
|
-
|
|
24
|
+
it('should create nodes', () => {
|
|
24
25
|
const res = V('div', {}, V('b', [V('span', { style: 'color:red' }, 'text')]));
|
|
25
|
-
|
|
26
|
+
assert.equal(res.toString(), '<div>\n <b>\n <span style="color:red">text</span>\n </b>\n</div>');
|
|
26
27
|
});
|
|
27
|
-
|
|
28
|
+
it('should get set textContent', () => {
|
|
28
29
|
const span = V('span', { style: 'color:red' }, 'in span');
|
|
29
30
|
const res = V('div', {}, V('b', [span, 'more text', V('b')]));
|
|
30
|
-
|
|
31
|
+
assert.equal(span.textContent, 'in span');
|
|
31
32
|
span.textContent = 'changed';
|
|
32
|
-
|
|
33
|
+
assert.equal(res.textContent, 'changedmore text');
|
|
33
34
|
res.textContent = 'replace';
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
35
|
+
assert.equal(res.textContent, 'replace');
|
|
36
|
+
assert.equal(res.children.length, 1);
|
|
37
|
+
assert.equal(res.children[0] instanceof VNodeText, true);
|
|
37
38
|
});
|
|
38
|
-
|
|
39
|
+
describe('find tags', () => {
|
|
39
40
|
const iNode = V('i', 'two');
|
|
40
41
|
const res = V('div', {}, V('b', [V('i', 'one'), V('span', { style: 'color:red' }, ['text', iNode]), V('b'), V('b')]));
|
|
41
|
-
|
|
42
|
+
it('tags', () => {
|
|
42
43
|
const bees = Array.from(res.tags('b'));
|
|
43
|
-
|
|
44
|
-
|
|
44
|
+
assert.equal(bees.length, 3);
|
|
45
|
+
assert.equal(bees[0].children.length, 4);
|
|
45
46
|
});
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
47
|
+
it('find', () => {
|
|
48
|
+
assert.equal(res.find('b', 'i', 'i'), null);
|
|
49
|
+
assert.equal(res.find('b', 'span', 'i'), iNode);
|
|
50
|
+
assert.notEqual(res.find('i'), iNode);
|
|
50
51
|
});
|
|
51
52
|
});
|
|
52
53
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vdom.test.js","sourceRoot":"","sources":["../../src/__tests__/vdom.test.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"vdom.test.js","sourceRoot":"","sources":["../../src/__tests__/vdom.test.ts"],"names":[],"mappings":"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"}
|
package/build/api.d.ts
CHANGED
|
@@ -12,4 +12,3 @@ export interface ApiKeyStatusInvalid {
|
|
|
12
12
|
export declare function isValidApiKey(apiKey?: string | null): ApiKeyStatus;
|
|
13
13
|
/** Truncate a API key to the last 6 digits */
|
|
14
14
|
export declare function truncateApiKey(x: unknown): string | undefined;
|
|
15
|
-
//# sourceMappingURL=api.d.ts.map
|
package/build/api.js
CHANGED
package/build/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import
|
|
1
|
+
import assert from 'node:assert';
|
|
2
|
+
import { describe, it } from 'node:test';
|
|
2
3
|
import { GitTag } from '../git.tag.js';
|
|
3
|
-
|
|
4
|
-
|
|
4
|
+
describe('git.tag', () => {
|
|
5
|
+
it('format', () => {
|
|
5
6
|
const ans = GitTag();
|
|
6
|
-
|
|
7
|
-
|
|
7
|
+
assert.equal(/^v\d+\.\d+\.\d+(-\d+-g[0-9a-f]+)?$/.test(ans.version), true, `Got: ${ans.version}`);
|
|
8
|
+
assert.equal(/^[0-9a-f]+$/.test(ans.hash), true, `Got: ${ans.hash}`);
|
|
8
9
|
});
|
|
9
10
|
});
|
|
10
11
|
//# sourceMappingURL=git.tag.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git.tag.test.js","sourceRoot":"","sources":["../../../src/cli/__tests__/git.tag.test.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"git.tag.test.js","sourceRoot":"","sources":["../../../src/cli/__tests__/git.tag.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;IACvB,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;QAChB,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;QACrB,MAAM,CAAC,KAAK,CAAC,oCAAoC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QAClG,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/build/cli/base.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { CommandLineParser } from '@rushstack/ts-command-line';
|
|
2
|
-
import 'source-map-support/register.js';
|
|
3
2
|
export declare abstract class BaseCommandLine extends CommandLineParser {
|
|
4
3
|
verbose: import("@rushstack/ts-command-line").CommandLineFlagParameter;
|
|
5
4
|
extraVerbose: import("@rushstack/ts-command-line").CommandLineFlagParameter;
|
|
@@ -13,4 +12,3 @@ export declare abstract class BaseCommandLine extends CommandLineParser {
|
|
|
13
12
|
protected onDefineParameters(): void;
|
|
14
13
|
run(): void;
|
|
15
14
|
}
|
|
16
|
-
//# sourceMappingURL=base.d.ts.map
|