@worktile/planet 17.0.0-next.0 → 17.0.0-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.
@@ -51,8 +51,8 @@ export function isFunction(value) {
51
51
  const type = typeof value;
52
52
  return !!value && type === 'function';
53
53
  }
54
- export function isObject(val) {
55
- return val && typeof val === 'object';
54
+ export function isObject(value) {
55
+ return value && typeof value === 'object';
56
56
  }
57
57
  /**
58
58
  * Get file name from path
@@ -69,6 +69,15 @@ export function getResourceFileName(path) {
69
69
  return path;
70
70
  }
71
71
  }
72
+ export function getExtName(name) {
73
+ const lastDotIndex = name.lastIndexOf('.');
74
+ if (lastDotIndex >= 0) {
75
+ return name.slice(lastDotIndex + 1);
76
+ }
77
+ else {
78
+ return '';
79
+ }
80
+ }
72
81
  /**
73
82
  * Build resource path by manifest
74
83
  * if manifest is { "main.js": "main.h2sh23abee.js"}
@@ -86,34 +95,91 @@ export function buildResourceFilePath(resourceFilePath, manifestResult) {
86
95
  return resourceFilePath;
87
96
  }
88
97
  }
98
+ export function buildFullPath(path, basePath) {
99
+ if (basePath) {
100
+ if (path.startsWith(basePath)) {
101
+ return path;
102
+ }
103
+ else {
104
+ return `${basePath}${path}`;
105
+ }
106
+ }
107
+ return path;
108
+ }
109
+ function getDefinedAssets(app) {
110
+ if (app.entry) {
111
+ return {
112
+ scripts: isObject(app.entry) ? app.entry.scripts : undefined,
113
+ styles: isObject(app.entry) ? app.entry.styles : undefined
114
+ };
115
+ }
116
+ return {
117
+ scripts: app.scripts,
118
+ styles: app.styles
119
+ };
120
+ }
121
+ export function getAssetsBasePath(app) {
122
+ let basePath;
123
+ if (app.entry) {
124
+ if (isObject(app.entry)) {
125
+ basePath = app.entry.basePath;
126
+ }
127
+ else {
128
+ const lastDotIndex = app.entry.lastIndexOf('/');
129
+ basePath = lastDotIndex > 0 ? app.entry.slice(0, lastDotIndex + 1) : undefined;
130
+ }
131
+ }
132
+ return basePath || app.resourcePathPrefix;
133
+ }
89
134
  /**
90
135
  * Get static resource full path
91
136
  * @param app PlanetApplication
92
137
  * @param manifestResult manifest
93
138
  */
94
- export function getScriptsAndStylesFullPaths(app, manifestResult) {
95
- let scripts = app.scripts || [];
96
- let styles = app.styles || [];
139
+ export function getScriptsAndStylesFullPaths(app, basePath, manifestResult) {
140
+ let { scripts, styles } = getDefinedAssets(app);
97
141
  // combine resource path by manifest
98
142
  if (manifestResult) {
99
- scripts = scripts.map(script => {
100
- return buildResourceFilePath(script, manifestResult);
101
- });
102
- styles = styles.map(style => {
103
- return buildResourceFilePath(style, manifestResult);
104
- });
143
+ if (scripts) {
144
+ scripts = scripts.map(script => {
145
+ return buildResourceFilePath(script, manifestResult);
146
+ });
147
+ }
148
+ else {
149
+ scripts = Object.keys(manifestResult)
150
+ .filter(key => {
151
+ return getExtName(key) === 'js';
152
+ })
153
+ .map(key => {
154
+ return manifestResult[key];
155
+ });
156
+ }
157
+ if (styles) {
158
+ styles = styles.map(style => {
159
+ return buildResourceFilePath(style, manifestResult);
160
+ });
161
+ }
162
+ else {
163
+ styles = Object.keys(manifestResult)
164
+ .filter(key => {
165
+ return getExtName(key) === 'css';
166
+ })
167
+ .map(key => {
168
+ return manifestResult[key];
169
+ });
170
+ }
105
171
  }
106
- if (app.resourcePathPrefix) {
172
+ if (basePath) {
107
173
  scripts = scripts.map(script => {
108
- return `${app.resourcePathPrefix}${script}`;
174
+ return buildFullPath(script, basePath);
109
175
  });
110
176
  styles = styles.map(style => {
111
- return `${app.resourcePathPrefix}${style}`;
177
+ return buildFullPath(style, basePath);
112
178
  });
113
179
  }
114
180
  return {
115
- scripts: scripts,
116
- styles: styles
181
+ scripts: scripts || [],
182
+ styles: styles || []
117
183
  };
118
184
  }
119
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL3BsYW5ldC9zcmMvaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLGlCQUFpQixHQUFHLENBQUMsQ0FBQztBQUU1QixNQUFNLFVBQVUsUUFBUSxDQUFDLEdBQVc7SUFDaEMsSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBQ2IsSUFBSSxHQUFXLENBQUM7SUFDaEIsSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ25CLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFDRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ2xDLEdBQUcsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hCLElBQUksR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLEdBQUcsR0FBRyxDQUFDO1FBQ2hDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQywyQkFBMkI7SUFDMUMsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2hCLENBQUM7QUFFRCxNQUFNLFVBQVUsY0FBYyxDQUFDLFFBQThCO0lBQ3pELElBQUksUUFBUSxZQUFZLFdBQVcsRUFBRSxDQUFDO1FBQ2xDLE9BQU8sUUFBUSxDQUFDO0lBQ3BCLENBQUM7U0FBTSxDQUFDO1FBQ0osT0FBTyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzVDLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLG9CQUFvQixDQUFDLFFBQWdCO0lBQ2pELE1BQU0sT0FBTyxHQUFHLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2xELE9BQU8sT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFB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QUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3hCLE9BQU8scUJBQXFCLENBQUMsS0FBSyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBQ3hELENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUNELElBQUksR0FBRyxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDekIsT0FBTyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDM0IsT0FBTyxHQUFHLEdBQUcsQ0FBQyxrQkFBa0IsR0FBRyxNQUFNLEVBQUUsQ0FBQztRQUNoRCxDQUFDLENBQUMsQ0FBQztRQUNILE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3hCLE9BQU8sR0FBRyxHQUFHLENBQUMsa0JBQWtCLEdBQUcsS0FBSyxFQUFFLENBQUM7UUFDL0MsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ0QsT0FBTztRQUNILE9BQU8sRUFBRSxPQUFPO1FBQ2hCLE1BQU0sRUFBRSxNQUFNO0tBQ2pCLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGxhbmV0QXBwbGljYXRpb24gfSBmcm9tICcuL3BsYW5ldC5jbGFzcyc7XG5cbmNvbnN0IEVMRU1FTlRfTk9ERV9UWVBFID0gMTtcblxuZXhwb3J0IGZ1bmN0aW9uIGhhc2hDb2RlKHN0cjogc3RyaW5nKTogbnVtYmVyIHtcbiAgICBsZXQgaGFzaCA9IDA7XG4gICAgbGV0IGNocjogbnVtYmVyO1xuICAgIGlmIChzdHIubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBoYXNoO1xuICAgIH1cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0ci5sZW5ndGg7IGkrKykge1xuICAgICAgICBjaHIgPSBzdHIuY2hhckNvZGVBdChpKTtcbiAgICAgICAgaGFzaCA9IChoYXNoIDw8IDUpIC0gaGFzaCArIGNocjtcbiAgICAgICAgaGFzaCB8PSAwOyAvLyBDb252ZXJ0IHRvIDMyYml0IGludGVnZXJcbiAgICB9XG4gICAgcmV0dXJuIGhhc2g7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRIVE1MRWxlbWVudChzZWxlY3Rvcjogc3RyaW5nIHwgSFRNTEVsZW1lbnQpOiBIVE1MRWxlbWVudCB8IG51bGwge1xuICAgIGlmIChzZWxlY3RvciBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XG4gICAgICAgIHJldHVybiBzZWxlY3RvcjtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihzZWxlY3Rvcik7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGFnTmFtZUJ5VGVtcGxhdGUodGVtcGxhdGU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgZWxlbWVudCA9IGNyZWF0ZUVsZW1lbnRCeVRlbXBsYXRlKHRlbXBsYXRlKTtcbiAgICByZXR1cm4gZWxlbWVudCA/IGVsZW1lbnQubm9kZU5hbWUgOiAnJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnRCeVRlbXBsYXRlKHRlbXBsYXRlOiBzdHJpbmcpIHtcbiAgICBpZiAoIXRlbXBsYXRlKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKS5jcmVhdGVDb250ZXh0dWFsRnJhZ21lbnQodGVtcGxhdGUpLmZpcnN0Q2hpbGQ7XG4gICAgaWYgKGVsZW1lbnQgJiYgZWxlbWVudC5ub2RlVHlwZSA9PT0gRUxFTUVOVF9OT0RFX1RZUEUpIHtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIHRlbXBsYXRlICcke3RlbXBsYXRlfSdgKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb2VyY2VBcnJheTxUPih2YWx1ZTogVCB8IFRbXSk6IFRbXSB7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNFbXB0eSh2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gICAgaWYgKCF2YWx1ZSB8fCB2YWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRnVuY3Rpb24odmFsdWU6IGFueSk6IHZhbHVlIGlzIEZ1bmN0aW9uIHtcbiAgICBjb25zdCB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICAgIHJldHVybiAhIXZhbHVlICYmIHR5cGUgPT09ICdmdW5jdGlvbic7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc09iamVjdCh2YWw6IGFueSkge1xuICAgIHJldHVybiB2YWwgJiYgdHlwZW9mIHZhbCA9PT0gJ29iamVjdCc7XG59XG4vKipcbiAqIEdldCBmaWxlIG5hbWUgZnJvbSBwYXRoXG4gKiAxLiBcIm1haW4uanNcIiA9PiBcIm1haW4uanNcIlxuICogMi4gXCJhc3NldHMvc2NyaXB0cy9tYWluLmpzXCIgPT4gXCJtYWluLmpzXCJcbiAqIEBwYXJhbSBwYXRoIHBhdGhcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFJlc291cmNlRmlsZU5hbWUocGF0aDogc3RyaW5nKSB7XG4gICAgY29uc3QgbGFzdFNsYXNoSW5kZXggPSBwYXRoLmxhc3RJbmRleE9mKCcvJyk7XG4gICAgaWYgKGxhc3RTbGFzaEluZGV4ID49IDApIHtcbiAgICAgICAgcmV0dXJuIHBhdGguc2xpY2UobGFzdFNsYXNoSW5kZXggKyAxKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gcGF0aDtcbiAgICB9XG59XG5cbi8qKlxuICogQnVpbGQgcmVzb3VyY2UgcGF0aCBieSBtYW5pZmVzdFxuICogaWYgbWFuaWZlc3QgaXMgeyBcIm1haW4uanNcIjogXCJtYWluLmgyc2gyM2FiZWUuanNcIn1cbiAqIDEuIFwibWFpbi5qc1wiID0+IFwibWFpbi5oMnNoMjNhYmVlLmpzXCJcbiAqIDIuIFwiYXNzZXRzL3NjcmlwdHMvbWFpbi5qc1wiID0+XCJhc3NldHMvc2NyaXB0cy9tYWluLmgyc2gyM2FiZWUuanNcIlxuICogQHBhcmFtIHJlc291cmNlRmlsZVBhdGggUmVzb3VyY2UgRmlsZSBQYXRoXG4gKiBAcGFyYW0gbWFuaWZlc3RSZXN1bHQgbWFuaWZlc3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkUmVzb3VyY2VGaWxlUGF0aChyZXNvdXJjZUZpbGVQYXRoOiBzdHJpbmcsIG1hbmlmZXN0UmVzdWx0OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9KSB7XG4gICAgY29uc3QgZmlsZU5hbWUgPSBnZXRSZXNvdXJjZUZpbGVOYW1lKHJlc291cmNlRmlsZVBhdGgpO1xuICAgIGlmIChtYW5pZmVzdFJlc3VsdFtmaWxlTmFtZV0pIHtcbiAgICAgICAgcmV0dXJuIHJlc291cmNlRmlsZVBhdGgucmVwbGFjZShmaWxlTmFtZSwgbWFuaWZlc3RSZXN1bHRbZmlsZU5hbWVdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gcmVzb3VyY2VGaWxlUGF0aDtcbiAgICB9XG59XG5cbi8qKlxuICogR2V0IHN0YXRpYyByZXNvdXJjZSBmdWxsIHBhdGhcbiAqIEBwYXJhbSBhcHAgUGxhbmV0QXBwbGljYXRpb25cbiAqIEBwYXJhbSBtYW5pZmVzdFJlc3VsdCBtYW5pZmVzdFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2NyaXB0c0FuZFN0eWxlc0Z1bGxQYXRocyhhcHA6IFBsYW5ldEFwcGxpY2F0aW9uLCBtYW5pZmVzdFJlc3VsdD86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0pIHtcbiAgICBsZXQgc2NyaXB0cyA9IGFwcC5zY3JpcHRzIHx8IFtdO1xuICAgIGxldCBzdHlsZXMgPSBhcHAuc3R5bGVzIHx8IFtdO1xuICAgIC8vIGNvbWJpbmUgcmVzb3VyY2UgcGF0aCBieSBtYW5pZmVzdFxuICAgIGlmIChtYW5pZmVzdFJlc3VsdCkge1xuICAgICAgICBzY3JpcHRzID0gc2NyaXB0cy5tYXAoc2NyaXB0ID0+IHtcbiAgICAgICAgICAgIHJldHVybiBidWlsZFJlc291cmNlRmlsZVBhdGgoc2NyaXB0LCBtYW5pZmVzdFJlc3VsdCk7XG4gICAgICAgIH0pO1xuICAgICAgICBzdHlsZXMgPSBzdHlsZXMubWFwKHN0eWxlID0+IHtcbiAgICAgICAgICAgIHJldHVybiBidWlsZFJlc291cmNlRmlsZVBhdGgoc3R5bGUsIG1hbmlmZXN0UmVzdWx0KTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChhcHAucmVzb3VyY2VQYXRoUHJlZml4KSB7XG4gICAgICAgIHNjcmlwdHMgPSBzY3JpcHRzLm1hcChzY3JpcHQgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGAke2FwcC5yZXNvdXJjZVBhdGhQcmVmaXh9JHtzY3JpcHR9YDtcbiAgICAgICAgfSk7XG4gICAgICAgIHN0eWxlcyA9IHN0eWxlcy5tYXAoc3R5bGUgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGAke2FwcC5yZXNvdXJjZVBhdGhQcmVmaXh9JHtzdHlsZX1gO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgc2NyaXB0czogc2NyaXB0cyxcbiAgICAgICAgc3R5bGVzOiBzdHlsZXNcbiAgICB9O1xufVxuIl19
185
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL3BsYW5ldC9zcmMvaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLGlCQUFpQixHQUFHLENBQUMsQ0FBQztBQUU1QixNQUFNLFVBQVUsUUFBUSxDQUFDLEdBQVc7SUFDaEMsSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBQ2IsSUFBSSxHQUFXLENBQUM7SUFDaEIsSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ25CLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFDRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ2xDLEdBQUcsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hCLElBQUksR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLEdBQUcsR0FBRyxDQUFDO1FBQ2hDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQywyQkFBMkI7SUFDMUMsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2hCLENBQUM7QUFFRCxNQUFNLFVBQVUsY0FBYyxDQUFDLFFBQThCO0lBQ3pELElBQUksUUFBUSxZQUFZLFdBQVcsRUFBRSxDQUFDO1FBQ2xDLE9BQU8sUUFBUSxDQUFDO0lBQ3BCLENBQUM7U0FBTSxDQUFDO1FBQ0osT0FBTyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzVDLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLG9CQUFvQixDQUFDLFFBQWdCO0lBQ2pELE1BQU0sT0FBTyxHQUFHLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2xELE9BQU8sT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFB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QUksQ0FBQyxjQUFjLENBQUM7aUJBQy9CLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDVixPQUFPLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxLQUFLLENBQUM7WUFDckMsQ0FBQyxDQUFDO2lCQUNELEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDUCxPQUFPLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMvQixDQUFDLENBQUMsQ0FBQztRQUNYLENBQUM7SUFDTCxDQUFDO0lBQ0QsSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUNYLE9BQU8sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQzNCLE9BQU8sYUFBYSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMzQyxDQUFDLENBQUMsQ0FBQztRQUNILE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3hCLE9BQU8sYUFBYSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMxQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFDRCxPQUFPO1FBQ0gsT0FBTyxFQUFFLE9BQU8sSUFBSSxFQUFFO1FBQ3RCLE1BQU0sRUFBRSxNQUFNLElBQUksRUFBRTtLQUN2QixDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYW5ldEFwcGxpY2F0aW9uLCBQbGFuZXRBcHBsaWNhdGlvbkVudHJ5IH0gZnJvbSAnLi9wbGFuZXQuY2xhc3MnO1xuXG5jb25zdCBFTEVNRU5UX05PREVfVFlQRSA9IDE7XG5cbmV4cG9ydCBmdW5jdGlvbiBoYXNoQ29kZShzdHI6IHN0cmluZyk6IG51bWJlciB7XG4gICAgbGV0IGhhc2ggPSAwO1xuICAgIGxldCBjaHI6IG51bWJlcjtcbiAgICBpZiAoc3RyLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gaGFzaDtcbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY2hyID0gc3RyLmNoYXJDb2RlQXQoaSk7XG4gICAgICAgIGhhc2ggPSAoaGFzaCA8PCA1KSAtIGhhc2ggKyBjaHI7XG4gICAgICAgIGhhc2ggfD0gMDsgLy8gQ29udmVydCB0byAzMmJpdCBpbnRlZ2VyXG4gICAgfVxuICAgIHJldHVybiBoYXNoO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SFRNTEVsZW1lbnQoc2VsZWN0b3I6IHN0cmluZyB8IEhUTUxFbGVtZW50KTogSFRNTEVsZW1lbnQgfCBudWxsIHtcbiAgICBpZiAoc2VsZWN0b3IgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xuICAgICAgICByZXR1cm4gc2VsZWN0b3I7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRhZ05hbWVCeVRlbXBsYXRlKHRlbXBsYXRlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBjcmVhdGVFbGVtZW50QnlUZW1wbGF0ZSh0ZW1wbGF0ZSk7XG4gICAgcmV0dXJuIGVsZW1lbnQgPyBlbGVtZW50Lm5vZGVOYW1lIDogJyc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVFbGVtZW50QnlUZW1wbGF0ZSh0ZW1wbGF0ZTogc3RyaW5nKSB7XG4gICAgaWYgKCF0ZW1wbGF0ZSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCkuY3JlYXRlQ29udGV4dHVhbEZyYWdtZW50KHRlbXBsYXRlKS5maXJzdENoaWxkO1xuICAgIGlmIChlbGVtZW50ICYmIGVsZW1lbnQubm9kZVR5cGUgPT09IEVMRU1FTlRfTk9ERV9UWVBFKSB7XG4gICAgICAgIHJldHVybiBlbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCB0ZW1wbGF0ZSAnJHt0ZW1wbGF0ZX0nYCk7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY29lcmNlQXJyYXk8VD4odmFsdWU6IFQgfCBUW10pOiBUW10ge1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRW1wdHkodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuICAgIGlmICghdmFsdWUgfHwgdmFsdWUubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0Z1bmN0aW9uKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBGdW5jdGlvbiB7XG4gICAgY29uc3QgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgICByZXR1cm4gISF2YWx1ZSAmJiB0eXBlID09PSAnZnVuY3Rpb24nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNPYmplY3Q8VCBleHRlbmRzIG9iamVjdD4odmFsdWU6IGFueSk6IHZhbHVlIGlzIFQge1xuICAgIHJldHVybiB2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnO1xufVxuLyoqXG4gKiBHZXQgZmlsZSBuYW1lIGZyb20gcGF0aFxuICogMS4gXCJtYWluLmpzXCIgPT4gXCJtYWluLmpzXCJcbiAqIDIuIFwiYXNzZXRzL3NjcmlwdHMvbWFpbi5qc1wiID0+IFwibWFpbi5qc1wiXG4gKiBAcGFyYW0gcGF0aCBwYXRoXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZXNvdXJjZUZpbGVOYW1lKHBhdGg6IHN0cmluZykge1xuICAgIGNvbnN0IGxhc3RTbGFzaEluZGV4ID0gcGF0aC5sYXN0SW5kZXhPZignLycpO1xuICAgIGlmIChsYXN0U2xhc2hJbmRleCA+PSAwKSB7XG4gICAgICAgIHJldHVybiBwYXRoLnNsaWNlKGxhc3RTbGFzaEluZGV4ICsgMSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHBhdGg7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RXh0TmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBsYXN0RG90SW5kZXggPSBuYW1lLmxhc3RJbmRleE9mKCcuJyk7XG4gICAgaWYgKGxhc3REb3RJbmRleCA+PSAwKSB7XG4gICAgICAgIHJldHVybiBuYW1lLnNsaWNlKGxhc3REb3RJbmRleCArIDEpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG59XG5cbi8qKlxuICogQnVpbGQgcmVzb3VyY2UgcGF0aCBieSBtYW5pZmVzdFxuICogaWYgbWFuaWZlc3QgaXMgeyBcIm1haW4uanNcIjogXCJtYWluLmgyc2gyM2FiZWUuanNcIn1cbiAqIDEuIFwibWFpbi5qc1wiID0+IFwibWFpbi5oMnNoMjNhYmVlLmpzXCJcbiAqIDIuIFwiYXNzZXRzL3NjcmlwdHMvbWFpbi5qc1wiID0+XCJhc3NldHMvc2NyaXB0cy9tYWluLmgyc2gyM2FiZWUuanNcIlxuICogQHBhcmFtIHJlc291cmNlRmlsZVBhdGggUmVzb3VyY2UgRmlsZSBQYXRoXG4gKiBAcGFyYW0gbWFuaWZlc3RSZXN1bHQgbWFuaWZlc3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkUmVzb3VyY2VGaWxlUGF0aChyZXNvdXJjZUZpbGVQYXRoOiBzdHJpbmcsIG1hbmlmZXN0UmVzdWx0OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9KSB7XG4gICAgY29uc3QgZmlsZU5hbWUgPSBnZXRSZXNvdXJjZUZpbGVOYW1lKHJlc291cmNlRmlsZVBhdGgpO1xuICAgIGlmIChtYW5pZmVzdFJlc3VsdFtmaWxlTmFtZV0pIHtcbiAgICAgICAgcmV0dXJuIHJlc291cmNlRmlsZVBhdGgucmVwbGFjZShmaWxlTmFtZSwgbWFuaWZlc3RSZXN1bHRbZmlsZU5hbWVdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gcmVzb3VyY2VGaWxlUGF0aDtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZEZ1bGxQYXRoKHBhdGg6IHN0cmluZywgYmFzZVBhdGg/OiBzdHJpbmcpIHtcbiAgICBpZiAoYmFzZVBhdGgpIHtcbiAgICAgICAgaWYgKHBhdGguc3RhcnRzV2l0aChiYXNlUGF0aCkpIHtcbiAgICAgICAgICAgIHJldHVybiBwYXRoO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGAke2Jhc2VQYXRofSR7cGF0aH1gO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBwYXRoO1xufVxuXG5mdW5jdGlvbiBnZXREZWZpbmVkQXNzZXRzKGFwcDogUGxhbmV0QXBwbGljYXRpb24pIHtcbiAgICBpZiAoYXBwLmVudHJ5KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzY3JpcHRzOiBpc09iamVjdDxQbGFuZXRBcHBsaWNhdGlvbkVudHJ5PihhcHAuZW50cnkpID8gYXBwLmVudHJ5LnNjcmlwdHMgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBzdHlsZXM6IGlzT2JqZWN0PFBsYW5ldEFwcGxpY2F0aW9uRW50cnk+KGFwcC5lbnRyeSkgPyBhcHAuZW50cnkuc3R5bGVzIDogdW5kZWZpbmVkXG4gICAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIHNjcmlwdHM6IGFwcC5zY3JpcHRzLFxuICAgICAgICBzdHlsZXM6IGFwcC5zdHlsZXNcbiAgICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXNzZXRzQmFzZVBhdGgoYXBwOiBQbGFuZXRBcHBsaWNhdGlvbik6IHN0cmluZyB7XG4gICAgbGV0IGJhc2VQYXRoOiBzdHJpbmc7XG4gICAgaWYgKGFwcC5lbnRyeSkge1xuICAgICAgICBpZiAoaXNPYmplY3Q8UGxhbmV0QXBwbGljYXRpb25FbnRyeT4oYXBwLmVudHJ5KSkge1xuICAgICAgICAgICAgYmFzZVBhdGggPSBhcHAuZW50cnkuYmFzZVBhdGg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBsYXN0RG90SW5kZXggPSBhcHAuZW50cnkubGFzdEluZGV4T2YoJy8nKTtcbiAgICAgICAgICAgIGJhc2VQYXRoID0gbGFzdERvdEluZGV4ID4gMCA/IGFwcC5lbnRyeS5zbGljZSgwLCBsYXN0RG90SW5kZXggKyAxKSA6IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYmFzZVBhdGggfHwgYXBwLnJlc291cmNlUGF0aFByZWZpeDtcbn1cblxuLyoqXG4gKiBHZXQgc3RhdGljIHJlc291cmNlIGZ1bGwgcGF0aFxuICogQHBhcmFtIGFwcCBQbGFuZXRBcHBsaWNhdGlvblxuICogQHBhcmFtIG1hbmlmZXN0UmVzdWx0IG1hbmlmZXN0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTY3JpcHRzQW5kU3R5bGVzRnVsbFBhdGhzKGFwcDogUGxhbmV0QXBwbGljYXRpb24sIGJhc2VQYXRoOiBzdHJpbmcsIG1hbmlmZXN0UmVzdWx0PzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSkge1xuICAgIGxldCB7IHNjcmlwdHMsIHN0eWxlcyB9ID0gZ2V0RGVmaW5lZEFzc2V0cyhhcHApO1xuICAgIC8vIGNvbWJpbmUgcmVzb3VyY2UgcGF0aCBieSBtYW5pZmVzdFxuICAgIGlmIChtYW5pZmVzdFJlc3VsdCkge1xuICAgICAgICBpZiAoc2NyaXB0cykge1xuICAgICAgICAgICAgc2NyaXB0cyA9IHNjcmlwdHMubWFwKHNjcmlwdCA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGJ1aWxkUmVzb3VyY2VGaWxlUGF0aChzY3JpcHQsIG1hbmlmZXN0UmVzdWx0KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2NyaXB0cyA9IE9iamVjdC5rZXlzKG1hbmlmZXN0UmVzdWx0KVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoa2V5ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdldEV4dE5hbWUoa2V5KSA9PT0gJ2pzJztcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5tYXAoa2V5ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1hbmlmZXN0UmVzdWx0W2tleV07XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0eWxlcykge1xuICAgICAgICAgICAgc3R5bGVzID0gc3R5bGVzLm1hcChzdHlsZSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGJ1aWxkUmVzb3VyY2VGaWxlUGF0aChzdHlsZSwgbWFuaWZlc3RSZXN1bHQpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdHlsZXMgPSBPYmplY3Qua2V5cyhtYW5pZmVzdFJlc3VsdClcbiAgICAgICAgICAgICAgICAuZmlsdGVyKGtleSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBnZXRFeHROYW1lKGtleSkgPT09ICdjc3MnO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLm1hcChrZXkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWFuaWZlc3RSZXN1bHRba2V5XTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoYmFzZVBhdGgpIHtcbiAgICAgICAgc2NyaXB0cyA9IHNjcmlwdHMubWFwKHNjcmlwdCA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYnVpbGRGdWxsUGF0aChzY3JpcHQsIGJhc2VQYXRoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHN0eWxlcyA9IHN0eWxlcy5tYXAoc3R5bGUgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGJ1aWxkRnVsbFBhdGgoc3R5bGUsIGJhc2VQYXRoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIHNjcmlwdHM6IHNjcmlwdHMgfHwgW10sXG4gICAgICAgIHN0eWxlczogc3R5bGVzIHx8IFtdXG4gICAgfTtcbn1cbiJdfQ==
@@ -6,4 +6,4 @@ export var SwitchModes;
6
6
  })(SwitchModes || (SwitchModes = {}));
7
7
  const PLANET_APPLICATIONS = new InjectionToken('PLANET_APPLICATIONS');
8
8
  export { PLANET_APPLICATIONS };
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhbmV0LmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcGFja2FnZXMvcGxhbmV0L3NyYy9wbGFuZXQuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQStDL0MsTUFBTSxDQUFOLElBQVksV0FHWDtBQUhELFdBQVksV0FBVztJQUNuQixrQ0FBbUIsQ0FBQTtJQUNuQixrQ0FBbUIsQ0FBQTtBQUN2QixDQUFDLEVBSFcsV0FBVyxLQUFYLFdBQVcsUUFHdEI7QUFNRCxNQUFNLG1CQUFtQixHQUFHLElBQUksY0FBYyxDQUFvQixxQkFBcUIsQ0FBQyxDQUFDO0FBRXpGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERlYnVnIH0gZnJvbSAnLi9kZWJ1Zyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGxhbmV0T3B0aW9ucyB7XG4gICAgc3dpdGNoTW9kZT86IFN3aXRjaE1vZGVzO1xuICAgIGVycm9ySGFuZGxlcjogKGVycm9yOiBFcnJvcikgPT4gdm9pZDtcbiAgICBkZWJ1Z0ZhY3Rvcnk/OiBEZWJ1Zztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQbGFuZXRBcHBsaWNhdGlvbjxURXh0cmEgPSBhbnk+IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgLy8g5bqU55So5Yqg6L2955qE5a6/5Li75YWD57Sg5oiW6ICF6YCJ5oup5ZmoXG4gICAgaG9zdFBhcmVudDogc3RyaW5nIHwgSFRNTEVsZW1lbnQ7XG5cbiAgICAvLyDlrZDlupTnlKjnmoTpgInmi6nlmahcbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCBwbGVhc2UgdXNlIG5ldyBkZWZpbmVBcHBsaWNhdGlvbiB0byBzZXQgc2VsZWN0b3JcbiAgICAgKi9cbiAgICBzZWxlY3Rvcj86IHN0cmluZztcbiAgICAvLyDlrZDlupTnlKjot6/nlLHliY3nvIDot6/lvoRcbiAgICByb3V0ZXJQYXRoUHJlZml4OiBzdHJpbmcgfCBSZWdFeHA7XG4gICAgLy8g5a6/5Li75YWD57Sg6ZmE5Yqg5qC35byPXG4gICAgaG9zdENsYXNzPzogc3RyaW5nIHwgc3RyaW5nW107XG4gICAgLy8g5piv5ZCm6ZyA6KaB6aKE5Yqg6L29XG4gICAgcHJlbG9hZD86IGJvb2xlYW47XG4gICAgLy8g5piv5ZCm5byA5ZCv5rKZ566xXG4gICAgc2FuZGJveD86IGJvb2xlYW47XG4gICAgLy8g5YiH5o2i5bqU55So55qE5qih5byPXG4gICAgc3dpdGNoTW9kZT86IFN3aXRjaE1vZGVzO1xuICAgIC8vIOi1hOa6kOaWh+S7tui3r+W+hOeahOWJjee8gFxuICAgIHJlc291cmNlUGF0aFByZWZpeD86IHN0cmluZztcbiAgICAvLyDmoLflvI/liY3nvIBcbiAgICBzdHlsZVByZWZpeD86IHN0cmluZztcbiAgICAvLyDmoLflvI/otYTmupDmlofku7ZcbiAgICBzdHlsZXM/OiBzdHJpbmdbXTtcbiAgICAvLyDohJrmnKzotYTmupDmlofku7ZcbiAgICBzY3JpcHRzPzogc3RyaW5nW107XG4gICAgLy8g5Liy6KGM5Yqg6L2977yM6buY6K6k5bm26KGM5Yqg6L296ISa5pys6LWE5rqQXG4gICAgbG9hZFNlcmlhbD86IGJvb2xlYW47XG4gICAgLy8g55qu6IKk5qC35byP55qE6Lev5b6EXG4gICAgdGhlbWVTdHlsZXNQYXRoPzogc3RyaW5nO1xuICAgIC8vIOW6lOeUqOeoi+W6j+aJk+WMheWQjueahOiEmuacrOWSjOagt+W8j+aWh+S7tuabv+aNolxuICAgIG1hbmlmZXN0Pzogc3RyaW5nO1xuICAgIC8vIOmZhOWKoOaVsOaNru+8jOS4u+imgeW6lOeUqOS6juS4muWKoe+8jOavlOWmguWbvuagh++8jOWtkOW6lOeUqOeahOminOiJsu+8jOaYvuekuuWQjeetieS4quaAp+WMlumFjee9rlxuICAgIGV4dHJhPzogVEV4dHJhO1xufVxuXG5leHBvcnQgZW51bSBTd2l0Y2hNb2RlcyB7XG4gICAgZGVmYXVsdCA9ICdkZWZhdWx0JyxcbiAgICBjb2V4aXN0ID0gJ2NvZXhpc3QnXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGxhbmV0Um91dGVyRXZlbnQge1xuICAgIHVybDogc3RyaW5nO1xufVxuXG5jb25zdCBQTEFORVRfQVBQTElDQVRJT05TID0gbmV3IEluamVjdGlvblRva2VuPFBsYW5ldEFwcGxpY2F0aW9uPignUExBTkVUX0FQUExJQ0FUSU9OUycpO1xuXG5leHBvcnQgeyBQTEFORVRfQVBQTElDQVRJT05TIH07XG4iXX0=
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhbmV0LmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcGFja2FnZXMvcGxhbmV0L3NyYy9wbGFuZXQuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQWlIL0MsTUFBTSxDQUFOLElBQVksV0FHWDtBQUhELFdBQVksV0FBVztJQUNuQixrQ0FBbUIsQ0FBQTtJQUNuQixrQ0FBbUIsQ0FBQTtBQUN2QixDQUFDLEVBSFcsV0FBVyxLQUFYLFdBQVcsUUFHdEI7QUFNRCxNQUFNLG1CQUFtQixHQUFHLElBQUksY0FBYyxDQUFvQixxQkFBcUIsQ0FBQyxDQUFDO0FBRXpGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERlYnVnIH0gZnJvbSAnLi9kZWJ1Zyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGxhbmV0T3B0aW9ucyB7XG4gICAgc3dpdGNoTW9kZT86IFN3aXRjaE1vZGVzO1xuICAgIGVycm9ySGFuZGxlcjogKGVycm9yOiBFcnJvcikgPT4gdm9pZDtcbiAgICBkZWJ1Z0ZhY3Rvcnk/OiBEZWJ1Zztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQbGFuZXRBcHBsaWNhdGlvbkVudHJ5IHtcbiAgICBiYXNlUGF0aD86IHN0cmluZztcbiAgICBzY3JpcHRzPzogc3RyaW5nW107XG4gICAgc3R5bGVzPzogc3RyaW5nW107XG4gICAgbWFuaWZlc3Q/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGxhbmV0QXBwbGljYXRpb248VEV4dHJhID0gYW55PiB7XG4gICAgLyoqXG4gICAgICogQXBwbGljYXRpb24gbmFtZSwgZS5nLiBcImFwcDFcIlxuICAgICAqL1xuICAgIG5hbWU6IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBTZWxlY3RvciBvciBFbGVtZW50IHdoaWNoIGFwcCBob3N0IHBhcmVudFxuICAgICAqIOW6lOeUqOWKoOi9veeahOWuv+S4u+WFg+e0oOaIluiAhemAieaLqeWZqFxuICAgICAqL1xuICAgIGhvc3RQYXJlbnQ6IHN0cmluZyB8IEhUTUxFbGVtZW50O1xuICAgIC8qKlxuICAgICAqIENsYXNzIG5hbWUgZm9yIGhvc3RcbiAgICAgKi9cbiAgICBob3N0Q2xhc3M/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgICAvKipcbiAgICAgKiBTZWxlY3RvciBmb3Igc3ViIGFwcGxpY2F0aW9uXG4gICAgICog5a2Q5bqU55So55qE6YCJ5oup5ZmoXG4gICAgICogQGRlcHJlY2F0ZWQgcGxlYXNlIHVzZSBuZXcgZGVmaW5lQXBwbGljYXRpb24gdG8gc2V0IHNlbGVjdG9yXG4gICAgICovXG4gICAgc2VsZWN0b3I/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogUGF0aCBwcmVmaXggZm9yIHN1YiBhcHBsaWNhdGlvbiwgZS5nLiAnL2FwcDEnXG4gICAgICog5a2Q5bqU55So6Lev55Sx5YmN57yA6Lev5b6EXG4gICAgICovXG4gICAgcm91dGVyUGF0aFByZWZpeDogc3RyaW5nIHwgUmVnRXhwO1xuICAgIC8qKlxuICAgICAqIFByZWxvYWQgZW5hYmxlZCwgZGVmYXVsdCBmYWxzZSwgaWYgZW5hYmxlZCx0aGUgYXBwbGljYXRpb24gd2lsbCBiZSBsb2FkZWQgd2hlbiBpZGxlIGluIHRoZSBiYWNrZ3JvdW5kXG4gICAgICog5piv5ZCm5byA5ZCv6aKE5Yqg6L2977yM5byA5ZCv5ZCO5Lya5Zyo5ZCO5Y+w5o+Q5YmN5Yqg6L295q2k5bqU55SoXG4gICAgICovXG4gICAgcHJlbG9hZD86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogU2FuZGJveCBlbmFibGVkXG4gICAgICog5piv5ZCm5byA5ZCv5rKZ566x5qih5byPXG4gICAgICovXG4gICAgc2FuZGJveD86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogU3dpdGNoIGFwcGxpY2F0aW9uIG1vZGVcbiAgICAgKiBkZWZhdWx0OiB3aWxsIGJlIGRlc3Ryb3llZCB3aGVuIHN3aXRjaCB0byBvdGhlciBhcHBcbiAgICAgKiBjb2V4aXN0OiBvbmx5IGhpZGUgYXBwIHdoZW4gc3dpdGNoIHRvIG90aGVyIGFwcFxuICAgICAqIOWIh+aNouW6lOeUqOeahOaooeW8j1xuICAgICAqL1xuICAgIHN3aXRjaE1vZGU/OiBTd2l0Y2hNb2RlcztcbiAgICAvKipcbiAgICAgKiBTdHlsZSBwcmVmaXgsIGUuZy4gJ2FwcDEnXG4gICAgICog5qC35byP5YmN57yAXG4gICAgICovXG4gICAgc3R5bGVQcmVmaXg/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogVGhlIGVudHJ5IG9mIHRoZSBtaWNybyBhcHBsaWNhdGlvbiwgZS5nLiAnL3N0YXRpYy9hcHAxL2luZGV4Lmh0bWwnXG4gICAgICogSWYgY29uZmlndXJlZCBhcyBzdHJpbmcsIGl0IHJlcHJlc2VudHMgdGhlIGVudHJ5IGh0bWwgYWRkcmVzcyBvZiB0aGUgbWljcm8gYXBwbGljYXRpb24uICBlLmcuICcvc3RhdGljL2FwcDEvaW5kZXguaHRtbCdcbiAgICAgKiBJZiBjb25maWd1cmVkIGFzIG9iamVjdCwgdGhlIHZhbHVlIG9mIG1hbmlmZXN0IGlzIHRoZSBodG1sIGFkZHJlc3Mgb2YgdGhlIG1pY3JvIGFwcGxpY2F0aW9uXG4gICAgICogICBlbnRyeS5iYXNlUGF0aDogdGhlIGJhc2UgcGF0aCBvZiB0aGUgZW50cnksIGUuZy4gJy9zdGF0aWMvYXBwMS8nXG4gICAgICogICBlbnRyeS5tYW5pZmVzdDogdGhlIG1hbmlmZXN0IG9mIHRoZSBlbnRyeSwgZS5nLiAnaW5kZXguaHRtbCcgb3IgJ2Fzc2V0cy1tYW5pZmVzdC5qc29uJ1xuICAgICAqICAgZW50cnkuc2NyaXB0czogdGhlIHNjcmlwdHMgb2YgdGhlIGVudHJ5LCB3aWxsIGdldCBmaW5hbCBzY3JpcHRzIGFkZHJlc3MgYnkgbWFuaWZlc3QgYW5kIGJhc2VQYXRoXG4gICAgICogICBlbnRyeS5zdHlsZXM6IHRoZSBzdHlsZXMgb2YgdGhlIGVudHJ5LCB3aWxsIGdldCBmaW5hbCBzdHlsZXMgYWRkcmVzcyBieSBtYW5pZmVzdCBhbmQgYmFzZVBhdGhcbiAgICAgKi9cbiAgICBlbnRyeT86IHN0cmluZyB8IFBsYW5ldEFwcGxpY2F0aW9uRW50cnk7XG4gICAgLyoqXG4gICAgICogTWFuaWZlc3QganNvbiBmaWxlIHBhdGgsIGUuZy4gL3N0YXRpYy9hcHAxL2Fzc2V0cy1tYW5pZmVzdC5qc29uXG4gICAgICog5bqU55So56iL5bqP5omT5YyF5ZCO55qE6ISa5pys5ZKM5qC35byP5paH5Lu25pu/5o2iXG4gICAgICogQGRlcHJlY2F0ZWQgUGxlYXNlIHVzZSBlbnRyeS5tYW5pZmVzdCBpbnN0ZWFkXG4gICAgICovXG4gICAgbWFuaWZlc3Q/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogUGF0aCBwcmVmaXggb2Ygc2NyaXB0cyBhbmQgc3R5bGVzLCBlLmcuICdzdGF0aWMvYXBwMS8nXG4gICAgICog6LWE5rqQ5paH5Lu26Lev5b6E55qE5YmN57yAXG4gICAgICogQGRlcHJlY2F0ZWQgUGxlYXNlIHVzZSBlbnRyeS5iYXNlUGF0aCBpbnN0ZWFkXG4gICAgICovXG4gICAgcmVzb3VyY2VQYXRoUHJlZml4Pzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFN0eWxlIHN0YXRpYyByZXNvdXJjZSBwYXRoc1xuICAgICAqIOagt+W8j+i1hOa6kOaWh+S7tlxuICAgICAqIEBkZXByZWNhdGVkIFBsZWFzZSB1c2UgZW50cnkuc3R5bGVzIGluc3RlYWRcbiAgICAgKi9cbiAgICBzdHlsZXM/OiBzdHJpbmdbXTtcbiAgICAvKipcbiAgICAgKiBTY3JpcHRzIHN0YXRpYyByZXNvdXJjZSBwYXRoc1xuICAgICAqIOiEmuacrOi1hOa6kOaWh+S7tlxuICAgICAqIEBkZXByZWNhdGVkIFBsZWFzZSB1c2UgZW50cnkuc2NyaXB0cyBpbnN0ZWFkXG4gICAgICovXG4gICAgc2NyaXB0cz86IHN0cmluZ1tdO1xuICAgIC8qKlxuICAgICAqIFNlcmlhbCBsb2FkIHNjcmlwdHMsIGRlZmF1bHQgaXMgcGFyYWxsZWwsIG9ubHkgZW5hYmxlIHdoZW4gdGhlIHNjcmlwdCBoYXMgc2VxdWVudGlhbGx5IGxvYWRlZCBkZXBlbmRlbmN5XG4gICAgICog5Liy6KGM5Yqg6L2977yM6buY6K6k5bm26KGM5Yqg6L296ISa5pys6LWE5rqQ77yM5LuF5b2T6ISa5pys6LWE5rqQ5pyJ5L6d6LWW5YWz57O75pe25byA5ZCvXG4gICAgICovXG4gICAgbG9hZFNlcmlhbD86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICog55qu6IKk5qC35byP55qE6Lev5b6EXG4gICAgICovXG4gICAgLy8gdGhlbWVTdHlsZXNQYXRoPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIEV4dHJhIGRhdGEgZm9yIGFwcGxpY2F0aW9uXG4gICAgICog6ZmE5Yqg5pWw5o2u77yM5Li76KaB5bqU55So5LqO5Lia5Yqh77yM5q+U5aaC5Zu+5qCH77yM5a2Q5bqU55So55qE6aKc6Imy77yM5pi+56S65ZCN562J5Liq5oCn5YyW6YWN572uXG4gICAgICovXG4gICAgZXh0cmE/OiBURXh0cmE7XG59XG5cbmV4cG9ydCBlbnVtIFN3aXRjaE1vZGVzIHtcbiAgICBkZWZhdWx0ID0gJ2RlZmF1bHQnLFxuICAgIGNvZXhpc3QgPSAnY29leGlzdCdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQbGFuZXRSb3V0ZXJFdmVudCB7XG4gICAgdXJsOiBzdHJpbmc7XG59XG5cbmNvbnN0IFBMQU5FVF9BUFBMSUNBVElPTlMgPSBuZXcgSW5qZWN0aW9uVG9rZW48UGxhbmV0QXBwbGljYXRpb24+KCdQTEFORVRfQVBQTElDQVRJT05TJyk7XG5cbmV4cG9ydCB7IFBMQU5FVF9BUFBMSUNBVElPTlMgfTtcbiJdfQ==
@@ -68,8 +68,8 @@ function isFunction(value) {
68
68
  const type = typeof value;
69
69
  return !!value && type === 'function';
70
70
  }
71
- function isObject(val) {
72
- return val && typeof val === 'object';
71
+ function isObject(value) {
72
+ return value && typeof value === 'object';
73
73
  }
74
74
  /**
75
75
  * Get file name from path
@@ -86,6 +86,15 @@ function getResourceFileName(path) {
86
86
  return path;
87
87
  }
88
88
  }
89
+ function getExtName(name) {
90
+ const lastDotIndex = name.lastIndexOf('.');
91
+ if (lastDotIndex >= 0) {
92
+ return name.slice(lastDotIndex + 1);
93
+ }
94
+ else {
95
+ return '';
96
+ }
97
+ }
89
98
  /**
90
99
  * Build resource path by manifest
91
100
  * if manifest is { "main.js": "main.h2sh23abee.js"}
@@ -103,34 +112,91 @@ function buildResourceFilePath(resourceFilePath, manifestResult) {
103
112
  return resourceFilePath;
104
113
  }
105
114
  }
115
+ function buildFullPath(path, basePath) {
116
+ if (basePath) {
117
+ if (path.startsWith(basePath)) {
118
+ return path;
119
+ }
120
+ else {
121
+ return `${basePath}${path}`;
122
+ }
123
+ }
124
+ return path;
125
+ }
126
+ function getDefinedAssets(app) {
127
+ if (app.entry) {
128
+ return {
129
+ scripts: isObject(app.entry) ? app.entry.scripts : undefined,
130
+ styles: isObject(app.entry) ? app.entry.styles : undefined
131
+ };
132
+ }
133
+ return {
134
+ scripts: app.scripts,
135
+ styles: app.styles
136
+ };
137
+ }
138
+ function getAssetsBasePath(app) {
139
+ let basePath;
140
+ if (app.entry) {
141
+ if (isObject(app.entry)) {
142
+ basePath = app.entry.basePath;
143
+ }
144
+ else {
145
+ const lastDotIndex = app.entry.lastIndexOf('/');
146
+ basePath = lastDotIndex > 0 ? app.entry.slice(0, lastDotIndex + 1) : undefined;
147
+ }
148
+ }
149
+ return basePath || app.resourcePathPrefix;
150
+ }
106
151
  /**
107
152
  * Get static resource full path
108
153
  * @param app PlanetApplication
109
154
  * @param manifestResult manifest
110
155
  */
111
- function getScriptsAndStylesFullPaths(app, manifestResult) {
112
- let scripts = app.scripts || [];
113
- let styles = app.styles || [];
156
+ function getScriptsAndStylesFullPaths(app, basePath, manifestResult) {
157
+ let { scripts, styles } = getDefinedAssets(app);
114
158
  // combine resource path by manifest
115
159
  if (manifestResult) {
116
- scripts = scripts.map(script => {
117
- return buildResourceFilePath(script, manifestResult);
118
- });
119
- styles = styles.map(style => {
120
- return buildResourceFilePath(style, manifestResult);
121
- });
160
+ if (scripts) {
161
+ scripts = scripts.map(script => {
162
+ return buildResourceFilePath(script, manifestResult);
163
+ });
164
+ }
165
+ else {
166
+ scripts = Object.keys(manifestResult)
167
+ .filter(key => {
168
+ return getExtName(key) === 'js';
169
+ })
170
+ .map(key => {
171
+ return manifestResult[key];
172
+ });
173
+ }
174
+ if (styles) {
175
+ styles = styles.map(style => {
176
+ return buildResourceFilePath(style, manifestResult);
177
+ });
178
+ }
179
+ else {
180
+ styles = Object.keys(manifestResult)
181
+ .filter(key => {
182
+ return getExtName(key) === 'css';
183
+ })
184
+ .map(key => {
185
+ return manifestResult[key];
186
+ });
187
+ }
122
188
  }
123
- if (app.resourcePathPrefix) {
189
+ if (basePath) {
124
190
  scripts = scripts.map(script => {
125
- return `${app.resourcePathPrefix}${script}`;
191
+ return buildFullPath(script, basePath);
126
192
  });
127
193
  styles = styles.map(style => {
128
- return `${app.resourcePathPrefix}${style}`;
194
+ return buildFullPath(style, basePath);
129
195
  });
130
196
  }
131
197
  return {
132
- scripts: scripts,
133
- styles: styles
198
+ scripts: scripts || [],
199
+ styles: styles || []
134
200
  };
135
201
  }
136
202
 
@@ -784,6 +850,8 @@ function getSandboxInstance() {
784
850
  return window[SANDBOX_INSTANCE];
785
851
  }
786
852
 
853
+ const STYLE_LINK_OR_SCRIPT_REG = /<[script|link].*?">/gi;
854
+ const LINK_OR_SRC_REG = /(src|href)=["'](.*?)["']/i;
787
855
  class AssetsLoader {
788
856
  constructor(http) {
789
857
  this.http = http;
@@ -957,10 +1025,38 @@ class AssetsLoader {
957
1025
  loadScriptsAndStyles(scripts = [], styles = [], options) {
958
1026
  return forkJoin([this.loadScripts(scripts, options), this.loadStyles(styles)]);
959
1027
  }
1028
+ parseManifestFromHTML(html) {
1029
+ const result = {};
1030
+ const matchResult = html.match(STYLE_LINK_OR_SCRIPT_REG);
1031
+ matchResult.forEach(item => {
1032
+ const linkOrSrcResult = item.match(LINK_OR_SRC_REG);
1033
+ if (linkOrSrcResult[2]) {
1034
+ const src = linkOrSrcResult[2];
1035
+ const hashName = getResourceFileName(src);
1036
+ let barSplitIndex = hashName.indexOf('-');
1037
+ let dotSplitIndex = hashName.indexOf('.');
1038
+ const splitIndex = barSplitIndex > -1 ? barSplitIndex : dotSplitIndex;
1039
+ if (splitIndex > -1) {
1040
+ const name = hashName.slice(0, splitIndex);
1041
+ const ext = getExtName(hashName);
1042
+ result[ext ? `${name}.${ext}` : name] = src;
1043
+ }
1044
+ }
1045
+ });
1046
+ return result;
1047
+ }
960
1048
  loadAppAssets(app) {
961
- if (app.manifest) {
962
- return this.loadManifest(`${app.manifest}?t=${new Date().getTime()}`).pipe(switchMap(manifestResult => {
963
- const { scripts, styles } = getScriptsAndStylesFullPaths(app, manifestResult);
1049
+ const basePath = getAssetsBasePath(app);
1050
+ const manifest = app.entry ? (isObject(app.entry) ? app.entry.manifest : app.entry) : app.manifest;
1051
+ if (manifest) {
1052
+ const manifestExt = getExtName(manifest);
1053
+ const isHtml = manifestExt === 'html';
1054
+ const responseType = isHtml ? 'text' : 'json';
1055
+ return this.loadManifest(`${manifest}?t=${new Date().getTime()}`, responseType).pipe(switchMap(manifestResult => {
1056
+ if (responseType === 'text') {
1057
+ manifestResult = this.parseManifestFromHTML(manifestResult);
1058
+ }
1059
+ const { scripts, styles } = getScriptsAndStylesFullPaths(app, basePath, manifestResult);
964
1060
  return this.loadScriptsAndStyles(scripts, styles, {
965
1061
  app: app.name,
966
1062
  sandbox: app.sandbox,
@@ -969,7 +1065,7 @@ class AssetsLoader {
969
1065
  }));
970
1066
  }
971
1067
  else {
972
- const { scripts, styles } = getScriptsAndStylesFullPaths(app);
1068
+ const { scripts, styles } = getScriptsAndStylesFullPaths(app, basePath);
973
1069
  return this.loadScriptsAndStyles(scripts, styles, {
974
1070
  app: app.name,
975
1071
  sandbox: app.sandbox,
@@ -977,8 +1073,12 @@ class AssetsLoader {
977
1073
  });
978
1074
  }
979
1075
  }
980
- loadManifest(url) {
981
- return this.http.get(url).pipe(map((response) => {
1076
+ loadManifest(url, responseType = 'json') {
1077
+ return this.http
1078
+ .get(url, {
1079
+ responseType: responseType
1080
+ })
1081
+ .pipe(map((response) => {
982
1082
  return response;
983
1083
  }));
984
1084
  }
@@ -1029,7 +1129,9 @@ class NgPlanetApplicationRef {
1029
1129
  .asObservable()
1030
1130
  .pipe(take(1))
1031
1131
  .subscribe(() => {
1032
- this.portalApp.router.navigateByUrl(event.url);
1132
+ this.portalApp.ngZone.run(() => {
1133
+ this.portalApp.router.navigateByUrl(event.url);
1134
+ });
1033
1135
  });
1034
1136
  }
1035
1137
  });