@trackunit/iris-app-api 0.0.158 → 0.0.160
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 +4 -0
- package/package.json +1 -1
- package/src/types/cspDirectives.d.ts +54 -0
- package/src/types/cspDirectives.js +29 -0
- package/src/types/cspDirectives.js.map +1 -0
- package/src/types/defaultValidHosts.d.ts +12 -0
- package/src/types/defaultValidHosts.js +16 -1
- package/src/types/defaultValidHosts.js.map +1 -1
- package/src/types/irisAppCspInput.d.ts +13 -5
- package/src/types/irisAppCspInput.js +27 -22
- package/src/types/irisAppCspInput.js.map +1 -1
- package/src/types/irisAppManifest.d.ts +9 -1
- package/src/types/irisAppManifest.js.map +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
|
|
4
4
|
|
|
5
|
+
## [0.0.160](https://github.com/Trackunit/manager/compare/iris-app-api/0.0.159...iris-app-api/0.0.160) (2024-03-21)
|
|
6
|
+
|
|
7
|
+
## [0.0.159](https://github.com/Trackunit/manager/compare/iris-app-api/0.0.158...iris-app-api/0.0.159) (2024-03-21)
|
|
8
|
+
|
|
5
9
|
## [0.0.158](https://github.com/Trackunit/manager/compare/iris-app-api/0.0.157...iris-app-api/0.0.158) (2024-03-17)
|
|
6
10
|
|
|
7
11
|
## [0.0.157](https://github.com/Trackunit/manager/compare/iris-app-api/0.0.156...iris-app-api/0.0.157) (2024-03-12)
|
package/package.json
CHANGED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
export declare const ALLOW_DOWNLOADS_WITHOUT_USER_ACTIVATION = "allow-downloads-without-user-activation";
|
|
2
|
+
export declare const ALLOW_DUPLICATES = "'allow-duplicates'";
|
|
3
|
+
export declare const ALLOW_FORMS = "allow-forms";
|
|
4
|
+
export declare const ALLOW_MODALS = "allow-modals";
|
|
5
|
+
export declare const ALLOW_ORIENTATION_LOCK = "allow-orientation-lock";
|
|
6
|
+
export declare const ALLOW_POINTER_LOCK = "allow-pointer-lock";
|
|
7
|
+
export declare const ALLOW_POPUPS = "allow-popups";
|
|
8
|
+
export declare const ALLOW_POPUPS_TO_ESCAPE_SANDBOX = "allow-popups-to-escape-sandbox";
|
|
9
|
+
export declare const ALLOW_PRESENTATION = "allow-presentation";
|
|
10
|
+
export declare const ALLOW_SAME_ORIGIN = "allow-same-origin";
|
|
11
|
+
export declare const ALLOW_STORAGE_ACCESS_BY_USER_ACTIVATION = "allow-storage-access-by-user-activation";
|
|
12
|
+
export declare const ALLOW_SCRIPTS = "allow-allow-scripts";
|
|
13
|
+
export declare const ALLOW_TOP_NAVIGATION = "allow-top-navigation";
|
|
14
|
+
export declare const ALLOW_TOP_NAVIGATION_BY_USER_ACTIVATION = "allow-top-navigation-by-user-activation";
|
|
15
|
+
type TSource = string;
|
|
16
|
+
type TNonce = `nonce-${string}`;
|
|
17
|
+
type THash = `sha${"256" | "384" | "512"}-${string}`;
|
|
18
|
+
type TAttrDirective = THash | typeof NONE | typeof UNSAFE_INLINE | typeof UNSAFE_HASHES;
|
|
19
|
+
type TFetchDirective = TSource | TNonce | THash | typeof NONE | typeof SELF | typeof UNSAFE_EVAL | typeof UNSAFE_HASHES | typeof UNSAFE_INLINE;
|
|
20
|
+
type TNavigationDirective = TSource | TNonce | THash | typeof NONE | typeof SELF | typeof UNSAFE_EVAL | typeof UNSAFE_HASHES | typeof UNSAFE_INLINE | typeof STRICT_DYNAMIC;
|
|
21
|
+
export declare const NONE = "'none'";
|
|
22
|
+
export declare const SELF = "'self'";
|
|
23
|
+
export declare const STRICT_DYNAMIC = "'strict-dynamic'";
|
|
24
|
+
export declare const REPORT_SAMPLE = "'report-sample'";
|
|
25
|
+
export declare const UNSAFE_EVAL = "'unsafe-eval'";
|
|
26
|
+
export declare const UNSAFE_HASHES = "'unsafe-hashes'";
|
|
27
|
+
export declare const UNSAFE_INLINE = "'unsafe-inline'";
|
|
28
|
+
export declare const WASM_UNSAFE_EVAL = "'wasm-unsafe-eval'";
|
|
29
|
+
export type CSPDirectives = {
|
|
30
|
+
"child-src": TFetchDirective[];
|
|
31
|
+
"connect-src": TFetchDirective[];
|
|
32
|
+
"default-src": (TFetchDirective | typeof STRICT_DYNAMIC)[];
|
|
33
|
+
"font-src": TFetchDirective[];
|
|
34
|
+
"form-action": TNavigationDirective[];
|
|
35
|
+
"frame-src": TFetchDirective[];
|
|
36
|
+
"img-src": (TFetchDirective | typeof STRICT_DYNAMIC)[];
|
|
37
|
+
"manifest-src": TFetchDirective[];
|
|
38
|
+
"media-src": TFetchDirective[];
|
|
39
|
+
"object-src": TFetchDirective[];
|
|
40
|
+
sandbox: (typeof ALLOW_DOWNLOADS_WITHOUT_USER_ACTIVATION | typeof ALLOW_FORMS | typeof ALLOW_MODALS | typeof ALLOW_ORIENTATION_LOCK | typeof ALLOW_POINTER_LOCK | typeof ALLOW_POPUPS | typeof ALLOW_POPUPS_TO_ESCAPE_SANDBOX | typeof ALLOW_PRESENTATION | typeof ALLOW_SAME_ORIGIN | typeof ALLOW_SCRIPTS | typeof ALLOW_STORAGE_ACCESS_BY_USER_ACTIVATION | typeof ALLOW_TOP_NAVIGATION | typeof ALLOW_TOP_NAVIGATION_BY_USER_ACTIVATION)[];
|
|
41
|
+
"script-src": (TFetchDirective | typeof STRICT_DYNAMIC | typeof REPORT_SAMPLE | typeof WASM_UNSAFE_EVAL)[];
|
|
42
|
+
"script-src-attr": (TAttrDirective | typeof REPORT_SAMPLE)[];
|
|
43
|
+
"script-src-elem": (TFetchDirective | typeof STRICT_DYNAMIC | typeof REPORT_SAMPLE)[];
|
|
44
|
+
"style-src": TFetchDirective[] | typeof REPORT_SAMPLE;
|
|
45
|
+
"style-src-attr": (TAttrDirective | typeof REPORT_SAMPLE)[];
|
|
46
|
+
"style-src-elem": (TFetchDirective | typeof REPORT_SAMPLE)[];
|
|
47
|
+
"upgrade-insecure-requests": boolean;
|
|
48
|
+
"worker-src": TFetchDirective[];
|
|
49
|
+
/**
|
|
50
|
+
* @deprecated
|
|
51
|
+
*/
|
|
52
|
+
"report-uri": string;
|
|
53
|
+
};
|
|
54
|
+
export {};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
//
|
|
3
|
+
// Based on types from https://www.npmjs.com/package/csp-header but adjusted to our needs
|
|
4
|
+
//
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.WASM_UNSAFE_EVAL = exports.UNSAFE_INLINE = exports.UNSAFE_HASHES = exports.UNSAFE_EVAL = exports.REPORT_SAMPLE = exports.STRICT_DYNAMIC = exports.SELF = exports.NONE = exports.ALLOW_TOP_NAVIGATION_BY_USER_ACTIVATION = exports.ALLOW_TOP_NAVIGATION = exports.ALLOW_SCRIPTS = exports.ALLOW_STORAGE_ACCESS_BY_USER_ACTIVATION = exports.ALLOW_SAME_ORIGIN = exports.ALLOW_PRESENTATION = exports.ALLOW_POPUPS_TO_ESCAPE_SANDBOX = exports.ALLOW_POPUPS = exports.ALLOW_POINTER_LOCK = exports.ALLOW_ORIENTATION_LOCK = exports.ALLOW_MODALS = exports.ALLOW_FORMS = exports.ALLOW_DUPLICATES = exports.ALLOW_DOWNLOADS_WITHOUT_USER_ACTIVATION = void 0;
|
|
7
|
+
exports.ALLOW_DOWNLOADS_WITHOUT_USER_ACTIVATION = "allow-downloads-without-user-activation";
|
|
8
|
+
exports.ALLOW_DUPLICATES = "'allow-duplicates'";
|
|
9
|
+
exports.ALLOW_FORMS = "allow-forms";
|
|
10
|
+
exports.ALLOW_MODALS = "allow-modals";
|
|
11
|
+
exports.ALLOW_ORIENTATION_LOCK = "allow-orientation-lock";
|
|
12
|
+
exports.ALLOW_POINTER_LOCK = "allow-pointer-lock";
|
|
13
|
+
exports.ALLOW_POPUPS = "allow-popups";
|
|
14
|
+
exports.ALLOW_POPUPS_TO_ESCAPE_SANDBOX = "allow-popups-to-escape-sandbox";
|
|
15
|
+
exports.ALLOW_PRESENTATION = "allow-presentation";
|
|
16
|
+
exports.ALLOW_SAME_ORIGIN = "allow-same-origin";
|
|
17
|
+
exports.ALLOW_STORAGE_ACCESS_BY_USER_ACTIVATION = "allow-storage-access-by-user-activation";
|
|
18
|
+
exports.ALLOW_SCRIPTS = "allow-allow-scripts";
|
|
19
|
+
exports.ALLOW_TOP_NAVIGATION = "allow-top-navigation";
|
|
20
|
+
exports.ALLOW_TOP_NAVIGATION_BY_USER_ACTIVATION = "allow-top-navigation-by-user-activation";
|
|
21
|
+
exports.NONE = "'none'";
|
|
22
|
+
exports.SELF = "'self'";
|
|
23
|
+
exports.STRICT_DYNAMIC = "'strict-dynamic'";
|
|
24
|
+
exports.REPORT_SAMPLE = "'report-sample'";
|
|
25
|
+
exports.UNSAFE_EVAL = "'unsafe-eval'";
|
|
26
|
+
exports.UNSAFE_HASHES = "'unsafe-hashes'";
|
|
27
|
+
exports.UNSAFE_INLINE = "'unsafe-inline'";
|
|
28
|
+
exports.WASM_UNSAFE_EVAL = "'wasm-unsafe-eval'";
|
|
29
|
+
//# sourceMappingURL=cspDirectives.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cspDirectives.js","sourceRoot":"","sources":["../../../../../../libs/iris-app-sdk/iris-app-api/src/types/cspDirectives.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,yFAAyF;AACzF,EAAE;;;AAEW,QAAA,uCAAuC,GAAG,yCAAyC,CAAC;AACpF,QAAA,gBAAgB,GAAG,oBAAoB,CAAC;AACxC,QAAA,WAAW,GAAG,aAAa,CAAC;AAC5B,QAAA,YAAY,GAAG,cAAc,CAAC;AAC9B,QAAA,sBAAsB,GAAG,wBAAwB,CAAC;AAClD,QAAA,kBAAkB,GAAG,oBAAoB,CAAC;AAC1C,QAAA,YAAY,GAAG,cAAc,CAAC;AAC9B,QAAA,8BAA8B,GAAG,gCAAgC,CAAC;AAClE,QAAA,kBAAkB,GAAG,oBAAoB,CAAC;AAC1C,QAAA,iBAAiB,GAAG,mBAAmB,CAAC;AACxC,QAAA,uCAAuC,GAAG,yCAAyC,CAAC;AACpF,QAAA,aAAa,GAAG,qBAAqB,CAAC;AACtC,QAAA,oBAAoB,GAAG,sBAAsB,CAAC;AAC9C,QAAA,uCAAuC,GAAG,yCAAyC,CAAC;AA0BpF,QAAA,IAAI,GAAG,QAAQ,CAAC;AAChB,QAAA,IAAI,GAAG,QAAQ,CAAC;AAChB,QAAA,cAAc,GAAG,kBAAkB,CAAC;AACpC,QAAA,aAAa,GAAG,iBAAiB,CAAC;AAClC,QAAA,WAAW,GAAG,eAAe,CAAC;AAC9B,QAAA,aAAa,GAAG,iBAAiB,CAAC;AAClC,QAAA,aAAa,GAAG,iBAAiB,CAAC;AAClC,QAAA,gBAAgB,GAAG,oBAAoB,CAAC","sourcesContent":["//\n// Based on types from https://www.npmjs.com/package/csp-header but adjusted to our needs\n//\n\nexport const ALLOW_DOWNLOADS_WITHOUT_USER_ACTIVATION = \"allow-downloads-without-user-activation\";\nexport const ALLOW_DUPLICATES = \"'allow-duplicates'\";\nexport const ALLOW_FORMS = \"allow-forms\";\nexport const ALLOW_MODALS = \"allow-modals\";\nexport const ALLOW_ORIENTATION_LOCK = \"allow-orientation-lock\";\nexport const ALLOW_POINTER_LOCK = \"allow-pointer-lock\";\nexport const ALLOW_POPUPS = \"allow-popups\";\nexport const ALLOW_POPUPS_TO_ESCAPE_SANDBOX = \"allow-popups-to-escape-sandbox\";\nexport const ALLOW_PRESENTATION = \"allow-presentation\";\nexport const ALLOW_SAME_ORIGIN = \"allow-same-origin\";\nexport const ALLOW_STORAGE_ACCESS_BY_USER_ACTIVATION = \"allow-storage-access-by-user-activation\";\nexport const ALLOW_SCRIPTS = \"allow-allow-scripts\";\nexport const ALLOW_TOP_NAVIGATION = \"allow-top-navigation\";\nexport const ALLOW_TOP_NAVIGATION_BY_USER_ACTIVATION = \"allow-top-navigation-by-user-activation\";\n\ntype TSource = string;\ntype TNonce = `nonce-${string}`;\ntype THash = `sha${\"256\" | \"384\" | \"512\"}-${string}`;\ntype TAttrDirective = THash | typeof NONE | typeof UNSAFE_INLINE | typeof UNSAFE_HASHES;\ntype TFetchDirective =\n | TSource\n | TNonce\n | THash\n | typeof NONE\n | typeof SELF\n | typeof UNSAFE_EVAL\n | typeof UNSAFE_HASHES\n | typeof UNSAFE_INLINE;\ntype TNavigationDirective =\n | TSource\n | TNonce\n | THash\n | typeof NONE\n | typeof SELF\n | typeof UNSAFE_EVAL\n | typeof UNSAFE_HASHES\n | typeof UNSAFE_INLINE\n | typeof STRICT_DYNAMIC;\n\nexport const NONE = \"'none'\";\nexport const SELF = \"'self'\";\nexport const STRICT_DYNAMIC = \"'strict-dynamic'\";\nexport const REPORT_SAMPLE = \"'report-sample'\";\nexport const UNSAFE_EVAL = \"'unsafe-eval'\";\nexport const UNSAFE_HASHES = \"'unsafe-hashes'\";\nexport const UNSAFE_INLINE = \"'unsafe-inline'\";\nexport const WASM_UNSAFE_EVAL = \"'wasm-unsafe-eval'\";\n\nexport type CSPDirectives = {\n \"child-src\": TFetchDirective[];\n \"connect-src\": TFetchDirective[];\n \"default-src\": (TFetchDirective | typeof STRICT_DYNAMIC)[];\n \"font-src\": TFetchDirective[];\n \"form-action\": TNavigationDirective[];\n \"frame-src\": TFetchDirective[];\n \"img-src\": (TFetchDirective | typeof STRICT_DYNAMIC)[];\n \"manifest-src\": TFetchDirective[];\n \"media-src\": TFetchDirective[];\n \"object-src\": TFetchDirective[];\n sandbox: (\n | typeof ALLOW_DOWNLOADS_WITHOUT_USER_ACTIVATION\n | typeof ALLOW_FORMS\n | typeof ALLOW_MODALS\n | typeof ALLOW_ORIENTATION_LOCK\n | typeof ALLOW_POINTER_LOCK\n | typeof ALLOW_POPUPS\n | typeof ALLOW_POPUPS_TO_ESCAPE_SANDBOX\n | typeof ALLOW_PRESENTATION\n | typeof ALLOW_SAME_ORIGIN\n | typeof ALLOW_SCRIPTS\n | typeof ALLOW_STORAGE_ACCESS_BY_USER_ACTIVATION\n | typeof ALLOW_TOP_NAVIGATION\n | typeof ALLOW_TOP_NAVIGATION_BY_USER_ACTIVATION\n )[];\n \"script-src\": (TFetchDirective | typeof STRICT_DYNAMIC | typeof REPORT_SAMPLE | typeof WASM_UNSAFE_EVAL)[];\n \"script-src-attr\": (TAttrDirective | typeof REPORT_SAMPLE)[];\n \"script-src-elem\": (TFetchDirective | typeof STRICT_DYNAMIC | typeof REPORT_SAMPLE)[];\n \"style-src\": TFetchDirective[] | typeof REPORT_SAMPLE;\n \"style-src-attr\": (TAttrDirective | typeof REPORT_SAMPLE)[];\n \"style-src-elem\": (TFetchDirective | typeof REPORT_SAMPLE)[];\n \"upgrade-insecure-requests\": boolean;\n \"worker-src\": TFetchDirective[];\n /**\n * @deprecated\n */\n \"report-uri\": string;\n};\n"]}
|
|
@@ -6,3 +6,15 @@
|
|
|
6
6
|
* @returns {string[]} - Array of valid hosts for CSP
|
|
7
7
|
*/
|
|
8
8
|
export declare const defaultValidHosts: () => string[];
|
|
9
|
+
/**
|
|
10
|
+
* Returns default CSP config
|
|
11
|
+
*
|
|
12
|
+
* ! Internal use only !
|
|
13
|
+
*/
|
|
14
|
+
export declare const defaultCspConfig: () => {
|
|
15
|
+
"default-src": string[];
|
|
16
|
+
"script-src": string[];
|
|
17
|
+
"img-src": string[];
|
|
18
|
+
"worker-src": string[];
|
|
19
|
+
"connect-src": string[];
|
|
20
|
+
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.defaultValidHosts = void 0;
|
|
3
|
+
exports.defaultCspConfig = exports.defaultValidHosts = void 0;
|
|
4
4
|
/**
|
|
5
5
|
* Returns default valid hosts for CSP for manager.
|
|
6
6
|
*
|
|
@@ -38,4 +38,19 @@ const defaultValidHosts = () => {
|
|
|
38
38
|
];
|
|
39
39
|
};
|
|
40
40
|
exports.defaultValidHosts = defaultValidHosts;
|
|
41
|
+
/**
|
|
42
|
+
* Returns default CSP config
|
|
43
|
+
*
|
|
44
|
+
* ! Internal use only !
|
|
45
|
+
*/
|
|
46
|
+
const defaultCspConfig = () => {
|
|
47
|
+
return {
|
|
48
|
+
"default-src": (0, exports.defaultValidHosts)(),
|
|
49
|
+
"script-src": (0, exports.defaultValidHosts)(),
|
|
50
|
+
"img-src": (0, exports.defaultValidHosts)(),
|
|
51
|
+
"worker-src": (0, exports.defaultValidHosts)(),
|
|
52
|
+
"connect-src": (0, exports.defaultValidHosts)(),
|
|
53
|
+
};
|
|
54
|
+
};
|
|
55
|
+
exports.defaultCspConfig = defaultCspConfig;
|
|
41
56
|
//# sourceMappingURL=defaultValidHosts.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaultValidHosts.js","sourceRoot":"","sources":["../../../../../../libs/iris-app-sdk/iris-app-api/src/types/defaultValidHosts.ts"],"names":[],"mappings":";;;AAAA;;;;;;GAMG;AACI,MAAM,iBAAiB,GAAG,GAAG,EAAE;IACpC,2EAA2E;IAC3E,OAAO;QACL,mCAAmC;QACnC,qCAAqC;QACrC,mCAAmC;QACnC,wBAAwB;QACxB,wBAAwB;QACxB,wBAAwB;QACxB,8BAA8B;QAC9B,OAAO;QACP,QAAQ;QACR,mCAAmC;QACnC,iCAAiC;QACjC,QAAQ;QACR,gCAAgC;QAChC,QAAQ;QACR,uBAAuB;QACvB,0BAA0B;QAC1B,qBAAqB;QACrB,SAAS;QACT,uBAAuB;QACvB,WAAW;QACX,yBAAyB;QACzB,WAAW;QACX,yBAAyB;QACzB,yBAAyB;KAC1B,CAAC;AACJ,CAAC,CAAC;AA5BW,QAAA,iBAAiB,qBA4B5B","sourcesContent":["/**\n * Returns default valid hosts for CSP for manager.\n *\n * ! Internal use only !\n *\n * @returns {string[]} - Array of valid hosts for CSP\n */\nexport const defaultValidHosts = () => {\n // TRY TO KEEP IN SYNC WITH CHANGES IN server.js from manager (CSP headers)\n return [\n \"https://dev.manager.trackunit.com\",\n \"https://stage.manager.trackunit.com\",\n \"https://new.manager.trackunit.com\",\n \"http://localhost:5005/\",\n \"http://localhost:5010/\",\n \"http://localhost:5011/\",\n //Allow inline data like icons\n \"data:\",\n //IMAGES\n \"https://images.iris.trackunit.com\",\n \"https://*.awsapi.trackunit.com/\", // loading images from machines api\n //SENTRY\n \"https://browser.sentry-cdn.com\",\n //GOOGLE\n \"https://*.gstatic.com\",\n \"https://*.googleapis.com\",\n \"https://*.ggpht.com\",\n //APPCUES\n \"https://*.appcues.com\",\n //AMPLITUDE\n \"https://*.amplitude.com\",\n //SPECCHECK\n \"https://*.speccheck.com\",\n \"https://api.hsforms.com\",\n ];\n};\n"]}
|
|
1
|
+
{"version":3,"file":"defaultValidHosts.js","sourceRoot":"","sources":["../../../../../../libs/iris-app-sdk/iris-app-api/src/types/defaultValidHosts.ts"],"names":[],"mappings":";;;AAAA;;;;;;GAMG;AACI,MAAM,iBAAiB,GAAG,GAAG,EAAE;IACpC,2EAA2E;IAC3E,OAAO;QACL,mCAAmC;QACnC,qCAAqC;QACrC,mCAAmC;QACnC,wBAAwB;QACxB,wBAAwB;QACxB,wBAAwB;QACxB,8BAA8B;QAC9B,OAAO;QACP,QAAQ;QACR,mCAAmC;QACnC,iCAAiC;QACjC,QAAQ;QACR,gCAAgC;QAChC,QAAQ;QACR,uBAAuB;QACvB,0BAA0B;QAC1B,qBAAqB;QACrB,SAAS;QACT,uBAAuB;QACvB,WAAW;QACX,yBAAyB;QACzB,WAAW;QACX,yBAAyB;QACzB,yBAAyB;KAC1B,CAAC;AACJ,CAAC,CAAC;AA5BW,QAAA,iBAAiB,qBA4B5B;AAEF;;;;GAIG;AACI,MAAM,gBAAgB,GAAG,GAAG,EAAE;IACnC,OAAO;QACL,aAAa,EAAE,IAAA,yBAAiB,GAAE;QAClC,YAAY,EAAE,IAAA,yBAAiB,GAAE;QACjC,SAAS,EAAE,IAAA,yBAAiB,GAAE;QAC9B,YAAY,EAAE,IAAA,yBAAiB,GAAE;QACjC,aAAa,EAAE,IAAA,yBAAiB,GAAE;KACnC,CAAC;AACJ,CAAC,CAAC;AARW,QAAA,gBAAgB,oBAQ3B","sourcesContent":["/**\n * Returns default valid hosts for CSP for manager.\n *\n * ! Internal use only !\n *\n * @returns {string[]} - Array of valid hosts for CSP\n */\nexport const defaultValidHosts = () => {\n // TRY TO KEEP IN SYNC WITH CHANGES IN server.js from manager (CSP headers)\n return [\n \"https://dev.manager.trackunit.com\",\n \"https://stage.manager.trackunit.com\",\n \"https://new.manager.trackunit.com\",\n \"http://localhost:5005/\",\n \"http://localhost:5010/\",\n \"http://localhost:5011/\",\n //Allow inline data like icons\n \"data:\",\n //IMAGES\n \"https://images.iris.trackunit.com\",\n \"https://*.awsapi.trackunit.com/\", // loading images from machines api\n //SENTRY\n \"https://browser.sentry-cdn.com\",\n //GOOGLE\n \"https://*.gstatic.com\",\n \"https://*.googleapis.com\",\n \"https://*.ggpht.com\",\n //APPCUES\n \"https://*.appcues.com\",\n //AMPLITUDE\n \"https://*.amplitude.com\",\n //SPECCHECK\n \"https://*.speccheck.com\",\n \"https://api.hsforms.com\",\n ];\n};\n\n/**\n * Returns default CSP config\n *\n * ! Internal use only !\n */\nexport const defaultCspConfig = () => {\n return {\n \"default-src\": defaultValidHosts(),\n \"script-src\": defaultValidHosts(),\n \"img-src\": defaultValidHosts(),\n \"worker-src\": defaultValidHosts(),\n \"connect-src\": defaultValidHosts(),\n };\n};\n"]}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { CSPDirectives } from "./cspDirectives";
|
|
1
2
|
/**
|
|
2
3
|
* This type is used to generate the CSP input for the Iris Apps Csp Header
|
|
3
4
|
*/
|
|
@@ -16,9 +17,16 @@ export type CspDirectives = {
|
|
|
16
17
|
/**
|
|
17
18
|
* This function is used to generate the CSP input for the Iris Apps Csp Header
|
|
18
19
|
*
|
|
19
|
-
* @param validDomains input
|
|
20
|
-
* @param
|
|
21
|
-
* @
|
|
22
|
-
* @returns { CspDirectives } the CSP input for the Iris Apps Csp Header
|
|
20
|
+
* @param validDomains input legacy validDomains from manifest
|
|
21
|
+
* @param cspHeader input cspHeader from manifest
|
|
22
|
+
* @returns the CSP input for the Iris Apps Csp Header
|
|
23
23
|
*/
|
|
24
|
-
export declare const irisAppCspInput: (validDomains
|
|
24
|
+
export declare const irisAppCspInput: (validDomains?: string[], cspHeader?: Partial<CSPDirectives>) => Partial<CSPDirectives>;
|
|
25
|
+
export declare const irisAppDefaultCsp: {
|
|
26
|
+
"default-src": string[];
|
|
27
|
+
"script-src": string[];
|
|
28
|
+
"img-src": string[];
|
|
29
|
+
"worker-src": string[];
|
|
30
|
+
"style-src": string[];
|
|
31
|
+
"connect-src": string[];
|
|
32
|
+
};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.irisAppCspInput = void 0;
|
|
3
|
+
exports.irisAppDefaultCsp = exports.irisAppCspInput = void 0;
|
|
4
|
+
const cspDirectives_1 = require("./cspDirectives");
|
|
4
5
|
const BrandedUrls = [
|
|
5
6
|
"https://*.trackunit.com",
|
|
6
7
|
"https://*.wackerneuson.com",
|
|
@@ -16,30 +17,34 @@ const BrandedUrls = [
|
|
|
16
17
|
/**
|
|
17
18
|
* This function is used to generate the CSP input for the Iris Apps Csp Header
|
|
18
19
|
*
|
|
19
|
-
* @param validDomains input
|
|
20
|
-
* @param
|
|
21
|
-
* @
|
|
22
|
-
* @returns { CspDirectives } the CSP input for the Iris Apps Csp Header
|
|
20
|
+
* @param validDomains input legacy validDomains from manifest
|
|
21
|
+
* @param cspHeader input cspHeader from manifest
|
|
22
|
+
* @returns the CSP input for the Iris Apps Csp Header
|
|
23
23
|
*/
|
|
24
|
-
const irisAppCspInput = (validDomains,
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
"default-src": ["'self'", ...validDomains],
|
|
28
|
-
"script-src": ["'self'", ...validDomains],
|
|
29
|
-
"img-src": ["'self'", "https://images.iris.trackunit.com", "https://*.awsapi.trackunit.com/", ...validDomains],
|
|
30
|
-
"worker-src": ["'self'", ...validDomains],
|
|
31
|
-
"style-src": ["'unsafe-inline'", "https://fonts.googleapis.com"],
|
|
32
|
-
"connect-src": ["'self'", "https://*.sentry.io", "https://sentry.io", ...BrandedUrls, ...validDomains],
|
|
33
|
-
},
|
|
34
|
-
reportUri: "https://o343335.ingest.sentry.io/api/1888181/security/?sentry_key=62900a1fa49748d8ba12f4ffbdbd8e07",
|
|
35
|
-
};
|
|
36
|
-
if (extraScriptSrc) {
|
|
37
|
-
cspInput.directives["script-src"].push(extraScriptSrc);
|
|
24
|
+
const irisAppCspInput = (validDomains, cspHeader) => {
|
|
25
|
+
if (cspHeader) {
|
|
26
|
+
return cspHeader;
|
|
38
27
|
}
|
|
39
|
-
if (
|
|
40
|
-
|
|
28
|
+
else if (validDomains) {
|
|
29
|
+
return {
|
|
30
|
+
"default-src": validDomains,
|
|
31
|
+
"script-src": validDomains,
|
|
32
|
+
"img-src": validDomains,
|
|
33
|
+
"worker-src": validDomains,
|
|
34
|
+
"connect-src": validDomains,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
return {};
|
|
41
39
|
}
|
|
42
|
-
return cspInput;
|
|
43
40
|
};
|
|
44
41
|
exports.irisAppCspInput = irisAppCspInput;
|
|
42
|
+
exports.irisAppDefaultCsp = {
|
|
43
|
+
"default-src": [cspDirectives_1.SELF],
|
|
44
|
+
"script-src": [cspDirectives_1.SELF],
|
|
45
|
+
"img-src": [cspDirectives_1.SELF, "https://images.iris.trackunit.com", "https://*.awsapi.trackunit.com/"],
|
|
46
|
+
"worker-src": [cspDirectives_1.SELF],
|
|
47
|
+
"style-src": [cspDirectives_1.UNSAFE_INLINE, "https://fonts.googleapis.com"],
|
|
48
|
+
"connect-src": [cspDirectives_1.SELF, "https://*.sentry.io", "https://sentry.io", ...BrandedUrls],
|
|
49
|
+
};
|
|
45
50
|
//# sourceMappingURL=irisAppCspInput.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"irisAppCspInput.js","sourceRoot":"","sources":["../../../../../../libs/iris-app-sdk/iris-app-api/src/types/irisAppCspInput.ts"],"names":[],"mappings":";;;AAAA,MAAM,WAAW,GAAG;IAClB,yBAAyB;IACzB,4BAA4B;IAC5B,uBAAuB;IACvB,gCAAgC;IAChC,uBAAuB;IACvB,2BAA2B;IAC3B,uBAAuB;IACvB,uBAAuB;IACvB,yBAAyB;IACzB,sBAAsB;CACvB,CAAC;AAkBF
|
|
1
|
+
{"version":3,"file":"irisAppCspInput.js","sourceRoot":"","sources":["../../../../../../libs/iris-app-sdk/iris-app-api/src/types/irisAppCspInput.ts"],"names":[],"mappings":";;;AAAA,mDAAqE;AAErE,MAAM,WAAW,GAAG;IAClB,yBAAyB;IACzB,4BAA4B;IAC5B,uBAAuB;IACvB,gCAAgC;IAChC,uBAAuB;IACvB,2BAA2B;IAC3B,uBAAuB;IACvB,uBAAuB;IACvB,yBAAyB;IACzB,sBAAsB;CACvB,CAAC;AAkBF;;;;;;GAMG;AACI,MAAM,eAAe,GAAG,CAC7B,YAAuB,EACvB,SAAkC,EACV,EAAE;IAC1B,IAAI,SAAS,EAAE;QACb,OAAO,SAAS,CAAC;KAClB;SAAM,IAAI,YAAY,EAAE;QACvB,OAAO;YACL,aAAa,EAAE,YAAY;YAC3B,YAAY,EAAE,YAAY;YAC1B,SAAS,EAAE,YAAY;YACvB,YAAY,EAAE,YAAY;YAC1B,aAAa,EAAE,YAAY;SAC5B,CAAC;KACH;SAAM;QACL,OAAO,EAAE,CAAC;KACX;AACH,CAAC,CAAC;AAjBW,QAAA,eAAe,mBAiB1B;AAEW,QAAA,iBAAiB,GAAG;IAC/B,aAAa,EAAE,CAAC,oBAAI,CAAC;IACrB,YAAY,EAAE,CAAC,oBAAI,CAAC;IACpB,SAAS,EAAE,CAAC,oBAAI,EAAE,mCAAmC,EAAE,iCAAiC,CAAC;IACzF,YAAY,EAAE,CAAC,oBAAI,CAAC;IACpB,WAAW,EAAE,CAAC,6BAAa,EAAE,8BAA8B,CAAC;IAC5D,aAAa,EAAE,CAAC,oBAAI,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,GAAG,WAAW,CAAC;CAClF,CAAC","sourcesContent":["import { CSPDirectives, SELF, UNSAFE_INLINE } from \"./cspDirectives\";\n\nconst BrandedUrls = [\n \"https://*.trackunit.com\",\n \"https://*.wackerneuson.com\",\n \"https://*.manitou.com\",\n \"https://*.niftylinkmanager.com\",\n \"https://*.skyjack.com\",\n \"https://*.ahernaccess.com\",\n \"https://*.magnith.com\",\n \"https://*.terberg.com\",\n \"https://*.mymecalac.com\",\n \"https://*.delille.be\",\n];\n\n/**\n * This type is used to generate the CSP input for the Iris Apps Csp Header\n */\nexport type CspDirectives = {\n directives: {\n \"default-src\": string[];\n \"script-src\": string[];\n \"worker-src\": string[];\n \"style-src\": string[];\n \"img-src\": string[];\n \"connect-src\": string[];\n \"frame-ancestors\"?: string[];\n };\n reportUri?: string;\n};\n\n/**\n * This function is used to generate the CSP input for the Iris Apps Csp Header\n *\n * @param validDomains input legacy validDomains from manifest\n * @param cspHeader input cspHeader from manifest\n * @returns the CSP input for the Iris Apps Csp Header\n */\nexport const irisAppCspInput = (\n validDomains?: string[],\n cspHeader?: Partial<CSPDirectives>\n): Partial<CSPDirectives> => {\n if (cspHeader) {\n return cspHeader;\n } else if (validDomains) {\n return {\n \"default-src\": validDomains,\n \"script-src\": validDomains,\n \"img-src\": validDomains,\n \"worker-src\": validDomains,\n \"connect-src\": validDomains,\n };\n } else {\n return {};\n }\n};\n\nexport const irisAppDefaultCsp = {\n \"default-src\": [SELF],\n \"script-src\": [SELF],\n \"img-src\": [SELF, \"https://images.iris.trackunit.com\", \"https://*.awsapi.trackunit.com/\"],\n \"worker-src\": [SELF],\n \"style-src\": [UNSAFE_INLINE, \"https://fonts.googleapis.com\"],\n \"connect-src\": [SELF, \"https://*.sentry.io\", \"https://sentry.io\", ...BrandedUrls],\n};\n"]}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { CSPDirectives } from "./cspDirectives";
|
|
1
2
|
import { AdminExtensionManifest, AssetEventsActionsExtensionManifest, AssetHomeExtensionManifest, FleetExtensionManifest, IrisAppSettingsExtensionManifest, ReportExtensionManifest, SiteHomeExtensionManifest } from "./extensions";
|
|
2
3
|
import { WidgetExtensionManifest } from "./extensions/widgetExtensionManifest";
|
|
3
4
|
import { BooleanFieldDefinition, DateFieldDefinition, DecimalNumberFieldDefinition, DropDownFieldDefinition, EmailFieldDefinition, IntegerNumberFieldDefinition, JsonFieldDefinition, MonetaryFieldDefinition, PhoneNumberFieldDefinition, StringFieldDefinition, WebAddressFieldDefinition } from "./irisAppCustomFields";
|
|
@@ -31,6 +32,7 @@ export interface IrisAppManifest extends Omit<IrisAppManifest_1_0, "specVersion"
|
|
|
31
32
|
tokenCallback?: {
|
|
32
33
|
url: string;
|
|
33
34
|
};
|
|
35
|
+
cspHeader?: Partial<CSPDirectives>;
|
|
34
36
|
}
|
|
35
37
|
export type RequiredOrOptionalScope = {
|
|
36
38
|
scope: Scope;
|
|
@@ -83,6 +85,8 @@ export interface IrisAppManifest_1_0 {
|
|
|
83
85
|
moduleFederationName: string;
|
|
84
86
|
/**
|
|
85
87
|
* A configuration object for handling scoped token acquisition.
|
|
88
|
+
*
|
|
89
|
+
* @deprecated Use `scopes` instead.
|
|
86
90
|
*/
|
|
87
91
|
consentConfig?: ConsentConfig | "inherit";
|
|
88
92
|
/**
|
|
@@ -98,6 +102,8 @@ export interface IrisAppManifest_1_0 {
|
|
|
98
102
|
* - CONTROLLED_AUTOMATIC_INSTALLATION then it will be controlled by the team that activates the subscription package for the customer, also adding.
|
|
99
103
|
*
|
|
100
104
|
* All modes will take into consideration both {@link IrisAppManifest_1_0.validForAccountIds} and {@link IrisAppManifest_1_0.marketplace}.allowForPackage
|
|
105
|
+
*
|
|
106
|
+
* @deprecated Use `installation.policy` instead.
|
|
101
107
|
*/
|
|
102
108
|
activationMode: ActivationMode;
|
|
103
109
|
/**
|
|
@@ -105,8 +111,10 @@ export interface IrisAppManifest_1_0 {
|
|
|
105
111
|
* The list is audited in the approval step of the app and every external API call
|
|
106
112
|
* must be listed here to get through the verification process.
|
|
107
113
|
* Even if it goes through without being listed, your app will fail to call the endpoint.
|
|
114
|
+
*
|
|
115
|
+
* @deprecated Use `cspHeader` instead
|
|
108
116
|
*/
|
|
109
|
-
validDomains
|
|
117
|
+
validDomains?: string[];
|
|
110
118
|
/**
|
|
111
119
|
* Put `ALL_ACCOUNTS` in if your app is available to all users.
|
|
112
120
|
* If you want to only make it available to certain users, provide a list of account ID's as strings.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"irisAppManifest.js","sourceRoot":"","sources":["../../../../../../libs/iris-app-sdk/iris-app-api/src/types/irisAppManifest.ts"],"names":[],"mappings":"","sourcesContent":["import {\n AdminExtensionManifest,\n AssetEventsActionsExtensionManifest,\n AssetHomeExtensionManifest,\n FleetExtensionManifest,\n IrisAppSettingsExtensionManifest,\n ReportExtensionManifest,\n SiteHomeExtensionManifest,\n} from \"./extensions\";\nimport { WidgetExtensionManifest } from \"./extensions/widgetExtensionManifest\";\nimport {\n BooleanFieldDefinition,\n DateFieldDefinition,\n DecimalNumberFieldDefinition,\n DropDownFieldDefinition,\n EmailFieldDefinition,\n IntegerNumberFieldDefinition,\n JsonFieldDefinition,\n MonetaryFieldDefinition,\n PhoneNumberFieldDefinition,\n StringFieldDefinition,\n WebAddressFieldDefinition,\n} from \"./irisAppCustomFields\";\nimport { InstallationConfig } from \"./irisAppInstallationConfig\";\nimport { Marketplace, Marketplace_1_0 } from \"./irisAppMarketplace\";\nimport { Scope } from \"./scopes\";\n\nexport interface IrisAppManifest\n extends Omit<\n IrisAppManifest_1_0,\n \"specVersion\" | \"activationMode\" | \"marketplace\" | \"validForAccountIds\" | \"consentConfig\"\n > {\n /**\n * A spec version for the manifest.\n * This should not be changed manually.\n */\n specVersion: \"1.1\";\n\n /**\n * Configuration for the installation of the app.\n *\n * Each parameter can be combined to create rules to target specific customers.\n * Each parameter works as a filter to decide if an app is available to a specific customer.\n */\n installation: InstallationConfig;\n\n /**\n * A configuration object for the Marketplace entry\n */\n marketplace: Marketplace;\n\n /**\n * Scopes needed in app tokens, these scopes are used from the token - when contacting Trackunits backend.\n */\n scopes?: RequiredOrOptionalScope | RequiredOrOptionalScope[];\n\n /**\n * Configuration of callback to get credentials to call the API after app installation.\n */\n tokenCallback?: {\n url: string;\n };\n}\n\nexport type RequiredOrOptionalScope = { scope: Scope; optional?: boolean };\n\nexport declare type IrisAppExtension =\n | AssetHomeExtensionManifest\n | IrisAppSettingsExtensionManifest\n | AdminExtensionManifest\n | FleetExtensionManifest\n | SiteHomeExtensionManifest\n | WidgetExtensionManifest\n | ReportExtensionManifest\n | AssetEventsActionsExtensionManifest;\n\nexport declare type CustomFieldDefinition =\n | BooleanFieldDefinition\n | DecimalNumberFieldDefinition\n | IntegerNumberFieldDefinition\n | DateFieldDefinition\n | DropDownFieldDefinition\n | StringFieldDefinition\n | EmailFieldDefinition\n | PhoneNumberFieldDefinition\n | WebAddressFieldDefinition\n | JsonFieldDefinition\n | MonetaryFieldDefinition;\n\n/**\n * @deprecated\n */\nexport interface ConsentConfig {\n /**\n * The application type. Should be one of WEB or BROWSER.\n */\n applicationType: \"WEB\" | \"BROWSER\";\n /**\n * List of scopes required by the application.\n */\n scopes: string[];\n /**\n * List of redirect URIs to be used when returning an authorization code.\n */\n redirectUris?: string[];\n}\n\nexport interface Dependencies {\n [packageName: string]: string;\n}\n\nexport type PublicIrisAppManifest = Omit<IrisAppManifest, \"dependencies\" | \"devDependencies\" | \"installation\"> & {\n /**\n * Relative path for this iris app.\n *\n * @returns {string} the path to the iris app\n */\n irisAppPath: string;\n\n installation: Omit<InstallationConfig, \"accountIds\">;\n};\n\n/**\n * @deprecated\n */\nexport interface IrisAppManifest_1_0 {\n /**\n * A spec version for the manifest.\n * This should not be changed manually.\n */\n specVersion: \"1.0\";\n /**\n * The name of the exposed module from module federation build into the remoteEntry.js.\n * Basically the name of your app including workspace name, automatically parsed from your app-specific package.json.\n */\n moduleFederationName: string;\n\n /**\n * A configuration object for handling scoped token acquisition.\n */\n consentConfig?: ConsentConfig | \"inherit\";\n\n /**\n * Controls the visibility of your app and how it is installed.\n * The different modes are:\n * - Enabled means its enabled on the subscription when this Iris app is approved.\n * - Visible means it will be visible to the customer to choose for them selves to enable/disable it.\n *\n * - FORCE_ENABLE then it can not be removed by the end customer, and will be installed based on the selected subscription package.\n * - DEFAULT_ENABLE means it will be enabled when a customer activates a new subscription package.\n * - ALWAYS_VISIBLE then it will always be visible for all customers.\n * - CONTROLLED_MANUAL_INSTALLATION then it will be controlled by the team that activates the subscription package for the customer, not activating the app.\n * - CONTROLLED_AUTOMATIC_INSTALLATION then it will be controlled by the team that activates the subscription package for the customer, also adding.\n *\n * All modes will take into consideration both {@link IrisAppManifest_1_0.validForAccountIds} and {@link IrisAppManifest_1_0.marketplace}.allowForPackage\n */\n activationMode: ActivationMode;\n\n /**\n * A list of any external domains that the app needs to communicate with.\n * The list is audited in the approval step of the app and every external API call\n * must be listed here to get through the verification process.\n * Even if it goes through without being listed, your app will fail to call the endpoint.\n */\n validDomains
|
|
1
|
+
{"version":3,"file":"irisAppManifest.js","sourceRoot":"","sources":["../../../../../../libs/iris-app-sdk/iris-app-api/src/types/irisAppManifest.ts"],"names":[],"mappings":"","sourcesContent":["import { CSPDirectives } from \"./cspDirectives\";\nimport {\n AdminExtensionManifest,\n AssetEventsActionsExtensionManifest,\n AssetHomeExtensionManifest,\n FleetExtensionManifest,\n IrisAppSettingsExtensionManifest,\n ReportExtensionManifest,\n SiteHomeExtensionManifest,\n} from \"./extensions\";\nimport { WidgetExtensionManifest } from \"./extensions/widgetExtensionManifest\";\nimport {\n BooleanFieldDefinition,\n DateFieldDefinition,\n DecimalNumberFieldDefinition,\n DropDownFieldDefinition,\n EmailFieldDefinition,\n IntegerNumberFieldDefinition,\n JsonFieldDefinition,\n MonetaryFieldDefinition,\n PhoneNumberFieldDefinition,\n StringFieldDefinition,\n WebAddressFieldDefinition,\n} from \"./irisAppCustomFields\";\nimport { InstallationConfig } from \"./irisAppInstallationConfig\";\nimport { Marketplace, Marketplace_1_0 } from \"./irisAppMarketplace\";\nimport { Scope } from \"./scopes\";\n\nexport interface IrisAppManifest\n extends Omit<\n IrisAppManifest_1_0,\n \"specVersion\" | \"activationMode\" | \"marketplace\" | \"validForAccountIds\" | \"consentConfig\"\n > {\n /**\n * A spec version for the manifest.\n * This should not be changed manually.\n */\n specVersion: \"1.1\";\n\n /**\n * Configuration for the installation of the app.\n *\n * Each parameter can be combined to create rules to target specific customers.\n * Each parameter works as a filter to decide if an app is available to a specific customer.\n */\n installation: InstallationConfig;\n\n /**\n * A configuration object for the Marketplace entry\n */\n marketplace: Marketplace;\n\n /**\n * Scopes needed in app tokens, these scopes are used from the token - when contacting Trackunits backend.\n */\n scopes?: RequiredOrOptionalScope | RequiredOrOptionalScope[];\n\n /**\n * Configuration of callback to get credentials to call the API after app installation.\n */\n tokenCallback?: {\n url: string;\n };\n\n cspHeader?: Partial<CSPDirectives>;\n}\n\nexport type RequiredOrOptionalScope = { scope: Scope; optional?: boolean };\n\nexport declare type IrisAppExtension =\n | AssetHomeExtensionManifest\n | IrisAppSettingsExtensionManifest\n | AdminExtensionManifest\n | FleetExtensionManifest\n | SiteHomeExtensionManifest\n | WidgetExtensionManifest\n | ReportExtensionManifest\n | AssetEventsActionsExtensionManifest;\n\nexport declare type CustomFieldDefinition =\n | BooleanFieldDefinition\n | DecimalNumberFieldDefinition\n | IntegerNumberFieldDefinition\n | DateFieldDefinition\n | DropDownFieldDefinition\n | StringFieldDefinition\n | EmailFieldDefinition\n | PhoneNumberFieldDefinition\n | WebAddressFieldDefinition\n | JsonFieldDefinition\n | MonetaryFieldDefinition;\n\n/**\n * @deprecated\n */\nexport interface ConsentConfig {\n /**\n * The application type. Should be one of WEB or BROWSER.\n */\n applicationType: \"WEB\" | \"BROWSER\";\n /**\n * List of scopes required by the application.\n */\n scopes: string[];\n /**\n * List of redirect URIs to be used when returning an authorization code.\n */\n redirectUris?: string[];\n}\n\nexport interface Dependencies {\n [packageName: string]: string;\n}\n\nexport type PublicIrisAppManifest = Omit<IrisAppManifest, \"dependencies\" | \"devDependencies\" | \"installation\"> & {\n /**\n * Relative path for this iris app.\n *\n * @returns {string} the path to the iris app\n */\n irisAppPath: string;\n\n installation: Omit<InstallationConfig, \"accountIds\">;\n};\n\n/**\n * @deprecated\n */\nexport interface IrisAppManifest_1_0 {\n /**\n * A spec version for the manifest.\n * This should not be changed manually.\n */\n specVersion: \"1.0\";\n /**\n * The name of the exposed module from module federation build into the remoteEntry.js.\n * Basically the name of your app including workspace name, automatically parsed from your app-specific package.json.\n */\n moduleFederationName: string;\n\n /**\n * A configuration object for handling scoped token acquisition.\n *\n * @deprecated Use `scopes` instead.\n */\n consentConfig?: ConsentConfig | \"inherit\";\n\n /**\n * Controls the visibility of your app and how it is installed.\n * The different modes are:\n * - Enabled means its enabled on the subscription when this Iris app is approved.\n * - Visible means it will be visible to the customer to choose for them selves to enable/disable it.\n *\n * - FORCE_ENABLE then it can not be removed by the end customer, and will be installed based on the selected subscription package.\n * - DEFAULT_ENABLE means it will be enabled when a customer activates a new subscription package.\n * - ALWAYS_VISIBLE then it will always be visible for all customers.\n * - CONTROLLED_MANUAL_INSTALLATION then it will be controlled by the team that activates the subscription package for the customer, not activating the app.\n * - CONTROLLED_AUTOMATIC_INSTALLATION then it will be controlled by the team that activates the subscription package for the customer, also adding.\n *\n * All modes will take into consideration both {@link IrisAppManifest_1_0.validForAccountIds} and {@link IrisAppManifest_1_0.marketplace}.allowForPackage\n *\n * @deprecated Use `installation.policy` instead.\n */\n activationMode: ActivationMode;\n\n /**\n * A list of any external domains that the app needs to communicate with.\n * The list is audited in the approval step of the app and every external API call\n * must be listed here to get through the verification process.\n * Even if it goes through without being listed, your app will fail to call the endpoint.\n *\n * @deprecated Use `cspHeader` instead\n */\n validDomains?: string[];\n /**\n * Put `ALL_ACCOUNTS` in if your app is available to all users.\n * If you want to only make it available to certain users, provide a list of account ID's as strings.\n */\n validForAccountIds: \"ALL_ACCOUNTS\" | string[];\n /**\n * A configuration object for the Marketplace entry.\n * Holds all the settings associated with your apps listing on the marketplace.\n */\n marketplace: Marketplace_1_0;\n /**\n * A full list of runtime dependencies for the App.\n * Used for performance optimization and security scans.\n * It is automatically parsed from the package.json in root.\n */\n dependencies: Dependencies;\n\n /**\n * A full list of dev dependencies for the App.\n * Used for security scans.\n */\n devDependencies: Dependencies;\n\n /**\n * A list of extensions to the UI that this app manifest exposes.\n * Extensions are automatically added when a new extension is generated.\n * The array contains an import of the extension manifest within the extension.\n * If an extension is required in multiple apps, the you must manually add it to the arrays of those apps.\n */\n extensions: IrisAppExtension[];\n\n /**\n * A list of custom field definitions.\n */\n customFieldDefinitions?: CustomFieldDefinition[];\n}\n\n/**\n * @deprecated\n */\nexport type ActivationMode =\n | \"FORCE_ENABLE\"\n | \"DEFAULT_ENABLE\"\n | \"ALWAYS_VISIBLE\"\n | \"CONTROLLED_MANUAL_INSTALLATION\"\n | \"CONTROLLED_AUTOMATIC_INSTALLATION\";\n"]}
|