View firestore.gs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function main() { | |
var sheet = SpreadsheetApp.getActiveSheet(); | |
// This is set as the collection name | |
var sheetName = sheet.getName(); | |
var properties = getProperties(sheet); | |
var records = getData(sheet); | |
var firestore = getFirestore(); | |
exportToFirestore(firestore, sheetName, records, properties); | |
} |
View index.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// https://stackblitz.com/edit/typescript-h68plq?file=index.ts | |
import firebase from 'firebase/app'; | |
import 'firebase/firestore'; | |
import { syncWithElements } from './sync'; | |
const app = firebase.initializeApp({ projectId: "alwaysbecaching" }); | |
const unsub = syncWithElements(app, { | |
parent: document.querySelector('.container'), |
View selectText.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function selectText(selection) { | |
var range = selection.getRangeAt(0); | |
function replaceRange(s, start, end, substitute) { | |
return s.substring(0, start) + substitute + s.substring(end); | |
} | |
var text = selection.baseNode.textContent.substring(range.startOffset, range.endOffset); | |
var mark = `<mark>${text}</mark>`; | |
range.startContainer.parentElement.innerHTML = replaceRange(range.startContainer.textContent, range.startOffset, range.endOffset, mark); | |
} |
View index.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import { angularUniversal } from 'angular-universal-express'; | |
import * as express from 'express'; | |
const app = express(); | |
// serving static requests | |
app.use(express.static(__dirname + '/static')); | |
// serving dynamic requests | |
app.get('/*', angularUniversal({ | |
index: __dirname + '/index.html', | |
main: __dirname + '/main.<your-hash>.bundle', |
View tsconfig.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Show hidden characters
{ | |
"compilerOptions": { | |
"outDir": "../dist-server", | |
"sourceMap": true, | |
"moduleResolution": "node", | |
"target": "es5", | |
"lib": [ "es2017" ] | |
} | |
} |
View build.sh
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Build the browser bundle | |
ng build --prod | |
# Build the universal bundle | |
ng build --prod --app 1 | |
# Move the browser index.html to generate the SSR version | |
mv dist/index.html dist-server/ | |
# Treat dist as static within dist-server | |
mv dist/ dist-server/static | |
# Transpile TS server code | |
node_modules/.bin/tsc -p server/tsconfig.json |
View build.sh
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Build the browser bundle | |
ng build --prod | |
# Build the universal bundle | |
ng build --prod --app 1 | |
# Move the browser index.html to generate the SSR version | |
mv dist/index.html dist-server/ | |
# Treat dist as static within dist-server | |
mv dist/ dist-server/static |
View server.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import { angularUniversal } from 'angular-universal-express'; | |
import * as express from 'express'; | |
const app = express(); | |
/* | |
I usually copy my Angular CLI "dist" build into my "dist-server" build | |
and serve them as static files so they aren't treated as dynamic routes. | |
*/ | |
app.use(express.static(__dirname + '/dist')); | |
app.get('/*', angularUniversal({ |
View naked-import.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import * as firebase from 'firebase/app'; // Provides firebase-app.js only | |
import 'firebase/auth'; // Not named, just naked | |
const app = firebase.initializeApp({ }); | |
console.log(app.auth()); // auth object | |
console.log(app.database()); // undefined |
NewerOlder