@angular/fire 7.5.0 → 7.6.0-canary.34e89a4
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/README.md +95 -74
- package/analytics/is-analytics-supported-factory.d.ts +4 -0
- package/bundles/angular-fire-analytics.umd.js +41 -31
- package/bundles/angular-fire-analytics.umd.js.map +1 -1
- package/bundles/angular-fire-app-check.umd.js +14 -18
- package/bundles/angular-fire-app-check.umd.js.map +1 -1
- package/bundles/angular-fire-app.umd.js +14 -18
- package/bundles/angular-fire-app.umd.js.map +1 -1
- package/bundles/angular-fire-auth-guard.umd.js +5 -7
- package/bundles/angular-fire-auth-guard.umd.js.map +1 -1
- package/bundles/angular-fire-auth.umd.js +64 -68
- package/bundles/angular-fire-auth.umd.js.map +1 -1
- package/bundles/angular-fire-compat-analytics.umd.js +11 -13
- package/bundles/angular-fire-compat-analytics.umd.js.map +1 -1
- package/bundles/angular-fire-compat-auth-guard.umd.js +6 -8
- package/bundles/angular-fire-compat-auth-guard.umd.js.map +1 -1
- package/bundles/angular-fire-compat-auth.umd.js +11 -13
- package/bundles/angular-fire-compat-auth.umd.js.map +1 -1
- package/bundles/angular-fire-compat-database.umd.js +9 -11
- package/bundles/angular-fire-compat-database.umd.js.map +1 -1
- package/bundles/angular-fire-compat-firestore.umd.js +9 -11
- package/bundles/angular-fire-compat-firestore.umd.js.map +1 -1
- package/bundles/angular-fire-compat-functions.umd.js +9 -11
- package/bundles/angular-fire-compat-functions.umd.js.map +1 -1
- package/bundles/angular-fire-compat-messaging.umd.js +8 -10
- package/bundles/angular-fire-compat-messaging.umd.js.map +1 -1
- package/bundles/angular-fire-compat-performance.umd.js +8 -10
- package/bundles/angular-fire-compat-performance.umd.js.map +1 -1
- package/bundles/angular-fire-compat-remote-config.umd.js +9 -11
- package/bundles/angular-fire-compat-remote-config.umd.js.map +1 -1
- package/bundles/angular-fire-compat-storage.umd.js +8 -10
- package/bundles/angular-fire-compat-storage.umd.js.map +1 -1
- package/bundles/angular-fire-compat.umd.js +13 -15
- package/bundles/angular-fire-compat.umd.js.map +1 -1
- package/bundles/angular-fire-database.umd.js +59 -67
- package/bundles/angular-fire-database.umd.js.map +1 -1
- package/bundles/angular-fire-firestore-lite.umd.js +50 -54
- package/bundles/angular-fire-firestore-lite.umd.js.map +1 -1
- package/bundles/angular-fire-firestore.umd.js +67 -71
- package/bundles/angular-fire-firestore.umd.js.map +1 -1
- package/bundles/angular-fire-functions.umd.js +15 -19
- package/bundles/angular-fire-functions.umd.js.map +1 -1
- package/bundles/angular-fire-messaging.umd.js +33 -23
- package/bundles/angular-fire-messaging.umd.js.map +1 -1
- package/bundles/angular-fire-performance.umd.js +17 -21
- package/bundles/angular-fire-performance.umd.js.map +1 -1
- package/bundles/angular-fire-remote-config.umd.js +47 -37
- package/bundles/angular-fire-remote-config.umd.js.map +1 -1
- package/bundles/angular-fire-storage.umd.js +27 -31
- package/bundles/angular-fire-storage.umd.js.map +1 -1
- package/bundles/angular-fire.umd.js +16 -59
- package/bundles/angular-fire.umd.js.map +1 -1
- package/compat/firestore/interfaces.d.ts +4 -4
- package/core.d.ts +1 -12
- package/docs/analytics.md +67 -0
- package/docs/app-check.md +53 -0
- package/docs/auth.md +165 -0
- package/docs/{analytics → compat/analytics}/getting-started.md +2 -0
- package/docs/{auth → compat/auth}/getting-started.md +2 -0
- package/docs/{auth → compat/auth}/router-guards.md +2 -0
- package/docs/{emulators → compat/emulators}/emulators.md +2 -0
- package/docs/{firestore → compat/firestore}/collections.md +2 -0
- package/docs/{firestore → compat/firestore}/documents.md +2 -0
- package/docs/{firestore → compat/firestore}/offline-data.md +2 -0
- package/docs/{firestore → compat/firestore}/querying-collections.md +2 -0
- package/docs/{functions → compat/functions}/functions.md +2 -0
- package/docs/{messaging → compat/messaging}/messaging.md +2 -0
- package/docs/{performance → compat/performance}/getting-started.md +2 -0
- package/docs/{remote-config → compat/remote-config}/getting-started.md +2 -0
- package/docs/{rtdb → compat/rtdb}/lists.md +2 -0
- package/docs/{rtdb → compat/rtdb}/objects.md +2 -0
- package/docs/{rtdb → compat/rtdb}/querying-lists.md +2 -0
- package/docs/{storage → compat/storage}/storage.md +2 -0
- package/docs/compat.md +70 -0
- package/docs/database.md +175 -0
- package/docs/deploy/getting-started.md +2 -2
- package/docs/firestore.md +148 -0
- package/docs/functions.md +52 -0
- package/docs/images/analytics-illo_1x.png +0 -0
- package/docs/images/auth-illo_1x.png +0 -0
- package/docs/images/cloud-messaging-illo_1x.png +0 -0
- package/docs/images/database-illo_1x.png +0 -0
- package/docs/images/firestore-illo_1x.png +0 -0
- package/docs/images/functions-illo_1x.png +0 -0
- package/docs/images/hosting-illo_1x.png +0 -0
- package/docs/images/performance-illo_1x.png +0 -0
- package/docs/images/reCAPTCHA-logo@1x.png +0 -0
- package/docs/images/remote-config-illo_1x.png +0 -0
- package/docs/images/storage-illo_1x.png +0 -0
- package/docs/install-and-setup.md +39 -86
- package/docs/install-firebase-tools.md +78 -0
- package/docs/messaging.md +25 -0
- package/docs/performance.md +57 -0
- package/docs/remote-config.md +53 -0
- package/docs/storage.md +90 -0
- package/docs/universal/cloud-functions.md +27 -6
- package/docs/universal/getting-started.md +9 -134
- package/esm2015/analytics/analytics.module.js +7 -6
- package/esm2015/analytics/is-analytics-supported-factory.js +16 -0
- package/esm2015/analytics/overrides.js +3 -3
- package/esm2015/compat/firestore/interfaces.js +1 -1
- package/esm2015/core.js +3 -45
- package/esm2015/messaging/is-messaging-supported-factory.js +16 -0
- package/esm2015/messaging/messaging.module.js +7 -6
- package/esm2015/messaging/overrides.js +3 -3
- package/esm2015/remote-config/is-remote-config-supported-factory.js +16 -0
- package/esm2015/remote-config/overrides.js +3 -3
- package/esm2015/remote-config/remote-config.module.js +7 -6
- package/fesm2015/angular-fire-analytics.js +21 -7
- package/fesm2015/angular-fire-analytics.js.map +1 -1
- package/fesm2015/angular-fire-app-check.js.map +1 -1
- package/fesm2015/angular-fire-app.js.map +1 -1
- package/fesm2015/angular-fire-auth-guard.js.map +1 -1
- package/fesm2015/angular-fire-auth.js.map +1 -1
- package/fesm2015/angular-fire-compat-analytics.js.map +1 -1
- package/fesm2015/angular-fire-compat-auth-guard.js.map +1 -1
- package/fesm2015/angular-fire-compat-auth.js.map +1 -1
- package/fesm2015/angular-fire-compat-database.js +1 -1
- package/fesm2015/angular-fire-compat-database.js.map +1 -1
- package/fesm2015/angular-fire-compat-firestore.js +1 -1
- package/fesm2015/angular-fire-compat-firestore.js.map +1 -1
- package/fesm2015/angular-fire-compat-functions.js.map +1 -1
- package/fesm2015/angular-fire-compat-messaging.js.map +1 -1
- package/fesm2015/angular-fire-compat-performance.js.map +1 -1
- package/fesm2015/angular-fire-compat-remote-config.js.map +1 -1
- package/fesm2015/angular-fire-compat-storage.js.map +1 -1
- package/fesm2015/angular-fire-compat.js.map +1 -1
- package/fesm2015/angular-fire-database.js.map +1 -1
- package/fesm2015/angular-fire-firestore-lite.js.map +1 -1
- package/fesm2015/angular-fire-firestore.js.map +1 -1
- package/fesm2015/angular-fire-functions.js.map +1 -1
- package/fesm2015/angular-fire-messaging.js +21 -7
- package/fesm2015/angular-fire-messaging.js.map +1 -1
- package/fesm2015/angular-fire-performance.js.map +1 -1
- package/fesm2015/angular-fire-remote-config.js +22 -8
- package/fesm2015/angular-fire-remote-config.js.map +1 -1
- package/fesm2015/angular-fire-storage.js.map +1 -1
- package/fesm2015/angular-fire.js +3 -45
- package/fesm2015/angular-fire.js.map +1 -1
- package/messaging/is-messaging-supported-factory.d.ts +4 -0
- package/package.json +9 -10
- package/remote-config/is-remote-config-supported-factory.d.ts +4 -0
- package/schematics/deploy/actions.js +8 -3
- package/schematics/deploy/builder.js +2 -2
- package/schematics/firebaseTools.js +4 -2
- package/schematics/setup/index.js +58 -29
- package/schematics/setup/prompts.js +18 -46
- package/schematics/utils.js +32 -28
- package/docs/ionic/authentication.md +0 -104
- package/docs/ionic/cli.md +0 -218
- package/docs/ionic/v2.md +0 -531
- package/docs/ionic/v3.md +0 -705
- package/schematics/setup/ssr.js +0 -100
- package/schematics/setup/static.js +0 -78
package/docs/storage.md
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
<img align="right" width="30%" src="images/storage-illo_1x.png">
|
|
2
|
+
|
|
3
|
+
<small>
|
|
4
|
+
<a href="https://github.com/angular/angularfire">AngularFire</a> ❱ <a href="../README.md#developer-guide">Developer Guide</a> ❱ Realtime Cloud Storage
|
|
5
|
+
</small>
|
|
6
|
+
|
|
7
|
+
# Cloud Storage
|
|
8
|
+
|
|
9
|
+
Cloud Storage allows developers to upload and share user generated content such as images, video and more. Data is stored in Google Cloud Storage.
|
|
10
|
+
|
|
11
|
+
[Learn more](https://firebase.google.com/docs/storage)
|
|
12
|
+
|
|
13
|
+
## Dependency Injection
|
|
14
|
+
|
|
15
|
+
AngularFire allows you to work with Firebase Storage via Angular's Dependency Injection.
|
|
16
|
+
|
|
17
|
+
As a prerequisite, ensure that `AngularFire` has been added to your project via
|
|
18
|
+
```bash
|
|
19
|
+
ng add @angular/fire
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Provide a Firebase Storage instance in the application's `NgModule` (`app.module.ts`):
|
|
23
|
+
|
|
24
|
+
```ts
|
|
25
|
+
import { provideFirebaseApp, initializeApp } from '@angular/fire/app';
|
|
26
|
+
import { getStorage, provideStorage } from '@angular/fire/storage';
|
|
27
|
+
|
|
28
|
+
@NgModule({
|
|
29
|
+
imports: [
|
|
30
|
+
provideFirebaseApp(() => initializeApp(environment.firebase)),
|
|
31
|
+
provideStorage(() => getStorage()),
|
|
32
|
+
]
|
|
33
|
+
})
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Next inject it into your component:
|
|
37
|
+
|
|
38
|
+
```ts
|
|
39
|
+
import { Component, inject} from '@angular/core';
|
|
40
|
+
import { Storage } from '@angular/fire/storage';
|
|
41
|
+
|
|
42
|
+
@Component({ ... })
|
|
43
|
+
export class StorageComponent {
|
|
44
|
+
private storage: Storage = inject(Storage);
|
|
45
|
+
...
|
|
46
|
+
}
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
## Firebase API
|
|
51
|
+
|
|
52
|
+
AngularFire wraps the Firebase JS SDK to ensure proper functionality in Angular, while providing the same API.
|
|
53
|
+
|
|
54
|
+
Update the imports from `import { ... } from 'firebase/storage'` to `import { ... } from '@angular/fire/storage'` and follow the offical documentation.
|
|
55
|
+
|
|
56
|
+
[Getting Started](https://firebase.google.com/docs/storage/web/start) | [API Reference](https://firebase.google.com/docs/reference/js/storage)
|
|
57
|
+
|
|
58
|
+
## File Upload Example
|
|
59
|
+
|
|
60
|
+
```ts
|
|
61
|
+
import { Component, inject } from '@angular/core';
|
|
62
|
+
import { Storage, ref, uploadBytesResumable } from '@angular/fire/storage';
|
|
63
|
+
|
|
64
|
+
@Component({
|
|
65
|
+
selector: 'app-storage',
|
|
66
|
+
template: `
|
|
67
|
+
<h1>Storage</h1>
|
|
68
|
+
<label for="fileUpload">Choose a File</label>
|
|
69
|
+
<input id="fileUpload" type="file" #upload>
|
|
70
|
+
<button (click)="uploadFile(upload)">Upload</button>
|
|
71
|
+
`,
|
|
72
|
+
})
|
|
73
|
+
export class StorageComponent {
|
|
74
|
+
private readonly storage: Storage = inject(Storage);
|
|
75
|
+
|
|
76
|
+
uploadFile(input: HTMLInputElement) {
|
|
77
|
+
if (!input.files) return
|
|
78
|
+
|
|
79
|
+
const files: FileList = input.files;
|
|
80
|
+
|
|
81
|
+
for (let i = 0; i < files.length; i++) {
|
|
82
|
+
const file = files.item(i);
|
|
83
|
+
if (file) {
|
|
84
|
+
const storageRef = ref(this.storage, file.name);
|
|
85
|
+
uploadBytesResumable(storageRef, file);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
```
|
|
@@ -40,8 +40,8 @@ Let's go ahead and modify your `package.json` to build for Cloud Functions:
|
|
|
40
40
|
```js
|
|
41
41
|
"scripts": {
|
|
42
42
|
// ... omitted
|
|
43
|
-
"build": "ng build && npm run
|
|
44
|
-
"copy:hosting": "cp -r ./dist/YOUR_PROJECT_NAME/* ./public && rm ./public/index.html",
|
|
43
|
+
"build": "ng build && npm run build:ssr && npm run copy:hosting && npm run build:functions",
|
|
44
|
+
"copy:hosting": "cp -r ./dist/YOUR_PROJECT_NAME/* ./public && rm -f ./public/index.html",
|
|
45
45
|
"build:functions": "npm run --prefix functions build"
|
|
46
46
|
},
|
|
47
47
|
```
|
|
@@ -51,21 +51,42 @@ Change the build script in your `functions/package.json` to the following:
|
|
|
51
51
|
```js
|
|
52
52
|
"scripts": {
|
|
53
53
|
// ... omitted
|
|
54
|
-
"build": "rm -
|
|
54
|
+
"build": "rm -rf ./dist && cp -r ../dist . && tsc",
|
|
55
55
|
}
|
|
56
56
|
```
|
|
57
57
|
|
|
58
|
+
You will either need to install the dependencies from the `functions/package.json` or add them to your root `package.json`.
|
|
59
|
+
|
|
58
60
|
Finally, add the following to your `functions/src/index.ts`:
|
|
59
61
|
|
|
60
62
|
```ts
|
|
61
63
|
export const universal = functions.https.onRequest((request, response) => {
|
|
62
|
-
require(`${process.cwd()}/dist/YOUR_PROJECT_NAME
|
|
64
|
+
require(`${process.cwd()}/dist/YOUR_PROJECT_NAME/server/main`).app()(request, response);
|
|
63
65
|
});
|
|
64
66
|
```
|
|
65
67
|
|
|
66
|
-
|
|
68
|
+
In the `server.ts` file generated by the Angular CLI ensure that the `index.html` is being read from the correct place.
|
|
69
|
+
|
|
70
|
+
As of writing the Angular CLI generates:
|
|
71
|
+
|
|
72
|
+
```typescript
|
|
73
|
+
const indexHtml = existsSync(join(distFolder, 'index.original.html')) ? 'index.original.html' : 'index.html';
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
this needs to be changed to:
|
|
77
|
+
|
|
78
|
+
```typescript
|
|
79
|
+
const indexHtml = existsSync(join(distFolder, 'index.original.html')) ? 'index.original.html' : join(distFolder, 'index.html');
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
So that the `index.html` is read from the correct `dist` folder.
|
|
83
|
+
|
|
84
|
+
You should now be able to run `npm run build` to build your project for Firebase Hosting and Cloud Functions.
|
|
85
|
+
|
|
86
|
+
To test, spin up the emulator with `firebase serve`. Once you've confirmed its working go ahead and `firebase deploy`.
|
|
67
87
|
|
|
68
|
-
|
|
88
|
+
_Note: Universal will now SSR your application and serve it, depending on how you have your deployment setup some assets may fail to
|
|
89
|
+
serve because the Cloud Function is at a different route than the `APP_BASE_REF` configured._
|
|
69
90
|
|
|
70
91
|
### [Next Step: Prerendering your Universal application](prerendering.md)
|
|
71
92
|
|
|
@@ -7,147 +7,22 @@ Server-side rendering (SSR) is the process of converting a JavaScript app to pla
|
|
|
7
7
|
- @angular/cli >= v6.0
|
|
8
8
|
- @angular/fire >= v5.0.0
|
|
9
9
|
|
|
10
|
-
## 1.
|
|
10
|
+
## 1. Add Angular Universal to your project
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
Follow the steps from the [Angular Universal Tutorial](https://angular.io/guide/universal) to add Universal to your
|
|
13
|
+
project.
|
|
13
14
|
|
|
14
15
|
```
|
|
15
|
-
ng
|
|
16
|
+
ng add @nguniversal/express-engine
|
|
16
17
|
```
|
|
17
18
|
|
|
18
|
-
|
|
19
|
+
This will create all the files you need and setup all the configurations for Universal rendering for your application.
|
|
19
20
|
|
|
20
|
-
|
|
21
|
+
## 2. Next Steps
|
|
21
22
|
|
|
22
|
-
|
|
23
|
-
npm install --save-dev @nguniversal/express-engine @nguniversal/module-map-ngfactory-loader express webpack-cli ts-loader ws xhr2
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
Create a file called `server.ts` in the root of you project.
|
|
27
|
-
|
|
28
|
-
```ts
|
|
29
|
-
// These are important and needed before anything else
|
|
30
|
-
import 'zone.js/dist/zone-node';
|
|
31
|
-
import 'reflect-metadata';
|
|
32
|
-
|
|
33
|
-
import { enableProdMode } from '@angular/core';
|
|
34
|
-
import { ngExpressEngine } from '@nguniversal/express-engine';
|
|
35
|
-
import { provideModuleMap } from '@nguniversal/module-map-ngfactory-loader';
|
|
36
|
-
|
|
37
|
-
import * as express from 'express';
|
|
38
|
-
import { join } from 'path';
|
|
39
|
-
import { readFileSync } from 'fs';
|
|
40
|
-
|
|
41
|
-
// Polyfills required for Firebase
|
|
42
|
-
(global as any).WebSocket = require('ws');
|
|
43
|
-
(global as any).XMLHttpRequest = require('xhr2');
|
|
44
|
-
|
|
45
|
-
// Faster renders in prod mode
|
|
46
|
-
enableProdMode();
|
|
47
|
-
|
|
48
|
-
// Export our express server
|
|
49
|
-
export const app = express();
|
|
50
|
-
|
|
51
|
-
const DIST_FOLDER = join(process.cwd(), 'dist');
|
|
52
|
-
const APP_NAME = 'YOUR_PROJECT_NAME'; // TODO: replace me!
|
|
53
|
-
|
|
54
|
-
const { AppServerModuleNgFactory, LAZY_MODULE_MAP } = require(`./dist/${APP_NAME}-server/main`);
|
|
55
|
-
|
|
56
|
-
// index.html template
|
|
57
|
-
const template = readFileSync(join(DIST_FOLDER, APP_NAME, 'index.html')).toString();
|
|
58
|
-
|
|
59
|
-
app.engine('html', ngExpressEngine({
|
|
60
|
-
bootstrap: AppServerModuleNgFactory,
|
|
61
|
-
providers: [
|
|
62
|
-
provideModuleMap(LAZY_MODULE_MAP)
|
|
63
|
-
]
|
|
64
|
-
}));
|
|
65
|
-
|
|
66
|
-
app.set('view engine', 'html');
|
|
67
|
-
app.set('views', join(DIST_FOLDER, APP_NAME));
|
|
68
|
-
|
|
69
|
-
// Serve static files
|
|
70
|
-
app.get('*.*', express.static(join(DIST_FOLDER, APP_NAME)));
|
|
71
|
-
|
|
72
|
-
// All regular routes use the Universal engine
|
|
73
|
-
app.get('*', (req, res) => {
|
|
74
|
-
res.render(join(DIST_FOLDER, APP_NAME, 'index.html'), { req });
|
|
75
|
-
});
|
|
76
|
-
|
|
77
|
-
// If we're not in the Cloud Functions environment, spin up a Node server
|
|
78
|
-
if (!process.env.FUNCTION_NAME) {
|
|
79
|
-
const PORT = process.env.PORT || 4000;
|
|
80
|
-
app.listen(PORT, () => {
|
|
81
|
-
console.log(`Node server listening on http://localhost:${PORT}`);
|
|
82
|
-
});
|
|
83
|
-
}
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
## 3. Add a Webpack Config for the Express Server
|
|
87
|
-
|
|
88
|
-
Create a new file named `webpack.server.config.js` to bundle the express app from previous step.
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
```js
|
|
92
|
-
const path = require('path');
|
|
93
|
-
const webpack = require('webpack');
|
|
94
|
-
|
|
95
|
-
const APP_NAME = 'YOUR_PROJECT_NAME'; // TODO: replace me!
|
|
96
|
-
|
|
97
|
-
module.exports = {
|
|
98
|
-
entry: { server: './server.ts' },
|
|
99
|
-
resolve: { extensions: ['.js', '.ts'] },
|
|
100
|
-
mode: 'development',
|
|
101
|
-
target: 'node',
|
|
102
|
-
externals: [
|
|
103
|
-
/* Firebase has some troubles being webpacked when in
|
|
104
|
-
in the Node environment, let's skip it.
|
|
105
|
-
Note: you may need to exclude other dependencies depending
|
|
106
|
-
on your project. */
|
|
107
|
-
/^firebase/
|
|
108
|
-
],
|
|
109
|
-
output: {
|
|
110
|
-
// Export a UMD of the webpacked server.ts & deps, for
|
|
111
|
-
// rendering in Cloud Functions
|
|
112
|
-
path: path.join(__dirname, `dist/${APP_NAME}-webpack`),
|
|
113
|
-
library: 'app',
|
|
114
|
-
libraryTarget: 'umd',
|
|
115
|
-
filename: '[name].js'
|
|
116
|
-
},
|
|
117
|
-
module: {
|
|
118
|
-
rules: [
|
|
119
|
-
{ test: /\.ts$/, loader: 'ts-loader' }
|
|
120
|
-
]
|
|
121
|
-
},
|
|
122
|
-
plugins: [
|
|
123
|
-
new webpack.ContextReplacementPlugin(
|
|
124
|
-
/(.+)?angular(\\|\/)core(.+)?/,
|
|
125
|
-
path.join(__dirname, 'src'), // location of your src
|
|
126
|
-
{} // a map of your routes
|
|
127
|
-
),
|
|
128
|
-
new webpack.ContextReplacementPlugin(
|
|
129
|
-
/(.+)?express(\\|\/)(.+)?/,
|
|
130
|
-
path.join(__dirname, 'src'),
|
|
131
|
-
{}
|
|
132
|
-
)
|
|
133
|
-
]
|
|
134
|
-
}
|
|
135
|
-
```
|
|
136
|
-
|
|
137
|
-
## 4.0 Build Scripts
|
|
138
|
-
|
|
139
|
-
Update your `package.json` with the following build scripts, replacing `YOUR_PROJECT_NAME` with the name of your project.
|
|
140
|
-
|
|
141
|
-
```js
|
|
142
|
-
"scripts": {
|
|
143
|
-
// ... omitted
|
|
144
|
-
"build": "ng build && npm run build:ssr",
|
|
145
|
-
"build:ssr": "ng run YOUR_PROJECT_NAME:server && npm run webpack:ssr",
|
|
146
|
-
"webpack:ssr": "webpack --config webpack.server.config.js",
|
|
147
|
-
"serve:ssr": "node dist/YOUR_PROJECT_NAME-webpack/server.js"
|
|
148
|
-
},
|
|
149
|
-
```
|
|
23
|
+
Test your app locally by running `npm run dev:ssr`.
|
|
150
24
|
|
|
151
|
-
|
|
25
|
+
_Note: `dev:ssr` is a command that was added to your `package.json` by the `ng add` command that will run the dev server
|
|
26
|
+
for your Angular with Universal._
|
|
152
27
|
|
|
153
28
|
### [Next Step: Deploying your Universal application on Cloud Functions for Firebase](cloud-functions.md)
|
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
import { NgModule, Optional, NgZone, InjectionToken, APP_INITIALIZER, Injector } from '@angular/core';
|
|
2
|
-
import { ɵgetDefaultInstanceOf, ɵAngularFireSchedulers, VERSION
|
|
2
|
+
import { ɵgetDefaultInstanceOf, ɵAngularFireSchedulers, VERSION } from '@angular/fire';
|
|
3
3
|
import { Analytics, ANALYTICS_PROVIDER_NAME, AnalyticsInstances } from './analytics';
|
|
4
4
|
import { FirebaseApps, FirebaseApp } from '@angular/fire/app';
|
|
5
5
|
import { registerVersion } from 'firebase/app';
|
|
6
6
|
import { ScreenTrackingService } from './screen-tracking.service';
|
|
7
7
|
import { UserTrackingService } from './user-tracking.service';
|
|
8
|
+
import { isAnalyticsSupportedFactory } from './is-analytics-supported-factory';
|
|
8
9
|
import * as i0 from "@angular/core";
|
|
9
10
|
import * as i1 from "./screen-tracking.service";
|
|
10
11
|
import * as i2 from "./user-tracking.service";
|
|
11
12
|
export const PROVIDED_ANALYTICS_INSTANCES = new InjectionToken('angularfire2.analytics-instances');
|
|
12
13
|
export function defaultAnalyticsInstanceFactory(provided, defaultApp) {
|
|
13
|
-
if (
|
|
14
|
+
if (!isAnalyticsSupportedFactory.sync()) {
|
|
14
15
|
return null;
|
|
15
16
|
}
|
|
16
17
|
const defaultAnalytics = ɵgetDefaultInstanceOf(ANALYTICS_PROVIDER_NAME, provided, defaultApp);
|
|
@@ -18,7 +19,7 @@ export function defaultAnalyticsInstanceFactory(provided, defaultApp) {
|
|
|
18
19
|
}
|
|
19
20
|
export function analyticsInstanceFactory(fn) {
|
|
20
21
|
return (zone, injector) => {
|
|
21
|
-
if (
|
|
22
|
+
if (!isAnalyticsSupportedFactory.sync()) {
|
|
22
23
|
return null;
|
|
23
24
|
}
|
|
24
25
|
const analytics = zone.runOutsideAngular(() => fn(injector));
|
|
@@ -51,7 +52,7 @@ AnalyticsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version
|
|
|
51
52
|
ANALYTICS_INSTANCES_PROVIDER,
|
|
52
53
|
{
|
|
53
54
|
provide: APP_INITIALIZER,
|
|
54
|
-
useValue:
|
|
55
|
+
useValue: isAnalyticsSupportedFactory.async,
|
|
55
56
|
multi: true,
|
|
56
57
|
}
|
|
57
58
|
] });
|
|
@@ -63,7 +64,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.3", ngImpor
|
|
|
63
64
|
ANALYTICS_INSTANCES_PROVIDER,
|
|
64
65
|
{
|
|
65
66
|
provide: APP_INITIALIZER,
|
|
66
|
-
useValue:
|
|
67
|
+
useValue: isAnalyticsSupportedFactory.async,
|
|
67
68
|
multi: true,
|
|
68
69
|
}
|
|
69
70
|
]
|
|
@@ -90,4 +91,4 @@ export function provideAnalytics(fn, ...deps) {
|
|
|
90
91
|
}]
|
|
91
92
|
};
|
|
92
93
|
}
|
|
93
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl0aWNzLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hbmFseXRpY3MvYW5hbHl0aWNzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUF1QixlQUFlLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNILE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxzQkFBc0IsRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkYsT0FBTyxFQUFFLFNBQVMsRUFBRSx1QkFBdUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNyRixPQUFPLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzlELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDL0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7QUFFL0UsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUcsSUFBSSxjQUFjLENBQWMsa0NBQWtDLENBQUMsQ0FBQztBQUVoSCxNQUFNLFVBQVUsK0JBQStCLENBQUMsUUFBdUMsRUFBRSxVQUF1QjtJQUM5RyxJQUFJLENBQUMsMkJBQTJCLENBQUMsSUFBSSxFQUFFLEVBQUU7UUFBRSxPQUFPLElBQUksQ0FBQztLQUFFO0lBQ3pELE1BQU0sZ0JBQWdCLEdBQUcscUJBQXFCLENBQW9CLHVCQUF1QixFQUFFLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUNqSCxPQUFPLGdCQUFnQixJQUFJLElBQUksU0FBUyxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFDN0QsQ0FBQztBQUVELE1BQU0sVUFBVSx3QkFBd0IsQ0FBQyxFQUE2QztJQUNwRixPQUFPLENBQUMsSUFBWSxFQUFFLFFBQWtCLEVBQUUsRUFBRTtRQUMxQyxJQUFJLENBQUMsMkJBQTJCLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFBRSxPQUFPLElBQUksQ0FBQztTQUFFO1FBQ3pELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUM3RCxPQUFPLElBQUksU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2xDLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLDRCQUE0QixHQUFHO0lBQ25DLE9BQU8sRUFBRSxrQkFBa0I7SUFDM0IsSUFBSSxFQUFFO1FBQ0osQ0FBQyxJQUFJLFFBQVEsRUFBRSxFQUFFLDRCQUE0QixDQUFFO0tBQ2hEO0NBQ0YsQ0FBQztBQUVGLE1BQU0sbUNBQW1DLEdBQUc7SUFDMUMsT0FBTyxFQUFFLFNBQVM7SUFDbEIsVUFBVSxFQUFFLCtCQUErQjtJQUMzQyxJQUFJLEVBQUU7UUFDSixDQUFDLElBQUksUUFBUSxFQUFFLEVBQUUsNEJBQTRCLENBQUU7UUFDL0MsV0FBVztLQUNaO0NBQ0YsQ0FBQztBQWFGLE1BQU0sT0FBTyxlQUFlO0lBQzFCLFlBQ2Msc0JBQTZDLEVBQzdDLG9CQUF5QztRQUVyRCxlQUFlLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDNUQsQ0FBQzs7NEdBTlUsZUFBZTs2R0FBZixlQUFlOzZHQUFmLGVBQWUsYUFWZjtRQUNULG1DQUFtQztRQUNuQyw0QkFBNEI7UUFDNUI7WUFDRSxPQUFPLEVBQUUsZUFBZTtZQUN4QixRQUFRLEVBQUUsMkJBQTJCLENBQUMsS0FBSztZQUMzQyxLQUFLLEVBQUUsSUFBSTtTQUNaO0tBQ0Y7MkZBRVUsZUFBZTtrQkFYM0IsUUFBUTttQkFBQztvQkFDUixTQUFTLEVBQUU7d0JBQ1QsbUNBQW1DO3dCQUNuQyw0QkFBNEI7d0JBQzVCOzRCQUNFLE9BQU8sRUFBRSxlQUFlOzRCQUN4QixRQUFRLEVBQUUsMkJBQTJCLENBQUMsS0FBSzs0QkFDM0MsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7aUJBQ0Y7OzBCQUdJLFFBQVE7OzBCQUNSLFFBQVE7O0FBTWIsTUFBTSxVQUFVLGdCQUFnQixDQUFDLEVBQTZDLEVBQUUsR0FBRyxJQUFXO0lBQzVGLE9BQU87UUFDTCxRQUFRLEVBQUUsZUFBZTtRQUN6QixTQUFTLEVBQUUsQ0FBQztnQkFDVixPQUFPLEVBQUUsNEJBQTRCO2dCQUNyQyxVQUFVLEVBQUUsd0JBQXdCLENBQUMsRUFBRSxDQUFDO2dCQUN4QyxLQUFLLEVBQUUsSUFBSTtnQkFDWCxJQUFJLEVBQUU7b0JBQ0osTUFBTTtvQkFDTixRQUFRO29CQUNSLHNCQUFzQjtvQkFDdEIsWUFBWTtvQkFDWixHQUFHLElBQUk7aUJBQ1I7YUFDRixDQUFDO0tBQ0gsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSwgT3B0aW9uYWwsIE5nWm9uZSwgSW5qZWN0aW9uVG9rZW4sIE1vZHVsZVdpdGhQcm92aWRlcnMsIEFQUF9JTklUSUFMSVpFUiwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFuYWx5dGljcyBhcyBGaXJlYmFzZUFuYWx5dGljcyB9IGZyb20gJ2ZpcmViYXNlL2FuYWx5dGljcyc7XG5pbXBvcnQgeyDJtWdldERlZmF1bHRJbnN0YW5jZU9mLCDJtUFuZ3VsYXJGaXJlU2NoZWR1bGVycywgVkVSU0lPTiB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUnO1xuaW1wb3J0IHsgQW5hbHl0aWNzLCBBTkFMWVRJQ1NfUFJPVklERVJfTkFNRSwgQW5hbHl0aWNzSW5zdGFuY2VzIH0gZnJvbSAnLi9hbmFseXRpY3MnO1xuaW1wb3J0IHsgRmlyZWJhc2VBcHBzLCBGaXJlYmFzZUFwcCB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUvYXBwJztcbmltcG9ydCB7IHJlZ2lzdGVyVmVyc2lvbiB9IGZyb20gJ2ZpcmViYXNlL2FwcCc7XG5pbXBvcnQgeyBTY3JlZW5UcmFja2luZ1NlcnZpY2UgfSBmcm9tICcuL3NjcmVlbi10cmFja2luZy5zZXJ2aWNlJztcbmltcG9ydCB7IFVzZXJUcmFja2luZ1NlcnZpY2UgfSBmcm9tICcuL3VzZXItdHJhY2tpbmcuc2VydmljZSc7XG5pbXBvcnQgeyBpc0FuYWx5dGljc1N1cHBvcnRlZEZhY3RvcnkgfSBmcm9tICcuL2lzLWFuYWx5dGljcy1zdXBwb3J0ZWQtZmFjdG9yeSc7XG5cbmV4cG9ydCBjb25zdCBQUk9WSURFRF9BTkFMWVRJQ1NfSU5TVEFOQ0VTID0gbmV3IEluamVjdGlvblRva2VuPEFuYWx5dGljc1tdPignYW5ndWxhcmZpcmUyLmFuYWx5dGljcy1pbnN0YW5jZXMnKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGRlZmF1bHRBbmFseXRpY3NJbnN0YW5jZUZhY3RvcnkocHJvdmlkZWQ6IEZpcmViYXNlQW5hbHl0aWNzW118dW5kZWZpbmVkLCBkZWZhdWx0QXBwOiBGaXJlYmFzZUFwcCkge1xuICBpZiAoIWlzQW5hbHl0aWNzU3VwcG9ydGVkRmFjdG9yeS5zeW5jKCkpIHsgcmV0dXJuIG51bGw7IH1cbiAgY29uc3QgZGVmYXVsdEFuYWx5dGljcyA9IMm1Z2V0RGVmYXVsdEluc3RhbmNlT2Y8RmlyZWJhc2VBbmFseXRpY3M+KEFOQUxZVElDU19QUk9WSURFUl9OQU1FLCBwcm92aWRlZCwgZGVmYXVsdEFwcCk7XG4gIHJldHVybiBkZWZhdWx0QW5hbHl0aWNzICYmIG5ldyBBbmFseXRpY3MoZGVmYXVsdEFuYWx5dGljcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhbmFseXRpY3NJbnN0YW5jZUZhY3RvcnkoZm46IChpbmplY3RvcjogSW5qZWN0b3IpID0+IEZpcmViYXNlQW5hbHl0aWNzKSB7XG4gIHJldHVybiAoem9uZTogTmdab25lLCBpbmplY3RvcjogSW5qZWN0b3IpID0+IHtcbiAgICBpZiAoIWlzQW5hbHl0aWNzU3VwcG9ydGVkRmFjdG9yeS5zeW5jKCkpIHsgcmV0dXJuIG51bGw7IH1cbiAgICBjb25zdCBhbmFseXRpY3MgPSB6b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IGZuKGluamVjdG9yKSk7XG4gICAgcmV0dXJuIG5ldyBBbmFseXRpY3MoYW5hbHl0aWNzKTtcbiAgfTtcbn1cblxuY29uc3QgQU5BTFlUSUNTX0lOU1RBTkNFU19QUk9WSURFUiA9IHtcbiAgcHJvdmlkZTogQW5hbHl0aWNzSW5zdGFuY2VzLFxuICBkZXBzOiBbXG4gICAgW25ldyBPcHRpb25hbCgpLCBQUk9WSURFRF9BTkFMWVRJQ1NfSU5TVEFOQ0VTIF0sXG4gIF1cbn07XG5cbmNvbnN0IERFRkFVTFRfQU5BTFlUSUNTX0lOU1RBTkNFX1BST1ZJREVSID0ge1xuICBwcm92aWRlOiBBbmFseXRpY3MsXG4gIHVzZUZhY3Rvcnk6IGRlZmF1bHRBbmFseXRpY3NJbnN0YW5jZUZhY3RvcnksXG4gIGRlcHM6IFtcbiAgICBbbmV3IE9wdGlvbmFsKCksIFBST1ZJREVEX0FOQUxZVElDU19JTlNUQU5DRVMgXSxcbiAgICBGaXJlYmFzZUFwcCxcbiAgXVxufTtcblxuQE5nTW9kdWxlKHtcbiAgcHJvdmlkZXJzOiBbXG4gICAgREVGQVVMVF9BTkFMWVRJQ1NfSU5TVEFOQ0VfUFJPVklERVIsXG4gICAgQU5BTFlUSUNTX0lOU1RBTkNFU19QUk9WSURFUixcbiAgICB7XG4gICAgICBwcm92aWRlOiBBUFBfSU5JVElBTElaRVIsXG4gICAgICB1c2VWYWx1ZTogaXNBbmFseXRpY3NTdXBwb3J0ZWRGYWN0b3J5LmFzeW5jLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEFuYWx5dGljc01vZHVsZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpIF9zY3JlZW5UcmFja2luZ1NlcnZpY2U6IFNjcmVlblRyYWNraW5nU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBfdXNlclRyYWNraW5nU2VydmljZTogVXNlclRyYWNraW5nU2VydmljZSxcbiAgKSB7XG4gICAgcmVnaXN0ZXJWZXJzaW9uKCdhbmd1bGFyZmlyZScsIFZFUlNJT04uZnVsbCwgJ2FuYWx5dGljcycpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlQW5hbHl0aWNzKGZuOiAoaW5qZWN0b3I6IEluamVjdG9yKSA9PiBGaXJlYmFzZUFuYWx5dGljcywgLi4uZGVwczogYW55W10pOiBNb2R1bGVXaXRoUHJvdmlkZXJzPEFuYWx5dGljc01vZHVsZT4ge1xuICByZXR1cm4ge1xuICAgIG5nTW9kdWxlOiBBbmFseXRpY3NNb2R1bGUsXG4gICAgcHJvdmlkZXJzOiBbe1xuICAgICAgcHJvdmlkZTogUFJPVklERURfQU5BTFlUSUNTX0lOU1RBTkNFUyxcbiAgICAgIHVzZUZhY3Rvcnk6IGFuYWx5dGljc0luc3RhbmNlRmFjdG9yeShmbiksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgIGRlcHM6IFtcbiAgICAgICAgTmdab25lLFxuICAgICAgICBJbmplY3RvcixcbiAgICAgICAgybVBbmd1bGFyRmlyZVNjaGVkdWxlcnMsXG4gICAgICAgIEZpcmViYXNlQXBwcyxcbiAgICAgICAgLi4uZGVwcyxcbiAgICAgIF1cbiAgICB9XVxuICB9O1xufVxuIl19
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ɵisSupportedError } from '@angular/fire';
|
|
2
|
+
import { isSupported } from 'firebase/analytics';
|
|
3
|
+
const isAnalyticsSupportedValueSymbol = '__angularfire_symbol__analyticsIsSupportedValue';
|
|
4
|
+
const isAnalyticsSupportedPromiseSymbol = '__angularfire_symbol__analyticsIsSupported';
|
|
5
|
+
globalThis[isAnalyticsSupportedPromiseSymbol] || (globalThis[isAnalyticsSupportedPromiseSymbol] = isSupported().then(it => globalThis[isAnalyticsSupportedValueSymbol] = it).catch(() => globalThis[isAnalyticsSupportedValueSymbol] = false));
|
|
6
|
+
export const isAnalyticsSupportedFactory = {
|
|
7
|
+
async: () => globalThis[isAnalyticsSupportedPromiseSymbol],
|
|
8
|
+
sync: () => {
|
|
9
|
+
const ret = globalThis[isAnalyticsSupportedValueSymbol];
|
|
10
|
+
if (ret === undefined) {
|
|
11
|
+
throw new Error(ɵisSupportedError('Analytics'));
|
|
12
|
+
}
|
|
13
|
+
return ret;
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtYW5hbHl0aWNzLXN1cHBvcnRlZC1mYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FuYWx5dGljcy9pcy1hbmFseXRpY3Mtc3VwcG9ydGVkLWZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVqRCxNQUFNLCtCQUErQixHQUFHLGlEQUFpRCxDQUFDO0FBQzFGLE1BQU0saUNBQWlDLEdBQUcsNENBQTRDLENBQUM7QUFFdkYsVUFBVSxDQUFDLGlDQUFpQyxNQUE1QyxVQUFVLENBQUMsaUNBQWlDLElBQU0sV0FBVyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQ3hFLFVBQVUsQ0FBQywrQkFBK0IsQ0FBQyxHQUFHLEVBQUUsQ0FDakQsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQ1gsVUFBVSxDQUFDLCtCQUErQixDQUFDLEdBQUcsS0FBSyxDQUNwRCxFQUFDO0FBQ0YsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUc7SUFDekMsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxpQ0FBaUMsQ0FBQztJQUMxRCxJQUFJLEVBQUUsR0FBRyxFQUFFO1FBQ1QsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDLCtCQUErQixDQUFDLENBQUM7UUFDeEQsSUFBSSxHQUFHLEtBQUssU0FBUyxFQUFFO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1NBQUU7UUFDM0UsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IMm1aXNTdXBwb3J0ZWRFcnJvciB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUnO1xuaW1wb3J0IHsgaXNTdXBwb3J0ZWQgfSBmcm9tICdmaXJlYmFzZS9hbmFseXRpY3MnO1xuXG5jb25zdCBpc0FuYWx5dGljc1N1cHBvcnRlZFZhbHVlU3ltYm9sID0gJ19fYW5ndWxhcmZpcmVfc3ltYm9sX19hbmFseXRpY3NJc1N1cHBvcnRlZFZhbHVlJztcbmNvbnN0IGlzQW5hbHl0aWNzU3VwcG9ydGVkUHJvbWlzZVN5bWJvbCA9ICdfX2FuZ3VsYXJmaXJlX3N5bWJvbF9fYW5hbHl0aWNzSXNTdXBwb3J0ZWQnO1xuXG5nbG9iYWxUaGlzW2lzQW5hbHl0aWNzU3VwcG9ydGVkUHJvbWlzZVN5bWJvbF0gfHw9IGlzU3VwcG9ydGVkKCkudGhlbihpdCA9PlxuICBnbG9iYWxUaGlzW2lzQW5hbHl0aWNzU3VwcG9ydGVkVmFsdWVTeW1ib2xdID0gaXRcbikuY2F0Y2goKCkgPT5cbiAgZ2xvYmFsVGhpc1tpc0FuYWx5dGljc1N1cHBvcnRlZFZhbHVlU3ltYm9sXSA9IGZhbHNlXG4pO1xuZXhwb3J0IGNvbnN0IGlzQW5hbHl0aWNzU3VwcG9ydGVkRmFjdG9yeSA9IHtcbiAgYXN5bmM6ICgpID0+IGdsb2JhbFRoaXNbaXNBbmFseXRpY3NTdXBwb3J0ZWRQcm9taXNlU3ltYm9sXSxcbiAgc3luYzogKCkgPT4ge1xuICAgIGNvbnN0IHJldCA9IGdsb2JhbFRoaXNbaXNBbmFseXRpY3NTdXBwb3J0ZWRWYWx1ZVN5bWJvbF07XG4gICAgaWYgKHJldCA9PT0gdW5kZWZpbmVkKSB7IHRocm93IG5ldyBFcnJvcijJtWlzU3VwcG9ydGVkRXJyb3IoJ0FuYWx5dGljcycpKTsgfVxuICAgIHJldHVybiByZXQ7XG4gIH1cbn07XG4iXX0=
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export const isSupported =
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { isAnalyticsSupportedFactory } from './is-analytics-supported-factory';
|
|
2
|
+
export const isSupported = isAnalyticsSupportedFactory.async;
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcnJpZGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FuYWx5dGljcy9vdmVycmlkZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFL0UsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLDJCQUEyQixDQUFDLEtBQUssQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzQW5hbHl0aWNzU3VwcG9ydGVkRmFjdG9yeSB9IGZyb20gJy4vaXMtYW5hbHl0aWNzLXN1cHBvcnRlZC1mYWN0b3J5JztcblxuZXhwb3J0IGNvbnN0IGlzU3VwcG9ydGVkID0gaXNBbmFseXRpY3NTdXBwb3J0ZWRGYWN0b3J5LmFzeW5jO1xuXG4iXX0=
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wYXQvZmlyZXN0b3JlL2ludGVyZmFjZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN1YnNjcmliZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCBmaXJlYmFzZSBmcm9tICdmaXJlYmFzZS9jb21wYXQvYXBwJztcblxuZXhwb3J0IHR5cGUgU2V0dGluZ3MgPSAgZmlyZWJhc2UuZmlyZXN0b3JlLlNldHRpbmdzO1xuZXhwb3J0IHR5cGUgQ29sbGVjdGlvblJlZmVyZW5jZTxUID0gRG9jdW1lbnREYXRhPiA9IGZpcmViYXNlLmZpcmVzdG9yZS5Db2xsZWN0aW9uUmVmZXJlbmNlPFQ+O1xuZXhwb3J0IHR5cGUgRG9jdW1lbnRSZWZlcmVuY2U8VCA9IERvY3VtZW50RGF0YT4gPSBmaXJlYmFzZS5maXJlc3RvcmUuRG9jdW1lbnRSZWZlcmVuY2U8VD47XG5leHBvcnQgdHlwZSBQZXJzaXN0ZW5jZVNldHRpbmdzID0gZmlyZWJhc2UuZmlyZXN0b3JlLlBlcnNpc3RlbmNlU2V0dGluZ3M7XG5leHBvcnQgdHlwZSBEb2N1bWVudENoYW5nZVR5cGUgPSBmaXJlYmFzZS5maXJlc3RvcmUuRG9jdW1lbnRDaGFuZ2VUeXBlO1xuZXhwb3J0IHR5cGUgU25hcHNob3RPcHRpb25zID0gZmlyZWJhc2UuZmlyZXN0b3JlLlNuYXBzaG90T3B0aW9ucztcbmV4cG9ydCB0eXBlIEZpZWxkUGF0aCA9IGZpcmViYXNlLmZpcmVzdG9yZS5GaWVsZFBhdGg7XG5leHBvcnQgdHlwZSBRdWVyeTxUID0gRG9jdW1lbnREYXRhPiA9IGZpcmViYXNlLmZpcmVzdG9yZS5RdWVyeTxUPjtcblxuZXhwb3J0IHR5cGUgU2V0T3B0aW9ucyA9IGZpcmViYXNlLmZpcmVzdG9yZS5TZXRPcHRpb25zO1xuZXhwb3J0IHR5cGUgRG9jdW1lbnREYXRhID0gZmlyZWJhc2UuZmlyZXN0b3JlLkRvY3VtZW50RGF0YTtcblxuZXhwb3J0IGludGVyZmFjZSBEb2N1bWVudFNuYXBzaG90RXhpc3RzPFQ+
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wYXQvZmlyZXN0b3JlL2ludGVyZmFjZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN1YnNjcmliZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCBmaXJlYmFzZSBmcm9tICdmaXJlYmFzZS9jb21wYXQvYXBwJztcblxuZXhwb3J0IHR5cGUgU2V0dGluZ3MgPSAgZmlyZWJhc2UuZmlyZXN0b3JlLlNldHRpbmdzO1xuZXhwb3J0IHR5cGUgQ29sbGVjdGlvblJlZmVyZW5jZTxUID0gRG9jdW1lbnREYXRhPiA9IGZpcmViYXNlLmZpcmVzdG9yZS5Db2xsZWN0aW9uUmVmZXJlbmNlPFQ+O1xuZXhwb3J0IHR5cGUgRG9jdW1lbnRSZWZlcmVuY2U8VCA9IERvY3VtZW50RGF0YT4gPSBmaXJlYmFzZS5maXJlc3RvcmUuRG9jdW1lbnRSZWZlcmVuY2U8VD47XG5leHBvcnQgdHlwZSBQZXJzaXN0ZW5jZVNldHRpbmdzID0gZmlyZWJhc2UuZmlyZXN0b3JlLlBlcnNpc3RlbmNlU2V0dGluZ3M7XG5leHBvcnQgdHlwZSBEb2N1bWVudENoYW5nZVR5cGUgPSBmaXJlYmFzZS5maXJlc3RvcmUuRG9jdW1lbnRDaGFuZ2VUeXBlO1xuZXhwb3J0IHR5cGUgU25hcHNob3RPcHRpb25zID0gZmlyZWJhc2UuZmlyZXN0b3JlLlNuYXBzaG90T3B0aW9ucztcbmV4cG9ydCB0eXBlIEZpZWxkUGF0aCA9IGZpcmViYXNlLmZpcmVzdG9yZS5GaWVsZFBhdGg7XG5leHBvcnQgdHlwZSBRdWVyeTxUID0gRG9jdW1lbnREYXRhPiA9IGZpcmViYXNlLmZpcmVzdG9yZS5RdWVyeTxUPjtcblxuZXhwb3J0IHR5cGUgU2V0T3B0aW9ucyA9IGZpcmViYXNlLmZpcmVzdG9yZS5TZXRPcHRpb25zO1xuZXhwb3J0IHR5cGUgRG9jdW1lbnREYXRhID0gZmlyZWJhc2UuZmlyZXN0b3JlLkRvY3VtZW50RGF0YTtcblxuZXhwb3J0IGludGVyZmFjZSBEb2N1bWVudFNuYXBzaG90RXhpc3RzPFQ+IGV4dGVuZHMgZmlyZWJhc2UuZmlyZXN0b3JlLkRvY3VtZW50U25hcHNob3Q8VD4ge1xuICByZWFkb25seSBleGlzdHM6IHRydWU7XG4gIGRhdGEob3B0aW9ucz86IFNuYXBzaG90T3B0aW9ucyk6IFQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRG9jdW1lbnRTbmFwc2hvdERvZXNOb3RFeGlzdCBleHRlbmRzIGZpcmViYXNlLmZpcmVzdG9yZS5Eb2N1bWVudFNuYXBzaG90IHtcbiAgcmVhZG9ubHkgZXhpc3RzOiBmYWxzZTtcbiAgZGF0YShvcHRpb25zPzogU25hcHNob3RPcHRpb25zKTogdW5kZWZpbmVkO1xuICBnZXQoZmllbGRQYXRoOiBzdHJpbmcgfCBGaWVsZFBhdGgsIG9wdGlvbnM/OiBTbmFwc2hvdE9wdGlvbnMpOiB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCB0eXBlIERvY3VtZW50U25hcHNob3Q8VD4gPSBEb2N1bWVudFNuYXBzaG90RXhpc3RzPFQ+IHwgRG9jdW1lbnRTbmFwc2hvdERvZXNOb3RFeGlzdDtcblxuZXhwb3J0IGludGVyZmFjZSBRdWVyeURvY3VtZW50U25hcHNob3Q8VD4gZXh0ZW5kcyBmaXJlYmFzZS5maXJlc3RvcmUuUXVlcnlEb2N1bWVudFNuYXBzaG90PFQ+IHtcbiAgZGF0YShvcHRpb25zPzogU25hcHNob3RPcHRpb25zKTogVDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBRdWVyeVNuYXBzaG90PFQ+IGV4dGVuZHMgZmlyZWJhc2UuZmlyZXN0b3JlLlF1ZXJ5U25hcHNob3Q8VD4ge1xuICByZWFkb25seSBkb2NzOiBRdWVyeURvY3VtZW50U25hcHNob3Q8VD5bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEb2N1bWVudENoYW5nZTxUPiBleHRlbmRzIGZpcmViYXNlLmZpcmVzdG9yZS5Eb2N1bWVudENoYW5nZTxUPiB7XG4gIHJlYWRvbmx5IGRvYzogUXVlcnlEb2N1bWVudFNuYXBzaG90PFQ+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERvY3VtZW50Q2hhbmdlQWN0aW9uPFQ+IHtcbiAgdHlwZTogRG9jdW1lbnRDaGFuZ2VUeXBlO1xuICBwYXlsb2FkOiBEb2N1bWVudENoYW5nZTxUPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBY3Rpb248VD4ge1xuICB0eXBlOiBzdHJpbmc7XG4gIHBheWxvYWQ6IFQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVmZXJlbmNlPFQ+IHtcbiAgb25TbmFwc2hvdDogKG9wdGlvbnM6IGZpcmViYXNlLmZpcmVzdG9yZS5TbmFwc2hvdExpc3Rlbk9wdGlvbnMsIHN1YjogU3Vic2NyaWJlcjxhbnk+KSA9PiBhbnk7XG59XG5cbi8vIEEgY29udmllbmNlIHR5cGUgZm9yIG1ha2luZyBhIHF1ZXJ5LlxuLy8gRXhhbXBsZTogY29uc3QgcXVlcnkgPSAocmVmKSA9PiByZWYud2hlcmUoJ25hbWUnLCA9PSAnZGF2aWQnKTtcbmV4cG9ydCB0eXBlIFF1ZXJ5Rm48VCA9IERvY3VtZW50RGF0YT4gPSAocmVmOiBDb2xsZWN0aW9uUmVmZXJlbmNlPFQ+KSA9PiBRdWVyeTxUPjtcblxuZXhwb3J0IHR5cGUgUXVlcnlHcm91cEZuPFQgPSBEb2N1bWVudERhdGE+ID0gKHF1ZXJ5OiBRdWVyeTxUPikgPT4gUXVlcnk8VD47XG5cbi8qKlxuICogQSBzdHJ1Y3R1cmUgdGhhdCBwcm92aWRlcyBhbiBhc3NvY2lhdGlvbiBiZXR3ZWVuIGEgcmVmZXJlbmNlXG4gKiBhbmQgYSBxdWVyeSBvbiB0aGF0IHJlZmVyZW5jZS4gTm90ZTogUGVyZm9ybWluZyBvcGVyYXRpb25zXG4gKiBvbiB0aGUgcmVmZXJlbmNlIGNhbiBsZWFkIHRvIGNvbmZ1c2luZyByZXN1bHRzIHdpdGggY29tcGxpY2F0ZWRcbiAqIHF1ZXJpZXMuXG4gKlxuICogRXhhbXBsZTpcbiAqXG4gKiBjb25zdCBxdWVyeSA9IHJlZi53aGVyZSgndHlwZScsICc9PScsICdCb29rJykuXG4gKiAgICAgICAgICAgICAgICAgIC53aGVyZSgncHJpY2UnLCAnPicgMTguMDApXG4gKiAgICAgICAgICAgICAgICAgIC53aGVyZSgncHJpY2UnLCAnPCcgMTAwLjAwKVxuICogICAgICAgICAgICAgICAgICAud2hlcmUoJ2NhdGVnb3J5JywgJz09JywgJ0ZpY3Rpb24nKVxuICogICAgICAgICAgICAgICAgICAud2hlcmUoJ3B1Ymxpc2hlcicsICc9PScsICdCaWdQdWJsaXNoZXInKVxuICpcbiAqIC8vIFRoaXMgYWRkaXRpb24gd291bGQgbm90IGJlIGEgcmVzdWx0IG9mIHRoZSBxdWVyeSBhYm92ZVxuICogcmVmLmFkZCh7XG4gKiAgdHlwZTogJ01hZ2F6aW5lJyxcbiAqICBwcmljZTogNC45OSxcbiAqICBjYXRlZ29yeTogJ1Nwb3J0cycsXG4gKiAgcHVibGlzaGVyOiAnU3BvcnRzUHVibGlzaGVyJ1xuICogfSk7XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXNzb2NpYXRlZFJlZmVyZW5jZTxUID0gRG9jdW1lbnREYXRhPiB7XG4gIHJlZjogQ29sbGVjdGlvblJlZmVyZW5jZTxUPjtcbiAgcXVlcnk6IFF1ZXJ5PFQ+O1xufVxuIl19
|
package/esm2015/core.js
CHANGED
|
@@ -1,51 +1,9 @@
|
|
|
1
1
|
import { Version } from '@angular/core';
|
|
2
2
|
import { getApps } from 'firebase/app';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
import { isSupported as isAnalyticsSupported } from 'firebase/analytics';
|
|
6
|
-
export const VERSION = new Version('7.5.0');
|
|
7
|
-
const isAnalyticsSupportedValueSymbol = '__angularfire_symbol__analyticsIsSupportedValue';
|
|
8
|
-
const isAnalyticsSupportedPromiseSymbol = '__angularfire_symbol__analyticsIsSupported';
|
|
9
|
-
const isRemoteConfigSupportedValueSymbol = '__angularfire_symbol__remoteConfigIsSupportedValue';
|
|
10
|
-
const isRemoteConfigSupportedPromiseSymbol = '__angularfire_symbol__remoteConfigIsSupported';
|
|
11
|
-
const isMessagingSupportedValueSymbol = '__angularfire_symbol__messagingIsSupportedValue';
|
|
12
|
-
const isMessagingSupportedPromiseSymbol = '__angularfire_symbol__messagingIsSupported';
|
|
13
|
-
globalThis[isAnalyticsSupportedPromiseSymbol] || (globalThis[isAnalyticsSupportedPromiseSymbol] = isAnalyticsSupported().then(it => globalThis[isAnalyticsSupportedValueSymbol] = it).catch(() => globalThis[isAnalyticsSupportedValueSymbol] = false));
|
|
14
|
-
globalThis[isMessagingSupportedPromiseSymbol] || (globalThis[isMessagingSupportedPromiseSymbol] = isMessagingSupported().then(it => globalThis[isMessagingSupportedValueSymbol] = it).catch(() => globalThis[isMessagingSupportedValueSymbol] = false));
|
|
15
|
-
globalThis[isRemoteConfigSupportedPromiseSymbol] || (globalThis[isRemoteConfigSupportedPromiseSymbol] = isRemoteConfigSupported().then(it => globalThis[isRemoteConfigSupportedValueSymbol] = it).catch(() => globalThis[isRemoteConfigSupportedValueSymbol] = false));
|
|
16
|
-
const isSupportedError = (module) => `The APP_INITIALIZER that is "making" isSupported() sync for the sake of convenient DI has not resolved in this
|
|
3
|
+
export const VERSION = new Version('7.6.0-canary.34e89a4');
|
|
4
|
+
export const ɵisSupportedError = (module) => `The APP_INITIALIZER that is "making" isSupported() sync for the sake of convenient DI has not resolved in this
|
|
17
5
|
context. Rather than injecting ${module} in the constructor, first ensure that ${module} is supported by calling
|
|
18
6
|
\`await isSupported()\`, then retrieve the instance from the injector manually \`injector.get(${module})\`.`;
|
|
19
|
-
export const ɵisMessagingSupportedFactory = {
|
|
20
|
-
async: () => globalThis[isMessagingSupportedPromiseSymbol],
|
|
21
|
-
sync: () => {
|
|
22
|
-
const ret = globalThis[isMessagingSupportedValueSymbol];
|
|
23
|
-
if (ret === undefined) {
|
|
24
|
-
throw new Error(isSupportedError('Messaging'));
|
|
25
|
-
}
|
|
26
|
-
return ret;
|
|
27
|
-
}
|
|
28
|
-
};
|
|
29
|
-
export const ɵisRemoteConfigSupportedFactory = {
|
|
30
|
-
async: () => globalThis[isRemoteConfigSupportedPromiseSymbol],
|
|
31
|
-
sync: () => {
|
|
32
|
-
const ret = globalThis[isRemoteConfigSupportedValueSymbol];
|
|
33
|
-
if (ret === undefined) {
|
|
34
|
-
throw new Error(isSupportedError('RemoteConfig'));
|
|
35
|
-
}
|
|
36
|
-
return ret;
|
|
37
|
-
}
|
|
38
|
-
};
|
|
39
|
-
export const ɵisAnalyticsSupportedFactory = {
|
|
40
|
-
async: () => globalThis[isAnalyticsSupportedPromiseSymbol],
|
|
41
|
-
sync: () => {
|
|
42
|
-
const ret = globalThis[isAnalyticsSupportedValueSymbol];
|
|
43
|
-
if (ret === undefined) {
|
|
44
|
-
throw new Error(isSupportedError('Analytics'));
|
|
45
|
-
}
|
|
46
|
-
return ret;
|
|
47
|
-
}
|
|
48
|
-
};
|
|
49
7
|
export function ɵgetDefaultInstanceOf(identifier, provided, defaultApp) {
|
|
50
8
|
if (provided) {
|
|
51
9
|
// Was provide* only called once? If so grab that
|
|
@@ -76,4 +34,4 @@ export const ɵgetAllInstancesOf = (identifier, app) => {
|
|
|
76
34
|
});
|
|
77
35
|
return instances;
|
|
78
36
|
};
|
|
79
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxFQUFlLE9BQU8sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVwRCxPQUFPLEVBQUUsV0FBVyxJQUFJLHVCQUF1QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDaEYsT0FBTyxFQUFFLFdBQVcsSUFBSSxvQkFBb0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxXQUFXLElBQUksb0JBQW9CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUV6RSxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsSUFBSSxPQUFPLENBQUMsc0JBQXNCLENBQUMsQ0FBQztBQUUzRCxNQUFNLCtCQUErQixHQUFHLGlEQUFpRCxDQUFDO0FBQzFGLE1BQU0saUNBQWlDLEdBQUcsNENBQTRDLENBQUM7QUFDdkYsTUFBTSxrQ0FBa0MsR0FBRyxvREFBb0QsQ0FBQztBQUNoRyxNQUFNLG9DQUFvQyxHQUFHLCtDQUErQyxDQUFDO0FBQzdGLE1BQU0sK0JBQStCLEdBQUcsaURBQWlELENBQUM7QUFDMUYsTUFBTSxpQ0FBaUMsR0FBRyw0Q0FBNEMsQ0FBQztBQUV2RixVQUFVLENBQUMsaUNBQWlDLE1BQTVDLFVBQVUsQ0FBQyxpQ0FBaUMsSUFBTSxvQkFBb0IsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUNqRixVQUFVLENBQUMsK0JBQStCLENBQUMsR0FBRyxFQUFFLENBQ2pELENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUNYLFVBQVUsQ0FBQywrQkFBK0IsQ0FBQyxHQUFHLEtBQUssQ0FDcEQsRUFBQztBQUVGLFVBQVUsQ0FBQyxpQ0FBaUMsTUFBNUMsVUFBVSxDQUFDLGlDQUFpQyxJQUFNLG9CQUFvQixFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQ2pGLFVBQVUsQ0FBQywrQkFBK0IsQ0FBQyxHQUFHLEVBQUUsQ0FDakQsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQ1gsVUFBVSxDQUFDLCtCQUErQixDQUFDLEdBQUcsS0FBSyxDQUNwRCxFQUFDO0FBRUYsVUFBVSxDQUFDLG9DQUFvQyxNQUEvQyxVQUFVLENBQUMsb0NBQW9DLElBQU0sdUJBQXVCLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FDdkYsVUFBVSxDQUFDLGtDQUFrQyxDQUFDLEdBQUcsRUFBRSxDQUNwRCxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FDWCxVQUFVLENBQUMsa0NBQWtDLENBQUMsR0FBRyxLQUFLLENBQ3ZELEVBQUM7QUFFRixNQUFNLGdCQUFnQixHQUFHLENBQUMsTUFBYyxFQUFFLEVBQUUsQ0FDMUM7aUNBQytCLE1BQU0sMENBQTBDLE1BQU07Z0dBQ1MsTUFBTSxNQUFNLENBQUM7QUFFN0csTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUc7SUFDMUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxpQ0FBaUMsQ0FBQztJQUMxRCxJQUFJLEVBQUUsR0FBRyxFQUFFO1FBQ1QsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDLCtCQUErQixDQUFDLENBQUM7UUFDeEQsSUFBSSxHQUFHLEtBQUssU0FBUyxFQUFFO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1NBQUU7UUFDMUUsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0NBQ0YsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLCtCQUErQixHQUFHO0lBQzdDLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsb0NBQW9DLENBQUM7SUFDN0QsSUFBSSxFQUFFLEdBQUcsRUFBRTtRQUNULE1BQU0sR0FBRyxHQUFHLFVBQVUsQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO1FBQzNELElBQUksR0FBRyxLQUFLLFNBQVMsRUFBRTtZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztTQUFFO1FBQzdFLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztDQUNGLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBRztJQUMxQyxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLGlDQUFpQyxDQUFDO0lBQzFELElBQUksRUFBRSxHQUFHLEVBQUU7UUFDVCxNQUFNLEdBQUcsR0FBRyxVQUFVLENBQUMsK0JBQStCLENBQUMsQ0FBQztRQUN4RCxJQUFJLEdBQUcsS0FBSyxTQUFTLEVBQUU7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7U0FBRTtRQUMxRSxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7Q0FDRixDQUFDO0FBT0YsTUFBTSxVQUFVLHFCQUFxQixDQUFhLFVBQWtCLEVBQUUsUUFBdUIsRUFBRSxVQUF1QjtJQUNwSCxJQUFJLFFBQVEsRUFBRTtRQUNaLGlEQUFpRDtRQUNqRCxJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQUUsT0FBTyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FBRTtRQUNsRCxNQUFNLHVCQUF1QixHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFPLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssVUFBVSxDQUFDLENBQUM7UUFDcEYsdUVBQXVFO1FBQ3ZFLElBQUksdUJBQXVCLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUFFLE9BQU8sdUJBQXVCLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FBRTtLQUNqRjtJQUNELGdEQUFnRDtJQUNoRCxNQUFNLHVCQUF1QixHQUE2QixVQUFpQixDQUFDO0lBQzVFLE1BQU0sUUFBUSxHQUFHLHVCQUF1QixDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsVUFBbUIsQ0FBQyxDQUFDO0lBQ3BGLE9BQU8sUUFBUSxDQUFDLFlBQVksQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQ25ELENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFhLFVBQWtCLEVBQUUsR0FBaUIsRUFBWSxFQUFFO0lBQ2hHLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDckMsTUFBTSxTQUFTLEdBQWUsRUFBRSxDQUFDO0lBQ2pDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUE2QixFQUFFLEVBQUU7UUFDN0MsTUFBTSxRQUFRLEdBQVEsR0FBRyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsVUFBbUIsQ0FBQyxDQUFDO1FBQ3JFLFFBQVEsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUU7WUFDM0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUU7Z0JBQ2pDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDMUI7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmVyc2lvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmlyZWJhc2VBcHAsIGdldEFwcHMgfSBmcm9tICdmaXJlYmFzZS9hcHAnO1xuaW1wb3J0IHsgQ29tcG9uZW50Q29udGFpbmVyIH0gZnJvbSAnQGZpcmViYXNlL2NvbXBvbmVudCc7XG5pbXBvcnQgeyBpc1N1cHBvcnRlZCBhcyBpc1JlbW90ZUNvbmZpZ1N1cHBvcnRlZCB9IGZyb20gJ2ZpcmViYXNlL3JlbW90ZS1jb25maWcnO1xuaW1wb3J0IHsgaXNTdXBwb3J0ZWQgYXMgaXNNZXNzYWdpbmdTdXBwb3J0ZWQgfSBmcm9tICdmaXJlYmFzZS9tZXNzYWdpbmcnO1xuaW1wb3J0IHsgaXNTdXBwb3J0ZWQgYXMgaXNBbmFseXRpY3NTdXBwb3J0ZWQgfSBmcm9tICdmaXJlYmFzZS9hbmFseXRpY3MnO1xuXG5leHBvcnQgY29uc3QgVkVSU0lPTiA9IG5ldyBWZXJzaW9uKCdBTkdVTEFSRklSRTJfVkVSU0lPTicpO1xuXG5jb25zdCBpc0FuYWx5dGljc1N1cHBvcnRlZFZhbHVlU3ltYm9sID0gJ19fYW5ndWxhcmZpcmVfc3ltYm9sX19hbmFseXRpY3NJc1N1cHBvcnRlZFZhbHVlJztcbmNvbnN0IGlzQW5hbHl0aWNzU3VwcG9ydGVkUHJvbWlzZVN5bWJvbCA9ICdfX2FuZ3VsYXJmaXJlX3N5bWJvbF9fYW5hbHl0aWNzSXNTdXBwb3J0ZWQnO1xuY29uc3QgaXNSZW1vdGVDb25maWdTdXBwb3J0ZWRWYWx1ZVN5bWJvbCA9ICdfX2FuZ3VsYXJmaXJlX3N5bWJvbF9fcmVtb3RlQ29uZmlnSXNTdXBwb3J0ZWRWYWx1ZSc7XG5jb25zdCBpc1JlbW90ZUNvbmZpZ1N1cHBvcnRlZFByb21pc2VTeW1ib2wgPSAnX19hbmd1bGFyZmlyZV9zeW1ib2xfX3JlbW90ZUNvbmZpZ0lzU3VwcG9ydGVkJztcbmNvbnN0IGlzTWVzc2FnaW5nU3VwcG9ydGVkVmFsdWVTeW1ib2wgPSAnX19hbmd1bGFyZmlyZV9zeW1ib2xfX21lc3NhZ2luZ0lzU3VwcG9ydGVkVmFsdWUnO1xuY29uc3QgaXNNZXNzYWdpbmdTdXBwb3J0ZWRQcm9taXNlU3ltYm9sID0gJ19fYW5ndWxhcmZpcmVfc3ltYm9sX19tZXNzYWdpbmdJc1N1cHBvcnRlZCc7XG5cbmdsb2JhbFRoaXNbaXNBbmFseXRpY3NTdXBwb3J0ZWRQcm9taXNlU3ltYm9sXSB8fD0gaXNBbmFseXRpY3NTdXBwb3J0ZWQoKS50aGVuKGl0ID0+XG4gIGdsb2JhbFRoaXNbaXNBbmFseXRpY3NTdXBwb3J0ZWRWYWx1ZVN5bWJvbF0gPSBpdFxuKS5jYXRjaCgoKSA9PlxuICBnbG9iYWxUaGlzW2lzQW5hbHl0aWNzU3VwcG9ydGVkVmFsdWVTeW1ib2xdID0gZmFsc2Vcbik7XG5cbmdsb2JhbFRoaXNbaXNNZXNzYWdpbmdTdXBwb3J0ZWRQcm9taXNlU3ltYm9sXSB8fD0gaXNNZXNzYWdpbmdTdXBwb3J0ZWQoKS50aGVuKGl0ID0+XG4gIGdsb2JhbFRoaXNbaXNNZXNzYWdpbmdTdXBwb3J0ZWRWYWx1ZVN5bWJvbF0gPSBpdFxuKS5jYXRjaCgoKSA9PlxuICBnbG9iYWxUaGlzW2lzTWVzc2FnaW5nU3VwcG9ydGVkVmFsdWVTeW1ib2xdID0gZmFsc2Vcbik7XG5cbmdsb2JhbFRoaXNbaXNSZW1vdGVDb25maWdTdXBwb3J0ZWRQcm9taXNlU3ltYm9sXSB8fD0gaXNSZW1vdGVDb25maWdTdXBwb3J0ZWQoKS50aGVuKGl0ID0+XG4gIGdsb2JhbFRoaXNbaXNSZW1vdGVDb25maWdTdXBwb3J0ZWRWYWx1ZVN5bWJvbF0gPSBpdFxuKS5jYXRjaCgoKSA9PlxuICBnbG9iYWxUaGlzW2lzUmVtb3RlQ29uZmlnU3VwcG9ydGVkVmFsdWVTeW1ib2xdID0gZmFsc2Vcbik7XG5cbmNvbnN0IGlzU3VwcG9ydGVkRXJyb3IgPSAobW9kdWxlOiBzdHJpbmcpID0+XG4gIGBUaGUgQVBQX0lOSVRJQUxJWkVSIHRoYXQgaXMgXCJtYWtpbmdcIiBpc1N1cHBvcnRlZCgpIHN5bmMgZm9yIHRoZSBzYWtlIG9mIGNvbnZlbmllbnQgREkgaGFzIG5vdCByZXNvbHZlZCBpbiB0aGlzXG5jb250ZXh0LiBSYXRoZXIgdGhhbiBpbmplY3RpbmcgJHttb2R1bGV9IGluIHRoZSBjb25zdHJ1Y3RvciwgZmlyc3QgZW5zdXJlIHRoYXQgJHttb2R1bGV9IGlzIHN1cHBvcnRlZCBieSBjYWxsaW5nXG5cXGBhd2FpdCBpc1N1cHBvcnRlZCgpXFxgLCB0aGVuIHJldHJpZXZlIHRoZSBpbnN0YW5jZSBmcm9tIHRoZSBpbmplY3RvciBtYW51YWxseSBcXGBpbmplY3Rvci5nZXQoJHttb2R1bGV9KVxcYC5gO1xuXG5leHBvcnQgY29uc3QgybVpc01lc3NhZ2luZ1N1cHBvcnRlZEZhY3RvcnkgPSB7XG4gIGFzeW5jOiAoKSA9PiBnbG9iYWxUaGlzW2lzTWVzc2FnaW5nU3VwcG9ydGVkUHJvbWlzZVN5bWJvbF0sXG4gIHN5bmM6ICgpID0+IHtcbiAgICBjb25zdCByZXQgPSBnbG9iYWxUaGlzW2lzTWVzc2FnaW5nU3VwcG9ydGVkVmFsdWVTeW1ib2xdO1xuICAgIGlmIChyZXQgPT09IHVuZGVmaW5lZCkgeyB0aHJvdyBuZXcgRXJyb3IoaXNTdXBwb3J0ZWRFcnJvcignTWVzc2FnaW5nJykpOyB9XG4gICAgcmV0dXJuIHJldDtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IMm1aXNSZW1vdGVDb25maWdTdXBwb3J0ZWRGYWN0b3J5ID0ge1xuICBhc3luYzogKCkgPT4gZ2xvYmFsVGhpc1tpc1JlbW90ZUNvbmZpZ1N1cHBvcnRlZFByb21pc2VTeW1ib2xdLFxuICBzeW5jOiAoKSA9PiB7XG4gICAgY29uc3QgcmV0ID0gZ2xvYmFsVGhpc1tpc1JlbW90ZUNvbmZpZ1N1cHBvcnRlZFZhbHVlU3ltYm9sXTtcbiAgICBpZiAocmV0ID09PSB1bmRlZmluZWQpIHsgdGhyb3cgbmV3IEVycm9yKGlzU3VwcG9ydGVkRXJyb3IoJ1JlbW90ZUNvbmZpZycpKTsgfVxuICAgIHJldHVybiByZXQ7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCDJtWlzQW5hbHl0aWNzU3VwcG9ydGVkRmFjdG9yeSA9IHtcbiAgYXN5bmM6ICgpID0+IGdsb2JhbFRoaXNbaXNBbmFseXRpY3NTdXBwb3J0ZWRQcm9taXNlU3ltYm9sXSxcbiAgc3luYzogKCkgPT4ge1xuICAgIGNvbnN0IHJldCA9IGdsb2JhbFRoaXNbaXNBbmFseXRpY3NTdXBwb3J0ZWRWYWx1ZVN5bWJvbF07XG4gICAgaWYgKHJldCA9PT0gdW5kZWZpbmVkKSB7IHRocm93IG5ldyBFcnJvcihpc1N1cHBvcnRlZEVycm9yKCdBbmFseXRpY3MnKSk7IH1cbiAgICByZXR1cm4gcmV0O1xuICB9XG59O1xuXG4vLyBUT0RPIGlzIHRoZXJlIGEgYmV0dGVyIHdheSB0byBnZXQgYXQgdGhlIGludGVybmFsIHR5cGVzP1xuaW50ZXJmYWNlIEZpcmViYXNlQXBwV2l0aENvbnRhaW5lciBleHRlbmRzIEZpcmViYXNlQXBwIHtcbiAgY29udGFpbmVyOiBDb21wb25lbnRDb250YWluZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiDJtWdldERlZmF1bHRJbnN0YW5jZU9mPFQ9IHVua25vd24+KGlkZW50aWZpZXI6IHN0cmluZywgcHJvdmlkZWQ6IFRbXXx1bmRlZmluZWQsIGRlZmF1bHRBcHA6IEZpcmViYXNlQXBwKTogVHx1bmRlZmluZWQgIHtcbiAgaWYgKHByb3ZpZGVkKSB7XG4gICAgLy8gV2FzIHByb3ZpZGUqIG9ubHkgY2FsbGVkIG9uY2U/IElmIHNvIGdyYWIgdGhhdFxuICAgIGlmIChwcm92aWRlZC5sZW5ndGggPT09IDEpIHsgcmV0dXJuIHByb3ZpZGVkWzBdOyB9XG4gICAgY29uc3QgcHJvdmlkZWRVc2luZ0RlZmF1bHRBcHAgPSBwcm92aWRlZC5maWx0ZXIoKGl0OiBhbnkpID0+IGl0LmFwcCA9PT0gZGVmYXVsdEFwcCk7XG4gICAgLy8gV2FzIHByb3ZpZGUqIG9ubHkgY2FsbGVkIG9uY2UsIHVzaW5nIHRoZSBkZWZhdWx0IGFwcD8gSWYgc28gdXNlIHRoYXRcbiAgICBpZiAocHJvdmlkZWRVc2luZ0RlZmF1bHRBcHAubGVuZ3RoID09PSAxKSB7IHJldHVybiBwcm92aWRlZFVzaW5nRGVmYXVsdEFwcFswXTsgfVxuICB9XG4gIC8vIEdyYWIgdGhlIGRlZmF1bHQgaW5zdGFuY2UgZnJvbSB0aGUgZGVmYXVsdEFwcFxuICBjb25zdCBkZWZhdWx0QXBwV2l0aENvbnRhaW5lcjogRmlyZWJhc2VBcHBXaXRoQ29udGFpbmVyID0gZGVmYXVsdEFwcCBhcyBhbnk7XG4gIGNvbnN0IHByb3ZpZGVyID0gZGVmYXVsdEFwcFdpdGhDb250YWluZXIuY29udGFpbmVyLmdldFByb3ZpZGVyKGlkZW50aWZpZXIgYXMgbmV2ZXIpO1xuICByZXR1cm4gcHJvdmlkZXIuZ2V0SW1tZWRpYXRlKHsgb3B0aW9uYWw6IHRydWUgfSk7XG59XG5cbmV4cG9ydCBjb25zdCDJtWdldEFsbEluc3RhbmNlc09mID0gPFQ9IHVua25vd24+KGlkZW50aWZpZXI6IHN0cmluZywgYXBwPzogRmlyZWJhc2VBcHApOiBBcnJheTxUPiA9PiB7XG4gIGNvbnN0IGFwcHMgPSBhcHAgPyBbYXBwXSA6IGdldEFwcHMoKTtcbiAgY29uc3QgaW5zdGFuY2VzOiBBcnJheTxhbnk+ID0gW107XG4gIGFwcHMuZm9yRWFjaCgoYXBwOiBGaXJlYmFzZUFwcFdpdGhDb250YWluZXIpID0+IHtcbiAgICBjb25zdCBwcm92aWRlcjogYW55ID0gYXBwLmNvbnRhaW5lci5nZXRQcm92aWRlcihpZGVudGlmaWVyIGFzIG5ldmVyKTtcbiAgICBwcm92aWRlci5pbnN0YW5jZXMuZm9yRWFjaCgoaW5zdGFuY2U6IGFueSkgPT4ge1xuICAgICAgaWYgKCFpbnN0YW5jZXMuaW5jbHVkZXMoaW5zdGFuY2UpKSB7XG4gICAgICAgIGluc3RhbmNlcy5wdXNoKGluc3RhbmNlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG4gIHJldHVybiBpbnN0YW5jZXM7XG59O1xuIl19
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxFQUFlLE9BQU8sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUdwRCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsSUFBSSxPQUFPLENBQUMsc0JBQXNCLENBQUMsQ0FBQztBQUUzRCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLE1BQWMsRUFBRSxFQUFFLENBQ2xEO2lDQUMrQixNQUFNLDBDQUEwQyxNQUFNO2dHQUNTLE1BQU0sTUFBTSxDQUFDO0FBTzdHLE1BQU0sVUFBVSxxQkFBcUIsQ0FBYSxVQUFrQixFQUFFLFFBQXVCLEVBQUUsVUFBdUI7SUFDcEgsSUFBSSxRQUFRLEVBQUU7UUFDWixpREFBaUQ7UUFDakQsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUFFLE9BQU8sUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQUU7UUFDbEQsTUFBTSx1QkFBdUIsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBTyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLFVBQVUsQ0FBQyxDQUFDO1FBQ3BGLHVFQUF1RTtRQUN2RSxJQUFJLHVCQUF1QixDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFBRSxPQUFPLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQUU7S0FDakY7SUFDRCxnREFBZ0Q7SUFDaEQsTUFBTSx1QkFBdUIsR0FBNkIsVUFBaUIsQ0FBQztJQUM1RSxNQUFNLFFBQVEsR0FBRyx1QkFBdUIsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLFVBQW1CLENBQUMsQ0FBQztJQUNwRixPQUFPLFFBQVEsQ0FBQyxZQUFZLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUNuRCxDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBYSxVQUFrQixFQUFFLEdBQWlCLEVBQVksRUFBRTtJQUNoRyxNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3JDLE1BQU0sU0FBUyxHQUFlLEVBQUUsQ0FBQztJQUNqQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBNkIsRUFBRSxFQUFFO1FBQzdDLE1BQU0sUUFBUSxHQUFRLEdBQUcsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLFVBQW1CLENBQUMsQ0FBQztRQUNyRSxRQUFRLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFO1lBQzNDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFO2dCQUNqQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQzFCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUNILE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZlcnNpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZpcmViYXNlQXBwLCBnZXRBcHBzIH0gZnJvbSAnZmlyZWJhc2UvYXBwJztcbmltcG9ydCB7IENvbXBvbmVudENvbnRhaW5lciB9IGZyb20gJ0BmaXJlYmFzZS9jb21wb25lbnQnO1xuXG5leHBvcnQgY29uc3QgVkVSU0lPTiA9IG5ldyBWZXJzaW9uKCdBTkdVTEFSRklSRTJfVkVSU0lPTicpO1xuXG5leHBvcnQgY29uc3QgybVpc1N1cHBvcnRlZEVycm9yID0gKG1vZHVsZTogc3RyaW5nKSA9PlxuICBgVGhlIEFQUF9JTklUSUFMSVpFUiB0aGF0IGlzIFwibWFraW5nXCIgaXNTdXBwb3J0ZWQoKSBzeW5jIGZvciB0aGUgc2FrZSBvZiBjb252ZW5pZW50IERJIGhhcyBub3QgcmVzb2x2ZWQgaW4gdGhpc1xuY29udGV4dC4gUmF0aGVyIHRoYW4gaW5qZWN0aW5nICR7bW9kdWxlfSBpbiB0aGUgY29uc3RydWN0b3IsIGZpcnN0IGVuc3VyZSB0aGF0ICR7bW9kdWxlfSBpcyBzdXBwb3J0ZWQgYnkgY2FsbGluZ1xuXFxgYXdhaXQgaXNTdXBwb3J0ZWQoKVxcYCwgdGhlbiByZXRyaWV2ZSB0aGUgaW5zdGFuY2UgZnJvbSB0aGUgaW5qZWN0b3IgbWFudWFsbHkgXFxgaW5qZWN0b3IuZ2V0KCR7bW9kdWxlfSlcXGAuYDtcblxuLy8gVE9ETyBpcyB0aGVyZSBhIGJldHRlciB3YXkgdG8gZ2V0IGF0IHRoZSBpbnRlcm5hbCB0eXBlcz9cbmludGVyZmFjZSBGaXJlYmFzZUFwcFdpdGhDb250YWluZXIgZXh0ZW5kcyBGaXJlYmFzZUFwcCB7XG4gIGNvbnRhaW5lcjogQ29tcG9uZW50Q29udGFpbmVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gybVnZXREZWZhdWx0SW5zdGFuY2VPZjxUPSB1bmtub3duPihpZGVudGlmaWVyOiBzdHJpbmcsIHByb3ZpZGVkOiBUW118dW5kZWZpbmVkLCBkZWZhdWx0QXBwOiBGaXJlYmFzZUFwcCk6IFR8dW5kZWZpbmVkICB7XG4gIGlmIChwcm92aWRlZCkge1xuICAgIC8vIFdhcyBwcm92aWRlKiBvbmx5IGNhbGxlZCBvbmNlPyBJZiBzbyBncmFiIHRoYXRcbiAgICBpZiAocHJvdmlkZWQubGVuZ3RoID09PSAxKSB7IHJldHVybiBwcm92aWRlZFswXTsgfVxuICAgIGNvbnN0IHByb3ZpZGVkVXNpbmdEZWZhdWx0QXBwID0gcHJvdmlkZWQuZmlsdGVyKChpdDogYW55KSA9PiBpdC5hcHAgPT09IGRlZmF1bHRBcHApO1xuICAgIC8vIFdhcyBwcm92aWRlKiBvbmx5IGNhbGxlZCBvbmNlLCB1c2luZyB0aGUgZGVmYXVsdCBhcHA/IElmIHNvIHVzZSB0aGF0XG4gICAgaWYgKHByb3ZpZGVkVXNpbmdEZWZhdWx0QXBwLmxlbmd0aCA9PT0gMSkgeyByZXR1cm4gcHJvdmlkZWRVc2luZ0RlZmF1bHRBcHBbMF07IH1cbiAgfVxuICAvLyBHcmFiIHRoZSBkZWZhdWx0IGluc3RhbmNlIGZyb20gdGhlIGRlZmF1bHRBcHBcbiAgY29uc3QgZGVmYXVsdEFwcFdpdGhDb250YWluZXI6IEZpcmViYXNlQXBwV2l0aENvbnRhaW5lciA9IGRlZmF1bHRBcHAgYXMgYW55O1xuICBjb25zdCBwcm92aWRlciA9IGRlZmF1bHRBcHBXaXRoQ29udGFpbmVyLmNvbnRhaW5lci5nZXRQcm92aWRlcihpZGVudGlmaWVyIGFzIG5ldmVyKTtcbiAgcmV0dXJuIHByb3ZpZGVyLmdldEltbWVkaWF0ZSh7IG9wdGlvbmFsOiB0cnVlIH0pO1xufVxuXG5leHBvcnQgY29uc3QgybVnZXRBbGxJbnN0YW5jZXNPZiA9IDxUPSB1bmtub3duPihpZGVudGlmaWVyOiBzdHJpbmcsIGFwcD86IEZpcmViYXNlQXBwKTogQXJyYXk8VD4gPT4ge1xuICBjb25zdCBhcHBzID0gYXBwID8gW2FwcF0gOiBnZXRBcHBzKCk7XG4gIGNvbnN0IGluc3RhbmNlczogQXJyYXk8YW55PiA9IFtdO1xuICBhcHBzLmZvckVhY2goKGFwcDogRmlyZWJhc2VBcHBXaXRoQ29udGFpbmVyKSA9PiB7XG4gICAgY29uc3QgcHJvdmlkZXI6IGFueSA9IGFwcC5jb250YWluZXIuZ2V0UHJvdmlkZXIoaWRlbnRpZmllciBhcyBuZXZlcik7XG4gICAgcHJvdmlkZXIuaW5zdGFuY2VzLmZvckVhY2goKGluc3RhbmNlOiBhbnkpID0+IHtcbiAgICAgIGlmICghaW5zdGFuY2VzLmluY2x1ZGVzKGluc3RhbmNlKSkge1xuICAgICAgICBpbnN0YW5jZXMucHVzaChpbnN0YW5jZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuICByZXR1cm4gaW5zdGFuY2VzO1xufTtcbiJdfQ==
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ɵisSupportedError } from '@angular/fire';
|
|
2
|
+
import { isSupported } from 'firebase/messaging';
|
|
3
|
+
const isMessagingSupportedPromiseSymbol = '__angularfire_symbol__messagingIsSupported';
|
|
4
|
+
const isMessagingSupportedValueSymbol = '__angularfire_symbol__messagingIsSupportedValue';
|
|
5
|
+
globalThis[isMessagingSupportedPromiseSymbol] || (globalThis[isMessagingSupportedPromiseSymbol] = isSupported().then(it => globalThis[isMessagingSupportedValueSymbol] = it).catch(() => globalThis[isMessagingSupportedValueSymbol] = false));
|
|
6
|
+
export const isMessagingSupportedFactory = {
|
|
7
|
+
async: () => globalThis[isMessagingSupportedPromiseSymbol],
|
|
8
|
+
sync: () => {
|
|
9
|
+
const ret = globalThis[isMessagingSupportedValueSymbol];
|
|
10
|
+
if (ret === undefined) {
|
|
11
|
+
throw new Error(ɵisSupportedError('Messaging'));
|
|
12
|
+
}
|
|
13
|
+
return ret;
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtbWVzc2FnaW5nLXN1cHBvcnRlZC1mYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL21lc3NhZ2luZy9pcy1tZXNzYWdpbmctc3VwcG9ydGVkLWZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVqRCxNQUFNLGlDQUFpQyxHQUFHLDRDQUE0QyxDQUFDO0FBQ3ZGLE1BQU0sK0JBQStCLEdBQUcsaURBQWlELENBQUM7QUFFMUYsVUFBVSxDQUFDLGlDQUFpQyxNQUE1QyxVQUFVLENBQUMsaUNBQWlDLElBQU0sV0FBVyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQ3hFLFVBQVUsQ0FBQywrQkFBK0IsQ0FBQyxHQUFHLEVBQUUsQ0FDakQsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQ1gsVUFBVSxDQUFDLCtCQUErQixDQUFDLEdBQUcsS0FBSyxDQUNwRCxFQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUc7SUFDekMsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxpQ0FBaUMsQ0FBQztJQUMxRCxJQUFJLEVBQUUsR0FBRyxFQUFFO1FBQ1QsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDLCtCQUErQixDQUFDLENBQUM7UUFDeEQsSUFBSSxHQUFHLEtBQUssU0FBUyxFQUFFO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1NBQUU7UUFDM0UsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IMm1aXNTdXBwb3J0ZWRFcnJvciB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUnO1xuaW1wb3J0IHsgaXNTdXBwb3J0ZWQgfSBmcm9tICdmaXJlYmFzZS9tZXNzYWdpbmcnO1xuXG5jb25zdCBpc01lc3NhZ2luZ1N1cHBvcnRlZFByb21pc2VTeW1ib2wgPSAnX19hbmd1bGFyZmlyZV9zeW1ib2xfX21lc3NhZ2luZ0lzU3VwcG9ydGVkJztcbmNvbnN0IGlzTWVzc2FnaW5nU3VwcG9ydGVkVmFsdWVTeW1ib2wgPSAnX19hbmd1bGFyZmlyZV9zeW1ib2xfX21lc3NhZ2luZ0lzU3VwcG9ydGVkVmFsdWUnO1xuXG5nbG9iYWxUaGlzW2lzTWVzc2FnaW5nU3VwcG9ydGVkUHJvbWlzZVN5bWJvbF0gfHw9IGlzU3VwcG9ydGVkKCkudGhlbihpdCA9PlxuICBnbG9iYWxUaGlzW2lzTWVzc2FnaW5nU3VwcG9ydGVkVmFsdWVTeW1ib2xdID0gaXRcbikuY2F0Y2goKCkgPT5cbiAgZ2xvYmFsVGhpc1tpc01lc3NhZ2luZ1N1cHBvcnRlZFZhbHVlU3ltYm9sXSA9IGZhbHNlXG4pO1xuXG5leHBvcnQgY29uc3QgaXNNZXNzYWdpbmdTdXBwb3J0ZWRGYWN0b3J5ID0ge1xuICBhc3luYzogKCkgPT4gZ2xvYmFsVGhpc1tpc01lc3NhZ2luZ1N1cHBvcnRlZFByb21pc2VTeW1ib2xdLFxuICBzeW5jOiAoKSA9PiB7XG4gICAgY29uc3QgcmV0ID0gZ2xvYmFsVGhpc1tpc01lc3NhZ2luZ1N1cHBvcnRlZFZhbHVlU3ltYm9sXTtcbiAgICBpZiAocmV0ID09PSB1bmRlZmluZWQpIHsgdGhyb3cgbmV3IEVycm9yKMm1aXNTdXBwb3J0ZWRFcnJvcignTWVzc2FnaW5nJykpOyB9XG4gICAgcmV0dXJuIHJldDtcbiAgfVxufTtcbiJdfQ==
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { NgModule, Optional, NgZone, InjectionToken, Injector, APP_INITIALIZER } from '@angular/core';
|
|
2
|
-
import { ɵgetDefaultInstanceOf, ɵAngularFireSchedulers, VERSION
|
|
2
|
+
import { ɵgetDefaultInstanceOf, ɵAngularFireSchedulers, VERSION } from '@angular/fire';
|
|
3
3
|
import { Messaging, MessagingInstances, MESSAGING_PROVIDER_NAME } from './messaging';
|
|
4
4
|
import { FirebaseApps, FirebaseApp } from '@angular/fire/app';
|
|
5
5
|
import { registerVersion } from 'firebase/app';
|
|
6
|
+
import { isMessagingSupportedFactory } from './is-messaging-supported-factory';
|
|
6
7
|
import * as i0 from "@angular/core";
|
|
7
8
|
const PROVIDED_MESSAGING_INSTANCES = new InjectionToken('angularfire2.messaging-instances');
|
|
8
9
|
export function defaultMessagingInstanceFactory(provided, defaultApp) {
|
|
9
|
-
if (
|
|
10
|
+
if (!isMessagingSupportedFactory.sync()) {
|
|
10
11
|
return null;
|
|
11
12
|
}
|
|
12
13
|
const defaultMessaging = ɵgetDefaultInstanceOf(MESSAGING_PROVIDER_NAME, provided, defaultApp);
|
|
@@ -14,7 +15,7 @@ export function defaultMessagingInstanceFactory(provided, defaultApp) {
|
|
|
14
15
|
}
|
|
15
16
|
export function messagingInstanceFactory(fn) {
|
|
16
17
|
return (zone, injector) => {
|
|
17
|
-
if (
|
|
18
|
+
if (!isMessagingSupportedFactory.sync()) {
|
|
18
19
|
return null;
|
|
19
20
|
}
|
|
20
21
|
const messaging = zone.runOutsideAngular(() => fn(injector));
|
|
@@ -47,7 +48,7 @@ MessagingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version
|
|
|
47
48
|
MESSAGING_INSTANCES_PROVIDER,
|
|
48
49
|
{
|
|
49
50
|
provide: APP_INITIALIZER,
|
|
50
|
-
useValue:
|
|
51
|
+
useValue: isMessagingSupportedFactory.async,
|
|
51
52
|
multi: true,
|
|
52
53
|
},
|
|
53
54
|
] });
|
|
@@ -59,7 +60,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.3", ngImpor
|
|
|
59
60
|
MESSAGING_INSTANCES_PROVIDER,
|
|
60
61
|
{
|
|
61
62
|
provide: APP_INITIALIZER,
|
|
62
|
-
useValue:
|
|
63
|
+
useValue: isMessagingSupportedFactory.async,
|
|
63
64
|
multi: true,
|
|
64
65
|
},
|
|
65
66
|
]
|
|
@@ -82,4 +83,4 @@ export function provideMessaging(fn, ...deps) {
|
|
|
82
83
|
}]
|
|
83
84
|
};
|
|
84
85
|
}
|
|
85
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnaW5nLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9tZXNzYWdpbmcvbWVzc2FnaW5nLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUF1QixRQUFRLEVBQUUsZUFBZSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNILE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxzQkFBc0IsRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkYsT0FBTyxFQUFFLFNBQVMsRUFBRSxrQkFBa0IsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNyRixPQUFPLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzlELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDL0MsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7O0FBRS9FLE1BQU0sNEJBQTRCLEdBQUcsSUFBSSxjQUFjLENBQWMsa0NBQWtDLENBQUMsQ0FBQztBQUV6RyxNQUFNLFVBQVUsK0JBQStCLENBQUMsUUFBdUMsRUFBRSxVQUF1QjtJQUM5RyxJQUFJLENBQUMsMkJBQTJCLENBQUMsSUFBSSxFQUFFLEVBQUU7UUFBRSxPQUFPLElBQUksQ0FBQztLQUFFO0lBQ3pELE1BQU0sZ0JBQWdCLEdBQUcscUJBQXFCLENBQW9CLHVCQUF1QixFQUFFLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUNqSCxPQUFPLGdCQUFnQixJQUFJLElBQUksU0FBUyxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFDN0QsQ0FBQztBQUVELE1BQU0sVUFBVSx3QkFBd0IsQ0FBQyxFQUE2QztJQUNwRixPQUFPLENBQUMsSUFBWSxFQUFFLFFBQWtCLEVBQUUsRUFBRTtRQUMxQyxJQUFJLENBQUMsMkJBQTJCLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFBRSxPQUFPLElBQUksQ0FBQztTQUFFO1FBQ3pELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUM3RCxPQUFPLElBQUksU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2xDLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLDRCQUE0QixHQUFHO0lBQ25DLE9BQU8sRUFBRSxrQkFBa0I7SUFDM0IsSUFBSSxFQUFFO1FBQ0osQ0FBQyxJQUFJLFFBQVEsRUFBRSxFQUFFLDRCQUE0QixDQUFFO0tBQ2hEO0NBQ0YsQ0FBQztBQUVGLE1BQU0sbUNBQW1DLEdBQUc7SUFDMUMsT0FBTyxFQUFFLFNBQVM7SUFDbEIsVUFBVSxFQUFFLCtCQUErQjtJQUMzQyxJQUFJLEVBQUU7UUFDSixDQUFDLElBQUksUUFBUSxFQUFFLEVBQUUsNEJBQTRCLENBQUU7UUFDL0MsV0FBVztLQUNaO0NBQ0YsQ0FBQztBQWFGLE1BQU0sT0FBTyxlQUFlO0lBQzFCO1FBQ0UsZUFBZSxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3RELENBQUM7OzRHQUhVLGVBQWU7NkdBQWYsZUFBZTs2R0FBZixlQUFlLGFBVmY7UUFDVCxtQ0FBbUM7UUFDbkMsNEJBQTRCO1FBQzVCO1lBQ0UsT0FBTyxFQUFFLGVBQWU7WUFDeEIsUUFBUSxFQUFFLDJCQUEyQixDQUFDLEtBQUs7WUFDM0MsS0FBSyxFQUFFLElBQUk7U0FDWjtLQUNGOzJGQUVVLGVBQWU7a0JBWDNCLFFBQVE7bUJBQUM7b0JBQ1IsU0FBUyxFQUFFO3dCQUNULG1DQUFtQzt3QkFDbkMsNEJBQTRCO3dCQUM1Qjs0QkFDRSxPQUFPLEVBQUUsZUFBZTs0QkFDeEIsUUFBUSxFQUFFLDJCQUEyQixDQUFDLEtBQUs7NEJBQzNDLEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO2lCQUNGOztBQU9ELE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxFQUE2QyxFQUFFLEdBQUcsSUFBVztJQUM1RixPQUFPO1FBQ0wsUUFBUSxFQUFFLGVBQWU7UUFDekIsU0FBUyxFQUFFLENBQUM7Z0JBQ1YsT0FBTyxFQUFFLDRCQUE0QjtnQkFDckMsVUFBVSxFQUFFLHdCQUF3QixDQUFDLEVBQUUsQ0FBQztnQkFDeEMsS0FBSyxFQUFFLElBQUk7Z0JBQ1gsSUFBSSxFQUFFO29CQUNKLE1BQU07b0JBQ04sUUFBUTtvQkFDUixzQkFBc0I7b0JBQ3RCLFlBQVk7b0JBQ1osR0FBRyxJQUFJO2lCQUNSO2FBQ0YsQ0FBQztLQUNILENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUsIE9wdGlvbmFsLCBOZ1pvbmUsIEluamVjdGlvblRva2VuLCBNb2R1bGVXaXRoUHJvdmlkZXJzLCBJbmplY3RvciwgQVBQX0lOSVRJQUxJWkVSIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNZXNzYWdpbmcgYXMgRmlyZWJhc2VNZXNzYWdpbmcgfSBmcm9tICdmaXJlYmFzZS9tZXNzYWdpbmcnO1xuaW1wb3J0IHsgybVnZXREZWZhdWx0SW5zdGFuY2VPZiwgybVBbmd1bGFyRmlyZVNjaGVkdWxlcnMsIFZFUlNJT04gfSBmcm9tICdAYW5ndWxhci9maXJlJztcbmltcG9ydCB7IE1lc3NhZ2luZywgTWVzc2FnaW5nSW5zdGFuY2VzLCBNRVNTQUdJTkdfUFJPVklERVJfTkFNRSB9IGZyb20gJy4vbWVzc2FnaW5nJztcbmltcG9ydCB7IEZpcmViYXNlQXBwcywgRmlyZWJhc2VBcHAgfSBmcm9tICdAYW5ndWxhci9maXJlL2FwcCc7XG5pbXBvcnQgeyByZWdpc3RlclZlcnNpb24gfSBmcm9tICdmaXJlYmFzZS9hcHAnO1xuaW1wb3J0IHsgaXNNZXNzYWdpbmdTdXBwb3J0ZWRGYWN0b3J5IH0gZnJvbSAnLi9pcy1tZXNzYWdpbmctc3VwcG9ydGVkLWZhY3RvcnknO1xuXG5jb25zdCBQUk9WSURFRF9NRVNTQUdJTkdfSU5TVEFOQ0VTID0gbmV3IEluamVjdGlvblRva2VuPE1lc3NhZ2luZ1tdPignYW5ndWxhcmZpcmUyLm1lc3NhZ2luZy1pbnN0YW5jZXMnKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGRlZmF1bHRNZXNzYWdpbmdJbnN0YW5jZUZhY3RvcnkocHJvdmlkZWQ6IEZpcmViYXNlTWVzc2FnaW5nW118dW5kZWZpbmVkLCBkZWZhdWx0QXBwOiBGaXJlYmFzZUFwcCkge1xuICBpZiAoIWlzTWVzc2FnaW5nU3VwcG9ydGVkRmFjdG9yeS5zeW5jKCkpIHsgcmV0dXJuIG51bGw7IH1cbiAgY29uc3QgZGVmYXVsdE1lc3NhZ2luZyA9IMm1Z2V0RGVmYXVsdEluc3RhbmNlT2Y8RmlyZWJhc2VNZXNzYWdpbmc+KE1FU1NBR0lOR19QUk9WSURFUl9OQU1FLCBwcm92aWRlZCwgZGVmYXVsdEFwcCk7XG4gIHJldHVybiBkZWZhdWx0TWVzc2FnaW5nICYmIG5ldyBNZXNzYWdpbmcoZGVmYXVsdE1lc3NhZ2luZyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXNzYWdpbmdJbnN0YW5jZUZhY3RvcnkoZm46IChpbmplY3RvcjogSW5qZWN0b3IpID0+IEZpcmViYXNlTWVzc2FnaW5nKSB7XG4gIHJldHVybiAoem9uZTogTmdab25lLCBpbmplY3RvcjogSW5qZWN0b3IpID0+IHtcbiAgICBpZiAoIWlzTWVzc2FnaW5nU3VwcG9ydGVkRmFjdG9yeS5zeW5jKCkpIHsgcmV0dXJuIG51bGw7IH1cbiAgICBjb25zdCBtZXNzYWdpbmcgPSB6b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IGZuKGluamVjdG9yKSk7XG4gICAgcmV0dXJuIG5ldyBNZXNzYWdpbmcobWVzc2FnaW5nKTtcbiAgfTtcbn1cblxuY29uc3QgTUVTU0FHSU5HX0lOU1RBTkNFU19QUk9WSURFUiA9IHtcbiAgcHJvdmlkZTogTWVzc2FnaW5nSW5zdGFuY2VzLFxuICBkZXBzOiBbXG4gICAgW25ldyBPcHRpb25hbCgpLCBQUk9WSURFRF9NRVNTQUdJTkdfSU5TVEFOQ0VTIF0sXG4gIF1cbn07XG5cbmNvbnN0IERFRkFVTFRfTUVTU0FHSU5HX0lOU1RBTkNFX1BST1ZJREVSID0ge1xuICBwcm92aWRlOiBNZXNzYWdpbmcsXG4gIHVzZUZhY3Rvcnk6IGRlZmF1bHRNZXNzYWdpbmdJbnN0YW5jZUZhY3RvcnksXG4gIGRlcHM6IFtcbiAgICBbbmV3IE9wdGlvbmFsKCksIFBST1ZJREVEX01FU1NBR0lOR19JTlNUQU5DRVMgXSxcbiAgICBGaXJlYmFzZUFwcCxcbiAgXVxufTtcblxuQE5nTW9kdWxlKHtcbiAgcHJvdmlkZXJzOiBbXG4gICAgREVGQVVMVF9NRVNTQUdJTkdfSU5TVEFOQ0VfUFJPVklERVIsXG4gICAgTUVTU0FHSU5HX0lOU1RBTkNFU19QUk9WSURFUixcbiAgICB7XG4gICAgICBwcm92aWRlOiBBUFBfSU5JVElBTElaRVIsXG4gICAgICB1c2VWYWx1ZTogaXNNZXNzYWdpbmdTdXBwb3J0ZWRGYWN0b3J5LmFzeW5jLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBNZXNzYWdpbmdNb2R1bGUge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICByZWdpc3RlclZlcnNpb24oJ2FuZ3VsYXJmaXJlJywgVkVSU0lPTi5mdWxsLCAnZmNtJyk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVNZXNzYWdpbmcoZm46IChpbmplY3RvcjogSW5qZWN0b3IpID0+IEZpcmViYXNlTWVzc2FnaW5nLCAuLi5kZXBzOiBhbnlbXSk6IE1vZHVsZVdpdGhQcm92aWRlcnM8TWVzc2FnaW5nTW9kdWxlPiB7XG4gIHJldHVybiB7XG4gICAgbmdNb2R1bGU6IE1lc3NhZ2luZ01vZHVsZSxcbiAgICBwcm92aWRlcnM6IFt7XG4gICAgICBwcm92aWRlOiBQUk9WSURFRF9NRVNTQUdJTkdfSU5TVEFOQ0VTLFxuICAgICAgdXNlRmFjdG9yeTogbWVzc2FnaW5nSW5zdGFuY2VGYWN0b3J5KGZuKSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgZGVwczogW1xuICAgICAgICBOZ1pvbmUsXG4gICAgICAgIEluamVjdG9yLFxuICAgICAgICDJtUFuZ3VsYXJGaXJlU2NoZWR1bGVycyxcbiAgICAgICAgRmlyZWJhc2VBcHBzLFxuICAgICAgICAuLi5kZXBzLFxuICAgICAgXSxcbiAgICB9XVxuICB9O1xufVxuIl19
|