@angular/fire 7.1.0-rc.0 → 7.1.0-rc.4
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/bundles/angular-fire-compat-storage.umd.js +1 -0
- package/bundles/angular-fire-compat-storage.umd.js.map +1 -1
- package/bundles/angular-fire.umd.js +7 -9
- package/bundles/angular-fire.umd.js.map +1 -1
- package/compat/storage/interfaces.d.ts +1 -0
- package/compat/storage/ref.d.ts +2 -1
- package/docs/deploy/getting-started.md +62 -1
- package/esm2015/compat/storage/interfaces.js +1 -1
- package/esm2015/compat/storage/ref.js +2 -1
- package/esm2015/core.js +6 -8
- package/fesm2015/angular-fire-compat-storage.js +1 -0
- package/fesm2015/angular-fire-compat-storage.js.map +1 -1
- package/fesm2015/angular-fire.js +5 -7
- package/fesm2015/angular-fire.js.map +1 -1
- package/package.json +10 -2
- package/schematics/add/index.js +2 -17
- package/schematics/common.js +4 -3
- package/schematics/deploy/actions.js +32 -16
- package/schematics/deploy/schema.json +4 -0
- package/schematics/setup/index.js +13 -5
- package/schematics/setup/prompts.js +47 -33
- package/schematics/setup/ssr.js +14 -4
- package/schematics/setup/static.js +11 -5
- package/schematics/utils.js +22 -9
- package/schematics/versions.json +2 -2
|
@@ -41,6 +41,10 @@
|
|
|
41
41
|
"type": "string",
|
|
42
42
|
"description": "The Firebase project name or project alias to use when deploying"
|
|
43
43
|
},
|
|
44
|
+
"target": {
|
|
45
|
+
"type": "string",
|
|
46
|
+
"description": "The Firebase hosting target in firebase.json for multi-site"
|
|
47
|
+
},
|
|
44
48
|
"firebaseHostingSite": {
|
|
45
49
|
"type": "string",
|
|
46
50
|
"description": "The Firebase Hosting site to deploy to"
|
|
@@ -16,6 +16,8 @@ const prompts_1 = require("./prompts");
|
|
|
16
16
|
const ssr_1 = require("./ssr");
|
|
17
17
|
const static_1 = require("./static");
|
|
18
18
|
const firebaseTools_1 = require("../firebaseTools");
|
|
19
|
+
const fs_1 = require("fs");
|
|
20
|
+
const path_1 = require("path");
|
|
19
21
|
const setupProject = (tree, context, features, config) => __awaiter(void 0, void 0, void 0, function* () {
|
|
20
22
|
const { path: workspacePath, workspace } = utils_1.getWorkspace(tree);
|
|
21
23
|
const { project, projectName } = utils_1.getProject(config, tree);
|
|
@@ -24,6 +26,7 @@ const setupProject = (tree, context, features, config) => __awaiter(void 0, void
|
|
|
24
26
|
const featuresToImport = features.filter(it => it !== 0);
|
|
25
27
|
if (featuresToImport.length > 0) {
|
|
26
28
|
utils_1.addToNgModule(tree, { features: featuresToImport, sourcePath });
|
|
29
|
+
utils_1.addFixesToServer(tree, { features: featuresToImport, sourcePath });
|
|
27
30
|
}
|
|
28
31
|
if (config.sdkConfig) {
|
|
29
32
|
const source = `
|
|
@@ -82,26 +85,31 @@ ${Object.entries(config.sdkConfig).reduce((c, [k, v]) => c.concat(` ${k}: '${
|
|
|
82
85
|
});
|
|
83
86
|
exports.setupProject = setupProject;
|
|
84
87
|
const ngAddSetupProject = (options) => (host, context) => __awaiter(void 0, void 0, void 0, function* () {
|
|
88
|
+
const projectRoot = host._backend._root;
|
|
85
89
|
const features = yield prompts_1.featuresPrompt();
|
|
86
90
|
if (features.length > 0) {
|
|
87
91
|
const firebaseTools = yield firebaseTools_1.getFirebaseTools();
|
|
88
|
-
|
|
92
|
+
if (!host.exists('/firebase.json')) {
|
|
93
|
+
fs_1.writeFileSync(path_1.join(projectRoot, 'firebase.json'), '{}');
|
|
94
|
+
}
|
|
95
|
+
const user = yield prompts_1.userPrompt({ projectRoot });
|
|
96
|
+
yield firebaseTools.login.use(user.email, { projectRoot });
|
|
89
97
|
const { project: ngProject, projectName: ngProjectName } = utils_1.getProject(options, host);
|
|
90
98
|
const [defaultProjectName] = utils_1.getFirebaseProjectNameFromHost(host, ngProjectName);
|
|
91
|
-
const firebaseProject = yield prompts_1.projectPrompt(defaultProjectName);
|
|
99
|
+
const firebaseProject = yield prompts_1.projectPrompt(defaultProjectName, { projectRoot });
|
|
92
100
|
let hosting = { projectType: 0, prerender: false };
|
|
93
101
|
let firebaseHostingSite;
|
|
94
102
|
if (features.includes(0)) {
|
|
95
103
|
const results = yield prompts_1.projectTypePrompt(ngProject, ngProjectName);
|
|
96
104
|
hosting = Object.assign(Object.assign({}, hosting), results);
|
|
97
|
-
firebaseHostingSite = yield prompts_1.sitePrompt(firebaseProject);
|
|
105
|
+
firebaseHostingSite = yield prompts_1.sitePrompt(firebaseProject, { projectRoot });
|
|
98
106
|
}
|
|
99
107
|
let firebaseApp;
|
|
100
108
|
let sdkConfig;
|
|
101
109
|
if (features.find(it => it !== 0)) {
|
|
102
110
|
const defaultAppId = firebaseHostingSite === null || firebaseHostingSite === void 0 ? void 0 : firebaseHostingSite.appId;
|
|
103
|
-
firebaseApp = yield prompts_1.appPrompt(firebaseProject, defaultAppId);
|
|
104
|
-
const result = yield firebaseTools.apps.sdkconfig('web', firebaseApp.appId, { nonInteractive: true });
|
|
111
|
+
firebaseApp = yield prompts_1.appPrompt(firebaseProject, defaultAppId, { projectRoot });
|
|
112
|
+
const result = yield firebaseTools.apps.sdkconfig('web', firebaseApp.appId, { nonInteractive: true, projectRoot });
|
|
105
113
|
sdkConfig = result.sdkConfig;
|
|
106
114
|
}
|
|
107
115
|
yield exports.setupProject(host, context, features, Object.assign(Object.assign(Object.assign({}, options), hosting), { firebaseProject, firebaseApp, firebaseHostingSite, sdkConfig }));
|
|
@@ -28,12 +28,13 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
28
28
|
});
|
|
29
29
|
};
|
|
30
30
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
31
|
-
exports.projectTypePrompt = exports.
|
|
31
|
+
exports.projectTypePrompt = exports.sitePrompt = exports.appPrompt = exports.projectPrompt = exports.userPrompt = exports.featuresPrompt = exports.searchSites = exports.searchApps = exports.searchProjects = void 0;
|
|
32
32
|
const fuzzy = __importStar(require("fuzzy"));
|
|
33
33
|
const inquirer = __importStar(require("inquirer"));
|
|
34
34
|
const interfaces_1 = require("../interfaces");
|
|
35
35
|
const utils_1 = require("../utils");
|
|
36
36
|
const firebaseTools_1 = require("../firebaseTools");
|
|
37
|
+
const common_1 = require("../common");
|
|
37
38
|
inquirer.registerPrompt('autocomplete', require('inquirer-autocomplete-prompt'));
|
|
38
39
|
const NEW_OPTION = '~~angularfire-new~~';
|
|
39
40
|
const DEFAULT_SITE_TYPE = 'DEFAULT_SITE';
|
|
@@ -116,7 +117,7 @@ const searchSites = (promise) => (_, input) => promise.then(sites => {
|
|
|
116
117
|
return {
|
|
117
118
|
name: original.defaultUrl,
|
|
118
119
|
title: original.defaultUrl,
|
|
119
|
-
value:
|
|
120
|
+
value: common_1.shortSiteName(original),
|
|
120
121
|
};
|
|
121
122
|
});
|
|
122
123
|
});
|
|
@@ -133,9 +134,37 @@ const featuresPrompt = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
|
133
134
|
return features;
|
|
134
135
|
});
|
|
135
136
|
exports.featuresPrompt = featuresPrompt;
|
|
136
|
-
const
|
|
137
|
+
const userPrompt = (options) => __awaiter(void 0, void 0, void 0, function* () {
|
|
138
|
+
var _a;
|
|
137
139
|
const firebaseTools = yield firebaseTools_1.getFirebaseTools();
|
|
138
|
-
const
|
|
140
|
+
const users = yield firebaseTools.login.list();
|
|
141
|
+
if (!users || users.length === 0) {
|
|
142
|
+
yield firebaseTools.login();
|
|
143
|
+
const user = yield firebaseTools.login(options);
|
|
144
|
+
return user;
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
const defaultUser = yield firebaseTools.login(options);
|
|
148
|
+
const choices = users.map(({ user }) => ({ name: user.email, value: user }));
|
|
149
|
+
const newChoice = { name: '[Login in with another account]', value: NEW_OPTION };
|
|
150
|
+
const { user } = yield inquirer.prompt({
|
|
151
|
+
type: 'list',
|
|
152
|
+
name: 'user',
|
|
153
|
+
choices: [newChoice].concat(choices),
|
|
154
|
+
message: 'Which Firebase account would you like to use?',
|
|
155
|
+
default: (_a = choices.find(it => it.value.email === defaultUser.email)) === null || _a === void 0 ? void 0 : _a.value,
|
|
156
|
+
});
|
|
157
|
+
if (user === NEW_OPTION) {
|
|
158
|
+
const { user } = yield firebaseTools.login.add();
|
|
159
|
+
return user;
|
|
160
|
+
}
|
|
161
|
+
return user;
|
|
162
|
+
}
|
|
163
|
+
});
|
|
164
|
+
exports.userPrompt = userPrompt;
|
|
165
|
+
const projectPrompt = (defaultProject, options) => __awaiter(void 0, void 0, void 0, function* () {
|
|
166
|
+
const firebaseTools = yield firebaseTools_1.getFirebaseTools();
|
|
167
|
+
const projects = firebaseTools.projects.list(options);
|
|
139
168
|
const { projectId } = yield autocomplete({
|
|
140
169
|
type: 'autocomplete',
|
|
141
170
|
name: 'projectId',
|
|
@@ -155,14 +184,14 @@ const projectPrompt = (defaultProject) => __awaiter(void 0, void 0, void 0, func
|
|
|
155
184
|
message: 'What would you like to call your project?',
|
|
156
185
|
default: projectId,
|
|
157
186
|
});
|
|
158
|
-
return yield firebaseTools.projects.create(projectId, { displayName, nonInteractive: true });
|
|
187
|
+
return yield firebaseTools.projects.create(projectId, Object.assign(Object.assign({}, options), { displayName, nonInteractive: true }));
|
|
159
188
|
}
|
|
160
189
|
return (yield projects).find(it => it.projectId === projectId);
|
|
161
190
|
});
|
|
162
191
|
exports.projectPrompt = projectPrompt;
|
|
163
|
-
const appPrompt = ({ projectId: project }, defaultAppId) => __awaiter(void 0, void 0, void 0, function* () {
|
|
192
|
+
const appPrompt = ({ projectId: project }, defaultAppId, options) => __awaiter(void 0, void 0, void 0, function* () {
|
|
164
193
|
const firebaseTools = yield firebaseTools_1.getFirebaseTools();
|
|
165
|
-
const apps = firebaseTools.apps.list('web', { project });
|
|
194
|
+
const apps = firebaseTools.apps.list('web', Object.assign(Object.assign({}, options), { project }));
|
|
166
195
|
const { appId } = yield autocomplete({
|
|
167
196
|
type: 'autocomplete',
|
|
168
197
|
name: 'appId',
|
|
@@ -176,17 +205,14 @@ const appPrompt = ({ projectId: project }, defaultAppId) => __awaiter(void 0, vo
|
|
|
176
205
|
name: 'displayName',
|
|
177
206
|
message: 'What would you like to call your app?',
|
|
178
207
|
});
|
|
179
|
-
return yield firebaseTools.apps.create('web', displayName, { nonInteractive: true, project });
|
|
208
|
+
return yield firebaseTools.apps.create('web', displayName, Object.assign(Object.assign({}, options), { nonInteractive: true, project }));
|
|
180
209
|
}
|
|
181
210
|
return (yield apps).find(it => utils_1.shortAppId(it) === appId);
|
|
182
211
|
});
|
|
183
212
|
exports.appPrompt = appPrompt;
|
|
184
|
-
const sitePrompt = ({ projectId: project }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
213
|
+
const sitePrompt = ({ projectId: project }, options) => __awaiter(void 0, void 0, void 0, function* () {
|
|
185
214
|
const firebaseTools = yield firebaseTools_1.getFirebaseTools();
|
|
186
|
-
|
|
187
|
-
return undefined;
|
|
188
|
-
}
|
|
189
|
-
const sites = firebaseTools.hosting.sites.list({ project }).then(it => {
|
|
215
|
+
const sites = firebaseTools.hosting.sites.list(Object.assign(Object.assign({}, options), { project })).then(it => {
|
|
190
216
|
if (it.sites.length === 0) {
|
|
191
217
|
return [{
|
|
192
218
|
name: project,
|
|
@@ -204,7 +230,7 @@ const sitePrompt = ({ projectId: project }) => __awaiter(void 0, void 0, void 0,
|
|
|
204
230
|
name: 'siteName',
|
|
205
231
|
source: exports.searchSites(sites),
|
|
206
232
|
message: 'Please select a hosting site:',
|
|
207
|
-
default: _ => sites.then(it =>
|
|
233
|
+
default: _ => sites.then(it => common_1.shortSiteName(it.find(it => it.type === DEFAULT_SITE_TYPE))),
|
|
208
234
|
});
|
|
209
235
|
if (siteName === NEW_OPTION) {
|
|
210
236
|
const { subdomain } = yield inquirer.prompt({
|
|
@@ -212,35 +238,23 @@ const sitePrompt = ({ projectId: project }) => __awaiter(void 0, void 0, void 0,
|
|
|
212
238
|
name: 'subdomain',
|
|
213
239
|
message: 'Please provide an unique, URL-friendly id for the site (<id>.web.app):',
|
|
214
240
|
});
|
|
215
|
-
return yield firebaseTools.hosting.sites.create(subdomain, { nonInteractive: true, project });
|
|
241
|
+
return yield firebaseTools.hosting.sites.create(subdomain, Object.assign(Object.assign({}, options), { nonInteractive: true, project }));
|
|
216
242
|
}
|
|
217
|
-
return (yield sites).find(it =>
|
|
243
|
+
return (yield sites).find(it => common_1.shortSiteName(it) === siteName);
|
|
218
244
|
});
|
|
219
245
|
exports.sitePrompt = sitePrompt;
|
|
220
|
-
const prerenderPrompt = (project, prerender) => {
|
|
221
|
-
if (utils_1.isUniversalApp(project)) {
|
|
222
|
-
return inquirer.prompt({
|
|
223
|
-
type: 'prompt',
|
|
224
|
-
name: 'prerender',
|
|
225
|
-
message: 'We detected an Angular Universal project. How would you like to render server-side content?',
|
|
226
|
-
default: true
|
|
227
|
-
});
|
|
228
|
-
}
|
|
229
|
-
return Promise.resolve({ projectType: 0 });
|
|
230
|
-
};
|
|
231
|
-
exports.prerenderPrompt = prerenderPrompt;
|
|
232
246
|
const projectTypePrompt = (project, name) => __awaiter(void 0, void 0, void 0, function* () {
|
|
233
|
-
var
|
|
247
|
+
var _b, _c, _d, _e, _f, _g, _h, _j;
|
|
234
248
|
let prerender = false;
|
|
235
249
|
let nodeVersion;
|
|
236
250
|
let serverTarget;
|
|
237
|
-
let browserTarget = `${name}:build:${((
|
|
251
|
+
let browserTarget = `${name}:build:${((_c = (_b = project.architect) === null || _b === void 0 ? void 0 : _b.build) === null || _c === void 0 ? void 0 : _c.defaultConfiguration) || 'production'}`;
|
|
238
252
|
let prerenderTarget;
|
|
239
253
|
if (utils_1.isUniversalApp(project)) {
|
|
240
|
-
serverTarget = `${name}:server:${((
|
|
241
|
-
browserTarget = `${name}:build:${((
|
|
254
|
+
serverTarget = `${name}:server:${((_e = (_d = project.architect) === null || _d === void 0 ? void 0 : _d.server) === null || _e === void 0 ? void 0 : _e.defaultConfiguration) || 'production'}`;
|
|
255
|
+
browserTarget = `${name}:build:${((_g = (_f = project.architect) === null || _f === void 0 ? void 0 : _f.build) === null || _g === void 0 ? void 0 : _g.defaultConfiguration) || 'production'}`;
|
|
242
256
|
if (utils_1.hasPrerenderOption(project)) {
|
|
243
|
-
prerenderTarget = `${name}:prerender:${((
|
|
257
|
+
prerenderTarget = `${name}:prerender:${((_j = (_h = project.architect) === null || _h === void 0 ? void 0 : _h.prerender) === null || _j === void 0 ? void 0 : _j.defaultConfiguration) || 'production'}`;
|
|
244
258
|
const { shouldPrerender } = yield inquirer.prompt({
|
|
245
259
|
type: 'confirm',
|
|
246
260
|
name: 'shouldPrerender',
|
package/schematics/setup/ssr.js
CHANGED
|
@@ -5,7 +5,7 @@ const schematics_1 = require("@angular-devkit/schematics");
|
|
|
5
5
|
const common_1 = require("../common");
|
|
6
6
|
const versions_json_1 = require("../versions.json");
|
|
7
7
|
const tasks_1 = require("@angular-devkit/schematics/tasks");
|
|
8
|
-
const
|
|
8
|
+
const common_2 = require("../common");
|
|
9
9
|
function generateHostingConfig(project, dist, functionName, projectType) {
|
|
10
10
|
return {
|
|
11
11
|
target: project,
|
|
@@ -15,7 +15,13 @@ function generateHostingConfig(project, dist, functionName, projectType) {
|
|
|
15
15
|
source: '*.[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f].+(css|js)',
|
|
16
16
|
headers: [{
|
|
17
17
|
key: 'Cache-Control',
|
|
18
|
-
value: 'public,max-age=31536000,immutable'
|
|
18
|
+
value: 'public,max-age=31536000,immutable',
|
|
19
|
+
}]
|
|
20
|
+
}, {
|
|
21
|
+
source: '/@(ngsw-worker.js|ngsw.json)',
|
|
22
|
+
headers: [{
|
|
23
|
+
key: 'Cache-Control',
|
|
24
|
+
value: 'no-cache',
|
|
19
25
|
}]
|
|
20
26
|
}],
|
|
21
27
|
rewrites: [
|
|
@@ -78,10 +84,14 @@ const setupUniversalDeployment = (config) => {
|
|
|
78
84
|
`ssr_${options.project}`;
|
|
79
85
|
project.architect.deploy = {
|
|
80
86
|
builder: '@angular/fire:deploy',
|
|
81
|
-
options: Object.assign(Object.assign(Object.assign({ ssr: config.projectType === 2 ? 'cloud-run' : 'cloud-functions', prerender: options.prerender, firebaseProject: options.firebaseProject.projectId, firebaseHostingSite:
|
|
87
|
+
options: Object.assign(Object.assign(Object.assign({ ssr: config.projectType === 2 ? 'cloud-run' : 'cloud-functions', prerender: options.prerender, firebaseProject: options.firebaseProject.projectId, firebaseHostingSite: common_2.shortSiteName(options.firebaseHostingSite), functionName, functionsNodeVersion: config.nodeVersion, region: 'us-central1', browserTarget: options.browserTarget }, (options.serverTarget ? { serverTarget: options.serverTarget } : {})), (options.prerenderTarget ? { prerenderTarget: options.prerenderTarget } : {})), { outputPath: functionsOutput })
|
|
82
88
|
};
|
|
83
89
|
tree.overwrite(workspacePath, JSON.stringify(workspace, null, 2));
|
|
84
|
-
common_1.addDependencies(tree, versions_json_1.firebaseFunctionsDependencies,
|
|
90
|
+
common_1.addDependencies(tree, Object.entries(versions_json_1.firebaseFunctionsDependencies).reduce((acc, [dep, deets]) => {
|
|
91
|
+
deets.dev = true;
|
|
92
|
+
acc[dep] = deets;
|
|
93
|
+
return acc;
|
|
94
|
+
}, {}), config.context);
|
|
85
95
|
config.context.addTask(new tasks_1.NodePackageInstallTask());
|
|
86
96
|
generateFirebaseJson(tree, 'firebase.json', options.project, staticOutput, functionsOutput, functionName, config.projectType);
|
|
87
97
|
common_1.generateFirebaseRc(tree, '.firebaserc', options.firebaseProject.projectId, options.firebaseHostingSite, options.project);
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.setupStaticDeployment = exports.generateFirebaseJson = void 0;
|
|
4
4
|
const schematics_1 = require("@angular-devkit/schematics");
|
|
5
5
|
const common_1 = require("../common");
|
|
6
|
-
const
|
|
6
|
+
const common_2 = require("../common");
|
|
7
7
|
function emptyFirebaseJson() {
|
|
8
8
|
return {
|
|
9
9
|
hosting: []
|
|
@@ -18,13 +18,19 @@ function generateHostingConfig(project, dist) {
|
|
|
18
18
|
source: '*.[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f].+(css|js)',
|
|
19
19
|
headers: [{
|
|
20
20
|
key: 'Cache-Control',
|
|
21
|
-
value: 'public,max-age=31536000,immutable'
|
|
22
|
-
}]
|
|
21
|
+
value: 'public,max-age=31536000,immutable',
|
|
22
|
+
}],
|
|
23
|
+
}, {
|
|
24
|
+
source: '/@(ngsw-worker.js|ngsw.json)',
|
|
25
|
+
headers: [{
|
|
26
|
+
key: 'Cache-Control',
|
|
27
|
+
value: 'no-cache',
|
|
28
|
+
}],
|
|
23
29
|
}],
|
|
24
30
|
rewrites: [
|
|
25
31
|
{
|
|
26
32
|
source: '**',
|
|
27
|
-
destination: '/index.html'
|
|
33
|
+
destination: '/index.html',
|
|
28
34
|
}
|
|
29
35
|
]
|
|
30
36
|
};
|
|
@@ -62,7 +68,7 @@ const setupStaticDeployment = (config) => {
|
|
|
62
68
|
const outputPath = project.architect.build.options.outputPath;
|
|
63
69
|
project.architect.deploy = {
|
|
64
70
|
builder: '@angular/fire:deploy',
|
|
65
|
-
options: Object.assign(Object.assign({ prerender: options.prerender, ssr: false, browserTarget: options.browserTarget, firebaseProject: options.firebaseProject.projectId, firebaseHostingSite:
|
|
71
|
+
options: Object.assign(Object.assign({ prerender: options.prerender, ssr: false, browserTarget: options.browserTarget, firebaseProject: options.firebaseProject.projectId, firebaseHostingSite: common_2.shortSiteName(options.firebaseHostingSite) }, (options.serverTarget ? { serverTarget: options.serverTarget } : {})), (options.prerenderTarget ? { prerenderTarget: options.prerenderTarget } : {}))
|
|
66
72
|
};
|
|
67
73
|
tree.overwrite(workspacePath, JSON.stringify(workspace, null, 2));
|
|
68
74
|
generateFirebaseJson(tree, 'firebase.json', options.project, outputPath);
|
package/schematics/utils.js
CHANGED
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.addIgnoreFiles = exports.addToNgModule = exports.addEnvironmentEntry = exports.getFirebaseProjectNameFromFs = exports.getFirebaseProjectNameFromHost = exports.getProject = exports.getWorkspace = exports.
|
|
6
|
+
exports.addIgnoreFiles = exports.addToNgModule = exports.addFixesToServer = exports.addEnvironmentEntry = exports.getFirebaseProjectNameFromFs = exports.getFirebaseProjectNameFromHost = exports.getProject = exports.getWorkspace = exports.shortAppId = exports.hasPrerenderOption = exports.isUniversalApp = void 0;
|
|
7
7
|
const fs_1 = require("fs");
|
|
8
8
|
const path_1 = require("path");
|
|
9
9
|
const schematics_1 = require("@angular-devkit/schematics");
|
|
@@ -18,8 +18,6 @@ const hasPrerenderOption = (project) => { var _a; return (_a = project.architect
|
|
|
18
18
|
exports.hasPrerenderOption = hasPrerenderOption;
|
|
19
19
|
const shortAppId = (app) => (app === null || app === void 0 ? void 0 : app.appId) && app.appId.split('/').pop();
|
|
20
20
|
exports.shortAppId = shortAppId;
|
|
21
|
-
const shortSiteName = (site) => (site === null || site === void 0 ? void 0 : site.name) && site.name.split('/').pop();
|
|
22
|
-
exports.shortSiteName = shortSiteName;
|
|
23
21
|
function getWorkspace(host) {
|
|
24
22
|
const path = '/angular.json';
|
|
25
23
|
const configBuffer = path && host.read(path);
|
|
@@ -118,14 +116,29 @@ function addEnvironmentEntry(host, filePath, data) {
|
|
|
118
116
|
return host;
|
|
119
117
|
}
|
|
120
118
|
exports.addEnvironmentEntry = addEnvironmentEntry;
|
|
121
|
-
function
|
|
122
|
-
const
|
|
123
|
-
|
|
124
|
-
path: options.sourcePath,
|
|
125
|
-
});
|
|
126
|
-
if (!modulePath) {
|
|
119
|
+
function addFixesToServer(host, options) {
|
|
120
|
+
const serverPath = `/server.ts`;
|
|
121
|
+
if (!host.exists(serverPath)) {
|
|
127
122
|
return host;
|
|
128
123
|
}
|
|
124
|
+
const text = host.read(serverPath);
|
|
125
|
+
if (text === null) {
|
|
126
|
+
throw new schematics_1.SchematicsException(`File ${serverPath} does not exist.`);
|
|
127
|
+
}
|
|
128
|
+
const sourceText = text.toString('utf-8');
|
|
129
|
+
const addZonePatch = !sourceText.includes('import \'zone.js/dist/zone-patch-rxjs\';');
|
|
130
|
+
const addFirestorePatch = options.features.includes(7) &&
|
|
131
|
+
!sourceText.includes('import \'@angular/fire/firestore-protos\';');
|
|
132
|
+
if (addZonePatch || addFirestorePatch) {
|
|
133
|
+
common_1.overwriteIfExists(host, serverPath, sourceText.replace('import \'zone.js/dist/zone-node\';', `import 'zone.js/dist/zone-node';
|
|
134
|
+
${addZonePatch ? 'import \'zone.js/dist/zone-patch-rxjs\';' : ''}
|
|
135
|
+
${addFirestorePatch ? 'import \'@angular/fire/firestore-protos\';' : ''}`));
|
|
136
|
+
}
|
|
137
|
+
return host;
|
|
138
|
+
}
|
|
139
|
+
exports.addFixesToServer = addFixesToServer;
|
|
140
|
+
function addToNgModule(host, options) {
|
|
141
|
+
const modulePath = `/${options.sourcePath}/app/app.module.ts`;
|
|
129
142
|
if (!host.exists(modulePath)) {
|
|
130
143
|
throw new Error(`Specified module path ${modulePath} does not exist`);
|
|
131
144
|
}
|
package/schematics/versions.json
CHANGED