@sparkvault/sdk-mobile 7.1.3 → 7.1.5
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/dist/app-sdk/forge-url.d.ts +0 -6
- package/dist/app-sdk/forge-url.js +1 -1
- package/dist/app-sdk/forge-url.js.map +1 -1
- package/dist/app-sdk/ids.d.ts +11 -1
- package/dist/app-sdk/ids.js +11 -1
- package/dist/app-sdk/ids.js.map +1 -1
- package/dist/app-sdk/platform-domains.d.ts +19 -4
- package/dist/app-sdk/platform-domains.js +26 -5
- package/dist/app-sdk/platform-domains.js.map +1 -1
- package/package.json +1 -1
- package/src/app-sdk/forge-url.js +1 -1
- package/src/app-sdk/ids.js +11 -1
- package/src/app-sdk/platform-domains.js +28 -5
|
@@ -1,9 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Forge's own host, the one a platform-issued transfer URL names.
|
|
3
|
-
* @param {string} hostname
|
|
4
|
-
* @returns {boolean}
|
|
5
|
-
*/
|
|
6
|
-
export function isForgeHost(hostname: string): boolean;
|
|
7
1
|
/**
|
|
8
2
|
* The URL Core issues for a transfer: Forge's operation endpoint carrying the
|
|
9
3
|
* ISTK.
|
|
@@ -53,7 +53,7 @@ const HOSTNAME = /^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]*[a-z
|
|
|
53
53
|
* @param {string} hostname
|
|
54
54
|
* @returns {boolean}
|
|
55
55
|
*/
|
|
56
|
-
|
|
56
|
+
function isForgeHost(hostname) {
|
|
57
57
|
return hostname === SPARKVAULT_FORGE_HOST;
|
|
58
58
|
}
|
|
59
59
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"forge-url.js","sourceRoot":"","sources":["../../src/app-sdk/forge-url.js"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,qDAAqD;AACrD,8DAA8D;AAE9D;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,uFAAuF;AACvF,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC;IAC7C,uEAAuE;IACvE,OAAO,EAAE,aAAa;IACtB,oFAAoF;IACpF,SAAS,EAAE,WAAW;IACtB,sEAAsE;IACtE,YAAY,EAAE,cAAc;IAC5B,mFAAmF;IACnF,IAAI,EAAE,kBAAkB;IACxB,sDAAsD;IACtD,SAAS,EAAE,iBAAiB;IAC5B,4DAA4D;IAC5D,IAAI,EAAE,UAAU;CACjB,CAAC,CAAC;AAEH,iFAAiF;AACjF,MAAM,YAAY,GAAG,kBAAkB,CAAC;AAExC,yGAAyG;AACzG,MAAM,kBAAkB,GAAG,kBAAkB,CAAC;AAE9C,mFAAmF;AACnF,MAAM,QAAQ,GAAG,gBAAgB,CAAC;AAElC,uFAAuF;AACvF,MAAM,YAAY,GAAG,uEAAuE,CAAC;AAE7F,mFAAmF;AACnF,MAAM,QAAQ,GAAG,yEAAyE,CAAC;AAE3F;;;;GAIG;AACH,
|
|
1
|
+
{"version":3,"file":"forge-url.js","sourceRoot":"","sources":["../../src/app-sdk/forge-url.js"],"names":[],"mappings":"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"}
|
package/dist/app-sdk/ids.d.ts
CHANGED
|
@@ -21,7 +21,9 @@ export function isResourceId(value: unknown): boolean;
|
|
|
21
21
|
*
|
|
22
22
|
* Core mints an id as its kind's prefix, an underscore and a body: the hex of a
|
|
23
23
|
* UUIDv7 (apps/api lib/utils.js buildPrefixedIdFromBytes), or a hex digest for
|
|
24
|
-
* an
|
|
24
|
+
* an id derived from what it names (an invitation, an inbox notification, a
|
|
25
|
+
* Messaging or help-desk ingot, a help-desk event an inbound email records).
|
|
26
|
+
* The grammar admits the kind's
|
|
25
27
|
* prefix, '_' and a body of the path-safe alphabet [A-Za-z0-9_-], 128
|
|
26
28
|
* characters in all, so an id that passes is exactly one request-path segment
|
|
27
29
|
* and one file-name component: it can never name a parent path, carry a
|
|
@@ -36,11 +38,19 @@ export function isResourceId(value: unknown): boolean;
|
|
|
36
38
|
/** The prefix Core mints each resource kind's id with. */
|
|
37
39
|
export const RESOURCE_ID_PREFIXES: Readonly<{
|
|
38
40
|
account: "acc";
|
|
41
|
+
attachment: "hda";
|
|
39
42
|
folder: "fld";
|
|
43
|
+
helpDeskJob: "hdj";
|
|
40
44
|
ingot: "ing";
|
|
41
45
|
invite: "inv";
|
|
42
46
|
notification: "ntf";
|
|
47
|
+
requester: "hrq";
|
|
48
|
+
routingRule: "hdr";
|
|
49
|
+
savedReply: "hds";
|
|
43
50
|
spark: "spk";
|
|
51
|
+
team: "team";
|
|
52
|
+
ticket: "tkt";
|
|
53
|
+
ticketEvent: "hdev";
|
|
44
54
|
user: "usr";
|
|
45
55
|
vault: "vlt";
|
|
46
56
|
}>;
|
package/dist/app-sdk/ids.js
CHANGED
|
@@ -7,7 +7,9 @@
|
|
|
7
7
|
*
|
|
8
8
|
* Core mints an id as its kind's prefix, an underscore and a body: the hex of a
|
|
9
9
|
* UUIDv7 (apps/api lib/utils.js buildPrefixedIdFromBytes), or a hex digest for
|
|
10
|
-
* an
|
|
10
|
+
* an id derived from what it names (an invitation, an inbox notification, a
|
|
11
|
+
* Messaging or help-desk ingot, a help-desk event an inbound email records).
|
|
12
|
+
* The grammar admits the kind's
|
|
11
13
|
* prefix, '_' and a body of the path-safe alphabet [A-Za-z0-9_-], 128
|
|
12
14
|
* characters in all, so an id that passes is exactly one request-path segment
|
|
13
15
|
* and one file-name component: it can never name a parent path, carry a
|
|
@@ -22,11 +24,19 @@
|
|
|
22
24
|
/** The prefix Core mints each resource kind's id with. */
|
|
23
25
|
export const RESOURCE_ID_PREFIXES = Object.freeze({
|
|
24
26
|
account: 'acc',
|
|
27
|
+
attachment: 'hda',
|
|
25
28
|
folder: 'fld',
|
|
29
|
+
helpDeskJob: 'hdj',
|
|
26
30
|
ingot: 'ing',
|
|
27
31
|
invite: 'inv',
|
|
28
32
|
notification: 'ntf',
|
|
33
|
+
requester: 'hrq',
|
|
34
|
+
routingRule: 'hdr',
|
|
35
|
+
savedReply: 'hds',
|
|
29
36
|
spark: 'spk',
|
|
37
|
+
team: 'team',
|
|
38
|
+
ticket: 'tkt',
|
|
39
|
+
ticketEvent: 'hdev',
|
|
30
40
|
user: 'usr',
|
|
31
41
|
vault: 'vlt'
|
|
32
42
|
});
|
package/dist/app-sdk/ids.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ids.js","sourceRoot":"","sources":["../../src/app-sdk/ids.js"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,+CAA+C;AAC/C,8DAA8D;AAE9D
|
|
1
|
+
{"version":3,"file":"ids.js","sourceRoot":"","sources":["../../src/app-sdk/ids.js"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,+CAA+C;AAC/C,8DAA8D;AAE9D;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,0DAA0D;AAC1D,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC,MAAM,CAAC;IAChD,OAAO,EAAE,KAAK;IACd,UAAU,EAAE,KAAK;IACjB,MAAM,EAAE,KAAK;IACb,WAAW,EAAE,KAAK;IAClB,KAAK,EAAE,KAAK;IACZ,MAAM,EAAE,KAAK;IACb,YAAY,EAAE,KAAK;IACnB,SAAS,EAAE,KAAK;IAChB,WAAW,EAAE,KAAK;IAClB,UAAU,EAAE,KAAK;IACjB,KAAK,EAAE,KAAK;IACZ,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,KAAK;IACb,WAAW,EAAE,MAAM;IACnB,IAAI,EAAE,KAAK;IACX,KAAK,EAAE,KAAK;CACb,CAAC,CAAC;AAEH,uCAAuC;AACvC,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,CAAC;AAE1C,MAAM,OAAO,GAAG,kBAAkB,CAAC;AAEnC;;;;;;;;GAQG;AACH,MAAM,UAAU,cAAc,CAAC,IAAI,EAAE,KAAK;IACxC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,oBAAoB,EAAE,IAAI,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,SAAS,CAAC,qBAAqB,IAAI,GAAG,CAAC,CAAC;IACpD,CAAC;IACD,MAAM,MAAM,GAAG,GAAG,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC;IAChD,OAAO,OAAO,KAAK,KAAK,QAAQ;WAC3B,KAAK,CAAC,MAAM,IAAI,sBAAsB;WACtC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC;WACxB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;AAE/D;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,KAAK;IAChC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AAC3D,CAAC"}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
|
-
export function isSparkVaultRootOrSubdomain(hostname: any): boolean;
|
|
2
|
-
export function isSparkVaultPlatformSvHost(hostname: any): boolean;
|
|
3
1
|
export function isSparkVaultOwnedHostname(hostname: any): boolean;
|
|
2
|
+
/**
|
|
3
|
+
* Whether a domain is SparkVault's, so no organization may claim it as its
|
|
4
|
+
* own: every host the platform owns, and the help-desk domain with its whole
|
|
5
|
+
* subtree, whose hosts belong to SparkVault's tenants and to its custom-domain
|
|
6
|
+
* CNAME target without any of them being trusted as a platform host.
|
|
7
|
+
*/
|
|
4
8
|
export function isSparkVaultReservedDomain(hostname: any): boolean;
|
|
5
9
|
export function sparkVaultPlatformSvOrigins(): string[];
|
|
6
10
|
export function sparkVaultWebSocketOrigins(): string[];
|
|
@@ -8,8 +12,11 @@ export function sparkVaultWebSocketOrigins(): string[];
|
|
|
8
12
|
* SparkVault-owned domain registry.
|
|
9
13
|
*
|
|
10
14
|
* Keep platform domain decisions centralized: CSP, redirect safety, custom
|
|
11
|
-
* domain reservation, and Identity postMessage trust all
|
|
12
|
-
*
|
|
15
|
+
* domain reservation, and Identity postMessage trust all read this registry.
|
|
16
|
+
* Trust follows the hosts the platform owns (isSparkVaultOwnedHostname);
|
|
17
|
+
* reservation covers those and the help-desk domain's subtree
|
|
18
|
+
* (isSparkVaultReservedDomain), whose hosts are SparkVault's to hand out but
|
|
19
|
+
* never trusted.
|
|
13
20
|
*/
|
|
14
21
|
export const SPARKVAULT_ROOT_DOMAIN: "sparkvault.com";
|
|
15
22
|
/** The person-facing Identity portal host (auth.sv shell + hosted login). */
|
|
@@ -26,6 +33,14 @@ export const SPARKVAULT_IDENTITY_HOST: "auth.sparkvault.com";
|
|
|
26
33
|
export const SPARKVAULT_LINKS_HOST: "x.sv";
|
|
27
34
|
/** The durable file-share and Secure Upload Portal host. */
|
|
28
35
|
export const SPARKVAULT_FILES_HOST: "files.sv";
|
|
36
|
+
/**
|
|
37
|
+
* The help-desk domain: each organization's help desk lives at a host under
|
|
38
|
+
* it, and every custom help-desk domain points its CNAME at a name in it. The
|
|
39
|
+
* whole subtree is reserved — no organization claims a name in it as its own
|
|
40
|
+
* domain — but none of its hosts is owned: a tenant's help-desk host is never
|
|
41
|
+
* trusted the way a platform host is (isSparkVaultOwnedHostname).
|
|
42
|
+
*/
|
|
43
|
+
export const SPARKVAULT_HELP_DESK_DOMAIN: "help.sv";
|
|
29
44
|
export const SPARKVAULT_PLATFORM_SV_HOSTS: readonly string[];
|
|
30
45
|
/** The SparkVault console. */
|
|
31
46
|
export const SPARKVAULT_APP_HOST: "app.sparkvault.com";
|
|
@@ -5,8 +5,11 @@
|
|
|
5
5
|
* SparkVault-owned domain registry.
|
|
6
6
|
*
|
|
7
7
|
* Keep platform domain decisions centralized: CSP, redirect safety, custom
|
|
8
|
-
* domain reservation, and Identity postMessage trust all
|
|
9
|
-
*
|
|
8
|
+
* domain reservation, and Identity postMessage trust all read this registry.
|
|
9
|
+
* Trust follows the hosts the platform owns (isSparkVaultOwnedHostname);
|
|
10
|
+
* reservation covers those and the help-desk domain's subtree
|
|
11
|
+
* (isSparkVaultReservedDomain), whose hosts are SparkVault's to hand out but
|
|
12
|
+
* never trusted.
|
|
10
13
|
*/
|
|
11
14
|
export const SPARKVAULT_ROOT_DOMAIN = 'sparkvault.com';
|
|
12
15
|
/** The person-facing Identity portal host (auth.sv shell + hosted login). */
|
|
@@ -23,6 +26,14 @@ export const SPARKVAULT_IDENTITY_HOST = 'auth.sparkvault.com';
|
|
|
23
26
|
export const SPARKVAULT_LINKS_HOST = 'x.sv';
|
|
24
27
|
/** The durable file-share and Secure Upload Portal host. */
|
|
25
28
|
export const SPARKVAULT_FILES_HOST = 'files.sv';
|
|
29
|
+
/**
|
|
30
|
+
* The help-desk domain: each organization's help desk lives at a host under
|
|
31
|
+
* it, and every custom help-desk domain points its CNAME at a name in it. The
|
|
32
|
+
* whole subtree is reserved — no organization claims a name in it as its own
|
|
33
|
+
* domain — but none of its hosts is owned: a tenant's help-desk host is never
|
|
34
|
+
* trusted the way a platform host is (isSparkVaultOwnedHostname).
|
|
35
|
+
*/
|
|
36
|
+
export const SPARKVAULT_HELP_DESK_DOMAIN = 'help.sv';
|
|
26
37
|
export const SPARKVAULT_PLATFORM_SV_HOSTS = Object.freeze([
|
|
27
38
|
SPARKVAULT_AUTH_HOST,
|
|
28
39
|
SPARKVAULT_LINKS_HOST,
|
|
@@ -60,18 +71,28 @@ function normalizeHostname(hostname) {
|
|
|
60
71
|
return '';
|
|
61
72
|
return hostname.trim().toLowerCase().replace(/\.$/, '');
|
|
62
73
|
}
|
|
63
|
-
|
|
74
|
+
function isSparkVaultRootOrSubdomain(hostname) {
|
|
64
75
|
const normalized = normalizeHostname(hostname);
|
|
65
76
|
return normalized === SPARKVAULT_ROOT_DOMAIN || normalized.endsWith(`.${SPARKVAULT_ROOT_DOMAIN}`);
|
|
66
77
|
}
|
|
67
|
-
|
|
78
|
+
function isSparkVaultPlatformSvHost(hostname) {
|
|
68
79
|
return SPARKVAULT_PLATFORM_SV_HOSTS.includes(normalizeHostname(hostname));
|
|
69
80
|
}
|
|
81
|
+
function isSparkVaultHelpDeskDomainOrSubdomain(hostname) {
|
|
82
|
+
const normalized = normalizeHostname(hostname);
|
|
83
|
+
return normalized === SPARKVAULT_HELP_DESK_DOMAIN || normalized.endsWith(`.${SPARKVAULT_HELP_DESK_DOMAIN}`);
|
|
84
|
+
}
|
|
70
85
|
export function isSparkVaultOwnedHostname(hostname) {
|
|
71
86
|
return isSparkVaultRootOrSubdomain(hostname) || isSparkVaultPlatformSvHost(hostname);
|
|
72
87
|
}
|
|
88
|
+
/**
|
|
89
|
+
* Whether a domain is SparkVault's, so no organization may claim it as its
|
|
90
|
+
* own: every host the platform owns, and the help-desk domain with its whole
|
|
91
|
+
* subtree, whose hosts belong to SparkVault's tenants and to its custom-domain
|
|
92
|
+
* CNAME target without any of them being trusted as a platform host.
|
|
93
|
+
*/
|
|
73
94
|
export function isSparkVaultReservedDomain(hostname) {
|
|
74
|
-
return isSparkVaultOwnedHostname(hostname);
|
|
95
|
+
return isSparkVaultOwnedHostname(hostname) || isSparkVaultHelpDeskDomainOrSubdomain(hostname);
|
|
75
96
|
}
|
|
76
97
|
export function sparkVaultPlatformSvOrigins() {
|
|
77
98
|
return SPARKVAULT_PLATFORM_SV_HOSTS.map((host) => `https://${host}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platform-domains.js","sourceRoot":"","sources":["../../src/app-sdk/platform-domains.js"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,4DAA4D;AAC5D,8DAA8D;AAE9D
|
|
1
|
+
{"version":3,"file":"platform-domains.js","sourceRoot":"","sources":["../../src/app-sdk/platform-domains.js"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/app-sdk/forge-url.js
CHANGED
|
@@ -62,7 +62,7 @@ const HOSTNAME = /^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]*[a-z
|
|
|
62
62
|
* @param {string} hostname
|
|
63
63
|
* @returns {boolean}
|
|
64
64
|
*/
|
|
65
|
-
|
|
65
|
+
function isForgeHost(hostname) {
|
|
66
66
|
return hostname === SPARKVAULT_FORGE_HOST;
|
|
67
67
|
}
|
|
68
68
|
|
package/src/app-sdk/ids.js
CHANGED
|
@@ -8,7 +8,9 @@
|
|
|
8
8
|
*
|
|
9
9
|
* Core mints an id as its kind's prefix, an underscore and a body: the hex of a
|
|
10
10
|
* UUIDv7 (apps/api lib/utils.js buildPrefixedIdFromBytes), or a hex digest for
|
|
11
|
-
* an
|
|
11
|
+
* an id derived from what it names (an invitation, an inbox notification, a
|
|
12
|
+
* Messaging or help-desk ingot, a help-desk event an inbound email records).
|
|
13
|
+
* The grammar admits the kind's
|
|
12
14
|
* prefix, '_' and a body of the path-safe alphabet [A-Za-z0-9_-], 128
|
|
13
15
|
* characters in all, so an id that passes is exactly one request-path segment
|
|
14
16
|
* and one file-name component: it can never name a parent path, carry a
|
|
@@ -24,11 +26,19 @@
|
|
|
24
26
|
/** The prefix Core mints each resource kind's id with. */
|
|
25
27
|
export const RESOURCE_ID_PREFIXES = Object.freeze({
|
|
26
28
|
account: 'acc',
|
|
29
|
+
attachment: 'hda',
|
|
27
30
|
folder: 'fld',
|
|
31
|
+
helpDeskJob: 'hdj',
|
|
28
32
|
ingot: 'ing',
|
|
29
33
|
invite: 'inv',
|
|
30
34
|
notification: 'ntf',
|
|
35
|
+
requester: 'hrq',
|
|
36
|
+
routingRule: 'hdr',
|
|
37
|
+
savedReply: 'hds',
|
|
31
38
|
spark: 'spk',
|
|
39
|
+
team: 'team',
|
|
40
|
+
ticket: 'tkt',
|
|
41
|
+
ticketEvent: 'hdev',
|
|
32
42
|
user: 'usr',
|
|
33
43
|
vault: 'vlt'
|
|
34
44
|
});
|
|
@@ -6,8 +6,11 @@
|
|
|
6
6
|
* SparkVault-owned domain registry.
|
|
7
7
|
*
|
|
8
8
|
* Keep platform domain decisions centralized: CSP, redirect safety, custom
|
|
9
|
-
* domain reservation, and Identity postMessage trust all
|
|
10
|
-
*
|
|
9
|
+
* domain reservation, and Identity postMessage trust all read this registry.
|
|
10
|
+
* Trust follows the hosts the platform owns (isSparkVaultOwnedHostname);
|
|
11
|
+
* reservation covers those and the help-desk domain's subtree
|
|
12
|
+
* (isSparkVaultReservedDomain), whose hosts are SparkVault's to hand out but
|
|
13
|
+
* never trusted.
|
|
11
14
|
*/
|
|
12
15
|
|
|
13
16
|
export const SPARKVAULT_ROOT_DOMAIN = 'sparkvault.com';
|
|
@@ -30,6 +33,15 @@ export const SPARKVAULT_LINKS_HOST = 'x.sv';
|
|
|
30
33
|
/** The durable file-share and Secure Upload Portal host. */
|
|
31
34
|
export const SPARKVAULT_FILES_HOST = 'files.sv';
|
|
32
35
|
|
|
36
|
+
/**
|
|
37
|
+
* The help-desk domain: each organization's help desk lives at a host under
|
|
38
|
+
* it, and every custom help-desk domain points its CNAME at a name in it. The
|
|
39
|
+
* whole subtree is reserved — no organization claims a name in it as its own
|
|
40
|
+
* domain — but none of its hosts is owned: a tenant's help-desk host is never
|
|
41
|
+
* trusted the way a platform host is (isSparkVaultOwnedHostname).
|
|
42
|
+
*/
|
|
43
|
+
export const SPARKVAULT_HELP_DESK_DOMAIN = 'help.sv';
|
|
44
|
+
|
|
33
45
|
export const SPARKVAULT_PLATFORM_SV_HOSTS = Object.freeze([
|
|
34
46
|
SPARKVAULT_AUTH_HOST,
|
|
35
47
|
SPARKVAULT_LINKS_HOST,
|
|
@@ -73,21 +85,32 @@ function normalizeHostname(hostname) {
|
|
|
73
85
|
return hostname.trim().toLowerCase().replace(/\.$/, '');
|
|
74
86
|
}
|
|
75
87
|
|
|
76
|
-
|
|
88
|
+
function isSparkVaultRootOrSubdomain(hostname) {
|
|
77
89
|
const normalized = normalizeHostname(hostname);
|
|
78
90
|
return normalized === SPARKVAULT_ROOT_DOMAIN || normalized.endsWith(`.${SPARKVAULT_ROOT_DOMAIN}`);
|
|
79
91
|
}
|
|
80
92
|
|
|
81
|
-
|
|
93
|
+
function isSparkVaultPlatformSvHost(hostname) {
|
|
82
94
|
return SPARKVAULT_PLATFORM_SV_HOSTS.includes(normalizeHostname(hostname));
|
|
83
95
|
}
|
|
84
96
|
|
|
97
|
+
function isSparkVaultHelpDeskDomainOrSubdomain(hostname) {
|
|
98
|
+
const normalized = normalizeHostname(hostname);
|
|
99
|
+
return normalized === SPARKVAULT_HELP_DESK_DOMAIN || normalized.endsWith(`.${SPARKVAULT_HELP_DESK_DOMAIN}`);
|
|
100
|
+
}
|
|
101
|
+
|
|
85
102
|
export function isSparkVaultOwnedHostname(hostname) {
|
|
86
103
|
return isSparkVaultRootOrSubdomain(hostname) || isSparkVaultPlatformSvHost(hostname);
|
|
87
104
|
}
|
|
88
105
|
|
|
106
|
+
/**
|
|
107
|
+
* Whether a domain is SparkVault's, so no organization may claim it as its
|
|
108
|
+
* own: every host the platform owns, and the help-desk domain with its whole
|
|
109
|
+
* subtree, whose hosts belong to SparkVault's tenants and to its custom-domain
|
|
110
|
+
* CNAME target without any of them being trusted as a platform host.
|
|
111
|
+
*/
|
|
89
112
|
export function isSparkVaultReservedDomain(hostname) {
|
|
90
|
-
return isSparkVaultOwnedHostname(hostname);
|
|
113
|
+
return isSparkVaultOwnedHostname(hostname) || isSparkVaultHelpDeskDomainOrSubdomain(hostname);
|
|
91
114
|
}
|
|
92
115
|
|
|
93
116
|
export function sparkVaultPlatformSvOrigins() {
|