@forge/util 1.3.1-next.0 → 1.3.1-next.1
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/CHANGELOG.md +6 -0
- package/package.json +2 -2
- package/packages/cs-ari/CHANGELOG.md +63 -1
- package/packages/cs-ari/dist/app-ari-impls.d.ts +31 -0
- package/packages/cs-ari/dist/app-ari-impls.d.ts.map +1 -0
- package/packages/cs-ari/dist/app-ari-impls.js +234 -0
- package/packages/cs-ari/dist/app-ari-impls.js.map +1 -0
- package/packages/cs-ari/dist/app-aris.d.ts +7 -0
- package/packages/cs-ari/dist/app-aris.d.ts.map +1 -0
- package/packages/cs-ari/dist/app-aris.js +16 -0
- package/packages/cs-ari/dist/app-aris.js.map +1 -0
- package/packages/cs-ari/dist/app-family-ari.d.ts +10 -0
- package/packages/cs-ari/dist/app-family-ari.d.ts.map +1 -0
- package/packages/cs-ari/dist/app-family-ari.js +30 -0
- package/packages/cs-ari/dist/app-family-ari.js.map +1 -0
- package/packages/cs-ari/dist/{AppAris.d.ts → ari.d.ts} +29 -18
- package/packages/cs-ari/dist/ari.d.ts.map +1 -0
- package/packages/cs-ari/dist/ari.js +25 -0
- package/packages/cs-ari/dist/ari.js.map +1 -0
- package/packages/cs-ari/dist/{Constraints.d.ts → constraints.d.ts} +3 -2
- package/packages/cs-ari/dist/constraints.d.ts.map +1 -0
- package/packages/cs-ari/dist/{Constraints.js → constraints.js} +11 -6
- package/packages/cs-ari/dist/constraints.js.map +1 -0
- package/packages/cs-ari/dist/index.d.ts +21 -0
- package/packages/cs-ari/dist/index.d.ts.map +1 -0
- package/packages/cs-ari/dist/index.js +40 -0
- package/packages/cs-ari/dist/index.js.map +1 -0
- package/packages/cs-ari/dist/{Index.d.ts → resource-identifier.d.ts} +11 -43
- package/packages/cs-ari/dist/resource-identifier.d.ts.map +1 -0
- package/packages/cs-ari/dist/{Index.js → resource-identifier.js} +47 -67
- package/packages/cs-ari/dist/resource-identifier.js.map +1 -0
- package/packages/cs-ari/package.json +20 -31
- package/packages/cs-ari/dist/AppAriImpls.d.ts +0 -27
- package/packages/cs-ari/dist/AppAriImpls.js +0 -172
- package/packages/cs-ari/dist/AppAriImpls.js.map +0 -1
- package/packages/cs-ari/dist/AppAris.js +0 -45
- package/packages/cs-ari/dist/AppAris.js.map +0 -1
- package/packages/cs-ari/dist/Constraints.js.map +0 -1
- package/packages/cs-ari/dist/Index.js.map +0 -1
- package/packages/cs-ari/xunit.xml +0 -109
- package/packages/cs-ari/yarn.lock +0 -643
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validateField = exports.pattern = exports.lengthBetween = exports.ConstraintViolation = exports.GeneralValidationError = exports.RegexConstraint = exports.LengthConstraint = void 0;
|
|
3
4
|
const ts_is_present_1 = require("ts-is-present");
|
|
4
5
|
class LengthConstraint {
|
|
5
6
|
constructor(min, max) {
|
|
@@ -22,7 +23,7 @@ class RegexConstraint {
|
|
|
22
23
|
return `value must match regex ${this.regex.source}`;
|
|
23
24
|
}
|
|
24
25
|
isValid(value) {
|
|
25
|
-
return !value ||
|
|
26
|
+
return !value || this.regex.test(value);
|
|
26
27
|
}
|
|
27
28
|
}
|
|
28
29
|
exports.RegexConstraint = RegexConstraint;
|
|
@@ -42,7 +43,7 @@ class ConstraintViolation {
|
|
|
42
43
|
this.constraints = constraints;
|
|
43
44
|
}
|
|
44
45
|
toString() {
|
|
45
|
-
const constraintSummary = this.constraints.map(
|
|
46
|
+
const constraintSummary = this.constraints.map(c => ` - ${c.description}`).join('\n');
|
|
46
47
|
return `'${this.value}' is not a valid value for ${this.fieldName} as it violates the following constraints:\n${constraintSummary}`;
|
|
47
48
|
}
|
|
48
49
|
}
|
|
@@ -57,10 +58,14 @@ function pattern(regex) {
|
|
|
57
58
|
exports.pattern = pattern;
|
|
58
59
|
function validateField(object, fieldName, constraints) {
|
|
59
60
|
const value = object[fieldName];
|
|
60
|
-
const violatedConstraints = constraints
|
|
61
|
+
const violatedConstraints = constraints
|
|
62
|
+
.map(c => {
|
|
61
63
|
return c.isValid(value) ? undefined : c;
|
|
62
|
-
})
|
|
63
|
-
|
|
64
|
+
})
|
|
65
|
+
.filter(ts_is_present_1.isDefined);
|
|
66
|
+
return violatedConstraints.length > 0
|
|
67
|
+
? new ConstraintViolation(fieldName, value, violatedConstraints)
|
|
68
|
+
: undefined;
|
|
64
69
|
}
|
|
65
70
|
exports.validateField = validateField;
|
|
66
|
-
//# sourceMappingURL=
|
|
71
|
+
//# sourceMappingURL=constraints.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constraints.js","sourceRoot":"","sources":["../src/constraints.ts"],"names":[],"mappings":";;;AAAA,iDAA0C;AAQ1C,MAAa,gBAAgB;IAI3B,YAAY,GAAW,EAAE,GAAW;QAClC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;IAED,IAAI,WAAW;QACb,OAAO,0BAA0B,IAAI,CAAC,GAAG,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC;IAC9D,CAAC;IAED,OAAO,CAAC,KAAa;QACnB,OAAO,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1E,CAAC;CACF;AAhBD,4CAgBC;AAED,MAAa,eAAe;IAC1B,YAAqB,KAAa;QAAb,UAAK,GAAL,KAAK,CAAQ;IAAG,CAAC;IAEtC,IAAI,WAAW;QACb,OAAO,0BAA0B,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;IACvD,CAAC;IAED,OAAO,CAAC,KAAa;QACnB,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC;CACF;AAVD,0CAUC;AAMD,MAAa,sBAAsB;IACjC,YAA6B,KAAa;QAAb,UAAK,GAAL,KAAK,CAAQ;IAAG,CAAC;IAC9C,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;CACF;AALD,wDAKC;AAED,MAAa,mBAAmB;IAK9B,YAAY,SAAiB,EAAE,KAAQ,EAAE,WAA4B;QACnE,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;IAED,QAAQ;QACN,MAAM,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvF,OAAO,IAAI,IAAI,CAAC,KAAK,8BAA8B,IAAI,CAAC,SAAS,+CAA+C,iBAAiB,EAAE,CAAC;IACtI,CAAC;CACF;AAfD,kDAeC;AAED,SAAgB,aAAa,CAAC,GAAW,EAAE,GAAW;IACpD,OAAO,IAAI,gBAAgB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACxC,CAAC;AAFD,sCAEC;AAED,SAAgB,OAAO,CAAC,KAAa;IACnC,OAAO,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;AACpC,CAAC;AAFD,0BAEC;AAED,SAAgB,aAAa,CAC3B,MAAS,EACT,SAAY,EACZ,WAA+B;IAE/B,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;IAChC,MAAM,mBAAmB,GAAG,WAAW;SACpC,GAAG,CAAC,CAAC,CAAC,EAAE;QACP,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1C,CAAC,CAAC;SACD,MAAM,CAAC,yBAAS,CAAC,CAAC;IAErB,OAAO,mBAAmB,CAAC,MAAM,GAAG,CAAC;QACnC,CAAC,CAAC,IAAI,mBAAmB,CAAO,SAAmB,EAAE,KAAK,EAAE,mBAAmB,CAAC;QAChF,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAfD,sCAeC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Ari } from './ari';
|
|
2
|
+
export * from './ari';
|
|
3
|
+
export * from './app-aris';
|
|
4
|
+
export * from './resource-identifier';
|
|
5
|
+
/**
|
|
6
|
+
* Parse a string as an Ari
|
|
7
|
+
*
|
|
8
|
+
* @param {string} ariString - the string to parse
|
|
9
|
+
* @returns {Ari} the parsed ari
|
|
10
|
+
* @throws {InvalidAriError} if the string could not be correctly parsed as an Ari.
|
|
11
|
+
*/
|
|
12
|
+
export declare function parse(ariString: string): Ari;
|
|
13
|
+
/**
|
|
14
|
+
* Parse a URL encoded string as an Ari
|
|
15
|
+
*
|
|
16
|
+
* @param {string} encodedAriString - the string to parse
|
|
17
|
+
* @returns {Ari} the parsed ari
|
|
18
|
+
* @throws {InvalidAriError} if the string could not be correctly parsed as an Ari.
|
|
19
|
+
*/
|
|
20
|
+
export declare function parseEncoded(encodedAriString: string): Ari;
|
|
21
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAG5B,cAAc,OAAO,CAAC;AACtB,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AAEtC;;;;;;GAMG;AACH,wBAAgB,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,GAAG,CAE5C;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,gBAAgB,EAAE,MAAM,GAAG,GAAG,CAE1D"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
10
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
|
+
};
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.parseEncoded = exports.parse = void 0;
|
|
14
|
+
const resource_identifier_1 = require("./resource-identifier");
|
|
15
|
+
__exportStar(require("./ari"), exports);
|
|
16
|
+
__exportStar(require("./app-aris"), exports);
|
|
17
|
+
__exportStar(require("./resource-identifier"), exports);
|
|
18
|
+
/**
|
|
19
|
+
* Parse a string as an Ari
|
|
20
|
+
*
|
|
21
|
+
* @param {string} ariString - the string to parse
|
|
22
|
+
* @returns {Ari} the parsed ari
|
|
23
|
+
* @throws {InvalidAriError} if the string could not be correctly parsed as an Ari.
|
|
24
|
+
*/
|
|
25
|
+
function parse(ariString) {
|
|
26
|
+
return resource_identifier_1.ResourceIdentifier.parse(ariString);
|
|
27
|
+
}
|
|
28
|
+
exports.parse = parse;
|
|
29
|
+
/**
|
|
30
|
+
* Parse a URL encoded string as an Ari
|
|
31
|
+
*
|
|
32
|
+
* @param {string} encodedAriString - the string to parse
|
|
33
|
+
* @returns {Ari} the parsed ari
|
|
34
|
+
* @throws {InvalidAriError} if the string could not be correctly parsed as an Ari.
|
|
35
|
+
*/
|
|
36
|
+
function parseEncoded(encodedAriString) {
|
|
37
|
+
return resource_identifier_1.ResourceIdentifier.parseEncoded(encodedAriString);
|
|
38
|
+
}
|
|
39
|
+
exports.parseEncoded = parseEncoded;
|
|
40
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;AACA,+DAA2D;AAE3D,wCAAsB;AACtB,6CAA2B;AAC3B,wDAAsC;AAEtC;;;;;;GAMG;AACH,SAAgB,KAAK,CAAC,SAAiB;IACrC,OAAO,wCAAkB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AAC7C,CAAC;AAFD,sBAEC;AAED;;;;;;GAMG;AACH,SAAgB,YAAY,CAAC,gBAAwB;IACnD,OAAO,wCAAkB,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;AAC3D,CAAC;AAFD,oCAEC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { Ari } from './ari';
|
|
2
|
+
import { ValidationError } from './constraints';
|
|
3
3
|
/**
|
|
4
4
|
* InvalidAriError - an error thrown if an invalid Ari is constructed
|
|
5
5
|
*/
|
|
@@ -27,30 +27,13 @@ export declare type AriConstructorType = {
|
|
|
27
27
|
readonly resourceType?: string;
|
|
28
28
|
readonly resourceId?: string;
|
|
29
29
|
};
|
|
30
|
-
/**
|
|
31
|
-
* ARI - an Atlassian Resource Identifier used within connect to describe installation contexts.
|
|
32
|
-
*
|
|
33
|
-
* an implementation of https://product-fabric.atlassian.net/wiki/display/PRODUCT/Atlassian+Resource+Identifier
|
|
34
|
-
*/
|
|
35
|
-
export interface Ari {
|
|
36
|
-
readonly resourceOwner: string;
|
|
37
|
-
readonly cloudId?: string;
|
|
38
|
-
readonly resourceType?: string;
|
|
39
|
-
readonly resourceId?: string;
|
|
40
|
-
toString: () => string;
|
|
41
|
-
toJSON: () => string;
|
|
42
|
-
equals: (other: any) => boolean;
|
|
43
|
-
contains: (other: Ari) => boolean;
|
|
44
|
-
urlEncode: () => string;
|
|
45
|
-
urlDecode: () => string;
|
|
46
|
-
}
|
|
47
30
|
export declare class ResourceIdentifier implements Ari {
|
|
48
31
|
readonly resourceOwner: string;
|
|
49
32
|
readonly resourceType?: string;
|
|
50
33
|
readonly resourceId?: string;
|
|
51
34
|
private ariString?;
|
|
52
35
|
private readonly internalCloudId?;
|
|
53
|
-
|
|
36
|
+
get cloudId(): string | undefined;
|
|
54
37
|
/**
|
|
55
38
|
* Create a new Ari
|
|
56
39
|
*
|
|
@@ -66,12 +49,12 @@ export declare class ResourceIdentifier implements Ari {
|
|
|
66
49
|
*/
|
|
67
50
|
constructor(values: AriConstructorType);
|
|
68
51
|
/**
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
52
|
+
* Parse a string as an Ari
|
|
53
|
+
*
|
|
54
|
+
* @param {string} ariString - the string to parse
|
|
55
|
+
* @returns {Ari} the parsed ari
|
|
56
|
+
* @throws {InvalidAriError} if the string could not be correctly parsed as an Ari.
|
|
57
|
+
*/
|
|
75
58
|
static parse(ariString: string): Ari;
|
|
76
59
|
static parseEncoded(encodedAriString: string): Ari;
|
|
77
60
|
/**
|
|
@@ -88,7 +71,7 @@ export declare class ResourceIdentifier implements Ari {
|
|
|
88
71
|
* @param {Ari} other - the other parameter to match with
|
|
89
72
|
* @returns {boolean} - true if all segments of both Aris are equal, false otherwise
|
|
90
73
|
*/
|
|
91
|
-
equals(other:
|
|
74
|
+
equals(other: unknown): boolean;
|
|
92
75
|
/**
|
|
93
76
|
* This method checks if the current context contains the other context.
|
|
94
77
|
*
|
|
@@ -119,19 +102,4 @@ export declare class ResourceIdentifier implements Ari {
|
|
|
119
102
|
urlEncode(): string;
|
|
120
103
|
urlDecode(): string;
|
|
121
104
|
}
|
|
122
|
-
|
|
123
|
-
* Parse a string as an Ari
|
|
124
|
-
*
|
|
125
|
-
* @param {string} ariString - the string to parse
|
|
126
|
-
* @returns {Ari} the parsed ari
|
|
127
|
-
* @throws {InvalidAriError} if the string could not be correctly parsed as an Ari.
|
|
128
|
-
*/
|
|
129
|
-
export declare function parse(ariString: string): Ari;
|
|
130
|
-
/**
|
|
131
|
-
* Parse a URL encoded string as an Ari
|
|
132
|
-
*
|
|
133
|
-
* @param {string} encodedAriString - the string to parse
|
|
134
|
-
* @returns {Ari} the parsed ari
|
|
135
|
-
* @throws {InvalidAriError} if the string could not be correctly parsed as an Ari.
|
|
136
|
-
*/
|
|
137
|
-
export declare function parseEncoded(encodedAriString: string): Ari;
|
|
105
|
+
//# sourceMappingURL=resource-identifier.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resource-identifier.d.ts","sourceRoot":"","sources":["../src/resource-identifier.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAIL,eAAe,EAIhB,MAAM,eAAe,CAAC;AAEvB;;GAEG;AACH,qBAAa,eAAgB,SAAQ,KAAK;IACxC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB;;;;;OAKG;gBACS,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM;IAQnD;;;;;OAKG;IACH,MAAM,CAAC,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,GAAG,eAAe;CAGnG;AAYD,oBAAY,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;AAsCF,qBAAa,kBAAmB,YAAW,GAAG;IAC5C,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,OAAO,CAAC,SAAS,CAAC,CAAS;IAC3B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAS;IAE1C,IAAI,OAAO,IAAI,MAAM,GAAG,SAAS,CAKhC;IAED;;;;;;;;;;;;OAYG;gBACS,MAAM,EAAE,kBAAkB;IAStC;;;;;;OAMG;IACH,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,GAAG;IAuBpC,MAAM,CAAC,YAAY,CAAC,gBAAgB,EAAE,MAAM,GAAG,GAAG;IAIlD;;OAEG;IACH,QAAQ,IAAI,MAAM;IAWlB;;OAEG;IACH,MAAM,IAAI,MAAM;IAIhB;;;;;OAKG;IACH,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;IAU/B;;;;;;;;OAQG;IACH,QAAQ,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO;IAI7B;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,OAAO;IAWf,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,QAAQ;IAkBhB,SAAS,IAAI,MAAM;IAInB,SAAS,IAAI,MAAM;CAGpB"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
|
|
4
|
-
const
|
|
5
|
-
tslib_1.__exportStar(require("./AppAris"), exports);
|
|
3
|
+
exports.ResourceIdentifier = exports.InvalidAriError = void 0;
|
|
4
|
+
const constraints_1 = require("./constraints");
|
|
6
5
|
/**
|
|
7
6
|
* InvalidAriError - an error thrown if an invalid Ari is constructed
|
|
8
7
|
*/
|
|
@@ -40,19 +39,21 @@ function matchesSegment(value1, value2) {
|
|
|
40
39
|
return false;
|
|
41
40
|
}
|
|
42
41
|
// constraints are based on draft of v2 spec https://hello.atlassian.net/wiki/spaces/ARCH/pages/161909310/Atlassian+Resource+Identifier+Spec+draft-2.0#AtlassianResourceIdentifierSpec(draft-2.0)-Syntax
|
|
43
|
-
const basicCharConstraint =
|
|
42
|
+
const basicCharConstraint = (0, constraints_1.pattern)(/^[a-z][a-z.-]*$/);
|
|
44
43
|
/**
|
|
45
44
|
* resourceType allows for capitalized letters to support Identity ARIs (`ari:cloud:identity::userGrant/<...>`)
|
|
46
45
|
* It's a violation of the spec, but we still need to support that.
|
|
47
46
|
* See https://hello.atlassian.net/wiki/spaces/ARCH/pages/161909310/Atlassian+Resource+Identifier+Spec+draft-2.0
|
|
48
47
|
*/
|
|
49
|
-
const resourceTypeCharConstraints =
|
|
50
|
-
const resourceOwnerConstraints = [
|
|
51
|
-
const resourceTypeConstraints = [
|
|
52
|
-
const cloudIdConstraints = [
|
|
48
|
+
const resourceTypeCharConstraints = (0, constraints_1.pattern)(/^[a-z][a-z.-]*$/i);
|
|
49
|
+
const resourceOwnerConstraints = [(0, constraints_1.lengthBetween)(3, 255), basicCharConstraint];
|
|
50
|
+
const resourceTypeConstraints = [(0, constraints_1.lengthBetween)(3, 255), resourceTypeCharConstraints];
|
|
51
|
+
const cloudIdConstraints = [(0, constraints_1.lengthBetween)(3, 255)];
|
|
53
52
|
const siteResourceType = 'site';
|
|
54
53
|
const resourceIdChars = /[\w-._~:@#]/.source;
|
|
55
|
-
const resourceIdConstraints = [
|
|
54
|
+
const resourceIdConstraints = [
|
|
55
|
+
(0, constraints_1.pattern)(new RegExp(`^${resourceIdChars}+(/${resourceIdChars}*)*(;v=${resourceIdChars}*)*$`)),
|
|
56
|
+
];
|
|
56
57
|
/**
|
|
57
58
|
* Returns an Ari that is of the latest version of the Ari spec that we support. Any legacy formats
|
|
58
59
|
* (like those for site wide ARIs) are upgraded to their latest form.
|
|
@@ -72,12 +73,6 @@ function upgrade(values) {
|
|
|
72
73
|
}
|
|
73
74
|
}
|
|
74
75
|
class ResourceIdentifier {
|
|
75
|
-
get cloudId() {
|
|
76
|
-
if (this.resourceType === siteResourceType) {
|
|
77
|
-
return this.internalCloudId ? this.internalCloudId : this.resourceId;
|
|
78
|
-
}
|
|
79
|
-
return this.internalCloudId;
|
|
80
|
-
}
|
|
81
76
|
/**
|
|
82
77
|
* Create a new Ari
|
|
83
78
|
*
|
|
@@ -99,22 +94,28 @@ class ResourceIdentifier {
|
|
|
99
94
|
this.resourceId = resourceId;
|
|
100
95
|
this.validate();
|
|
101
96
|
}
|
|
97
|
+
get cloudId() {
|
|
98
|
+
if (this.resourceType === siteResourceType) {
|
|
99
|
+
return this.internalCloudId ? this.internalCloudId : this.resourceId;
|
|
100
|
+
}
|
|
101
|
+
return this.internalCloudId;
|
|
102
|
+
}
|
|
102
103
|
/**
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
104
|
+
* Parse a string as an Ari
|
|
105
|
+
*
|
|
106
|
+
* @param {string} ariString - the string to parse
|
|
107
|
+
* @returns {Ari} the parsed ari
|
|
108
|
+
* @throws {InvalidAriError} if the string could not be correctly parsed as an Ari.
|
|
109
|
+
*/
|
|
109
110
|
static parse(ariString) {
|
|
110
111
|
if (!ariString) {
|
|
111
112
|
throw new InvalidAriError(ariString);
|
|
112
113
|
}
|
|
113
|
-
const match =
|
|
114
|
-
if (!match ||
|
|
114
|
+
const match = new RegExp(/^ari:cloud:([^:/]+):([^:/]*):([^:/]*)\/(.*)$/).exec(ariString);
|
|
115
|
+
if (!match || match.length !== 5) {
|
|
115
116
|
throw new InvalidAriError(ariString);
|
|
116
117
|
}
|
|
117
|
-
const terms = match.map((a) => a && a.length > 0 ? a : undefined);
|
|
118
|
+
const terms = match.map((a) => (a && a.length > 0 ? a : undefined));
|
|
118
119
|
const resourceOwner = terms[1];
|
|
119
120
|
if (!resourceOwner) {
|
|
120
121
|
throw new InvalidAriError(ariString);
|
|
@@ -123,18 +124,18 @@ class ResourceIdentifier {
|
|
|
123
124
|
resourceOwner: resourceOwner,
|
|
124
125
|
cloudId: terms[2],
|
|
125
126
|
resourceType: terms[3],
|
|
126
|
-
resourceId: terms[4]
|
|
127
|
+
resourceId: terms[4],
|
|
127
128
|
});
|
|
128
129
|
}
|
|
129
130
|
static parseEncoded(encodedAriString) {
|
|
130
|
-
return parse(decodeURIComponent(encodedAriString));
|
|
131
|
+
return ResourceIdentifier.parse(decodeURIComponent(encodedAriString));
|
|
131
132
|
}
|
|
132
133
|
/**
|
|
133
134
|
* Converts this Ari to a string.
|
|
134
135
|
*/
|
|
135
136
|
toString() {
|
|
136
137
|
if (!this.ariString) {
|
|
137
|
-
const resourceId = this.resourceType === siteResourceType && this.internalCloudId ? this.internalCloudId :
|
|
138
|
+
const resourceId = this.resourceType === siteResourceType && this.internalCloudId ? this.internalCloudId : this.resourceId || '';
|
|
138
139
|
const resourceType = this.resourceType || '';
|
|
139
140
|
const sanitizedCloudId = this.resourceType === siteResourceType ? '' : this.internalCloudId || '';
|
|
140
141
|
this.ariString = `ari:cloud:${this.resourceOwner}:${sanitizedCloudId}:${resourceType}/${resourceId}`;
|
|
@@ -154,11 +155,11 @@ class ResourceIdentifier {
|
|
|
154
155
|
* @returns {boolean} - true if all segments of both Aris are equal, false otherwise
|
|
155
156
|
*/
|
|
156
157
|
equals(other) {
|
|
157
|
-
return other instanceof ResourceIdentifier
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
158
|
+
return (other instanceof ResourceIdentifier &&
|
|
159
|
+
this.resourceOwner === other.resourceOwner &&
|
|
160
|
+
this.cloudId === other.cloudId &&
|
|
161
|
+
this.resourceType === other.resourceType &&
|
|
162
|
+
this.resourceId === other.resourceId);
|
|
162
163
|
}
|
|
163
164
|
/**
|
|
164
165
|
* This method checks if the current context contains the other context.
|
|
@@ -187,26 +188,27 @@ class ResourceIdentifier {
|
|
|
187
188
|
* @returns {boolean} true if this Ari is the same as the other Ari, or matches the other Ari. False otherwise.
|
|
188
189
|
*/
|
|
189
190
|
matches(other) {
|
|
190
|
-
return matchesSegment(this.resourceOwner, other.resourceOwner)
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
191
|
+
return (matchesSegment(this.resourceOwner, other.resourceOwner) &&
|
|
192
|
+
matchesSegment(this.cloudId, other.cloudId) &&
|
|
193
|
+
((this.resourceType === siteResourceType && !!other.resourceType) ||
|
|
194
|
+
matchesSegment(this.resourceType, other.resourceType)) &&
|
|
195
|
+
((this.resourceType === siteResourceType && !!other.resourceType) ||
|
|
196
|
+
matchesSegment(this.resourceId, other.resourceId)));
|
|
194
197
|
}
|
|
195
198
|
validateSiteWide() {
|
|
196
199
|
const { resourceType, cloudId } = this;
|
|
197
200
|
if (resourceType === siteResourceType && !cloudId) {
|
|
198
|
-
return new
|
|
201
|
+
return new constraints_1.GeneralValidationError('site wide ARIs must have a cloudId');
|
|
199
202
|
}
|
|
200
203
|
}
|
|
201
204
|
validate() {
|
|
202
205
|
const constraintViolations = [
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
this.validateSiteWide()
|
|
208
|
-
]
|
|
209
|
-
.filter((v) => v);
|
|
206
|
+
(0, constraints_1.validateField)(this, 'resourceOwner', resourceOwnerConstraints),
|
|
207
|
+
(0, constraints_1.validateField)(this, 'resourceType', resourceTypeConstraints),
|
|
208
|
+
(0, constraints_1.validateField)(this, 'resourceId', resourceIdConstraints),
|
|
209
|
+
(0, constraints_1.validateField)(this, 'cloudId', cloudIdConstraints),
|
|
210
|
+
this.validateSiteWide(),
|
|
211
|
+
].filter((v) => v);
|
|
210
212
|
if (constraintViolations.length > 0) {
|
|
211
213
|
throw InvalidAriError.withConstraintViolations(this.toString(), constraintViolations);
|
|
212
214
|
}
|
|
@@ -222,26 +224,4 @@ class ResourceIdentifier {
|
|
|
222
224
|
}
|
|
223
225
|
}
|
|
224
226
|
exports.ResourceIdentifier = ResourceIdentifier;
|
|
225
|
-
|
|
226
|
-
* Parse a string as an Ari
|
|
227
|
-
*
|
|
228
|
-
* @param {string} ariString - the string to parse
|
|
229
|
-
* @returns {Ari} the parsed ari
|
|
230
|
-
* @throws {InvalidAriError} if the string could not be correctly parsed as an Ari.
|
|
231
|
-
*/
|
|
232
|
-
function parse(ariString) {
|
|
233
|
-
return ResourceIdentifier.parse(ariString);
|
|
234
|
-
}
|
|
235
|
-
exports.parse = parse;
|
|
236
|
-
/**
|
|
237
|
-
* Parse a URL encoded string as an Ari
|
|
238
|
-
*
|
|
239
|
-
* @param {string} encodedAriString - the string to parse
|
|
240
|
-
* @returns {Ari} the parsed ari
|
|
241
|
-
* @throws {InvalidAriError} if the string could not be correctly parsed as an Ari.
|
|
242
|
-
*/
|
|
243
|
-
function parseEncoded(encodedAriString) {
|
|
244
|
-
return ResourceIdentifier.parseEncoded(encodedAriString);
|
|
245
|
-
}
|
|
246
|
-
exports.parseEncoded = parseEncoded;
|
|
247
|
-
//# sourceMappingURL=Index.js.map
|
|
227
|
+
//# sourceMappingURL=resource-identifier.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resource-identifier.js","sourceRoot":"","sources":["../src/resource-identifier.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,40 +1,29 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cs-ari",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.0",
|
|
4
4
|
"license": "ISC",
|
|
5
5
|
"description": "An implementation of the Atlassian Resource Identifier (ARI) scheme for Connect as a Service (CaaS)",
|
|
6
|
-
"publishConfig": {
|
|
7
|
-
"registry": "https://packages.atlassian.com"
|
|
8
|
-
},
|
|
9
6
|
"author": "Atlassian",
|
|
10
|
-
"main": "dist/
|
|
11
|
-
"scripts": {
|
|
12
|
-
"clean": "shx rm -rf ./dist",
|
|
13
|
-
"build": "npm run clean && npm run lint && tsc",
|
|
14
|
-
"prepublishOnly": "npm run build",
|
|
15
|
-
"test": "mocha --reporter mocha-multi --reporter-options spec=-,xunit=xunit.xml --require ts-node/register `find ./lib -name '*.spec.ts' -print`",
|
|
16
|
-
"lint": "tslint -c ../../tslint.json --project tsconfig.json --project",
|
|
17
|
-
"format": "tsfmt -r && tslint -c ../../tslint.json --project tsconfig.json --fix --force",
|
|
18
|
-
"bamboo": "npm install -g yarn@0.18.0 && yarn && yarn test",
|
|
19
|
-
"yarn-deduplicate": "yarn-deduplicate"
|
|
20
|
-
},
|
|
7
|
+
"main": "dist/index",
|
|
21
8
|
"dependencies": {
|
|
22
|
-
"ts-is-present": "^1.1.
|
|
9
|
+
"ts-is-present": "^1.1.3"
|
|
10
|
+
},
|
|
11
|
+
"typings": "dist/index.d.ts",
|
|
12
|
+
"types": "dist/index.d.ts",
|
|
13
|
+
"config": {
|
|
14
|
+
"registry": "atlassian"
|
|
23
15
|
},
|
|
24
|
-
"
|
|
25
|
-
"
|
|
26
|
-
"
|
|
27
|
-
"
|
|
28
|
-
"chai": "4.2.0",
|
|
29
|
-
"mocha": "^5.2.0",
|
|
30
|
-
"mocha-multi": "^1.1.0",
|
|
31
|
-
"shx": "^0.3.2",
|
|
32
|
-
"sinon": "^7.3.2",
|
|
33
|
-
"ts-node": "^8.2.0",
|
|
34
|
-
"tslint": "^5.17.0",
|
|
35
|
-
"typescript": "^3.5.1",
|
|
36
|
-
"typescript-formatter": "7.2.2",
|
|
37
|
-
"yarn-deduplicate": "^1.1.1"
|
|
16
|
+
"repository": {
|
|
17
|
+
"directory": "src/packages/ecosystem/cs-ari",
|
|
18
|
+
"type": "git",
|
|
19
|
+
"url": "git@bitbucket.org:atlassian/incredible-monorepo.git"
|
|
38
20
|
},
|
|
39
|
-
"
|
|
21
|
+
"homepage": "https://bitbucket.org/atlassian/incredible-monorepo/src/master/src/packages/ecosystem/cs-ari",
|
|
22
|
+
"files": [
|
|
23
|
+
"bin/",
|
|
24
|
+
"dist/",
|
|
25
|
+
"package.json",
|
|
26
|
+
"CHANGELOG.md",
|
|
27
|
+
"README.md"
|
|
28
|
+
]
|
|
40
29
|
}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { AppAri, AppAriJson, AppEnvironmentAri, AppEnvironmentAriJson, AppFamilyAriJson, AppFamilyAriOperations, ExtensionAri, ExtensionAriJson, ExtensionGroupAri, ExtensionGroupAriJson } from './AppAris';
|
|
2
|
-
import { Ari } from './Index';
|
|
3
|
-
export declare class AppFamilyAriImpl<J extends AppFamilyAriJson> implements AppAriJson, Partial<AppEnvironmentAriJson>, Partial<ExtensionGroupAriJson>, Partial<ExtensionAriJson>, AppFamilyAriOperations<J> {
|
|
4
|
-
private readonly json;
|
|
5
|
-
constructor(json: J);
|
|
6
|
-
readonly appId: string;
|
|
7
|
-
readonly environmentId: string | undefined;
|
|
8
|
-
readonly version: string | undefined;
|
|
9
|
-
readonly extensionGroupId: string | undefined;
|
|
10
|
-
readonly extensionKey: string | undefined;
|
|
11
|
-
toJSON(): J;
|
|
12
|
-
static parse<J extends AppFamilyAriJson>(ari: Ari): AppFamilyAriImpl<J>;
|
|
13
|
-
asAppAri(): AppAri;
|
|
14
|
-
asAppEnvironmentAri(): AppEnvironmentAri;
|
|
15
|
-
asExtensionGroupAri(): ExtensionGroupAri;
|
|
16
|
-
asExtensionAri(): ExtensionAri;
|
|
17
|
-
isAppAri(): this is AppAri;
|
|
18
|
-
isAppEnvironmentAri(): this is AppEnvironmentAri;
|
|
19
|
-
isExtensionGroupAri(): this is ExtensionGroupAri;
|
|
20
|
-
isExtensionAri(): this is ExtensionAri;
|
|
21
|
-
private returnIf;
|
|
22
|
-
private readonly isAtLeastAppEnvironmentAri;
|
|
23
|
-
private readonly isAtLeastExtensionGroupAri;
|
|
24
|
-
private validate;
|
|
25
|
-
toAri(): Ari;
|
|
26
|
-
toString(): string;
|
|
27
|
-
}
|