Deployed the page to Github Pages.
This commit is contained in:
parent
1d79754e93
commit
2c89899458
62797 changed files with 6551425 additions and 15279 deletions
155
node_modules/@angular/fire/schematics/setup/index.js
generated
vendored
Normal file
155
node_modules/@angular/fire/schematics/setup/index.js
generated
vendored
Normal file
|
@ -0,0 +1,155 @@
|
|||
"use strict";
|
||||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
||||
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
||||
return new (P || (P = Promise))(function (resolve, reject) {
|
||||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
||||
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
||||
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
||||
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
||||
});
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.setupFirebase = exports.generateFirebaseJson = exports.ngAddSetupProject = exports.setupProject = void 0;
|
||||
const core_1 = require("@angular-devkit/core");
|
||||
const schematics_1 = require("@angular-devkit/schematics");
|
||||
const utils_1 = require("../utils");
|
||||
const prompts_1 = require("./prompts");
|
||||
const firebaseTools_1 = require("../firebaseTools");
|
||||
const fs_1 = require("fs");
|
||||
const path_1 = require("path");
|
||||
const common_1 = require("../common");
|
||||
const setupProject = (tree, context, features, config) => __awaiter(void 0, void 0, void 0, function* () {
|
||||
var _a;
|
||||
const { path: workspacePath, workspace } = utils_1.getWorkspace(tree);
|
||||
const { project, projectName } = utils_1.getProject(config, tree);
|
||||
const sourcePath = (_a = project.sourceRoot) !== null && _a !== void 0 ? _a : project.root;
|
||||
utils_1.addIgnoreFiles(tree);
|
||||
const featuresToImport = features.filter(it => it !== 0);
|
||||
if (featuresToImport.length > 0) {
|
||||
utils_1.addToNgModule(tree, { features: featuresToImport, sourcePath });
|
||||
utils_1.addFixesToServer(tree, { features: featuresToImport, sourcePath });
|
||||
}
|
||||
if (config.sdkConfig) {
|
||||
const source = `
|
||||
firebase: {
|
||||
${Object.entries(config.sdkConfig).reduce((c, [k, v]) => c.concat(` ${k}: '${v}'`), []).join(',\n')},
|
||||
}`;
|
||||
const environmentPath = `${sourcePath}/environments/environment.ts`;
|
||||
utils_1.addEnvironmentEntry(tree, `/${environmentPath}`, source);
|
||||
Object.values(project.architect || {}).forEach(builder => {
|
||||
Object.values(builder.configurations || {}).forEach(configuration => {
|
||||
(configuration.fileReplacements || []).forEach((replacement) => {
|
||||
if (replacement.replace === environmentPath) {
|
||||
utils_1.addEnvironmentEntry(tree, `/${replacement.with}`, source);
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
const options = {
|
||||
project: projectName,
|
||||
firebaseProject: config.firebaseProject,
|
||||
firebaseApp: config.firebaseApp,
|
||||
firebaseHostingSite: config.firebaseHostingSite,
|
||||
sdkConfig: config.sdkConfig,
|
||||
prerender: undefined,
|
||||
browserTarget: config.browserTarget,
|
||||
serverTarget: config.serverTarget,
|
||||
prerenderTarget: config.prerenderTarget,
|
||||
ssrRegion: config.ssrRegion,
|
||||
};
|
||||
if (features.includes(0)) {
|
||||
return exports.setupFirebase({
|
||||
workspace,
|
||||
workspacePath,
|
||||
options,
|
||||
tree,
|
||||
context,
|
||||
project
|
||||
});
|
||||
}
|
||||
else {
|
||||
return Promise.resolve();
|
||||
}
|
||||
});
|
||||
exports.setupProject = setupProject;
|
||||
const ngAddSetupProject = (options) => (host, context) => __awaiter(void 0, void 0, void 0, function* () {
|
||||
let projectRoot = host._backend._root;
|
||||
if (process.platform.startsWith('win32')) {
|
||||
projectRoot = core_1.asWindowsPath(core_1.normalize(projectRoot));
|
||||
}
|
||||
const features = yield prompts_1.featuresPrompt();
|
||||
if (features.length > 0) {
|
||||
const firebaseTools = yield firebaseTools_1.getFirebaseTools();
|
||||
if (!host.exists('/firebase.json')) {
|
||||
fs_1.writeFileSync(path_1.join(projectRoot, 'firebase.json'), '{}');
|
||||
}
|
||||
const user = yield prompts_1.userPrompt({ projectRoot });
|
||||
yield firebaseTools.login.use(user.email, { projectRoot });
|
||||
const { project: ngProject, projectName: ngProjectName } = utils_1.getProject(options, host);
|
||||
const [defaultProjectName] = utils_1.getFirebaseProjectNameFromHost(host, ngProjectName);
|
||||
const firebaseProject = yield prompts_1.projectPrompt(defaultProjectName, { projectRoot, account: user.email });
|
||||
let hosting = {};
|
||||
let firebaseHostingSite;
|
||||
if (features.includes(0)) {
|
||||
const results = yield prompts_1.projectTypePrompt(ngProject, ngProjectName);
|
||||
hosting = Object.assign(Object.assign({}, hosting), results);
|
||||
firebaseHostingSite = yield prompts_1.sitePrompt(firebaseProject, { projectRoot });
|
||||
}
|
||||
let firebaseApp;
|
||||
let sdkConfig;
|
||||
if (features.find(it => it !== 0)) {
|
||||
const defaultAppId = firebaseHostingSite === null || firebaseHostingSite === void 0 ? void 0 : firebaseHostingSite.appId;
|
||||
firebaseApp = yield prompts_1.appPrompt(firebaseProject, defaultAppId, { projectRoot });
|
||||
const result = yield firebaseTools.apps.sdkconfig('web', firebaseApp.appId, { nonInteractive: true, projectRoot });
|
||||
sdkConfig = result.sdkConfig;
|
||||
}
|
||||
yield exports.setupProject(host, context, features, Object.assign(Object.assign(Object.assign({}, options), hosting), { firebaseProject, firebaseApp, firebaseHostingSite, sdkConfig }));
|
||||
}
|
||||
});
|
||||
exports.ngAddSetupProject = ngAddSetupProject;
|
||||
function generateFirebaseJson(tree, path, project, region) {
|
||||
const firebaseJson = tree.exists(path)
|
||||
? common_1.safeReadJSON(path, tree)
|
||||
: {};
|
||||
const newConfig = {
|
||||
target: project,
|
||||
source: '.',
|
||||
frameworksBackend: {
|
||||
region
|
||||
}
|
||||
};
|
||||
if (firebaseJson.hosting === undefined) {
|
||||
firebaseJson.hosting = [newConfig];
|
||||
}
|
||||
else if (Array.isArray(firebaseJson.hosting)) {
|
||||
const existingConfigIndex = firebaseJson.hosting.findIndex(config => config.target === newConfig.target);
|
||||
if (existingConfigIndex > -1) {
|
||||
firebaseJson.hosting.splice(existingConfigIndex, 1, newConfig);
|
||||
}
|
||||
else {
|
||||
firebaseJson.hosting.push(newConfig);
|
||||
}
|
||||
}
|
||||
else {
|
||||
firebaseJson.hosting = [firebaseJson.hosting, newConfig];
|
||||
}
|
||||
common_1.overwriteIfExists(tree, path, common_1.stringifyFormatted(firebaseJson));
|
||||
}
|
||||
exports.generateFirebaseJson = generateFirebaseJson;
|
||||
const setupFirebase = (config) => {
|
||||
const { tree, workspacePath, workspace, options } = config;
|
||||
const project = workspace.projects[options.project];
|
||||
if (!project.architect) {
|
||||
throw new schematics_1.SchematicsException(`Angular project "${options.project}" has a malformed angular.json`);
|
||||
}
|
||||
project.architect.deploy = {
|
||||
builder: '@angular/fire:deploy',
|
||||
options: Object.assign(Object.assign({ version: 2, browserTarget: options.browserTarget }, (options.serverTarget ? { serverTarget: options.serverTarget } : {})), (options.prerenderTarget ? { prerenderTarget: options.prerenderTarget } : {}))
|
||||
};
|
||||
tree.overwrite(workspacePath, JSON.stringify(workspace, null, 2));
|
||||
generateFirebaseJson(tree, 'firebase.json', options.project, options.ssrRegion);
|
||||
common_1.generateFirebaseRc(tree, '.firebaserc', options.firebaseProject.projectId, options.firebaseHostingSite, options.project);
|
||||
return tree;
|
||||
};
|
||||
exports.setupFirebase = setupFirebase;
|
275
node_modules/@angular/fire/schematics/setup/prompts.js
generated
vendored
Normal file
275
node_modules/@angular/fire/schematics/setup/prompts.js
generated
vendored
Normal file
|
@ -0,0 +1,275 @@
|
|||
"use strict";
|
||||
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
||||
if (k2 === undefined) k2 = k;
|
||||
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
||||
}) : (function(o, m, k, k2) {
|
||||
if (k2 === undefined) k2 = k;
|
||||
o[k2] = m[k];
|
||||
}));
|
||||
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
||||
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
||||
}) : function(o, v) {
|
||||
o["default"] = v;
|
||||
});
|
||||
var __importStar = (this && this.__importStar) || function (mod) {
|
||||
if (mod && mod.__esModule) return mod;
|
||||
var result = {};
|
||||
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
||||
__setModuleDefault(result, mod);
|
||||
return result;
|
||||
};
|
||||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
||||
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
||||
return new (P || (P = Promise))(function (resolve, reject) {
|
||||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
||||
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
||||
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
||||
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
||||
});
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.projectTypePrompt = exports.sitePrompt = exports.appPrompt = exports.projectPrompt = exports.userPrompt = exports.featuresPrompt = exports.searchSites = exports.searchApps = exports.searchProjects = void 0;
|
||||
const fuzzy = __importStar(require("fuzzy"));
|
||||
const inquirer = __importStar(require("inquirer"));
|
||||
const interfaces_1 = require("../interfaces");
|
||||
const utils_1 = require("../utils");
|
||||
const firebaseTools_1 = require("../firebaseTools");
|
||||
const common_1 = require("../common");
|
||||
inquirer.registerPrompt('autocomplete', require('inquirer-autocomplete-prompt'));
|
||||
const NEW_OPTION = '~~angularfire-new~~';
|
||||
const DEFAULT_SITE_TYPE = 'DEFAULT_SITE';
|
||||
const isProject = (elem) => {
|
||||
return elem.original === undefined;
|
||||
};
|
||||
const isApp = (elem) => {
|
||||
return elem.original === undefined;
|
||||
};
|
||||
const isSite = (elem) => {
|
||||
return elem.original === undefined;
|
||||
};
|
||||
const searchProjects = (projects) => (_, input) => __awaiter(void 0, void 0, void 0, function* () {
|
||||
projects.unshift({
|
||||
projectId: NEW_OPTION,
|
||||
displayName: '[CREATE NEW PROJECT]'
|
||||
});
|
||||
return fuzzy.filter(input, projects, {
|
||||
extract(el) {
|
||||
return `${el.projectId} ${el.displayName}`;
|
||||
}
|
||||
}).map((result) => {
|
||||
let original;
|
||||
if (isProject(result)) {
|
||||
original = result;
|
||||
}
|
||||
else {
|
||||
original = result.original;
|
||||
}
|
||||
return {
|
||||
name: original.displayName,
|
||||
title: original.displayName,
|
||||
value: original.projectId
|
||||
};
|
||||
});
|
||||
});
|
||||
exports.searchProjects = searchProjects;
|
||||
const searchApps = (apps) => (_, input) => __awaiter(void 0, void 0, void 0, function* () {
|
||||
apps.unshift({
|
||||
appId: NEW_OPTION,
|
||||
displayName: '[CREATE NEW APP]',
|
||||
});
|
||||
return fuzzy.filter(input, apps, {
|
||||
extract(el) {
|
||||
return el.displayName;
|
||||
}
|
||||
}).map((result) => {
|
||||
let original;
|
||||
if (isApp(result)) {
|
||||
original = result;
|
||||
}
|
||||
else {
|
||||
original = result.original;
|
||||
}
|
||||
return {
|
||||
name: original.displayName,
|
||||
title: original.displayName,
|
||||
value: utils_1.shortAppId(original),
|
||||
};
|
||||
});
|
||||
});
|
||||
exports.searchApps = searchApps;
|
||||
const searchSites = (sites) => (_, input) => __awaiter(void 0, void 0, void 0, function* () {
|
||||
sites.unshift({
|
||||
name: NEW_OPTION,
|
||||
defaultUrl: '[CREATE NEW SITE]',
|
||||
});
|
||||
return fuzzy.filter(input, sites, {
|
||||
extract(el) {
|
||||
return el.defaultUrl;
|
||||
}
|
||||
}).map((result) => {
|
||||
let original;
|
||||
if (isSite(result)) {
|
||||
original = result;
|
||||
}
|
||||
else {
|
||||
original = result.original;
|
||||
}
|
||||
return {
|
||||
name: original.defaultUrl,
|
||||
title: original.defaultUrl,
|
||||
value: common_1.shortSiteName(original),
|
||||
};
|
||||
});
|
||||
});
|
||||
exports.searchSites = searchSites;
|
||||
const autocomplete = (questions) => inquirer.prompt(questions);
|
||||
const featuresPrompt = () => __awaiter(void 0, void 0, void 0, function* () {
|
||||
const { features } = yield inquirer.prompt({
|
||||
type: 'checkbox',
|
||||
name: 'features',
|
||||
choices: interfaces_1.featureOptions,
|
||||
message: 'What features would you like to setup?',
|
||||
default: [0],
|
||||
});
|
||||
return features;
|
||||
});
|
||||
exports.featuresPrompt = featuresPrompt;
|
||||
const userPrompt = (options) => __awaiter(void 0, void 0, void 0, function* () {
|
||||
var _a;
|
||||
const firebaseTools = yield firebaseTools_1.getFirebaseTools();
|
||||
const users = yield firebaseTools.login.list();
|
||||
if (!users || users.length === 0) {
|
||||
yield firebaseTools.login();
|
||||
const user = yield firebaseTools.login(options);
|
||||
return user;
|
||||
}
|
||||
else {
|
||||
const defaultUser = yield firebaseTools.login(options);
|
||||
const choices = users.map(({ user }) => ({ name: user.email, value: user }));
|
||||
const newChoice = { name: '[Login in with another account]', value: NEW_OPTION };
|
||||
const { user } = yield inquirer.prompt({
|
||||
type: 'list',
|
||||
name: 'user',
|
||||
choices: [newChoice].concat(choices),
|
||||
message: 'Which Firebase account would you like to use?',
|
||||
default: (_a = choices.find(it => it.value.email === defaultUser.email)) === null || _a === void 0 ? void 0 : _a.value,
|
||||
});
|
||||
if (user === NEW_OPTION) {
|
||||
const { user } = yield firebaseTools.login.add();
|
||||
return user;
|
||||
}
|
||||
return user;
|
||||
}
|
||||
});
|
||||
exports.userPrompt = userPrompt;
|
||||
const projectPrompt = (defaultProject, options) => __awaiter(void 0, void 0, void 0, function* () {
|
||||
const firebaseTools = yield firebaseTools_1.getFirebaseTools();
|
||||
const projects = yield firebaseTools.projects.list(options);
|
||||
const { projectId } = yield autocomplete({
|
||||
type: 'autocomplete',
|
||||
name: 'projectId',
|
||||
source: exports.searchProjects(projects),
|
||||
message: 'Please select a project:',
|
||||
default: defaultProject,
|
||||
});
|
||||
if (projectId === NEW_OPTION) {
|
||||
const { projectId } = yield inquirer.prompt({
|
||||
type: 'input',
|
||||
name: 'projectId',
|
||||
message: `Please specify a unique project id (cannot be modified afterward) [6-30 characters]:`,
|
||||
});
|
||||
const { displayName } = yield inquirer.prompt({
|
||||
type: 'input',
|
||||
name: 'displayName',
|
||||
message: 'What would you like to call your project?',
|
||||
default: projectId,
|
||||
});
|
||||
return yield firebaseTools.projects.create(projectId, { account: options.account, displayName, nonInteractive: true });
|
||||
}
|
||||
return (yield projects).find(it => it.projectId === projectId);
|
||||
});
|
||||
exports.projectPrompt = projectPrompt;
|
||||
const appPrompt = ({ projectId: project }, defaultAppId, options) => __awaiter(void 0, void 0, void 0, function* () {
|
||||
const firebaseTools = yield firebaseTools_1.getFirebaseTools();
|
||||
const apps = yield firebaseTools.apps.list('web', Object.assign(Object.assign({}, options), { project }));
|
||||
const { appId } = yield autocomplete({
|
||||
type: 'autocomplete',
|
||||
name: 'appId',
|
||||
source: exports.searchApps(apps),
|
||||
message: 'Please select an app:',
|
||||
default: defaultAppId,
|
||||
});
|
||||
if (appId === NEW_OPTION) {
|
||||
const { displayName } = yield inquirer.prompt({
|
||||
type: 'input',
|
||||
name: 'displayName',
|
||||
message: 'What would you like to call your app?',
|
||||
});
|
||||
return yield firebaseTools.apps.create('web', displayName, Object.assign(Object.assign({}, options), { nonInteractive: true, project }));
|
||||
}
|
||||
return (yield apps).find(it => utils_1.shortAppId(it) === appId);
|
||||
});
|
||||
exports.appPrompt = appPrompt;
|
||||
const sitePrompt = ({ projectId: project }, options) => __awaiter(void 0, void 0, void 0, function* () {
|
||||
const firebaseTools = yield firebaseTools_1.getFirebaseTools();
|
||||
const sites = yield firebaseTools.hosting.sites.list(Object.assign(Object.assign({}, options), { project })).then(it => {
|
||||
if (it.sites.length === 0) {
|
||||
return [{
|
||||
name: project,
|
||||
defaultUrl: `https://${project}.web.app`,
|
||||
type: DEFAULT_SITE_TYPE,
|
||||
appId: undefined,
|
||||
}];
|
||||
}
|
||||
else {
|
||||
return it.sites;
|
||||
}
|
||||
});
|
||||
const { siteName } = yield autocomplete({
|
||||
type: 'autocomplete',
|
||||
name: 'siteName',
|
||||
source: exports.searchSites(sites),
|
||||
message: 'Please select a hosting site:',
|
||||
default: _ => common_1.shortSiteName(sites.find(site => site.type === DEFAULT_SITE_TYPE)),
|
||||
});
|
||||
if (siteName === NEW_OPTION) {
|
||||
const { subdomain } = yield inquirer.prompt({
|
||||
type: 'input',
|
||||
name: 'subdomain',
|
||||
message: 'Please provide an unique, URL-friendly id for the site (<id>.web.app):',
|
||||
});
|
||||
return yield firebaseTools.hosting.sites.create(subdomain, Object.assign(Object.assign({}, options), { nonInteractive: true, project }));
|
||||
}
|
||||
return (yield sites).find(it => common_1.shortSiteName(it) === siteName);
|
||||
});
|
||||
exports.sitePrompt = sitePrompt;
|
||||
const DEFAULT_REGION = 'us-central1';
|
||||
const ALLOWED_SSR_REGIONS = [
|
||||
{ name: 'us-central1 (Iowa)', value: 'us-central1' },
|
||||
{ name: 'us-west1 (Oregon)', value: 'us-west1' },
|
||||
{ name: 'us-east1 (South Carolina)', value: 'us-east1' },
|
||||
{ name: 'europe-west1 (Belgium)', value: 'europe-west1' },
|
||||
{ name: 'asia-east1 (Taiwan)', value: 'asia-east1' },
|
||||
];
|
||||
const projectTypePrompt = (project, name) => __awaiter(void 0, void 0, void 0, function* () {
|
||||
var _b, _c, _d, _e, _f, _g;
|
||||
let serverTarget;
|
||||
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'}`;
|
||||
let prerenderTarget;
|
||||
if (utils_1.isUniversalApp(project)) {
|
||||
serverTarget = `${name}:server:${((_e = (_d = project.architect) === null || _d === void 0 ? void 0 : _d.server) === null || _e === void 0 ? void 0 : _e.defaultConfiguration) || 'production'}`;
|
||||
browserTarget = `${name}:build:${((_g = (_f = project.architect) === null || _f === void 0 ? void 0 : _f.build) === null || _g === void 0 ? void 0 : _g.defaultConfiguration) || 'production'}`;
|
||||
const prerender = utils_1.hasPrerenderOption(project);
|
||||
prerenderTarget = prerender && `${name}:prerender:${prerender.defaultConfiguration || 'production'}`;
|
||||
const { ssrRegion } = yield inquirer.prompt({
|
||||
type: 'list',
|
||||
name: 'ssrRegion',
|
||||
choices: ALLOWED_SSR_REGIONS,
|
||||
message: 'In which region would you like to host server-side content?',
|
||||
default: DEFAULT_REGION,
|
||||
});
|
||||
return { prerender, projectType: 3, ssrRegion, browserTarget, serverTarget, prerenderTarget };
|
||||
}
|
||||
return { projectType: 3, browserTarget, serverTarget, prerenderTarget };
|
||||
});
|
||||
exports.projectTypePrompt = projectTypePrompt;
|
16
node_modules/@angular/fire/schematics/setup/schema.json
generated
vendored
Normal file
16
node_modules/@angular/fire/schematics/setup/schema.json
generated
vendored
Normal file
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"$schema": "http://json-schema.org/draft-07/schema",
|
||||
"$id": "angular-fire-ng-add",
|
||||
"title": "AngularFire ng-add",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"project": {
|
||||
"type": "string",
|
||||
"description": "The name of the project.",
|
||||
"$default": {
|
||||
"$source": "projectName"
|
||||
}
|
||||
}
|
||||
},
|
||||
"required": []
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue