From bc1258ae760aefc277942a3ea7004c515c68db62 Mon Sep 17 00:00:00 2001 From: Torsten Brendgen Date: Mon, 13 Apr 2026 10:26:01 +0200 Subject: [PATCH] Initial commit --- .yo-rc.json | 12 + README.md | 199 + build-classic.ps1 | 272 + classic/classic-deployment.md | 216 + classic/megamenu-classic.css | 74 + classic/megamenu-classic.js | 265 + classic/megamenu-services-standalone.js | 468 + config/config.json | 18 + config/copy-assets.json | 4 + config/deploy-azure-storage.json | 7 + config/package-solution.json | 13 + config/serve.json | 30 + config/write-manifests.json | 4 + deployment/add-megamenu.ps1 | 104 + ...-bb2d-491f-aba3-cd51c19a299b.manifest.json | 56 + dist/mega-menu-application-customizer.js | 11 + dist/mega-menu-application-customizer.js.map | 1 + gulpfile.js | 7 + lib/extensions/megaMenu/MegaMenu.module.css | 1 + .../megaMenu/MegaMenu.module.scss.d.ts | 5 + .../megaMenu/MegaMenu.module.scss.js | 10 + .../megaMenu/MegaMenu.module.scss.js.map | 1 + .../MegaMenuApplicationCustomizer.d.ts | 27 + .../megaMenu/MegaMenuApplicationCustomizer.js | 188 + .../MegaMenuApplicationCustomizer.js.map | 1 + ...egaMenuApplicationCustomizer.manifest.json | 17 + lib/extensions/megaMenu/MegaMenuRenderer.d.ts | 28 + lib/extensions/megaMenu/MegaMenuRenderer.js | 372 + .../megaMenu/MegaMenuRenderer.js.map | 1 + lib/extensions/megaMenu/MegaMenuSettings.d.ts | 25 + lib/extensions/megaMenu/MegaMenuSettings.js | 223 + .../megaMenu/MegaMenuSettings.js.map | 1 + lib/extensions/megaMenu/loc/en-us.js | 5 + lib/index.d.ts | 4 + lib/index.js | 17 + lib/index.js.map | 1 + lib/services/IMenuItem.d.ts | 10 + lib/services/IMenuItem.js | 3 + lib/services/IMenuItem.js.map | 1 + lib/services/IPickerTerm.d.ts | 9 + lib/services/IPickerTerm.js | 3 + lib/services/IPickerTerm.js.map | 1 + lib/services/ISPTermStorePickerService.d.ts | 84 + lib/services/ISPTermStorePickerService.js | 3 + lib/services/ISPTermStorePickerService.js.map | 1 + .../ISPTermStorePickerServiceProps.d.ts | 7 + .../ISPTermStorePickerServiceProps.js | 3 + .../ISPTermStorePickerServiceProps.js.map | 1 + lib/services/ITaxonomyNavigationService.d.ts | 4 + lib/services/ITaxonomyNavigationService.js | 3 + .../ITaxonomyNavigationService.js.map | 1 + lib/services/ItemDictionary.d.ts | 4 + lib/services/ItemDictionary.js | 14 + lib/services/ItemDictionary.js.map | 1 + lib/services/MenuItem.d.ts | 14 + lib/services/MenuItem.js | 29 + lib/services/MenuItem.js.map | 1 + .../MockTaxonomyNavigationService.d.ts | 5 + lib/services/MockTaxonomyNavigationService.js | 109 + .../MockTaxonomyNavigationService.js.map | 1 + lib/services/SPTermStorePickerService.d.ts | 76 + lib/services/SPTermStorePickerService.js | 574 + lib/services/SPTermStorePickerService.js.map | 1 + lib/services/TaxonomyNavigationService.d.ts | 11 + lib/services/TaxonomyNavigationService.js | 120 + lib/services/TaxonomyNavigationService.js.map | 1 + .../IUserCustomActionProps.d.ts | 20 + .../IUserCustomActionProps.js | 3 + .../IUserCustomActionProps.js.map | 1 + .../IUserCustomActionService.d.ts | 10 + .../IUserCustomActionService.js | 3 + .../IUserCustomActionService.js.map | 1 + .../UserCustomActionScope.d.ts | 5 + .../UserCustomActionScope.js | 8 + .../UserCustomActionScope.js.map | 1 + .../UserCustomActionService.d.ts | 13 + .../UserCustomActionService.js | 210 + .../UserCustomActionService.js.map | 1 + package-lock.json | 17602 ++++++++++++++++ package.json | 39 + src/extensions/megaMenu/MegaMenu.module.scss | 474 + .../megaMenu/MegaMenu.module.scss.ts | 9 + ...egaMenuApplicationCustomizer.manifest.json | 17 + .../megaMenu/MegaMenuApplicationCustomizer.ts | 158 + src/extensions/megaMenu/MegaMenuRenderer.ts | 510 + src/extensions/megaMenu/MegaMenuSettings.ts | 210 + src/extensions/megaMenu/loc/en-us.js | 5 + src/extensions/megaMenu/loc/myStrings.d.ts | 8 + src/index.ts | 20 + src/services/IMenuItem.ts | 10 + src/services/IPickerTerm.ts | 9 + src/services/ISPTermStorePickerService.ts | 94 + .../ISPTermStorePickerServiceProps.ts | 7 + src/services/ITaxonomyNavigationService.ts | 5 + src/services/ItemDictionary.ts | 9 + src/services/MegaMenuDebug.ts | 26 + src/services/MenuItem.ts | 37 + src/services/MockTaxonomyNavigationService.ts | 106 + src/services/SPTermStorePickerService.ts | 532 + src/services/TaxonomyNavigationService.ts | 83 + .../IUserCustomActionProps.ts | 21 + .../IUserCustomActionService.ts | 12 + .../UserCustomActionScope.ts | 5 + .../UserCustomActionService.ts | 134 + .../abc3361f-bb2d-491f-aba3-cd51c19a299b.json | 1 + ...omizer_392adab1c3d9b92b7b82b0eaa3c10004.js | 11 + ...omizer_772e63bec1cc7a1691e79694f57b9245.js | 11 + ...omizer_a8c5b6b10667569479c9117e39176bd7.js | 11 + ...omizer_afd45381aceb3466a423d662fdb1e30b.js | 11 + ..._en-us_6adac6d498d12e2a464a299b650578f1.js | 5 + temp/manifests.js | 5169 +++++ temp/manifests.json | 749 + temp/tslint-tsconfig.json | 26 + temp/tslint.json | 158 + tsconfig.json | 26 + tslint.json | 30 + 116 files changed, 30409 insertions(+) create mode 100644 .yo-rc.json create mode 100644 README.md create mode 100644 build-classic.ps1 create mode 100644 classic/classic-deployment.md create mode 100644 classic/megamenu-classic.css create mode 100644 classic/megamenu-classic.js create mode 100644 classic/megamenu-services-standalone.js create mode 100644 config/config.json create mode 100644 config/copy-assets.json create mode 100644 config/deploy-azure-storage.json create mode 100644 config/package-solution.json create mode 100644 config/serve.json create mode 100644 config/write-manifests.json create mode 100644 deployment/add-megamenu.ps1 create mode 100644 dist/abc3361f-bb2d-491f-aba3-cd51c19a299b.manifest.json create mode 100644 dist/mega-menu-application-customizer.js create mode 100644 dist/mega-menu-application-customizer.js.map create mode 100644 gulpfile.js create mode 100644 lib/extensions/megaMenu/MegaMenu.module.css create mode 100644 lib/extensions/megaMenu/MegaMenu.module.scss.d.ts create mode 100644 lib/extensions/megaMenu/MegaMenu.module.scss.js create mode 100644 lib/extensions/megaMenu/MegaMenu.module.scss.js.map create mode 100644 lib/extensions/megaMenu/MegaMenuApplicationCustomizer.d.ts create mode 100644 lib/extensions/megaMenu/MegaMenuApplicationCustomizer.js create mode 100644 lib/extensions/megaMenu/MegaMenuApplicationCustomizer.js.map create mode 100644 lib/extensions/megaMenu/MegaMenuApplicationCustomizer.manifest.json create mode 100644 lib/extensions/megaMenu/MegaMenuRenderer.d.ts create mode 100644 lib/extensions/megaMenu/MegaMenuRenderer.js create mode 100644 lib/extensions/megaMenu/MegaMenuRenderer.js.map create mode 100644 lib/extensions/megaMenu/MegaMenuSettings.d.ts create mode 100644 lib/extensions/megaMenu/MegaMenuSettings.js create mode 100644 lib/extensions/megaMenu/MegaMenuSettings.js.map create mode 100644 lib/extensions/megaMenu/loc/en-us.js create mode 100644 lib/index.d.ts create mode 100644 lib/index.js create mode 100644 lib/index.js.map create mode 100644 lib/services/IMenuItem.d.ts create mode 100644 lib/services/IMenuItem.js create mode 100644 lib/services/IMenuItem.js.map create mode 100644 lib/services/IPickerTerm.d.ts create mode 100644 lib/services/IPickerTerm.js create mode 100644 lib/services/IPickerTerm.js.map create mode 100644 lib/services/ISPTermStorePickerService.d.ts create mode 100644 lib/services/ISPTermStorePickerService.js create mode 100644 lib/services/ISPTermStorePickerService.js.map create mode 100644 lib/services/ISPTermStorePickerServiceProps.d.ts create mode 100644 lib/services/ISPTermStorePickerServiceProps.js create mode 100644 lib/services/ISPTermStorePickerServiceProps.js.map create mode 100644 lib/services/ITaxonomyNavigationService.d.ts create mode 100644 lib/services/ITaxonomyNavigationService.js create mode 100644 lib/services/ITaxonomyNavigationService.js.map create mode 100644 lib/services/ItemDictionary.d.ts create mode 100644 lib/services/ItemDictionary.js create mode 100644 lib/services/ItemDictionary.js.map create mode 100644 lib/services/MenuItem.d.ts create mode 100644 lib/services/MenuItem.js create mode 100644 lib/services/MenuItem.js.map create mode 100644 lib/services/MockTaxonomyNavigationService.d.ts create mode 100644 lib/services/MockTaxonomyNavigationService.js create mode 100644 lib/services/MockTaxonomyNavigationService.js.map create mode 100644 lib/services/SPTermStorePickerService.d.ts create mode 100644 lib/services/SPTermStorePickerService.js create mode 100644 lib/services/SPTermStorePickerService.js.map create mode 100644 lib/services/TaxonomyNavigationService.d.ts create mode 100644 lib/services/TaxonomyNavigationService.js create mode 100644 lib/services/TaxonomyNavigationService.js.map create mode 100644 lib/services/UserCustomActionService/IUserCustomActionProps.d.ts create mode 100644 lib/services/UserCustomActionService/IUserCustomActionProps.js create mode 100644 lib/services/UserCustomActionService/IUserCustomActionProps.js.map create mode 100644 lib/services/UserCustomActionService/IUserCustomActionService.d.ts create mode 100644 lib/services/UserCustomActionService/IUserCustomActionService.js create mode 100644 lib/services/UserCustomActionService/IUserCustomActionService.js.map create mode 100644 lib/services/UserCustomActionService/UserCustomActionScope.d.ts create mode 100644 lib/services/UserCustomActionService/UserCustomActionScope.js create mode 100644 lib/services/UserCustomActionService/UserCustomActionScope.js.map create mode 100644 lib/services/UserCustomActionService/UserCustomActionService.d.ts create mode 100644 lib/services/UserCustomActionService/UserCustomActionService.js create mode 100644 lib/services/UserCustomActionService/UserCustomActionService.js.map create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 src/extensions/megaMenu/MegaMenu.module.scss create mode 100644 src/extensions/megaMenu/MegaMenu.module.scss.ts create mode 100644 src/extensions/megaMenu/MegaMenuApplicationCustomizer.manifest.json create mode 100644 src/extensions/megaMenu/MegaMenuApplicationCustomizer.ts create mode 100644 src/extensions/megaMenu/MegaMenuRenderer.ts create mode 100644 src/extensions/megaMenu/MegaMenuSettings.ts create mode 100644 src/extensions/megaMenu/loc/en-us.js create mode 100644 src/extensions/megaMenu/loc/myStrings.d.ts create mode 100644 src/index.ts create mode 100644 src/services/IMenuItem.ts create mode 100644 src/services/IPickerTerm.ts create mode 100644 src/services/ISPTermStorePickerService.ts create mode 100644 src/services/ISPTermStorePickerServiceProps.ts create mode 100644 src/services/ITaxonomyNavigationService.ts create mode 100644 src/services/ItemDictionary.ts create mode 100644 src/services/MegaMenuDebug.ts create mode 100644 src/services/MenuItem.ts create mode 100644 src/services/MockTaxonomyNavigationService.ts create mode 100644 src/services/SPTermStorePickerService.ts create mode 100644 src/services/TaxonomyNavigationService.ts create mode 100644 src/services/UserCustomActionService/IUserCustomActionProps.ts create mode 100644 src/services/UserCustomActionService/IUserCustomActionService.ts create mode 100644 src/services/UserCustomActionService/UserCustomActionScope.ts create mode 100644 src/services/UserCustomActionService/UserCustomActionService.ts create mode 100644 temp/deploy/abc3361f-bb2d-491f-aba3-cd51c19a299b.json create mode 100644 temp/deploy/mega-menu-application-customizer_392adab1c3d9b92b7b82b0eaa3c10004.js create mode 100644 temp/deploy/mega-menu-application-customizer_772e63bec1cc7a1691e79694f57b9245.js create mode 100644 temp/deploy/mega-menu-application-customizer_a8c5b6b10667569479c9117e39176bd7.js create mode 100644 temp/deploy/mega-menu-application-customizer_afd45381aceb3466a423d662fdb1e30b.js create mode 100644 temp/deploy/megamenu-megamenuapplicationcustomizerstrings_en-us_6adac6d498d12e2a464a299b650578f1.js create mode 100644 temp/manifests.js create mode 100644 temp/manifests.json create mode 100644 temp/tslint-tsconfig.json create mode 100644 temp/tslint.json create mode 100644 tsconfig.json create mode 100644 tslint.json diff --git a/.yo-rc.json b/.yo-rc.json new file mode 100644 index 0000000..b22e1ad --- /dev/null +++ b/.yo-rc.json @@ -0,0 +1,12 @@ +{ + "@microsoft/generator-sharepoint": { + "isCreatingSolution": true, + "environment": "onprem19", + "version": "1.10.0", + "libraryName": "mega-menu", + "libraryId": "f4660e06-ce08-43ee-bfb7-5c4464e01133", + "packageManager": "npm", + "componentType": "extension", + "extensionType": "ApplicationCustomizer" + } +} \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..263d99e --- /dev/null +++ b/README.md @@ -0,0 +1,199 @@ +# SharePoint MegaMenu Extension + +**Version:** 1.0.2 +**Framework:** SharePoint Framework (SPFx) 1.4.1 +**Node.js:** v8.17.0 + +Eine moderne, barrierefreie Mega-Menü-Lösung für SharePoint 2019 oder SharePoint SE als ApplicationCustomizer Extension. + +## 🌟 Features + +- **3-stufige Navigationshierarchie** basierend auf SharePoint Managed Metadata (Taxonomy) +- **Responsive Design** mit automatischer Anpassung an verschiedene Bildschirmgrößen +- **Barrierefreiheit** mit vollständiger Tastaturnavigation und Screenreader-Unterstützung +- **Einstellungs-Panel** für Administratoren zur Konfiguration +- **Externe CSS-Unterstützung** für individuelle Anpassungen +- **Office UI Fabric Integration** für konsistente SharePoint-Optik + +## 📋 Voraussetzungen + +- SharePoint 2019 oder SharePoint SE (Subscription Edition) +- Node.js v8.17.0 (empfohlen) +- SharePoint Framework Development Tools (SPFx 1.4.1) + +## 🚀 Installation & Entwicklung + +### 1. Repository klonen und Abhängigkeiten installieren + +```bash +git clone +cd MegaMenu +npm install +``` + +### 2. Entwicklungsserver starten + +```bash +gulp serve +``` + +### 3. Produktionspaket erstellen + +```bash +gulp clean +gulp bundle --ship +gulp package-solution --ship +``` + +## 📁 Projektstruktur + +``` +src/ +├── extensions/ +│ └── megaMenu/ +│ ├── MegaMenuApplicationCustomizer.ts # Haupteinstiegspunkt +│ ├── MegaMenuRenderer.ts # Menü-Rendering-Logik +│ ├── MegaMenuSettings.ts # Einstellungs-Panel +│ └── MegaMenu.css # Styling +├── services/ +│ ├── TaxonomyNavigationService.ts # Taxonomy-Datenabfrage +│ ├── UserCustomActionService/ # UserCustomAction-Verwaltung +│ └── ... +└── deployment/ + ├── add-megamenu.ps1 # Installations-Script + └── remove-megamenu.ps1 # Deinstallations-Script +``` + +## ⚙️ Konfiguration + +### Einstellungs-Panel (Admin-Bereich) + +Das MegaMenu verfügt über ein Einstellungs-Panel, das über das Zahnrad-Icon (⚙️) im Menü zugänglich ist: + +1. **Name des Navigations-Termsets**: Der Name des Managed Metadata Termsets, das als Datenquelle dient +2. **Pfad zu zusätzlicher CSS-Datei**: Optional - URL zu einer benutzerdefinierten CSS-Datei + +### PowerShell-Deployment + +```powershell +# Installation +.\src\deployment\add-megamenu.ps1 + +# Deinstallation +.\src\deployment\remove-megamenu.ps1 +``` + +## 🎨 Anpassungen + +### CSS-Customization + +Das MegaMenu kann über externe CSS-Dateien angepasst werden. Wichtige CSS-Klassen: + +```css +/* Haupt-Container */ +#Mega-Menu { } + +/* Top-Level Menüpunkte */ +#Mega-Menu > ul > li > a { } + +/* Mega-Menü Dropdown */ +.mega-menu { } + +/* Kategorien im Dropdown */ +.mega-menu-category { } + +/* Links in Kategorien */ +.mega-menu-category ul li a { } + +/* Einstellungs-Panel */ +.mm-settings-panel { } +``` + +### Accessibility Features + +- **Skip-Links** für Screenreader +- **ARIA-Rollen** und Labels +- **Fokus-Management** mit sichtbaren Fokus-Indikatoren +- **Tastaturnavigation** mit Tab/Shift+Tab/Escape +- **High Contrast Modus** Unterstützung + +## 🔧 Build-Befehle + +| Befehl | Beschreibung | +|--------|-------------| +| `gulp serve` | Entwicklungsserver mit Live-Reload | +| `gulp build` | Entwicklungs-Build (Debug-Modus) | +| `gulp bundle --ship` | Produktions-Build (Optimiert) | +| `gulp package-solution --ship` | SharePoint Package (.sppkg) erstellen | +| `gulp clean` | Build-Artifacts löschen | +| `gulp test` | Unit-Tests ausführen | + +## 📦 Deployment + +1. **Paket erstellen:** + ```bash + gulp clean && gulp bundle --ship && gulp package-solution --ship + ``` + +2. **SharePoint App Catalog:** + - `.sppkg` Datei aus `sharepoint/solution/` hochladen + - App genehmigen und für alle Sites verfügbar machen + +3. **Site-spezifische Aktivierung:** + - PowerShell-Scripts verwenden + +## 🐛 Troubleshooting + +### Häufige Probleme + +**Problem:** Menü wird nicht angezeigt +**Lösung:** Termset-Name in den Einstellungen prüfen + +**Problem:** CSS-Styling funktioniert nicht +**Lösung:** Externe CSS-URL und CORS-Einstellungen überprüfen + +**Problem:** Build-Fehler +**Lösung:** Node.js Version prüfen (v8.17.0 empfohlen) + +### Debug-Modus + +```bash +# Detaillierte Build-Ausgabe +gulp bundle --verbose + +# TypeScript-Fehler anzeigen +gulp build +``` + +## 🔄 Versionshistorie + +### v1.0.2 (Aktuell) +- Einstellungs-Panel implementiert +- Fokus-Management verbessert +- CSS-Optimierungen für SharePoint-Konsistenz +- Barrierefreiheit-Verbesserungen + +### v1.0.1 +- Responsive Design hinzugefügt +- Performance-Optimierungen + +### v1.0.0 +- Initiale Release +- 3-stufige Navigation +- Grundlegende Accessibility + +## 👥 Mitwirkende + +- Entwicklung: Matthias Glubrecht +- Framework: SharePoint Framework (Microsoft) +- UI: Office UI Fabric (Microsoft) + +## 📄 Lizenz + +tbd + +## 🆘 Support + +Bei Fragen oder Problemen: +1. Issues im Repository erstellen +2. Dokumentation und Troubleshooting-Bereich prüfen diff --git a/build-classic.ps1 b/build-classic.ps1 new file mode 100644 index 0000000..d1f13e1 --- /dev/null +++ b/build-classic.ps1 @@ -0,0 +1,272 @@ +# Build script for classic SharePoint version +# Creates a standalone distribution with proper service extraction + +Write-Host "Building MegaMenu Classic Distribution..." -ForegroundColor Green + +# Ensure output directory exists +$outputPath = ".\classic" +if (-not (Test-Path $outputPath)) { + New-Item -ItemType Directory -Path $outputPath -Force +} + +# Step 1: Build the modern SPFx version to ensure CSS is up to date +Write-Host "Building SPFx version for CSS..." -ForegroundColor Yellow +try { + gulp bundle --ship + Write-Host "✓ SPFx build completed" -ForegroundColor Green +} catch { + Write-Host "⚠ SPFx build failed, using existing CSS" -ForegroundColor Yellow +} + +# Step 2: Copy CSS from the built version (same CSS for both classic and modern) +Write-Host "Copying CSS files..." -ForegroundColor Yellow +$cssSource = ".\lib\extensions\megaMenu\MegaMenu.css" +$cssTarget = ".\classic\MegaMenu.css" + +if (Test-Path $cssSource) { + Copy-Item $cssSource $cssTarget -Force + Write-Host "✓ CSS copied from SPFx build" -ForegroundColor Green +} else { + Write-Host "⚠ Built CSS not found, keeping existing classic CSS" -ForegroundColor Yellow +} + +# Step 3: Verify standalone services exist +$servicesFile = ".\classic\megamenu-services-standalone.js" +if (Test-Path $servicesFile) { + Write-Host "✓ Standalone services found" -ForegroundColor Green +} else { + Write-Host "✗ Missing megamenu-services-standalone.js" -ForegroundColor Red + Write-Host " Please ensure this file exists in the classic folder" -ForegroundColor Yellow +} + +# Step 4: Verify classic wrapper exists +$wrapperFile = ".\classic\megamenu-classic.js" +if (Test-Path $wrapperFile) { + Write-Host "✓ Classic wrapper found" -ForegroundColor Green +} else { + Write-Host "✗ Missing megamenu-classic.js" -ForegroundColor Red +} + +# Step 5: Create complete deployment package info +Write-Host "Creating deployment documentation..." -ForegroundColor Yellow + +$deploymentContent = @" +# SharePoint MegaMenu Classic Deployment Guide +Version 1.0.2 - Classic SharePoint Support + +## Architecture Overview + +This classic version reuses the exact same service logic as the modern SPFx version: +- **Same CSS** (MegaMenu.css from SPFx build) +- **Same Services** (TaxonomyNavigationService, MegaMenuRenderer extracted to standalone) +- **Same Configuration** (Reads UserCustomAction properties like SPFx version) +- **Same Menu Structure** (Identical 3-level navigation rendering) + +## Required Files + +### Core Files (Required) +1. **MegaMenu.css** - Main stylesheet (shared with SPFx version) +2. **megamenu-services-standalone.js** - Extracted services without SPFx dependencies +3. **megamenu-classic.js** - Classic SharePoint integration wrapper + +### Dependencies (SharePoint Built-in) +- SP.js (SharePoint JSOM) +- SP.Taxonomy.js (Taxonomy/Metadata services) +- jQuery (usually available in SharePoint) + +## Deployment Methods + +### Method 1: Site Assets (Recommended) +````html + + + + +```` + +### Method 2: Style Library +````html + + + +```` + +### Method 3: CDN or Document Library +Upload to any accessible location and reference accordingly. + +## Configuration + +### Automatic Configuration Reading +The classic version automatically reads the same UserCustomAction configuration as the SPFx version: +- Term Set Name (default: "Navigation") +- External CSS URL (optional) + +### Setting Configuration +Use one of these methods: + +**Option A: Via Modern SPFx Version** +1. Install modern SPFx version on any modern SharePoint site +2. Use the settings panel to configure termset and CSS URL +3. Configuration is stored site-wide and will be read by classic version + +**Option B: Via PowerShell (Advanced)** +````powershell +# Connect to SharePoint site +Add-PnPCustomAction -Name "MegaMenuConfig" -Location "ClientSideExtension.ApplicationCustomizer" ` + -ClientSideComponentId "abc3361f-bb2d-491f-aba3-cd51c19a299b" ` + -ClientSideComponentProperties '{"termSetName":"Your Navigation Termset","cssUrl":"/SiteAssets/custom-menu.css"}' +```` + +## Testing & Validation + +### 1. Verify Dependencies +Open browser console and check: +````javascript +// These should all return objects/functions: +typeof SP +typeof SP.Taxonomy +typeof window.MegaMenuServices +typeof window.MegaMenuClassic +```` + +### 2. Enable Debug Mode +````javascript +window.MegaMenuConfig = { debug: true }; +```` +Then reload page to see console logging. + +### 3. Manual Initialization +If auto-loading fails: +````javascript +window.MegaMenuClassic.reload(); +```` + +## Troubleshooting + +### Common Issues +1. **"SP is undefined"** - SP.js not loaded yet, classic wrapper will retry +2. **"MegaMenuServices not found"** - Include megamenu-services-standalone.js first +3. **"No menu items found"** - Check term set name and user permissions +4. **Menu renders but no styling** - Verify CSS path and inclusion + +### Debug Steps +1. Check browser network tab for 404s on CSS/JS files +2. Verify SharePoint libraries load: SP.js, SP.Taxonomy.js +3. Check term store permissions and term set existence +4. Enable debug mode for detailed console logging + +### Permissions Required +- Read access to term store +- Read access to site UserCustomActions (for configuration) +- Basic site user permissions + +## Differences from SPFx Version + +| Feature | SPFx Version | Classic Version | +|---------|-------------|----------------| +| Deployment | App Catalog | Master Page/Web Part | +| Configuration | Settings Panel | PowerShell or via SPFx | +| Auto-loading | Yes | Manual inclusion | +| Modern Sites | Yes | No | +| Classic Sites | No | Yes | +| SharePoint Online | Yes | Yes | +| SharePoint On-Premises | 2019+ | 2013+ | + +## File Structure After Deployment +```` +/SiteAssets/megamenu/ +├── MegaMenu.css (from SPFx build) +├── megamenu-services-standalone.js (extracted services) +└── megamenu-classic.js (classic wrapper) +```` + +"@ + +Set-Content -Path ".\classic\deployment-guide.md" -Value $deploymentContent -Encoding UTF8 + +# Step 6: Create a simple deployment script template +$deployScript = @" +# PowerShell script to deploy MegaMenu Classic to SharePoint +# Requires PnP PowerShell module: Install-Module PnP.PowerShell + +param( + [Parameter(Mandatory=`$true)] + [string]`$SiteUrl, + + [string]`$LibraryName = "Site Assets", + [string]`$FolderName = "megamenu" +) + +Write-Host "Deploying MegaMenu Classic to `$SiteUrl" -ForegroundColor Green + +# Connect to SharePoint +Connect-PnPOnline -Url `$SiteUrl -Interactive + +# Create folder if it doesn't exist +try { + Get-PnPFolder -Url "`$LibraryName/`$FolderName" -ErrorAction Stop + Write-Host "✓ Folder exists: `$LibraryName/`$FolderName" -ForegroundColor Green +} catch { + Add-PnPFolder -Name `$FolderName -Folder `$LibraryName + Write-Host "✓ Created folder: `$LibraryName/`$FolderName" -ForegroundColor Green +} + +# Upload files +`$files = @( + @{Source=".\MegaMenu.css"; Target="`$LibraryName/`$FolderName/MegaMenu.css"}, + @{Source=".\megamenu-services-standalone.js"; Target="`$LibraryName/`$FolderName/megamenu-services-standalone.js"}, + @{Source=".\megamenu-classic.js"; Target="`$LibraryName/`$FolderName/megamenu-classic.js"} +) + +foreach (`$file in `$files) { + if (Test-Path `$file.Source) { + Add-PnPFile -Path `$file.Source -Folder "`$LibraryName/`$FolderName" + Write-Host "✓ Uploaded: `$(`$file.Source)" -ForegroundColor Green + } else { + Write-Host "✗ File not found: `$(`$file.Source)" -ForegroundColor Red + } +} + +Write-Host "`nDeployment completed!" -ForegroundColor Green +Write-Host "Add these lines to your master page:" -ForegroundColor Yellow +Write-Host "" -ForegroundColor Gray +Write-Host "" -ForegroundColor Gray +Write-Host "" -ForegroundColor Gray +"@ + +Set-Content -Path ".\classic\deploy-to-sharepoint.ps1" -Value $deployScript -Encoding UTF8 + +# Step 7: Summary +Write-Host "`n" + "="*60 -ForegroundColor Cyan +Write-Host "MegaMenu Classic Build Completed!" -ForegroundColor Green +Write-Host "="*60 -ForegroundColor Cyan + +Write-Host "`nDistribution files created:" -ForegroundColor Yellow +$files = @( + @{Name="MegaMenu.css"; Desc="Shared stylesheet from SPFx"}, + @{Name="megamenu-services-standalone.js"; Desc="Extracted services (no SPFx deps)"}, + @{Name="megamenu-classic.js"; Desc="Classic SharePoint wrapper"}, + @{Name="deployment-guide.md"; Desc="Complete deployment documentation"}, + @{Name="deploy-to-sharepoint.ps1"; Desc="PowerShell deployment script"} +) + +foreach ($file in $files) { + $exists = Test-Path ".\classic\$($file.Name)" + $status = if ($exists) { "✓" } else { "✗" } + $color = if ($exists) { "Green" } else { "Red" } + Write-Host " $status $($file.Name)" -ForegroundColor $color -NoNewline + Write-Host " - $($file.Desc)" -ForegroundColor Gray +} + +Write-Host "`nNext steps:" -ForegroundColor Yellow +Write-Host "1. Review deployment-guide.md for instructions" -ForegroundColor White +Write-Host "2. Use deploy-to-sharepoint.ps1 for automated deployment" -ForegroundColor White +Write-Host "3. Configure termset via modern SPFx version or PowerShell" -ForegroundColor White +Write-Host "4. Test on classic SharePoint pages" -ForegroundColor White + +Write-Host "`nArchitectural Achievement:" -ForegroundColor Cyan +Write-Host "✓ Same CSS as SPFx version" -ForegroundColor Green +Write-Host "✓ Same service logic (extracted to standalone)" -ForegroundColor Green +Write-Host "✓ Same configuration system" -ForegroundColor Green +Write-Host "✓ Same menu rendering output" -ForegroundColor Green +Write-Host "✓ No SPFx dependencies in classic version" -ForegroundColor Green \ No newline at end of file diff --git a/classic/classic-deployment.md b/classic/classic-deployment.md new file mode 100644 index 0000000..65d020e --- /dev/null +++ b/classic/classic-deployment.md @@ -0,0 +1,216 @@ +# MegaMenu für klassische SharePoint-Seiten + +Diese Dateien ermöglichen die Verwendung des MegaMenus auf klassischen SharePoint-Seiten (2019/SE) ohne SPFx Framework. + +## 📁 Dateien + +- `megamenu-classic.js` - Hauptlogik für klassische Seiten +- `megamenu-classic.css` - Styling für klassische Seiten +- `classic-deployment.md` - Diese Dokumentation + +## 🚀 Installation + +### Option 1: Master Page (empfohlen) + +1. **Dateien hochladen:** + ``` + /SiteAssets/megamenu/megamenu-classic.js + /SiteAssets/megamenu/megamenu-classic.css + ``` + +2. **Master Page bearbeiten:** + ```html + + + + + + ``` + +### Option 2: ScriptLink über PowerShell + +```powershell +# CSS hinzufügen +$web = Get-SPWeb "http://your-site-url" +$web.AlternateCSSUrl = "/SiteAssets/megamenu/megamenu-classic.css" +$web.Update() + +# JavaScript als Custom Action hinzufügen +$customAction = $web.UserCustomActions.Add() +$customAction.Location = "ScriptLink" +$customAction.ScriptSrc = "/SiteAssets/megamenu/megamenu-classic.js" +$customAction.Sequence = 1000 +$customAction.Update() +$web.Update() +``` + +### Option 3: Content Editor Web Part + +```html + + +``` + +## ⚙️ Konfiguration + +### Basis-Konfiguration + +```html + + +``` + +### Container IDs für verschiedene SharePoint-Versionen + +| SharePoint Version | Container ID | Beschreibung | +|-------------------|--------------|-------------| +| 2019 | `s4-titlerow` | Standard Titel-Bereich | +| SE | `suiteBarTop` | Suite Bar Bereich | +| Custom | `custom-menu-container` | Eigener Container | + +### Term Set Konfiguration + +Das MegaMenu liest die Navigation aus einem Managed Metadata Term Set: + +``` +Navigation (Term Set) +├── Produkte (Level 1) +│ ├── Software (Level 2) +│ │ ├── Office 365 (Level 3) → URL +│ │ └── SharePoint (Level 3) → URL +│ └── Hardware (Level 2) +│ ├── Laptops (Level 3) → URL +│ └── Server (Level 3) → URL +└── Services (Level 1) + └── Consulting (Level 2) + └── SharePoint Beratung (Level 3) → URL +``` + +## 🎨 Anpassungen + +### CSS Customization + +```css +/* Eigene Farben */ +#Mega-Menu-Classic { + background: #your-color; +} + +#Mega-Menu > ul > li > span[role="menuitem"] { + color: #your-text-color; +} + +/* Eigene Schriftarten */ +#Mega-Menu { + font-family: 'Your Font', Arial, sans-serif; +} +``` + +### JavaScript Events + +```javascript +// Nach der Initialisierung eigene Logik hinzufügen +document.addEventListener('DOMContentLoaded', function() { + // Warten bis MegaMenu geladen ist + setTimeout(function() { + if (window.MegaMenuClassic) { + console.log('MegaMenu ist bereit!'); + // Eigene Anpassungen hier... + } + }, 1000); +}); +``` + +## 🔧 Erweiterte Konfiguration + +### Custom URL Mapping + +Die URLs für die Navigation-Links können angepasst werden: + +```javascript +// Überschreibe die getTermUrl Funktion +window.MegaMenuGetTermUrl = function(term) { + var termName = term.get_name(); + // Eigene URL-Logik + return '/custom-pages/' + termName.toLowerCase() + '.aspx'; +}; +``` + +### Mehrsprachigkeit + +```javascript +window.MegaMenuConfig = { + termSetName: _spPageContextInfo.currentUICultureName === 'de-DE' ? 'Navigation_DE' : 'Navigation_EN', + // ... andere Konfigurationen +}; +``` + +## 🐛 Troubleshooting + +### Häufige Probleme + +**Problem:** Menü wird nicht angezeigt +**Lösung:** +- Browser-Konsole auf Fehler prüfen +- Taxonomy Term Set Name überprüfen +- Berechtigungen für Term Store prüfen + +**Problem:** JavaScript-Fehler "SP is not defined" +**Lösung:** +- Script erst nach SharePoint-Bibliotheken laden +- `SP.SOD.executeFunc` verwenden + +**Problem:** Styling funktioniert nicht +**Lösung:** +- CSS-Pfad überprüfen +- Cache leeren +- CSS-Spezifität erhöhen + +### Debug-Modus + +```javascript +window.MegaMenuConfig = { + debug: true, // Aktiviert Console-Logging + // ... andere Optionen +}; +``` + +## 📝 Browser-Unterstützung + +- Internet Explorer 11+ +- Microsoft Edge (alle Versionen) +- Chrome 60+ +- Firefox 55+ +- Safari 12+ + +## ⚠️ Wichtige Hinweise + +1. **Berechtigungen:** Benutzer benötigen Leserechte auf den Term Store +2. **Performance:** Bei großen Term Sets kann das Laden länger dauern +3. **Caching:** SharePoint cached Taxonomy-Daten - Änderungen können verzögert sichtbar werden +4. **Responsive:** Das Menü ist für mobile Geräte optimiert + +## 🔄 Migration von SPFx Version + +Falls Sie von der SPFx-Version migrieren: + +1. SPFx ApplicationCustomizer deaktivieren +2. Klassische Dateien hochladen und einbinden +3. Konfiguration anpassen (gleiche Term Sets verwendbar) +4. Testen und CSS bei Bedarf anpassen + +## 📞 Support + +Bei Problemen: +1. Debug-Modus aktivieren +2. Browser-Konsole prüfen +3. Term Set Struktur validieren +4. Dateipfade und Berechtigungen überprüfen \ No newline at end of file diff --git a/classic/megamenu-classic.css b/classic/megamenu-classic.css new file mode 100644 index 0000000..be6733a --- /dev/null +++ b/classic/megamenu-classic.css @@ -0,0 +1,74 @@ +/** + * MegaMenu CSS for Classic SharePoint Pages + * Version: 1.0.2 + * + * This file imports the exact same CSS as the modern SPFx version + * to ensure 100% visual consistency. + * + * Usage: + * 1. Copy the compiled MegaMenu.css from src/extensions/megaMenu/ to your SharePoint assets + * 2. Reference it in your master page or via alternate CSS URL: + * + * + * This file provides additional classic-specific adjustments if needed. + */ + +/* + * The main MegaMenu.css should be loaded first! + * This file only contains classic SharePoint specific overrides. + */ + +/* Classic SharePoint specific container adjustments */ +.megamenu-classic-container { + /* Insert after s4-titlerow or other SharePoint containers */ + width: 100%; + margin: 0; + padding: 0; +} + +/* Ensure proper z-index in classic SharePoint context */ +#Mega-Menu { + position: relative; + z-index: 999; /* Below SharePoint dialogs but above content */ +} + +.mega-menu { + z-index: 1000; /* Above the main menu */ +} + +/* Classic SharePoint ribbon compatibility */ +body.ms-backgroundImage #Mega-Menu { + /* Adjust if SharePoint has background images */ + position: relative; +} + +/* Ensure settings panel works in classic mode too */ +.mm-settings-panel { + z-index: 4001; /* Above everything else */ +} + +/* Classic SharePoint v4.master specific adjustments */ +.v4master #Mega-Menu { + /* Any v4.master specific styles if needed */ +} + +/* Classic SharePoint seattle.master specific adjustments */ +.seattle #Mega-Menu { + /* Any seattle.master specific styles if needed */ +} + +/* Responsive adjustments for classic SharePoint layouts */ +@media (max-width: 1024px) { + .megamenu-classic-container { + /* Classic SharePoint is often used on older devices */ + overflow-x: auto; + } +} + +/* Print styles for classic SharePoint */ +@media print { + #Mega-Menu, + .megamenu-classic-container { + display: none !important; + } +} \ No newline at end of file diff --git a/classic/megamenu-classic.js b/classic/megamenu-classic.js new file mode 100644 index 0000000..4c6373c --- /dev/null +++ b/classic/megamenu-classic.js @@ -0,0 +1,265 @@ +/** + * SharePoint MegaMenu for Classic Pages + * Version: 1.0.2 + * + * This version uses standalone services that replicate the SPFx logic + * without requiring the SharePoint Framework. + * + * Prerequisites: + * 1. megamenu-services-standalone.js must be loaded first + * 2. MegaMenu.css must be included + * 3. SP.js and SP.Taxonomy.js must be available + * + * Usage: + * + * + * + */ + +(function() { + 'use strict'; + + var MEGAMENU_UCA_ID = 'abc3361f-bb2d-491f-aba3-cd51c19a299b'; // Same as in MegaMenuApplicationCustomizer.ts + + var config = window.MegaMenuConfig || { + containerId: 's4-titlerow', + debug: false + }; + + function log(message, data) { + if (config.debug && console && console.log) { + console.log('[MegaMenu Classic] ' + message, data || ''); + } + } + + // Wait for dependencies: SharePoint JSOM, Taxonomy, and our standalone services + function waitForDependencies(callback) { + if (typeof SP !== 'undefined' && + SP.SOD && + typeof SP.Taxonomy !== 'undefined' && + typeof window.MegaMenuServices !== 'undefined' && + document.readyState === 'complete') { + callback(); + } else { + setTimeout(function() { waitForDependencies(callback); }, 100); + } + } + + // Classic SharePoint context wrapper + function createClassicContext() { + return { + pageContext: { + site: { + absoluteUrl: _spPageContextInfo.siteAbsoluteUrl + }, + web: { + absoluteUrl: _spPageContextInfo.webAbsoluteUrl, + permissions: { + hasPermission: function(permission) { + return _spPageContextInfo.isSiteAdmin === true; + } + } + } + } + }; + } + + // Configuration reader using REST API (same logic as MegaMenuSettings.ts) + function readMegaMenuConfiguration(callback) { + log('Reading MegaMenu configuration from UserCustomAction...'); + + var restUrl = _spPageContextInfo.siteAbsoluteUrl + + "/_api/site/userCustomActions?$filter=ClientSideComponentId eq guid'" + MEGAMENU_UCA_ID + "'"; + + fetch(restUrl, { + method: 'GET', + headers: { + 'Accept': 'application/json;odata=nometadata' + } + }) + .then(function(response) { + if (!response.ok) { + throw new Error('HTTP ' + response.status + ' - ' + response.statusText); + } + return response.json(); + }) + .then(function(data) { + if (data && data.value && data.value.length > 0) { + var uca = data.value[0]; + try { + var props = JSON.parse(uca.ClientSideComponentProperties); + log('Configuration found', props); + callback(props); + } catch (e) { + log('Error parsing UserCustomAction properties: ' + e.message); + callback({ termSetName: 'Navigation', cssUrl: '' }); + } + } else { + log('No UserCustomAction found - using defaults'); + callback({ termSetName: 'Navigation', cssUrl: '' }); + } + }) + .catch(function(error) { + log('Error reading configuration: ' + error.message); + callback({ termSetName: 'Navigation', cssUrl: '' }); + }); + } + + // Load external CSS (same as SPFx version) + function loadExternalCSS(cssUrl) { + if (!cssUrl) return; + + var link = document.createElement('link'); + link.rel = 'stylesheet'; + link.type = 'text/css'; + link.href = cssUrl; + link.onerror = function() { + log('Failed to load external CSS: ' + cssUrl); + }; + link.onload = function() { + log('External CSS loaded successfully: ' + cssUrl); + }; + document.head.appendChild(link); + } + + // Main initialization + function initMegaMenu() { + log('Initializing MegaMenu for classic SharePoint...'); + + // Check if services are available + if (!window.MegaMenuServices) { + console.error('[MegaMenu] Standalone services not found! Please include megamenu-services-standalone.js first.'); + return; + } + + readMegaMenuConfiguration(function(props) { + log('Using configuration:', props); + + // Load external CSS if specified + if (props.cssUrl) { + loadExternalCSS(props.cssUrl); + } + + // Create context + var context = createClassicContext(); + + // Create taxonomy service using standalone implementation + var taxonomyService = new window.MegaMenuServices.TaxonomyNavigationService( + context, + props.termSetName + ); + + // Load menu items + taxonomyService.getMenuItems() + .then(function(menuItems) { + log('Menu items loaded:', menuItems); + + // Find target container + var container = document.getElementById(config.containerId); + if (!container) { + log('Container not found: ' + config.containerId + '. Creating fallback container.'); + // Create fallback container at top of page + container = document.createElement('div'); + container.id = 'megamenu-fallback-container'; + document.body.insertBefore(container, document.body.firstChild); + } + + // Create menu wrapper + var menuWrapper = document.createElement('div'); + menuWrapper.className = 'megamenu-classic-container'; + + // Insert menu wrapper + if (container.nextSibling) { + container.parentNode.insertBefore(menuWrapper, container.nextSibling); + } else { + container.parentNode.appendChild(menuWrapper); + } + + // Create renderer using standalone implementation + var renderer = new window.MegaMenuServices.MegaMenuRenderer( + context, + menuItems, + function(updatedProps) { + log('Properties updated (not persisted in classic mode):', updatedProps); + } + ); + + // Render the menu + renderer.render(menuWrapper); + + log('✅ MegaMenu rendered successfully!'); + }) + .catch(function(error) { + console.error('[MegaMenu] Error loading menu items:', error); + + // Show error message to user + var container = document.getElementById(config.containerId); + if (container) { + var errorDiv = document.createElement('div'); + errorDiv.style.cssText = 'background:#ffebee;color:#c62828;padding:10px;border:1px solid #ef5350;margin:5px 0;'; + errorDiv.innerHTML = 'MegaMenu Error: ' + error.message + + '
Check browser console for details.'; + + if (container.nextSibling) { + container.parentNode.insertBefore(errorDiv, container.nextSibling); + } else { + container.parentNode.appendChild(errorDiv); + } + } + }); + }); + } + + // Bootstrap function + function bootstrap() { + log('Bootstrapping MegaMenu...'); + + // Wait for SharePoint JSOM to be ready + if (typeof SP === 'undefined' || !SP.SOD) { + setTimeout(bootstrap, 100); + return; + } + + // Load required SharePoint libraries + SP.SOD.executeFunc('sp.js', 'SP.ClientContext', function() { + SP.SOD.executeFunc('sp.taxonomy.js', 'SP.Taxonomy.TaxonomySession', function() { + // Wait for all dependencies and initialize + waitForDependencies(function() { + initMegaMenu(); + }); + }); + }); + } + + // Auto-start based on DOM state + if (document.readyState === 'loading') { + document.addEventListener('DOMContentLoaded', bootstrap); + } else { + // DOM already loaded + setTimeout(bootstrap, 100); + } + + // Expose public API + window.MegaMenuClassic = { + init: initMegaMenu, + bootstrap: bootstrap, + config: config, + + // Utility methods + setConfig: function(newConfig) { + Object.assign(config, newConfig); + }, + + reload: function() { + // Remove existing menu and reload + var existing = document.querySelector('.megamenu-classic-container'); + if (existing) { + existing.remove(); + } + initMegaMenu(); + } + }; + + log('MegaMenu Classic wrapper loaded. Waiting for dependencies...'); + +})(); \ No newline at end of file diff --git a/classic/megamenu-services-standalone.js b/classic/megamenu-services-standalone.js new file mode 100644 index 0000000..50a995c --- /dev/null +++ b/classic/megamenu-services-standalone.js @@ -0,0 +1,468 @@ +/** + * Standalone MegaMenu Services for Classic SharePoint + * + * This file contains extracted and adapted versions of the SPFx services + * that work in classic SharePoint without SPFx dependencies. + */ + +(function(global) { + 'use strict'; + + // =========================================== + // 1. UTILITY CLASSES (from SPFx services) + // =========================================== + + class ItemDictionary { + constructor() { + this._items = {}; + } + + Add(key, value) { + this._items[key] = value; + } + + Get(key) { + return this._items[key]; + } + } + + class MenuItem { + constructor(term, depth, siteCollectionUrl) { + this.title = term.Name; + this.url = this._getNavigationUrl(term, siteCollectionUrl); + this.items = []; + this.pathDepth = this._calculateDepth(term.PathOfTerm); + this.parentId = this._getParentId(term.PathOfTerm); + this.id = term.Id; + this._term = term; + } + + _calculateDepth(pathOfTerm) { + if (!pathOfTerm) return 1; + return pathOfTerm.split(';').length; + } + + _getParentId(pathOfTerm) { + if (!pathOfTerm) return null; + const parts = pathOfTerm.split(';'); + if (parts.length <= 1) return null; + // Return parent term ID (simplified - may need adjustment) + return parts[parts.length - 2]; + } + + _getNavigationUrl(term, siteCollectionUrl) { + // Extract URL from term properties + if (term.LocalCustomProperties && term.LocalCustomProperties._Sys_Nav_SimpleLinkUrl) { + return term.LocalCustomProperties._Sys_Nav_SimpleLinkUrl; + } + + // Fallback: generate URL based on term name + const termName = term.Name.toLowerCase().replace(/[^a-z0-9]/g, '-'); + return `${siteCollectionUrl}/pages/${termName}.aspx`; + } + } + + // =========================================== + // 2. TAXONOMY NAVIGATION SERVICE (adapted) + // =========================================== + + class TaxonomyNavigationService { + constructor(context, termSetName) { + this.context = context; + this.termSetName = termSetName; + this._siteCollectionUrl = context.pageContext.site.absoluteUrl; + } + + async getMenuItems() { + console.log('[TaxonomyService] Loading terms for:', this.termSetName); + + try { + const termSet = await this._loadTermSet(this.termSetName); + return this._processTerms(termSet); + } catch (error) { + console.error('[TaxonomyService] Error loading terms:', error); + return [this._createNoTermsItem()]; + } + } + + _loadTermSet(termSetName) { + return new Promise((resolve, reject) => { + const context = SP.ClientContext.get_current(); + const session = SP.Taxonomy.TaxonomySession.getTaxonomySession(context); + const termStore = session.getDefaultSiteCollectionTermStore(); + const termSets = termStore.getTermSetsByName(termSetName, 1033); + + context.load(termSets); + + context.executeQueryAsync( + () => { + if (termSets.get_count() > 0) { + const termSet = termSets.get_item(0); + const terms = termSet.get_terms(); + context.load(terms); + + context.executeQueryAsync( + () => { + // Load all terms with their properties and children + this._loadAllTermsRecursively(context, terms, resolve, reject); + }, + (sender, args) => reject(new Error(args.get_message())) + ); + } else { + reject(new Error(`Term set '${termSetName}' not found`)); + } + }, + (sender, args) => reject(new Error(args.get_message())) + ); + }); + } + + _loadAllTermsRecursively(context, terms, resolve, reject) { + const allTerms = []; + const termsEnum = terms.getEnumerator(); + + // First pass: collect all terms + while (termsEnum.moveNext()) { + const term = termsEnum.get_current(); + context.load(term, 'Id', 'Name', 'PathOfTerm', 'LocalCustomProperties'); + allTerms.push(term); + + // Load child terms + const childTerms = term.get_terms(); + context.load(childTerms); + this._loadChildTermsRecursively(context, childTerms, allTerms); + } + + // Execute query to load all data + context.executeQueryAsync( + () => { + const processedTerms = allTerms.map(term => ({ + Id: term.get_id().toString(), + Name: term.get_name(), + PathOfTerm: term.get_pathOfTerm(), + LocalCustomProperties: this._getCustomProperties(term), + IsRoot: term.get_pathOfTerm().split(';').length === 1 + })); + + resolve(processedTerms); + }, + (sender, args) => reject(new Error(args.get_message())) + ); + } + + _loadChildTermsRecursively(context, childTerms, allTerms) { + const childEnum = childTerms.getEnumerator(); + while (childEnum.moveNext()) { + const childTerm = childEnum.get_current(); + context.load(childTerm, 'Id', 'Name', 'PathOfTerm', 'LocalCustomProperties'); + allTerms.push(childTerm); + + // Recursively load grandchildren + const grandChildTerms = childTerm.get_terms(); + context.load(grandChildTerms); + this._loadChildTermsRecursively(context, grandChildTerms, allTerms); + } + } + + _getCustomProperties(term) { + try { + const props = term.get_localCustomProperties(); + return { + _Sys_Nav_SimpleLinkUrl: props._Sys_Nav_SimpleLinkUrl || null, + _Sys_Nav_HoverText: props._Sys_Nav_HoverText || null + }; + } catch (e) { + return {}; + } + } + + _processTerms(termsData) { + const itemsDict = new ItemDictionary(); + const menuItems = []; + + // Create MenuItem objects + termsData.forEach(termData => { + const menuItem = new MenuItem(termData, 0, this._siteCollectionUrl); + itemsDict.Add(termData.Id, menuItem); + + if (menuItem.pathDepth === 1) { + menuItems.push(menuItem); + } + }); + + // Build hierarchy + termsData.forEach(termData => { + if (termData.PathOfTerm && termData.PathOfTerm.split(';').length > 1) { + const menuItem = itemsDict.Get(termData.Id); + const parentId = menuItem.parentId; + const parentItem = itemsDict.Get(parentId); + + if (parentItem) { + parentItem.items.push(menuItem); + } + } + }); + + return menuItems.length > 0 ? menuItems : [this._createNoTermsItem()]; + } + + _createNoTermsItem() { + return new MenuItem({ + Id: 'no-terms', + Name: 'Es wurden keine Terms gefunden. Bitte überprüfen Sie Ihre Einstellungen.', + PathOfTerm: '', + LocalCustomProperties: {} + }, 0, this._siteCollectionUrl); + } + } + + // =========================================== + // 3. MEGA MENU RENDERER (adapted from SPFx) + // =========================================== + + class MegaMenuRenderer { + constructor(context, menuItems, updateCallback) { + this.context = context; + this.menuItems = menuItems; + this.updateCallback = updateCallback; + } + + render(container) { + container.innerHTML = ''; + + const nav = document.createElement('nav'); + nav.id = 'Mega-Menu'; + nav.className = 'mega-menu-main'; + nav.setAttribute('role', 'navigation'); + nav.setAttribute('aria-label', 'Hauptnavigation'); + + const topLevelUl = document.createElement('ul'); + topLevelUl.setAttribute('role', 'menubar'); + + this.menuItems.forEach(topLevelItem => { + const topLevelLi = this.createTopLevelItem(topLevelItem); + topLevelUl.appendChild(topLevelLi); + }); + + // Add settings if user has permissions (simplified check) + if (this._hasManagePermissions()) { + topLevelUl.appendChild(this.createSettingsItem()); + } + + nav.appendChild(topLevelUl); + container.appendChild(nav); + + this.attachEventListeners(); + this.createScreenReaderAnnouncer(); + } + + createTopLevelItem(item) { + const li = document.createElement('li'); + li.setAttribute('role', 'none'); + + if (item.url && item.items.length === 0) { + // Simple link + const a = document.createElement('a'); + a.href = item.url; + a.textContent = item.title; + a.className = 'menu-item-link'; + a.setAttribute('role', 'menuitem'); + a.setAttribute('tabindex', '0'); + li.appendChild(a); + } else { + // Menu with submenu + const span = document.createElement('span'); + span.textContent = item.title; + span.className = 'menu-item-text'; + span.setAttribute('role', 'menuitem'); + span.setAttribute('tabindex', '0'); + span.setAttribute('aria-haspopup', 'true'); + span.setAttribute('aria-expanded', 'false'); + li.appendChild(span); + + if (item.items.length > 0) { + const megaMenu = this.createMegaMenu(item.items); + li.appendChild(megaMenu); + } + } + + return li; + } + + createMegaMenu(categories) { + const megaMenuDiv = document.createElement('div'); + megaMenuDiv.className = 'mega-menu'; + megaMenuDiv.setAttribute('role', 'menu'); + + const gridDiv = document.createElement('div'); + gridDiv.className = 'mega-menu-grid'; + + categories.forEach(category => { + const categoryDiv = this.createCategory(category); + gridDiv.appendChild(categoryDiv); + }); + + megaMenuDiv.appendChild(gridDiv); + return megaMenuDiv; + } + + createCategory(category) { + const categoryDiv = document.createElement('div'); + categoryDiv.className = 'mega-menu-category'; + + const h3 = document.createElement('h3'); + + if (category.url) { + const a = document.createElement('a'); + a.href = category.url; + a.textContent = category.title; + a.setAttribute('tabindex', '0'); + h3.appendChild(a); + } else { + const span = document.createElement('span'); + span.textContent = category.title; + h3.appendChild(span); + } + + categoryDiv.appendChild(h3); + + if (category.items.length > 0) { + const ul = document.createElement('ul'); + ul.setAttribute('role', 'group'); + + category.items.forEach(link => { + const li = document.createElement('li'); + li.setAttribute('role', 'none'); + + const a = document.createElement('a'); + a.href = link.url; + a.textContent = link.title; + a.setAttribute('role', 'menuitem'); + a.setAttribute('tabindex', '0'); + + li.appendChild(a); + ul.appendChild(li); + }); + + categoryDiv.appendChild(ul); + } + + return categoryDiv; + } + + createSettingsItem() { + const li = document.createElement('li'); + li.setAttribute('role', 'none'); + + const button = document.createElement('button'); + button.className = 'menu-item-settings'; + button.setAttribute('type', 'button'); + button.setAttribute('role', 'menuitem'); + button.setAttribute('tabindex', '0'); + button.setAttribute('aria-label', 'Einstellungen'); + button.onclick = () => this._openSettings(); + + const icon = document.createElement('i'); + icon.className = 'ms-Icon ms-Icon--Settings menu-item-settings__icon'; + icon.setAttribute('aria-hidden', 'true'); + button.appendChild(icon); + + li.appendChild(button); + return li; + } + + attachEventListeners() { + // Keyboard and mouse event handling (simplified) + const menuItems = document.querySelectorAll('#Mega-Menu [role="menuitem"]'); + menuItems.forEach(item => { + item.addEventListener('keydown', this.handleKeyDown.bind(this)); + + const parent = item.parentElement; + if (parent && parent.querySelector('.mega-menu')) { + parent.addEventListener('mouseenter', this.showMegaMenu); + parent.addEventListener('mouseleave', this.hideMegaMenu); + } + }); + } + + createScreenReaderAnnouncer() { + // Accessibility support + const announcer = document.createElement('div'); + announcer.id = 'mega-menu-announcer'; + announcer.className = 'sr-only'; + announcer.setAttribute('aria-live', 'polite'); + announcer.setAttribute('aria-atomic', 'true'); + document.body.appendChild(announcer); + } + + showMegaMenu() { + const megaMenu = this.querySelector('.mega-menu'); + if (megaMenu) { + megaMenu.classList.add('js-open'); + const menuItem = this.querySelector('[role="menuitem"]'); + if (menuItem) { + menuItem.setAttribute('aria-expanded', 'true'); + } + } + } + + hideMegaMenu() { + const megaMenu = this.querySelector('.mega-menu'); + if (megaMenu) { + megaMenu.classList.remove('js-open'); + const menuItem = this.querySelector('[role="menuitem"]'); + if (menuItem) { + menuItem.setAttribute('aria-expanded', 'false'); + } + } + } + + handleKeyDown(e) { + // Keyboard navigation logic (simplified) + if (e.key === 'Enter' || e.key === ' ') { + e.preventDefault(); + const parent = e.target.parentElement; + const megaMenu = parent.querySelector('.mega-menu'); + if (megaMenu) { + megaMenu.classList.toggle('js-open'); + e.target.setAttribute('aria-expanded', + megaMenu.classList.contains('js-open') ? 'true' : 'false'); + } + } else if (e.key === 'Escape') { + const megaMenu = document.querySelector('.mega-menu.js-open'); + if (megaMenu) { + megaMenu.classList.remove('js-open'); + const menuItem = megaMenu.parentElement.querySelector('[role="menuitem"]'); + if (menuItem) { + menuItem.setAttribute('aria-expanded', 'false'); + menuItem.focus(); + } + } + } + } + + _hasManagePermissions() { + // Simplified permission check for classic SharePoint + return _spPageContextInfo.isSiteAdmin || false; + } + + _openSettings() { + console.log('[MegaMenu] Settings not implemented in classic mode'); + alert('Einstellungen sind nur in der modernen SPFx-Version verfügbar.'); + } + } + + // =========================================== + // 4. EXPOSE SERVICES GLOBALLY + // =========================================== + + global.MegaMenuServices = { + TaxonomyNavigationService: TaxonomyNavigationService, + MegaMenuRenderer: MegaMenuRenderer, + MenuItem: MenuItem, + ItemDictionary: ItemDictionary + }; + + console.log('[MegaMenu] Standalone services loaded successfully'); + +})(window); \ No newline at end of file diff --git a/config/config.json b/config/config.json new file mode 100644 index 0000000..d5dbd6e --- /dev/null +++ b/config/config.json @@ -0,0 +1,18 @@ +{ + "$schema": "https://developer.microsoft.com/json-schemas/spfx-build/config.2.0.schema.json", + "version": "2.0", + "bundles": { + "mega-menu-application-customizer": { + "components": [ + { + "entrypoint": "./lib/extensions/megaMenu/MegaMenuApplicationCustomizer.js", + "manifest": "./src/extensions/megaMenu/MegaMenuApplicationCustomizer.manifest.json" + } + ] + } + }, + "externals": {}, + "localizedResources": { + "MegaMenuApplicationCustomizerStrings": "lib/extensions/megaMenu/loc/{locale}.js" + } +} diff --git a/config/copy-assets.json b/config/copy-assets.json new file mode 100644 index 0000000..3771fd0 --- /dev/null +++ b/config/copy-assets.json @@ -0,0 +1,4 @@ +{ + "$schema": "https://developer.microsoft.com/json-schemas/spfx-build/copy-assets.schema.json", + "deployCdnPath": "temp/deploy" +} diff --git a/config/deploy-azure-storage.json b/config/deploy-azure-storage.json new file mode 100644 index 0000000..b66acf2 --- /dev/null +++ b/config/deploy-azure-storage.json @@ -0,0 +1,7 @@ +{ + "$schema": "https://developer.microsoft.com/json-schemas/spfx-build/deploy-azure-storage.schema.json", + "workingDir": "./temp/deploy/", + "account": "", + "container": "mega-menu", + "accessKey": "" +} \ No newline at end of file diff --git a/config/package-solution.json b/config/package-solution.json new file mode 100644 index 0000000..c482bde --- /dev/null +++ b/config/package-solution.json @@ -0,0 +1,13 @@ +{ + "$schema": "https://developer.microsoft.com/json-schemas/spfx-build/package-solution.schema.json", + "solution": { + "name": "mega-menu-client-side-solution", + "id": "f4660e06-ce08-43ee-bfb7-5c4464e01133", + "version": "1.0.7.0", + "includeClientSideAssets": true, + "skipFeatureDeployment": true + }, + "paths": { + "zippedPackage": "solution/mega-menu.sppkg" + } +} \ No newline at end of file diff --git a/config/serve.json b/config/serve.json new file mode 100644 index 0000000..3d9f288 --- /dev/null +++ b/config/serve.json @@ -0,0 +1,30 @@ +{ + "$schema": "https://developer.microsoft.com/json-schemas/core-build/serve.schema.json", + "port": 4321, + "https": true, + "serveConfigurations": { + "default": { + "pageUrl": "https://sharepoint.contoso.local/SitePages/Neues-Zuhause.aspx", + "customActions": { + "abc3361f-bb2d-491f-aba3-cd51c19a299b": { + "location": "ClientSideExtension.ApplicationCustomizer", + "properties": { + "termSetName": "Horizontale Navigation", + "additionalCssUrl": "/siteAssets/Navigation/Navigation.css" + } + } + } + }, + "megaMenu": { + "pageUrl": "https://contoso.sharepoint.com/sites/mySite/SitePages/myPage.aspx", + "customActions": { + "abc3361f-bb2d-491f-aba3-cd51c19a299b": { + "location": "ClientSideExtension.ApplicationCustomizer", + "properties": { + "testMessage": "Test message" + } + } + } + } + } +} diff --git a/config/write-manifests.json b/config/write-manifests.json new file mode 100644 index 0000000..bad3526 --- /dev/null +++ b/config/write-manifests.json @@ -0,0 +1,4 @@ +{ + "$schema": "https://developer.microsoft.com/json-schemas/spfx-build/write-manifests.schema.json", + "cdnBasePath": "" +} \ No newline at end of file diff --git a/deployment/add-megamenu.ps1 b/deployment/add-megamenu.ps1 new file mode 100644 index 0000000..f080407 --- /dev/null +++ b/deployment/add-megamenu.ps1 @@ -0,0 +1,104 @@ +param( + [Parameter(Mandatory = $true)] + [Alias('WebUrl')] + [string]$SiteUrl, + + [string]$TermSetName = '', + + [string]$CssUrl = '', + + [switch]$EnableDebug, + + [string]$Description = 'MSFT-Custom-Solution:MegaMenu' +) + +Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue | Out-Null + +$componentId = 'abc3361f-bb2d-491f-aba3-cd51c19a299b' +$location = 'ClientSideExtension.ApplicationCustomizer' +$name = 'MegaMenu' +$title = 'Mega Menu' + +function Get-MegaMenuPropertiesJson { + param( + [string]$CurrentTermSetName, + [string]$CurrentCssUrl, + [bool]$CurrentDebug + ) + + return (@{ + termSetName = $CurrentTermSetName + cssUrl = $CurrentCssUrl + debug = $CurrentDebug + } | ConvertTo-Json -Depth 10 -Compress) +} + +function Remove-WebScopedComponentActions { + param( + [Microsoft.SharePoint.SPSite]$CurrentSite, + [string]$CurrentComponentId, + [string]$CurrentLocation + ) + + $removedCount = 0 + + foreach ($web in $CurrentSite.AllWebs) { + try { + $webActions = @($web.UserCustomActions | Where-Object { + $_.Location -eq $CurrentLocation -and + $_.ClientSideComponentId -and + $_.ClientSideComponentId.ToString().ToLower() -eq $CurrentComponentId + }) + + foreach ($webAction in $webActions) { + $web.UserCustomActions.Delete($webAction.Id) + $removedCount++ + } + + if ($webActions.Count -gt 0) { + $web.Update() + } + } + finally { + $web.Dispose() + } + } + + return $removedCount +} + +$site = Get-SPSite -Identity $SiteUrl +try { + $removedWebScopedActions = Remove-WebScopedComponentActions -CurrentSite $site -CurrentComponentId $componentId -CurrentLocation $location + + $existingAction = $site.UserCustomActions | Where-Object { + $_.Location -eq $location -and $_.ClientSideComponentId -and $_.ClientSideComponentId.ToString().ToLower() -eq $componentId + } | Select-Object -First 1 + + if ($existingAction) { + $action = $existingAction + Write-Host 'Aktualisiere vorhandene site-scoped Mega Menu UserCustomAction...' -ForegroundColor Yellow + } + else { + $action = $site.UserCustomActions.Add() + Write-Host 'Erstelle neue site-scoped Mega Menu UserCustomAction...' -ForegroundColor Yellow + } + + $action.Name = $name + $action.Title = $title + $action.Description = $Description + $action.Location = $location + $action.ClientSideComponentId = [Guid]$componentId + $action.ClientSideComponentProperties = Get-MegaMenuPropertiesJson -CurrentTermSetName $TermSetName -CurrentCssUrl $CssUrl -CurrentDebug ([bool]$EnableDebug.IsPresent) + $action.Update() + + Write-Host 'Mega Menu wurde site-scoped registriert.' -ForegroundColor Green + Write-Host ('Entfernte web-scoped Eintraege: ' + $removedWebScopedActions) + Write-Host ('Beschreibung: ' + $Description) + Write-Host ('Properties: ' + $action.ClientSideComponentProperties) +} +finally { + if ($site) { + $site.Dispose() + } +} \ No newline at end of file diff --git a/dist/abc3361f-bb2d-491f-aba3-cd51c19a299b.manifest.json b/dist/abc3361f-bb2d-491f-aba3-cd51c19a299b.manifest.json new file mode 100644 index 0000000..50f7321 --- /dev/null +++ b/dist/abc3361f-bb2d-491f-aba3-cd51c19a299b.manifest.json @@ -0,0 +1,56 @@ +{ + "id": "abc3361f-bb2d-491f-aba3-cd51c19a299b", + "alias": "MegaMenuApplicationCustomizer", + "componentType": "Extension", + "extensionType": "ApplicationCustomizer", + "version": "1.0.4", + "manifestVersion": 2, + "requiresCustomScript": false, + "loaderConfig": { + "entryModuleId": "mega-menu-application-customizer", + "internalModuleBaseUrls": [ + "https://localhost:4321/" + ], + "scriptResources": { + "mega-menu-application-customizer": { + "type": "path", + "path": "dist/mega-menu-application-customizer.js" + }, + "MegaMenuApplicationCustomizerStrings": { + "defaultPath": "lib/extensions/megaMenu/loc/en-us.js", + "type": "localizedPath", + "paths": {} + }, + "@microsoft/decorators": { + "type": "component", + "version": "1.4.1", + "id": "f97266fb-ccb7-430e-9384-4124d05295d3" + }, + "@microsoft/sp-core-library": { + "type": "component", + "version": "1.4.1", + "id": "7263c7d0-1d6a-45ec-8d85-d4d1d234171b" + }, + "@microsoft/sp-application-base": { + "type": "component", + "version": "1.4.1", + "id": "4df9bb86-ab0a-4aab-ab5f-48bf167048fb" + }, + "@microsoft/sp-http": { + "type": "component", + "version": "1.4.1", + "id": "c07208f0-ea3b-4c1a-9965-ac1b825211a6" + }, + "@microsoft/sp-lodash-subset": { + "type": "component", + "version": "1.4.1", + "id": "73e1dc6c-8441-42cc-ad47-4bd3659f8a3a" + }, + "@microsoft/sp-page-context": { + "type": "component", + "version": "1.4.1", + "id": "1c4541f7-5c31-41aa-9fa8-fbc9dc14c0a8" + } + } + } +} \ No newline at end of file diff --git a/dist/mega-menu-application-customizer.js b/dist/mega-menu-application-customizer.js new file mode 100644 index 0000000..4c5bfac --- /dev/null +++ b/dist/mega-menu-application-customizer.js @@ -0,0 +1,11 @@ +define("abc3361f-bb2d-491f-aba3-cd51c19a299b_1.0.4",["@microsoft/decorators","@microsoft/sp-core-library","@microsoft/sp-application-base","MegaMenuApplicationCustomizerStrings","@microsoft/sp-http","@microsoft/sp-lodash-subset","@microsoft/sp-page-context"],function(e,t,n,r,o,i,s){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=2)}([function(e,t,n){"use strict";(function(e){function r(e,t){function n(){this.constructor=e}T(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}function o(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s}function i(e,t,n,r){return new(n||(n=Promise))(function(o,i){function s(e){try{u(r.next(e))}catch(e){i(e)}}function a(e){try{u(r.throw(e))}catch(e){i(e)}}function u(e){e.done?o(e.value):new n(function(t){t(e.value)}).then(s,a)}u((r=r.apply(e,t||[])).next())})}function s(e,t){function n(e){return function(t){return r([e,t])}}function r(n){if(o)throw new TypeError("Generator is already executing.");for(;u;)try{if(o=1,i&&(s=2&n[0]?i.return:n[0]?i.throw||((s=i.return)&&s.call(i),0):i.next)&&!(s=s.call(i,n[1])).done)return s;switch(i=0,s&&(n=[2&n[0],s.value]),n[0]){case 0:case 1:s=n;break;case 4:return u.label++,{value:n[1],done:!1};case 5:u.label++,i=n[1],n=[0];continue;case 7:n=u.ops.pop(),u.trys.pop();continue;default:if(s=u.trys,!(s=s.length>0&&s[s.length-1])&&(6===n[0]||2===n[0])){u=0;continue}if(3===n[0]&&(!s||n[1]>s[0]&&n[1]-1?e.substr(0,t):e}function u(e){var t=[],n=["odata.type","odata.editLink","__metadata","odata.metadata"];return Object(m.j)(e,n[0])&&"SP.Web"===e[n[0]]?Object(m.j)(e,n[1])?t.push(e[n[1]]):Object(m.j)(e,n[2])&&t.push(e.__metadata.uri):Object(m.j)(e,n[3])&&Object(m.j)(e,n[1])?t.push(a(e[n[3]]),"_api",e[n[1]]):Object(m.j)(e,n[1])?t.push("_api",e[n[1]]):Object(m.j)(e,n[2])&&t.push(e.__metadata.uri),t.length<1?(b.a.write("No uri information found in ODataEntity parsing, chaining will fail for this object.",2),""):m.d.apply(void 0,t)}function c(e){return new O(e)}function l(e){m.c.extend(e)}function p(e){return new Promise(function(t){if(Object(m.m)(e))return t(e);if(null!==I.baseUrl)return t(Object(m.d)(I.baseUrl,e));if(void 0!==N._spPageContextInfo){if(Object(m.j)(N._spPageContextInfo,"webAbsoluteUrl"))return t(Object(m.d)(N._spPageContextInfo.webAbsoluteUrl,e));if(Object(m.j)(N._spPageContextInfo,"webServerRelativeUrl"))return t(Object(m.d)(N._spPageContextInfo.webServerRelativeUrl,e))}if(void 0!==N.location){var n=N.location.toString().toLowerCase();["/_layouts/","/siteassets/"].forEach(function(r){var o=n.indexOf(r);if(o>0)return t(Object(m.d)(n.substr(0,o),e))})}return t(e)})}function d(e){return{__metadata:{type:e}}}function h(e){return function(t){return function(t){function n(){for(var n=[],r=0;r1&&void 0!==n[1]?n[1]:e)||this}return r(n,t),n}(t)}}function f(e){return e.length<1?1:Math.max.apply(null,e.map(function(e){return e.order}))+1}function y(e){for(var t=0;tt.lastIndexOf("(")){var o=t.lastIndexOf("/");r._parentUrl=t.slice(0,o),n=Object(m.d)(t.slice(o),n),r._url=Object(m.d)(r._parentUrl,n)}else{var o=t.lastIndexOf("(");r._parentUrl=t.slice(0,o),r._url=Object(m.d)(t,n)}else{r.extend(t,n);var i=t.query.get("@target");void 0!==i&&r.query.set("@target",i)}return r}return r(t,e),t.prototype.as=function(e){var t=new e(this._url,null);return Object(m.f)(t,this,!0)},t.prototype.toUrlAndQuery=function(){var e=new Map(this.query),t=this.toUrl().replace(/'!(@.*?)::(.*?)'/gi,function(t,n,r){return b.a.write("Rewriting aliased parameter from match "+t+" to label: "+n+" value: "+r,0),e.set(n,"'"+r+"'"),n});if(e.size>0){t+=""+(t.indexOf("?")>-1?"&":"?")+Array.from(e).map(function(e){return e[0]+"="+e[1]}).join("&")}return t},t.prototype.select=function(){for(var e=[],t=0;t0&&this.query.set("$select",e.join(",")),this},t.prototype.expand=function(){for(var e=[],t=0;t0&&this.query.set("$expand",e.join(",")),this},t.prototype.getParent=function(e,t,n,r){void 0===t&&(t=this.parentUrl);var o=new e(t,n).configureFrom(this),i="@target";return this.query.has(i)&&o.query.set(i,this.query.get(i)),void 0!==r&&(o=o.inBatch(r)),o},t.prototype.clone=function(t,n,r){void 0===r&&(r=!0);var o=e.prototype._clone.call(this,new t(this,n),{includeBatch:r}),i="@target";return this.query.has(i)&&o.query.set(i,this.query.get(i)),o},t.prototype.toRequestContext=function(e,t,n,r){var o=this;void 0===t&&(t={});var i=this.hasBatch?this._batchDependency:function(){};return p(this.toUrlAndQuery()).then(function(s){return Object(m.p)(t,o._options),{batch:o.batch,batchDependency:i,cachingOptions:o._cachingOptions,clientFactory:function(){return new E},isBatched:o.hasBatch,isCached:o._forceCaching||o._useCaching&&/^get$/i.test(e),options:t,parser:n,pipeline:r,requestAbsoluteUrl:s,requestId:Object(m.h)(),verb:e}})},t}(v.h),j=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.filter=function(e){return this.query.set("$filter",e),this},t.prototype.orderBy=function(e,t){void 0===t&&(t=!0);var n="$orderby",r=this.query.has(n)?this.query.get(n).split(","):[];return r.push(e+" "+(t?"asc":"desc")),this.query.set(n,r.join(",")),this},t.prototype.skip=function(e){return this.query.set("$skip",e.toString()),this},t.prototype.top=function(e){return this.query.set("$top",e.toString()),this},t}(x),R=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype._update=function(e,t){var n=this;return function(r){return n.postCore({body:Object(m.n)(Object(m.f)(d(e),r)),headers:{"X-HTTP-Method":"MERGE"}}).then(function(e){return t(e,r)})}},t.prototype._delete=function(){return this.postCore({headers:{"X-HTTP-Method":"DELETE"}})},t.prototype._deleteWithETag=function(e){return void 0===e&&(e="*"),this.postCore({headers:{"IF-Match":e,"X-HTTP-Method":"DELETE"}})},t}(x),A=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,t.prototype.getById=function(e){return new k(this,"getById("+e+")")},t.prototype.getByEmail=function(e){return new k(this,"getByEmail('"+e+"')")},t.prototype.getByLoginName=function(e){var t=new k(this);return t.concat("('!@v::"+encodeURIComponent(e)+"')"),t},t.prototype.removeById=function(e){return this.clone(n,"removeById("+e+")").postCore()},t.prototype.removeByLoginName=function(e){var t=this.clone(n,"removeByLoginName(@v)");return t.query.set("@v","'"+encodeURIComponent(e)+"'"),t.postCore()},t.prototype.add=function(e){var t=this;return this.clone(n,null).postCore({body:Object(m.n)(Object(m.f)(d("SP.User"),{LoginName:e}))}).then(function(){return t.getByLoginName(e)})};var n;return t=n=o([h("siteusers")],t)}(j),U=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),Object.defineProperty(t.prototype,"groups",{get:function(){return new F(this,"groups")},enumerable:!0,configurable:!0}),t}(R),k=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.update=t._update("SP.User",function(e){return{data:e,user:t}}),t.delete=t._delete,t}return r(t,e),t}(U),L=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t=o([h("currentuser")],t)}(U);!function(e){e[e.None=0]="None",e[e.User=1]="User",e[e.DistributionList=2]="DistributionList",e[e.SecurityGroup=4]="SecurityGroup",e[e.SharePointGroup=8]="SharePointGroup",e[e.All=15]="All"}(g||(g={}));var D,F=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,t.prototype.getById=function(e){var t=new M(this);return t.concat("("+e+")"),t},t.prototype.add=function(e){var t=this,n=Object(m.n)(Object(m.f)(d("SP.Group"),e));return this.postCore({body:n}).then(function(e){return{data:e,group:t.getById(e.Id)}})},t.prototype.getByName=function(e){return new M(this,"getByName('"+e+"')")},t.prototype.removeById=function(e){return this.clone(n,"removeById('"+e+"')").postCore()},t.prototype.removeByLoginName=function(e){return this.clone(n,"removeByLoginName('"+e+"')").postCore()};var n;return t=n=o([h("sitegroups")],t)}(j),M=function(e){function t(){var n=null!==e&&e.apply(this,arguments)||this;return n.update=n._update("SP.Group",function(e,r){var o=n;return Object(m.j)(r,"Title")&&(o=n.getParent(t,n.parentUrl,"getByName('"+r.Title+"')")),{data:e,group:o}}),n}return r(t,e),Object.defineProperty(t.prototype,"users",{get:function(){return new A(this,"users")},enumerable:!0,configurable:!0}),t.prototype.setUserAsOwner=function(e){return i(this,void 0,void 0,function(){return s(this,function(n){return[2,this.clone(t,"SetUserAsOwner("+e+")").postCore()]})})},t}(R),B=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,t.prototype.getById=function(e){var t=new G(this);return t.concat("("+e+")"),t},t.prototype.add=function(e,t){return this.clone(n,"addroleassignment(principalid="+e+", roledefid="+t+")").postCore()},t.prototype.remove=function(e,t){return this.clone(n,"removeroleassignment(principalid="+e+", roledefid="+t+")").postCore()};var n;return t=n=o([h("roleassignments")],t)}(j),G=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.delete=t._delete,t}return r(t,e),Object.defineProperty(t.prototype,"groups",{get:function(){return new F(this,"groups")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"bindings",{get:function(){return new H(this)},enumerable:!0,configurable:!0}),t}(R),q=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.getById=function(e){return new W(this,"getById("+e+")")},t.prototype.getByName=function(e){return new W(this,"getbyname('"+e+"')")},t.prototype.getByType=function(e){return new W(this,"getbytype("+e+")")},t.prototype.add=function(e,t,n,r){var o=this,i=Object(m.n)({BasePermissions:{High:r.High.toString(),Low:r.Low.toString()},Description:t,Name:e,Order:n,__metadata:{type:"SP.RoleDefinition"}});return this.postCore({body:i}).then(function(e){return{data:e,definition:o.getById(e.Id)}})},t=o([h("roledefinitions")],t)}(j),W=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.delete=t._delete,t}return r(t,e),t.prototype.update=function(e){var t=this;void 0!==Object(m.j)(e,"BasePermissions")&&(e.BasePermissions=Object(m.f)({__metadata:{type:"SP.BasePermissions"}},{High:e.BasePermissions.High.toString(),Low:e.BasePermissions.Low.toString()}));var n=Object(m.n)(Object(m.f)(d("SP.RoleDefinition"),e));return this.postCore({body:n,headers:{"X-HTTP-Method":"MERGE"}}).then(function(n){var r=t;if(Object(m.j)(e,"Name")){r=t.getParent(q,t.parentUrl,"").getByName(e.Name)}return{data:n,definition:r}})},t}(R),H=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t=o([h("roledefinitionbindings")],t)}(j);!function(e){e[e.Display=1]="Display",e[e.Edit=2]="Edit",e[e.New=3]="New"}(D||(D={}));var K;!function(e){e[e.Invalid=0]="Invalid",e[e.Integer=1]="Integer",e[e.Text=2]="Text",e[e.Note=3]="Note",e[e.DateTime=4]="DateTime",e[e.Counter=5]="Counter",e[e.Choice=6]="Choice",e[e.Lookup=7]="Lookup",e[e.Boolean=8]="Boolean",e[e.Number=9]="Number",e[e.Currency=10]="Currency",e[e.URL=11]="URL",e[e.Computed=12]="Computed",e[e.Threading=13]="Threading",e[e.Guid=14]="Guid",e[e.MultiChoice=15]="MultiChoice",e[e.GridChoice=16]="GridChoice",e[e.Calculated=17]="Calculated",e[e.File=18]="File",e[e.Attachments=19]="Attachments",e[e.User=20]="User",e[e.Recurrence=21]="Recurrence",e[e.CrossProjectLink=22]="CrossProjectLink",e[e.ModStat=23]="ModStat",e[e.Error=24]="Error",e[e.ContentTypeId=25]="ContentTypeId",e[e.PageSeparator=26]="PageSeparator",e[e.ThreadIndex=27]="ThreadIndex",e[e.WorkflowStatus=28]="WorkflowStatus",e[e.AllDayEvent=29]="AllDayEvent",e[e.WorkflowEventType=30]="WorkflowEventType"}(K||(K={}));var V;!function(e){e[e.DateOnly=0]="DateOnly",e[e.DateTime=1]="DateTime"}(V||(V={}));var Q;!function(e){e[e.Unspecified=0]="Unspecified",e[e.Disabled=1]="Disabled",e[e.Relative=2]="Relative"}(Q||(Q={}));var z;!function(e){e[e.DefaultValue=0]="DefaultValue",e[e.AddToDefaultContentType=1]="AddToDefaultContentType",e[e.AddToNoContentType=2]="AddToNoContentType",e[e.AddToAllContentTypes=4]="AddToAllContentTypes",e[e.AddFieldInternalNameHint=8]="AddFieldInternalNameHint",e[e.AddFieldToDefaultView=16]="AddFieldToDefaultView",e[e.AddFieldCheckDisplayName=32]="AddFieldCheckDisplayName"}(z||(z={}));var J;!function(e){e[e.Gregorian=1]="Gregorian",e[e.Japan=3]="Japan",e[e.Taiwan=4]="Taiwan",e[e.Korea=5]="Korea",e[e.Hijri=6]="Hijri",e[e.Thai=7]="Thai",e[e.Hebrew=8]="Hebrew",e[e.GregorianMEFrench=9]="GregorianMEFrench",e[e.GregorianArabic=10]="GregorianArabic",e[e.GregorianXLITEnglish=11]="GregorianXLITEnglish",e[e.GregorianXLITFrench=12]="GregorianXLITFrench",e[e.KoreaJapanLunar=14]="KoreaJapanLunar",e[e.ChineseLunar=15]="ChineseLunar",e[e.SakaEra=16]="SakaEra",e[e.UmAlQura=23]="UmAlQura"}(J||(J={}));var X;!function(e){e[e.Hyperlink=0]="Hyperlink",e[e.Image=1]="Image"}(X||(X={}));var Y;!function(e){e[e.EmptyMask=0]="EmptyMask",e[e.ViewListItems=1]="ViewListItems",e[e.AddListItems=2]="AddListItems",e[e.EditListItems=3]="EditListItems",e[e.DeleteListItems=4]="DeleteListItems",e[e.ApproveItems=5]="ApproveItems",e[e.OpenItems=6]="OpenItems",e[e.ViewVersions=7]="ViewVersions",e[e.DeleteVersions=8]="DeleteVersions",e[e.CancelCheckout=9]="CancelCheckout",e[e.ManagePersonalViews=10]="ManagePersonalViews",e[e.ManageLists=12]="ManageLists",e[e.ViewFormPages=13]="ViewFormPages",e[e.AnonymousSearchAccessList=14]="AnonymousSearchAccessList",e[e.Open=17]="Open",e[e.ViewPages=18]="ViewPages",e[e.AddAndCustomizePages=19]="AddAndCustomizePages",e[e.ApplyThemeAndBorder=20]="ApplyThemeAndBorder",e[e.ApplyStyleSheets=21]="ApplyStyleSheets",e[e.ViewUsageData=22]="ViewUsageData",e[e.CreateSSCSite=23]="CreateSSCSite",e[e.ManageSubwebs=24]="ManageSubwebs",e[e.CreateGroups=25]="CreateGroups",e[e.ManagePermissions=26]="ManagePermissions",e[e.BrowseDirectories=27]="BrowseDirectories",e[e.BrowseUserInfo=28]="BrowseUserInfo",e[e.AddDelPrivateWebParts=29]="AddDelPrivateWebParts",e[e.UpdatePersonalWebParts=30]="UpdatePersonalWebParts",e[e.ManageWeb=31]="ManageWeb",e[e.AnonymousSearchAccessWebLists=32]="AnonymousSearchAccessWebLists",e[e.UseClientIntegration=37]="UseClientIntegration",e[e.UseRemoteAPIs=38]="UseRemoteAPIs",e[e.ManageAlerts=39]="ManageAlerts",e[e.CreateAlerts=40]="CreateAlerts",e[e.EditMyUserInfo=41]="EditMyUserInfo",e[e.EnumeratePermissions=63]="EnumeratePermissions",e[e.FullMask=65]="FullMask"}(Y||(Y={}));var $;!function(e){e[e.None=0]="None",e[e.User=1]="User",e[e.DistributionList=2]="DistributionList",e[e.SecurityGroup=4]="SecurityGroup",e[e.SharePointGroup=8]="SharePointGroup",e[e.All=15]="All"}($||($={}));var Z;!function(e){e[e.None=0]="None",e[e.UserInfoList=1]="UserInfoList",e[e.Windows=2]="Windows",e[e.MembershipProvider=4]="MembershipProvider",e[e.RoleProvider=8]="RoleProvider",e[e.All=15]="All"}(Z||(Z={}));var ee;!function(e){e[e.None=0]="None",e[e.Guest=1]="Guest",e[e.Reader=2]="Reader",e[e.Contributor=3]="Contributor",e[e.WebDesigner=4]="WebDesigner",e[e.Administrator=5]="Administrator"}(ee||(ee={}));var te;!function(e){e[e.Invalid=-1]="Invalid",e[e.DefaultView=0]="DefaultView",e[e.NormalView=1]="NormalView",e[e.DialogView=2]="DialogView",e[e.View=3]="View",e[e.DisplayForm=4]="DisplayForm",e[e.DisplayFormDialog=5]="DisplayFormDialog",e[e.EditForm=6]="EditForm",e[e.EditFormDialog=7]="EditFormDialog",e[e.NewForm=8]="NewForm",e[e.NewFormDialog=9]="NewFormDialog",e[e.SolutionForm=10]="SolutionForm",e[e.PAGE_MAXITEMS=11]="PAGE_MAXITEMS"}(te||(te={}));var ne;!function(e){e[e.Uninitialized=0]="Uninitialized",e[e.Direct=1]="Direct",e[e.OrganizationView=2]="OrganizationView",e[e.OrganizationEdit=3]="OrganizationEdit",e[e.AnonymousView=4]="AnonymousView",e[e.AnonymousEdit=5]="AnonymousEdit",e[e.Flexible=6]="Flexible"}(ne||(ne={}));var re;!function(e){e[e.None=0]="None",e[e.View=1]="View",e[e.Edit=2]="Edit",e[e.Owner=3]="Owner"}(re||(re={}));var oe;!function(e){e[e.CompletedSuccessfully=0]="CompletedSuccessfully",e[e.AccessRequestsQueued=1]="AccessRequestsQueued",e[e.NoResolvedUsers=-1]="NoResolvedUsers",e[e.AccessDenied=-2]="AccessDenied",e[e.CrossSiteRequestNotSupported=-3]="CrossSiteRequestNotSupported",e[e.UnknowError=-4]="UnknowError",e[e.EmailBodyTooLong=-5]="EmailBodyTooLong",e[e.ListUniqueScopesExceeded=-6]="ListUniqueScopesExceeded",e[e.CapabilityDisabled=-7]="CapabilityDisabled",e[e.ObjectNotSupported=-8]="ObjectNotSupported",e[e.NestedGroupsNotSupported=-9]="NestedGroupsNotSupported"}(oe||(oe={}));var ie;!function(e){e[e.Unknown=0]="Unknown",e[e.File=1]="File",e[e.Folder=2]="Folder",e[e.Item=3]="Item",e[e.List=4]="List",e[e.Web=5]="Web",e[e.Max=6]="Max"}(ie||(ie={}));var se;!function(e){e[e.None=0]="None",e[e.AllowList=1]="AllowList",e[e.BlockList=2]="BlockList"}(se||(se={}));var ae;!function(e){e[e.None=0]="None",e[e.ContextInfo=1]="ContextInfo",e[e.ListData=2]="ListData",e[e.ListSchema=4]="ListSchema",e[e.MenuView=8]="MenuView",e[e.ListContentType=16]="ListContentType",e[e.FileSystemItemId=32]="FileSystemItemId",e[e.ClientFormSchema=64]="ClientFormSchema",e[e.QuickLaunch=128]="QuickLaunch",e[e.Spotlight=256]="Spotlight",e[e.Visualization=512]="Visualization",e[e.ViewMetadata=1024]="ViewMetadata",e[e.DisableAutoHyperlink=2048]="DisableAutoHyperlink",e[e.EnableMediaTAUrls=4096]="EnableMediaTAUrls",e[e.ParentInfo=8192]="ParentInfo",e[e.PageContextInfo=16384]="PageContextInfo",e[e.ClientSideComponentManifest=32768]="ClientSideComponentManifest"}(ae||(ae={}));var ue;!function(e){e[e.PeopleAndGroups=1]="PeopleAndGroups",e[e.PeopleOnly=0]="PeopleOnly"}(ue||(ue={}));var ce;!function(e){e[e.Dropdown=0]="Dropdown",e[e.RadioButtons=1]="RadioButtons"}(ce||(ce={}));var le;!function(e){e[e.DefaultZone=0]="DefaultZone",e[e.Intranet=1]="Intranet",e[e.Internet=2]="Internet",e[e.Custom=3]="Custom",e[e.Extranet=4]="Extranet"}(le||(le={}));var pe,de=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),Object.defineProperty(t.prototype,"roleAssignments",{get:function(){return new B(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"firstUniqueAncestorSecurableObject",{get:function(){return new R(this,"FirstUniqueAncestorSecurableObject")},enumerable:!0,configurable:!0}),t.prototype.getUserEffectivePermissions=function(e){var t=this.clone(x,"getUserEffectivePermissions(@user)");return t.query.set("@user","'"+encodeURIComponent(e)+"'"),t.get().then(function(e){return Object(m.j)(e,"GetUserEffectivePermissions")?e.GetUserEffectivePermissions:e})},t.prototype.getCurrentUserEffectivePermissions=function(){return this.clone(x,"EffectiveBasePermissions").get().then(function(e){return Object(m.j)(e,"EffectiveBasePermissions")?e.EffectiveBasePermissions:e})},t.prototype.breakRoleInheritance=function(e,n){return void 0===e&&(e=!1),void 0===n&&(n=!1),this.clone(t,"breakroleinheritance(copyroleassignments="+e+", clearsubscopes="+n+")").postCore()},t.prototype.resetRoleInheritance=function(){return this.clone(t,"resetroleinheritance").postCore()},t.prototype.userHasPermissions=function(e,t){var n=this;return this.getUserEffectivePermissions(e).then(function(e){return n.hasPermissions(e,t)})},t.prototype.currentUserHasPermissions=function(e){var t=this;return this.getCurrentUserEffectivePermissions().then(function(n){return t.hasPermissions(n,e)})},t.prototype.hasPermissions=function(e,t){if(!t)return!0;if(t===Y.FullMask)return 32767==(32767&e.High)&&65535===e.Low;t-=1;var n=1;return t>=0&&t<32?(n<<=t,0!=(e.Low&n)):t>=32&&t<64&&(n<<=t-32,0!=(e.High&n))},t}(R),he=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.getShareLink=function(e,n){void 0===n&&(n=null);var r=null!==n?n.toISOString():null;return this.clone(t,"shareLink").postCore({body:Object(m.n)({request:{createLink:!0,emailData:null,settings:{expiration:r,linkKind:e}}})})},t.prototype.shareWith=function(e,n,r,o,i){var s=this;void 0===r&&(r=!1),void 0===o&&(o=!1),Array.isArray(e)||(e=[e]);var a=Object(m.n)(e.map(function(e){return{Key:e}})),u=n===re.Edit?ee.Contributor:ee.Reader;return new j("_api/web","roledefinitions").select("Id").filter("RoleTypeKind eq "+u).get().then(function(e){if(!Array.isArray(e)||e.length<1)throw Error("Could not locate a role defintion with RoleTypeKind "+u);var n={includeAnonymousLinkInEmail:r,peoplePickerInput:a,propagateAcl:o,roleValue:"role:"+e[0].Id,useSimplifiedRoles:!0};return void 0!==i&&(n=Object(m.f)(n,{emailBody:i.body,emailSubject:void 0!==i.subject?i.subject:"",sendEmail:!0})),s.clone(t,"shareObject").postCore({body:Object(m.n)(n)})})},t.prototype.shareObject=function(e,t){var n=this;return void 0===t&&(t=!1),t?this.sendShareObjectRequest(e):(e=Object(m.f)(e,{group:null,includeAnonymousLinkInEmail:!1,propagateAcl:!1,useSimplifiedRoles:!0},!0),this.getRoleValue(e.role,e.group).then(function(t){Array.isArray(e.loginNames)||(e.loginNames=[e.loginNames]);var r=Object(m.n)(e.loginNames.map(function(e){return{Key:e}})),o={peoplePickerInput:r,roleValue:t,url:e.url};return void 0!==e.emailData&&null!==e.emailData&&(o=Object(m.f)(o,{emailBody:e.emailData.body,emailSubject:void 0!==e.emailData.subject?e.emailData.subject:"Shared with you.",sendEmail:!0})),n.sendShareObjectRequest(o)}))},t.prototype.unshareObjectWeb=function(e){return this.clone(t,"unshareObject").postCore({body:Object(m.n)({url:e})})},t.prototype.checkPermissions=function(e){return this.clone(t,"checkPermissions").postCore({body:Object(m.n)({recipients:e})})},t.prototype.getSharingInformation=function(e,n){void 0===e&&(e=null);var r=this.clone(t,"getSharingInformation");return r.expand.apply(r,n).postCore({body:Object(m.n)({request:e})})},t.prototype.getObjectSharingSettings=function(e){return void 0===e&&(e=!0),this.clone(t,"getObjectSharingSettings").postCore({body:Object(m.n)({useSimplifiedRoles:e})})},t.prototype.unshareObject=function(){return this.clone(t,"unshareObject").postCore()},t.prototype.deleteLinkByKind=function(e){return this.clone(t,"deleteLinkByKind").postCore({body:Object(m.n)({linkKind:e})})},t.prototype.unshareLink=function(e,n){return void 0===n&&(n="00000000-0000-0000-0000-000000000000"),this.clone(t,"unshareLink").postCore({body:Object(m.n)({linkKind:e,shareId:n})})},t.prototype.getRoleValue=function(e,t){if(void 0===t||null===t){var n=e===re.Edit?ee.Contributor:ee.Reader;return new j("_api/web","roledefinitions").select("Id").top(1).filter("RoleTypeKind eq "+n).get().then(function(e){if(e.length<1)throw Error("Could not locate associated role definition for supplied role. Edit and View are supported");return"role: "+e[0].Id})}switch(t){case ee.Contributor:return new R("_api/web","associatedmembergroup").select("Id").get().then(function(e){return"group: "+e.Id});case ee.Reader:case ee.Guest:return new R("_api/web","associatedvisitorgroup").select("Id").get().then(function(e){return"group: "+e.Id});default:throw Error("Could not determine role value for supplied value. Contributor, Reader, and Guest are supported")}},t.prototype.getShareObjectWeb=function(e){return Promise.resolve(new R(a(e),"/_api/SP.Web.ShareObject"))},t.prototype.sendShareObjectRequest=function(e){return this.getShareObjectWeb(this.toUrl()).then(function(n){return n.expand("UsersWithAccessRequests","GroupsSharedWith").as(t).postCore({body:Object(m.n)(e)})})},t}(x),fe=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.shareWith=function(e,t,n){var r=this;void 0===t&&(t=re.View);var o=this.addBatchDependency();return new R(a(this.toUrl()),"/_api/web/url").get().then(function(i){return o(),r.shareObject(Object(m.d)(i,"/_layouts/15/aclinv.aspx?forSharing=1&mbypass=1"),e,t,n)})},t.prototype.shareObject=function(e,t,n,r,o,i,s,a){return void 0===i&&(i=!1),void 0===s&&(s=!1),void 0===a&&(a=!0),this.clone(he,null).shareObject({emailData:r,group:o,includeAnonymousLinkInEmail:s,loginNames:t,propagateAcl:i,role:n,url:e,useSimplifiedRoles:a})},t.prototype.shareObjectRaw=function(e){return this.clone(he,null).shareObject(e,!0)},t.prototype.unshareObject=function(e){return this.clone(he,null).unshareObjectWeb(e)},t}(de),ye=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.getShareLink=function(e,t){return void 0===e&&(e=ne.OrganizationView),void 0===t&&(t=null),this.clone(he,null).getShareLink(e,t)},t.prototype.shareWith=function(e,t,n,r){return void 0===t&&(t=re.View),void 0===n&&(n=!1),this.clone(he,null).shareWith(e,t,n,!1,r)},t.prototype.checkSharingPermissions=function(e){return this.clone(he,null).checkPermissions(e)},t.prototype.getSharingInformation=function(e,t){return void 0===e&&(e=null),this.clone(he,null).getSharingInformation(e,t)},t.prototype.getObjectSharingSettings=function(e){return void 0===e&&(e=!0),this.clone(he,null).getObjectSharingSettings(e)},t.prototype.unshare=function(){return this.clone(he,null).unshareObject()},t.prototype.deleteSharingLinkByKind=function(e){return this.clone(he,null).deleteLinkByKind(e)},t.prototype.unshareLink=function(e,t){return this.clone(he,null).unshareLink(e,t)},t}(de),ge=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.getShareLink=function(e,t){void 0===e&&(e=ne.OrganizationView),void 0===t&&(t=null);var n=this.addBatchDependency();return this.getShareable().then(function(r){return n(),r.getShareLink(e,t)})},t.prototype.checkSharingPermissions=function(e){var t=this.addBatchDependency();return this.getShareable().then(function(n){return t(),n.checkPermissions(e)})},t.prototype.getSharingInformation=function(e,t){void 0===e&&(e=null);var n=this.addBatchDependency();return this.getShareable().then(function(r){return n(),r.getSharingInformation(e,t)})},t.prototype.getObjectSharingSettings=function(e){void 0===e&&(e=!0);var t=this.addBatchDependency();return this.getShareable().then(function(n){return t(),n.getObjectSharingSettings(e)})},t.prototype.unshare=function(){var e=this.addBatchDependency();return this.getShareable().then(function(t){return e(),t.unshareObject()})},t.prototype.deleteSharingLinkByKind=function(e){var t=this.addBatchDependency();return this.getShareable().then(function(n){return t(),n.deleteLinkByKind(e)})},t.prototype.unshareLink=function(e,t){var n=this.addBatchDependency();return this.getShareable().then(function(r){return n(),r.unshareLink(e,t)})},t.prototype.getShareable=function(){var e=this;return this.clone(me,"listItemAllFields",!1).select("odata.id").get().then(function(t){var n=new he(u(t));return e.hasBatch&&(n=n.inBatch(e.batch)),n})},t}(R),me=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.shareWith=function(e,t,n,r){void 0===t&&(t=re.View),void 0===n&&(n=!1);var o=this.addBatchDependency();return this.getShareable().then(function(i){return o(),i.shareWith(e,t,n,!1,r)})},t}(ge),be=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.shareWith=function(e,t,n,r,o){void 0===t&&(t=re.View),void 0===n&&(n=!1),void 0===r&&(r=!1);var i=this.addBatchDependency();return this.getShareable().then(function(s){return i(),s.shareWith(e,t,n,r,o)})},t}(ge),ve=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),Object.defineProperty(t.prototype,"webparts",{get:function(){return new Se(this,"webparts")},enumerable:!0,configurable:!0}),t.prototype.export=function(e){return this.clone(t,"ExportWebPart").postCore({body:Object(m.n)({webPartId:e})})},t.prototype.import=function(e){return this.clone(t,"ImportWebPart").postCore({body:Object(m.n)({webPartXml:e})})},t}(x),Se=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.getById=function(e){return new Te(this,"getbyid('"+e+"')")},t.prototype.getByControlId=function(e){return new Te(this,"getByControlId('"+e+"')")},t}(j),Te=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),Object.defineProperty(t.prototype,"webpart",{get:function(){return new Oe(this)},enumerable:!0,configurable:!0}),t.prototype.saveChanges=function(){return this.clone(t,"SaveWebPartChanges").postCore()},t.prototype.moveTo=function(e,n){return this.clone(t,"MoveWebPartTo(zoneID='"+e+"', zoneIndex="+n+")").postCore()},t.prototype.close=function(){return this.clone(t,"CloseWebPart").postCore()},t.prototype.open=function(){return this.clone(t,"OpenWebPart").postCore()},t.prototype.delete=function(){return this.clone(t,"DeleteWebPart").postCore()},t}(R),Oe=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t=o([h("webpart")],t)}(R),we=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,t.prototype.getByName=function(e){var t=new Ie(this);return t.concat("('"+e+"')"),t},t.prototype.add=function(e){var t=this;return this.clone(n,"add('"+e+"')").postCore().then(function(n){return{data:n,folder:t.getByName(e)}})},t.prototype.addUsingPath=function(e,t){var r=this;return void 0===t&&(t=!1),this.clone(n,"addUsingPath(DecodedUrl='"+e+"',overwrite="+t+")").postCore().then(function(t){return{data:t,folder:new Ie(a(r.toUrl()),"_api/web/getFolderByServerRelativePath(decodedUrl='"+e+"')")}})};var n;return t=n=o([h("folders")],t)}(j),Ie=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.update=t._update("SP.Folder",function(e){return{data:e,folder:t}}),t}return r(t,e),Object.defineProperty(t.prototype,"contentTypeOrder",{get:function(){return new j(this,"contentTypeOrder")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"files",{get:function(){return new et(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"folders",{get:function(){return new we(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"listItemAllFields",{get:function(){return new R(this,"listItemAllFields")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"parentFolder",{get:function(){return new t(this,"parentFolder")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"properties",{get:function(){return new R(this,"properties")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"serverRelativeUrl",{get:function(){return new x(this,"serverRelativeUrl")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"uniqueContentTypeOrder",{get:function(){return new j(this,"uniqueContentTypeOrder")},enumerable:!0,configurable:!0}),t.prototype.delete=function(e){return void 0===e&&(e="*"),this.clone(t,null).postCore({headers:{"IF-Match":e,"X-HTTP-Method":"DELETE"}})},t.prototype.recycle=function(){return this.clone(t,"recycle").postCore()},t.prototype.getItem=function(){for(var e=[],t=0;t0&&r.forEach(function(e,t){return i.query.set(t,e)}),i.postCore({body:Object(m.n)(o)})},t.prototype.renderListFormData=function(e,n,r){return this.clone(t,"renderlistformdata(itemid="+e+", formid='"+n+"', mode='"+r+"')").postCore().then(function(e){return JSON.parse(Object(m.j)(e,"RenderListFormData")?e.RenderListFormData:e)})},t.prototype.reserveListItemId=function(){return this.clone(t,"reservelistitemid").postCore().then(function(e){return Object(m.j)(e,"ReserveListItemId")?e.ReserveListItemId:e})},t.prototype.getListItemEntityTypeFullName=function(){return this.clone(t,null,!1).select("ListItemEntityTypeFullName").get().then(function(e){return e.ListItemEntityTypeFullName})},t.prototype.addValidateUpdateItemUsingPath=function(e,n,r,o){return void 0===r&&(r=!1),this.clone(t,"AddValidateUpdateItemUsingPath()").postCore({body:Object(m.n)({bNewDocumentUpdate:r,checkInComment:o,formValues:e,listItemCreateInfo:{FolderPath:{DecodedUrl:n,__metadata:{type:"SP.ResourcePath"}},__metadata:{type:"SP.ListItemCreationInformationUsingPath"}}})}).then(function(e){return void 0!==e.AddValidateUpdateItemUsingPath?e.AddValidateUpdateItemUsingPath.results:e})},t.prototype.getSiteScript=function(){return i(this,void 0,void 0,function(){var e,n;return s(this,function(r){switch(r.label){case 0:return[4,this.clone(t).rootFolder.select("ServerRelativeUrl").get()];case 1:return e=r.sent(),[4,p(e.ServerRelativeUrl)];case 2:return n=r.sent(),[2,new S.a(this,"").getSiteScriptFromList(n)]}})})},t}(de),He=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,t.prototype.add=function(e){var t=this;"string"==typeof e&&(e={text:e});var r=Object(m.n)(Object(m.f)(d("Microsoft.SharePoint.Comments.comment"),e));return this.clone(n,null).postCore({body:r}).then(function(e){return Object(m.f)(t.getById(e.id),e)})},t.prototype.getById=function(e){var t=new Ke(this);return t.concat("("+e+")"),t},t.prototype.clear=function(){return this.clone(n,"DeleteAll").postCore()};var n;return t=n=o([h("comments")],t)}(j),Ke=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),Object.defineProperty(t.prototype,"replies",{get:function(){return new Ve(this)},enumerable:!0,configurable:!0}),t.prototype.like=function(){return this.clone(t,"Like").postCore()},t.prototype.unlike=function(){return this.clone(t,"Unlike").postCore()},t.prototype.delete=function(){return this.deleteCore()},t}(R),Ve=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,t.prototype.add=function(e){"string"==typeof e&&(e={text:e});var t=Object(m.n)(Object(m.f)(d("Microsoft.SharePoint.Comments.comment"),e));return this.clone(n,null).postCore({body:t}).then(function(e){return Object(m.f)(new Ke(u(e)),e)})};var n;return t=n=o([h("replies")],t)}(j),Qe=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,t.prototype.getById=function(e){var t=new ze(this);return t.concat("("+e+")"),t},t.prototype.getItemByStringId=function(e){return new ze(this.parentUrl,"getItemByStringId('"+e+"')")},t.prototype.skip=function(e,t){return void 0===t&&(t=!1),t?this.query.set("$skiptoken",encodeURIComponent("Paged=TRUE&PagedPrev=TRUE&p_ID="+e)):this.query.set("$skiptoken",encodeURIComponent("Paged=TRUE&p_ID="+e)),this},t.prototype.getPaged=function(e){return void 0===e&&(e=new v.f),this.get(new $e(this,e))},t.prototype.getAll=function(e,t){void 0===e&&(e=2e3),void 0===t&&(t="application/json;odata=nometadata"),b.a.write("Calling items.getAll should be done sparingly. Ensure this is the correct choice. If you are unsure, it is not.",2);var r=new n(this,"").top(e).configure({headers:{Accept:t}});return this.query.forEach(function(e,t){/^\$select|filter|top|expand$/i.test(t)&&r.query.set(t,e)}),new Promise(function(e,t){var n=[],o=function(r){[].push.apply(n,r.results),r.hasNext?r.getNext().then(o).catch(t):e(n)};r.getPaged().then(o).catch(t)})},t.prototype.add=function(e,t){var r=this;void 0===e&&(e={}),void 0===t&&(t=null);var o=this.addBatchDependency();return this.ensureListItemEntityTypeName(t).then(function(t){var i=Object(m.n)(Object(m.f)(d(t),e)),s=r.clone(n,"").postCore({body:i}).then(function(e){return{data:e,item:r.getById(e.Id)}});return o(),s})},t.prototype.ensureListItemEntityTypeName=function(e){return e?Promise.resolve(e):this.getParent(We).getListItemEntityTypeFullName()};var n;return t=n=o([h("items")],t)}(j),ze=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.delete=t._deleteWithETag,t}return r(t,e),Object.defineProperty(t.prototype,"attachmentFiles",{get:function(){return new Ne(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"contentType",{get:function(){return new Ce(this,"ContentType")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"comments",{get:function(){return new He(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"effectiveBasePermissions",{get:function(){return new x(this,"EffectiveBasePermissions")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"effectiveBasePermissionsForUI",{get:function(){return new x(this,"EffectiveBasePermissionsForUI")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"fieldValuesAsHTML",{get:function(){return new R(this,"FieldValuesAsHTML")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"fieldValuesAsText",{get:function(){return new R(this,"FieldValuesAsText")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"fieldValuesForEdit",{get:function(){return new R(this,"FieldValuesForEdit")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"folder",{get:function(){return new Ie(this,"folder")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"file",{get:function(){return new tt(this,"file")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"versions",{get:function(){return new Je(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"list",{get:function(){return this.getParent(We,this.parentUrl.substr(0,this.parentUrl.lastIndexOf("/")))},enumerable:!0,configurable:!0}),t.prototype.update=function(e,t,n){var r=this;return void 0===t&&(t="*"),void 0===n&&(n=null),new Promise(function(o,i){var s=r.addBatchDependency();return r.ensureListItemEntityTypeName(n).then(function(n){var i=Object(m.n)(Object(m.f)(d(n),e));return s(),r.postCore({body:i,headers:{"IF-Match":t,"X-HTTP-Method":"MERGE"}},new Ze).then(function(e){o({data:e,item:r})})}).catch(function(e){return i(e)})})},t.prototype.getLikedBy=function(){return this.clone(t,"likedBy").postCore()},t.prototype.like=function(){return this.clone(t,"like").postCore()},t.prototype.unlike=function(){return this.clone(t,"unlike").postCore()},t.prototype.recycle=function(){return this.clone(t,"recycle").postCore()},t.prototype.getWopiFrameUrl=function(e){void 0===e&&(e=0);var n=this.clone(t,"getWOPIFrameUrl(@action)");return n.query.set("@action",e),n.postCore().then(function(e){return Object(m.j)(e,"GetWOPIFrameUrl")?e.GetWOPIFrameUrl:e})},t.prototype.validateUpdateListItem=function(e,n){return void 0===n&&(n=!1),this.clone(t,"validateupdatelistitem").postCore({body:Object(m.n)({formValues:e,bNewDocumentUpdate:n})})},t.prototype.getLikedByInformation=function(){return this.clone(t,"likedByInformation").expand("likedby").getCore()},t.prototype.ensureListItemEntityTypeName=function(e){return e?Promise.resolve(e):this.list.getListItemEntityTypeFullName()},t}(ye),Je=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.getById=function(e){var t=new Xe(this);return t.concat("("+e+")"),t},t=o([h("versions")],t)}(j),Xe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.delete=t._deleteWithETag,t}return r(t,e),t}(R),Ye=function(){function e(e,t,n,r){this.parent=e,this.nextUrl=t,this.results=n,this.innerParser=r}return Object.defineProperty(e.prototype,"hasNext",{get:function(){return"string"==typeof this.nextUrl&&this.nextUrl.length>0},enumerable:!0,configurable:!0}),e.prototype.getNext=function(){if(this.hasNext){return new Qe(this.nextUrl,null).configureFrom(this.parent).getPaged(this.innerParser)}return new Promise(function(e){return e(null)})},e}(),$e=function(e){function t(t,n){var r=e.call(this)||this;return r._parent=t,r.innerParser=n,r}return r(t,e),t.prototype.parse=function(e){var t=this;return this.innerParser.parse(e).then(function(e){return i(t,void 0,void 0,function(){var t,n;return s(this,function(r){return t=this.innerParser.rawJson,n=Object(m.j)(t,"d")&&Object(m.j)(t.d,"__next")?t.d.__next:t["odata.nextLink"],[2,new Ye(this._parent,n,e,this.innerParser)]})})})},t}(v.g),Ze=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.parse=function(e){return i(this,void 0,void 0,function(){var t=this;return s(this,function(n){return[2,new Promise(function(n,r){t.handleError(e,r)&&n({"odata.etag":e.headers.get("etag")})})]})})},t}(v.g),et=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,t.prototype.getByName=function(e){var t=new tt(this);return t.concat("('"+e+"')"),t},t.prototype.add=function(e,t,r){var o=this;return void 0===r&&(r=!0),new n(this,"add(overwrite="+r+",url='"+e+"')").postCore({body:t}).then(function(t){return{data:t,file:o.getByName(e)}})},t.prototype.addUsingPath=function(e,t,r){var o=this;void 0===r&&(r={Overwrite:!1});var i=["AddUsingPath(decodedurl='"+e+"'"];return r&&(r.Overwrite&&i.push(",Overwrite=true"),r.AutoCheckoutOnInvalidData&&i.push(",AutoCheckoutOnInvalidData=true"),Object(m.r)(r.XorHash)||i.push(",XorHash="+r.XorHash)),i.push(")"),new n(this,i.join("")).postCore({body:t}).then(function(t){return{data:t,file:o.getByName(e)}})},t.prototype.addChunked=function(e,t,r,o,i){var s=this;return void 0===o&&(o=!0),void 0===i&&(i=10485760),this.clone(n,"add(overwrite = "+o+", url = '"+e+"')",!1).postCore().then(function(){return s.getByName(e)}).then(function(e){return e.setContentChunked(t,r,i)})},t.prototype.addTemplateFile=function(e,t){var r=this;return this.clone(n,"addTemplateFile(urloffile = '"+e+"', templatefiletype = "+t+")",!1).postCore().then(function(t){return{data:t,file:r.getByName(e)}})};var n;return t=n=o([h("files")],t)}(j),tt=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),Object.defineProperty(t.prototype,"listItemAllFields",{get:function(){return new R(this,"listItemAllFields")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"versions",{get:function(){return new nt(this)},enumerable:!0,configurable:!0}),t.prototype.approve=function(e){return void 0===e&&(e=""),this.clone(t,"approve(comment = '"+e+"')").postCore()},t.prototype.cancelUpload=function(e){return this.clone(t,"cancelUpload(uploadId = guid'"+e+"')",!1).postCore()},t.prototype.checkin=function(e,n){if(void 0===e&&(e=""),void 0===n&&(n=pe.Major),e.length>1023)throw Error("The maximum comment length is 1023 characters.");return this.clone(t,"checkin(comment = '"+e+"', checkintype = "+n+")").postCore()},t.prototype.checkout=function(){return this.clone(t,"checkout").postCore()},t.prototype.copyTo=function(e,n){return void 0===n&&(n=!0),this.clone(t,"copyTo(strnewurl = '"+e+"', boverwrite = "+n+")").postCore()},t.prototype.delete=function(e){return void 0===e&&(e="*"),this.clone(t,null).postCore({headers:{"IF-Match":e,"X-HTTP-Method":"DELETE"}})},t.prototype.deny=function(e){if(void 0===e&&(e=""),e.length>1023)throw Error("The maximum comment length is 1023 characters.");return this.clone(t,"deny(comment = '"+e+"')").postCore()},t.prototype.getLimitedWebPartManager=function(e){return void 0===e&&(e=ot.Shared),new ve(this,"getLimitedWebPartManager(scope = "+e+")")},t.prototype.moveTo=function(e,n){return void 0===n&&(n=it.Overwrite),this.clone(t,"moveTo(newurl = '"+e+"', flags = "+n+")").postCore()},t.prototype.publish=function(e){if(void 0===e&&(e=""),e.length>1023)throw Error("The maximum comment length is 1023 characters.");return this.clone(t,"publish(comment = '"+e+"')").postCore()},t.prototype.recycle=function(){return this.clone(t,"recycle").postCore()},t.prototype.undoCheckout=function(){return this.clone(t,"undoCheckout").postCore()},t.prototype.unpublish=function(e){if(void 0===e&&(e=""),e.length>1023)throw Error("The maximum comment length is 1023 characters.");return this.clone(t,"unpublish(comment = '"+e+"')").postCore()},t.prototype.getText=function(){return this.clone(t,"$value",!1).get(new v.i,{headers:{binaryStringResponseBody:"true"}})},t.prototype.getBlob=function(){return this.clone(t,"$value",!1).get(new v.a,{headers:{binaryStringResponseBody:"true"}})},t.prototype.getBuffer=function(){return this.clone(t,"$value",!1).get(new v.b,{headers:{binaryStringResponseBody:"true"}})},t.prototype.getJSON=function(){return this.clone(t,"$value",!1).get(new v.d,{headers:{binaryStringResponseBody:"true"}})},t.prototype.setContent=function(e){var n=this;return this.clone(t,"$value",!1).postCore({body:e,headers:{"X-HTTP-Method":"PUT"}}).then(function(e){return new t(n)})},t.prototype.getItem=function(){for(var e=this,t=[],n=0;n0?"tenantappcatalog":"sitecollectionappcatalog";return new t(a(this.toUrl()),"_api/web/"+o+"/add(overwrite="+r+",url='"+e+"')").postCore({body:n}).then(function(e){return{data:e,file:new tt(u(e))}})},t}(j),ct=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.deploy=function(e){return void 0===e&&(e=!1),this.clone(t,"Deploy("+e+")").postCore()},t.prototype.retract=function(){return this.clone(t,"Retract").postCore()},t.prototype.install=function(){return this.clone(t,"Install").postCore()},t.prototype.uninstall=function(){return this.clone(t,"Uninstall").postCore()},t.prototype.upgrade=function(){return this.clone(t,"Upgrade").postCore()},t.prototype.remove=function(){return this.clone(t,"Remove").postCore()},t}(R),lt=function(e){function t(t){var n=e.call(this)||this;return n.baseUrl=t,n}return r(t,e),t.ParseResponse=function(e){return new Promise(function(t,n){for(var r,o,i=[],s=new RegExp("^HTTP/[0-9.]+ +([0-9]+) +(.*)","i"),a=e.split("\n"),u="batch",c=0;c0&&(o.push("--changeset_"+i+"--\n\n"),i=""),o.push("--batch_"+e.batchId+"\n")):(i.length<1&&(i=Object(m.h)(),o.push("--batch_"+e.batchId+"\n"),o.push('Content-Type: multipart/mixed; boundary="changeset_'+i+'"\n\n')),o.push("--changeset_"+i+"\n")),o.push("Content-Type: application/http\n"),o.push("Content-Transfer-Encoding: binary\n\n");var u=new Headers,c=Object(m.m)(a.url)?a.url:Object(m.d)(r,a.url);if(b.a.write("["+e.batchId+"] ("+(new Date).getTime()+") Adding request "+a.method+" "+c+" to batch.",0),"GET"!==a.method){var l=a.method,p=a.options.headers;Object(m.j)(a,"options")&&Object(m.j)(a.options,"headers")&&void 0!==p["X-HTTP-Method"]&&(l=p["X-HTTP-Method"],delete p["X-HTTP-Method"]),o.push(l+" "+c+" HTTP/1.1\n"),u.set("Content-Type","application/json;odata=verbose;charset=utf-8")}else o.push(a.method+" "+c+" HTTP/1.1\n");Object(m.o)(u,I.headers),a.options&&Object(m.o)(u,a.options.headers),u.has("Accept")||u.append("Accept","application/json"),u.has("Content-Type")||u.append("Content-Type","application/json;odata=verbose;charset=utf-8"),u.has("X-ClientService-ClientTag")||u.append("X-ClientService-ClientTag","PnPCoreJS:@pnp-1.3.11"),u.forEach(function(e,t){o.push(t+": "+e+"\n")}),o.push("\n"),a.options.body&&o.push(a.options.body+"\n\n")}i.length>0&&(o.push("--changeset_"+i+"--\n\n"),i=""),o.push("--batch_"+e.batchId+"--\n");var d={body:o.join(""),headers:{"Content-Type":"multipart/mixed; boundary=batch_"+e.batchId},method:"POST"};return b.a.write("["+e.batchId+"] ("+(new Date).getTime()+") Sending batch request.",1),n.fetch(Object(m.d)(r,"/_api/$batch"),d).then(function(e){return e.text()}).then(t.ParseResponse).then(function(t){if(t.length!==e.requests.length)throw Error("Could not properly parse responses to match requests in batch.");return b.a.write("["+e.batchId+"] ("+(new Date).getTime()+") Resolving batched requests.",1),t.reduce(function(t,n,r){var o=e.requests[r];return b.a.write("["+o.id+"] ("+(new Date).getTime()+") Resolving request in batch "+e.batchId+".",1),t.then(function(e){return o.parser.parse(n).then(o.resolve).catch(o.reject)})},Promise.resolve())})})},t}(v.e),pt=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,t.prototype.add=function(e,t){var r=this;return void 0===t&&(t=!1),this.clone(n,"add").postCore({body:Object(m.n)({featdefScope:0,featureId:e,force:t})}).then(function(t){return{data:t,feature:r.getById(e)}})},t.prototype.getById=function(e){var t=new dt(this);return t.concat("('"+e+"')"),t},t.prototype.remove=function(e,t){return void 0===t&&(t=!1),this.clone(n,"remove").postCore({body:Object(m.n)({featureId:e,force:t})})};var n;return t=n=o([h("features")],t)}(j),dt=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.deactivate=function(e){var n=this;void 0===e&&(e=!1);var r=this.addBatchDependency();return new t(this).select("DefinitionId").get().then(function(t){var o=n.getParent(pt,n.parentUrl,"",n.batch).remove(t.DefinitionId,e);return r(),o})},t}(R),ht=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,Object.defineProperty(t.prototype,"rootWeb",{get:function(){return new Pt(this,"rootweb")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"features",{get:function(){return new pt(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"userCustomActions",{get:function(){return new Be(this)},enumerable:!0,configurable:!0}),t.prototype.getRootWeb=function(){return this.rootWeb.select("Url").get().then(function(e){return new Pt(e.Url)})},t.prototype.getContextInfo=function(){return new n(this.parentUrl,"_api/contextinfo").postCore().then(function(e){if(Object(m.j)(e,"GetContextWebInformation")){var t=e.GetContextWebInformation;return t.SupportedSchemaVersions=t.SupportedSchemaVersions.results,t}return e})},t.prototype.getDocumentLibraries=function(e){var t=new x("","_api/sp.web.getdocumentlibraries(@v)");return t.query.set("@v","'"+e+"'"),t.get().then(function(e){return Object(m.j)(e,"GetDocumentLibraries")?e.GetDocumentLibraries:e})},t.prototype.getWebUrlFromPageUrl=function(e){var t=new x("","_api/sp.web.getweburlfrompageurl(@v)");return t.query.set("@v","'"+e+"'"),t.get().then(function(e){return Object(m.j)(e,"GetWebUrlFromPageUrl")?e.GetWebUrlFromPageUrl:e})},t.prototype.getChanges=function(e){var t=Object(m.n)({query:Object(m.f)({__metadata:{type:"SP.ChangeQuery"}},e)});return this.clone(n,"getchanges").postCore({body:t})},t.prototype.delete=function(){return i(this,void 0,void 0,function(){var e,t;return s(this,function(r){switch(r.label){case 0:return[4,this.clone(n,"").select("Id").get()];case 1:return e=r.sent(),t=new n(this.parentUrl,"_api/SPSiteManager/Delete"),[4,t.postCore({body:Object(m.n)({siteId:e.Id})})];case 2:return r.sent(),[2]}})})},t.prototype.createBatch=function(){return new lt(this.parentUrl)},t.prototype.openWebById=function(e){return this.clone(n,"openWebById('"+e+"')").postCore().then(function(e){return{data:e,web:Pt.fromUrl(e["odata.id"]||e.__metadata.uri)}})},t.prototype.joinHubSite=function(e){return this.clone(n,"joinHubSite('"+e+"')").postCore()},t.prototype.registerHubSite=function(){return this.clone(n,"registerHubSite").postCore()},t.prototype.unRegisterHubSite=function(){return this.clone(n,"unRegisterHubSite").postCore()},t.prototype.createCommunicationSite=function(e,t,n,r,o,a,u,c,l){var p=this;void 0===t&&(t=1033),void 0===n&&(n=!1),void 0===o&&(o=""),void 0===a&&(a=""),void 0===u&&(u="00000000-0000-0000-0000-000000000000"),void 0===c&&(c="00000000-0000-0000-0000-000000000000");var d={Classification:a,Description:o,HubSiteId:c,Lcid:t,Owner:l,ShareByEmailEnabled:n,SiteDesignId:u,Title:e,Url:r,WebTemplate:"SITEPAGEPUBLISHING#0",WebTemplateExtensionId:"00000000-0000-0000-0000-000000000000"},h=Object(m.n)({request:Object(m.f)({__metadata:{type:"Microsoft.SharePoint.Portal.SPSiteCreationRequest"}},d)});return this.getRootWeb().then(function(e){return i(p,void 0,void 0,function(){var t,n;return s(this,function(r){return t=new E,n=e.parentUrl+"/_api/SPSiteManager/Create",[2,t.post(n,{body:h,headers:{Accept:"application/json;odata=verbose","Content-Type":"application/json;odata=verbose;charset=utf-8"}}).then(function(e){return e.json()}).then(function(e){if(Object(m.j)(e,"error"))throw e;return Object(m.j)(e,"d")&&Object(m.j)(e.d,"Create")?e.d.Create:e})]})})})},t.prototype.createModernTeamSite=function(e,t,n,r,o,a,u,c,l){var p=this;void 0===n&&(n=!0),void 0===r&&(r=1033),void 0===o&&(o=""),void 0===a&&(a=""),void 0===c&&(c="00000000-0000-0000-0000-000000000000");var d={alias:t,displayName:e,isPublic:n,optionalParams:{Classification:a,CreationOptions:{results:["SPSiteLanguage:"+r,"HubSiteId:"+c]},Description:o,Owners:{results:u||[]}}};return l&&d.optionalParams.CreationOptions.results.push("implicit_formula_292aa8a00786498a87a5ca52d9f4214a_"+l),this.getRootWeb().then(function(e){return i(p,void 0,void 0,function(){var t,n;return s(this,function(r){return t=new E,n=e.parentUrl+"/_api/GroupSiteManager/CreateGroupEx",[2,t.post(n,{body:Object(m.n)(d),headers:{Accept:"application/json;odata=verbose","Content-Type":"application/json;odata=verbose;charset=utf-8"}}).then(function(e){return e.json()})]})})})};var n;return t=n=o([h("_api/site")],t)}(R),ft=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.getById=function(e){var t=new yt(this);return t.concat("("+e+")"),t},t.prototype.add=function(e,n,r){var o=this;void 0===r&&(r=!0);var i=Object(m.n)(Object(m.f)(d("SP.NavigationNode"),{IsVisible:r,Title:e,Url:n}));return this.clone(t,null).postCore({body:i}).then(function(e){return{data:e,node:o.getById(e.Id)}})},t.prototype.moveAfter=function(e,n){var r=Object(m.n)({nodeId:e,previousNodeId:n});return this.clone(t,"MoveAfter").postCore({body:r})},t}(j),yt=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),Object.defineProperty(t.prototype,"children",{get:function(){return new ft(this,"Children")},enumerable:!0,configurable:!0}),t.prototype.delete=function(){return e.prototype.deleteCore.call(this)},t.prototype.update=function(e){var t=this,n=Object(m.n)(Object(m.f)({__metadata:{type:"SP.NavigationNode"}},e));return this.postCore({body:n,headers:{"X-HTTP-Method":"MERGE"}}).then(function(e){return{data:e,node:t}})},t}(R),gt=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),Object.defineProperty(t.prototype,"quicklaunch",{get:function(){return new ft(this,"quicklaunch")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"topNavigationBar",{get:function(){return new ft(this,"topnavigationbar")},enumerable:!0,configurable:!0}),t=o([h("navigation")],t)}(x),mt=function(e){function t(t,n){return void 0===n&&(n=null),e.call(this,t,n)||this}return r(t,e),t.prototype.getMenuState=function(e,n,r,o){return void 0===e&&(e=null),void 0===n&&(n=10),void 0===r&&(r=null),void 0===o&&(o=null),new t(this,"_api/navigation/MenuState").postCore({body:Object(m.n)({customProperties:o,depth:n,mapProviderName:r,menuNodeKey:e})})},t.prototype.getMenuNodeKey=function(e,n){return void 0===n&&(n=null),new t(this,"_api/navigation/MenuNodeKey").postCore({body:Object(m.n)({currentUrl:e,mapProviderName:n})})},t}(x),bt=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,t.FromUrl=function(e){if(null===e)return new n("");var t=e.indexOf("_api/");return new n(t>-1?e.substr(0,t):e)},t.prototype.getRelatedItems=function(e,t){var r=this.clone(n,null);return r.concat(".GetRelatedItems"),r.postCore({body:Object(m.n)({SourceItemID:t,SourceListName:e})})},t.prototype.getPageOneRelatedItems=function(e,t){var r=this.clone(n,null);return r.concat(".GetPageOneRelatedItems"),r.postCore({body:Object(m.n)({SourceItemID:t,SourceListName:e})})},t.prototype.addSingleLink=function(e,t,r,o,i,s,a){void 0===a&&(a=!1);var u=this.clone(n,null);return u.concat(".AddSingleLink"),u.postCore({body:Object(m.n)({SourceItemID:t,SourceListName:e,SourceWebUrl:r,TargetItemID:i,TargetListName:o,TargetWebUrl:s,TryAddReverseLink:a})})},t.prototype.addSingleLinkToUrl=function(e,t,r,o){void 0===o&&(o=!1);var i=this.clone(n,null);return i.concat(".AddSingleLinkToUrl"),i.postCore({body:Object(m.n)({SourceItemID:t,SourceListName:e,TargetItemUrl:r,TryAddReverseLink:o})})},t.prototype.addSingleLinkFromUrl=function(e,t,r,o){void 0===o&&(o=!1);var i=this.clone(n,null);return i.concat(".AddSingleLinkFromUrl"),i.postCore({body:Object(m.n)({SourceItemUrl:e,TargetItemID:r,TargetListName:t,TryAddReverseLink:o})})},t.prototype.deleteSingleLink=function(e,t,r,o,i,s,a){void 0===a&&(a=!1);var u=this.clone(n,null);return u.concat(".DeleteSingleLink"),u.postCore({body:Object(m.n)({SourceItemID:t,SourceListName:e,SourceWebUrl:r,TargetItemID:i,TargetListName:o,TargetWebUrl:s,TryDeleteReverseLink:a})})};var n;return t=n=o([h("_api/SP.RelatedItemManager")],t)}(x),vt=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),Object.defineProperty(t.prototype,"installedLanguages",{get:function(){return new St(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"globalInstalledLanguages",{get:function(){return new St(this,"globalinstalledlanguages")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"timeZone",{get:function(){return new Tt(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"timeZones",{get:function(){return new Ot(this)},enumerable:!0,configurable:!0}),t=o([h("regionalsettings")],t)}(R),St=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t=o([h("installedlanguages")],t)}(j),Tt=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,t.prototype.utcToLocalTime=function(e){var t;return t="string"==typeof e?e:e.toISOString(),this.clone(n,"utctolocaltime('"+t+"')").postCore().then(function(e){return Object(m.j)(e,"UTCToLocalTime")?e.UTCToLocalTime:e})},t.prototype.localTimeToUTC=function(e){var t;return t="string"==typeof e?e:Object(m.e)(e,"minute",-1*e.getTimezoneOffset()).toISOString(),this.clone(n,"localtimetoutc('"+t+"')").postCore().then(function(e){return Object(m.j)(e,"LocalTimeToUTC")?e.LocalTimeToUTC:e})};var n;return t=n=o([h("timezone")],t)}(R),Ot=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,t.prototype.getById=function(e){return this.clone(n,"GetById("+e+")").postCore({},c(Tt))};var n;return t=n=o([h("timezones")],t)}(j),wt=function(e){function t(n,r){return e.call(this,t.getBaseUrl(n),"_api/Microsoft.Sharepoint.Utilities.WebTemplateExtensions.SiteScriptUtility."+r)||this}return r(t,e),t.getBaseUrl=function(e){if("string"==typeof e)return e;var t=e,n=t.toUrl(),r=n.indexOf("_api/");return r<0?n:n.substr(0,r)},t.prototype.execute=function(e){return this.postCore({body:JSON.stringify(e),headers:{"Content-Type":"application/json;charset=utf-8"}})},t.prototype.createSiteDesign=function(e){return i(this,void 0,void 0,function(){return s(this,function(n){switch(n.label){case 0:return[4,this.clone(t,"CreateSiteDesign").execute({info:e})];case 1:return[2,n.sent()]}})})},t.prototype.applySiteDesign=function(e,n){return i(this,void 0,void 0,function(){return s(this,function(r){switch(r.label){case 0:return[4,this.clone(t,"ApplySiteDesign").execute({siteDesignId:e,webUrl:n})];case 1:return[2,r.sent()]}})})},t.prototype.getSiteDesigns=function(){return i(this,void 0,void 0,function(){return s(this,function(e){switch(e.label){case 0:return[4,this.clone(t,"GetSiteDesigns").execute({})];case 1:return[2,e.sent()]}})})},t.prototype.getSiteDesignMetadata=function(e){return i(this,void 0,void 0,function(){return s(this,function(n){switch(n.label){case 0:return[4,this.clone(t,"GetSiteDesignMetadata").execute({id:e})];case 1:return[2,n.sent()]}})})},t.prototype.updateSiteDesign=function(e){return i(this,void 0,void 0,function(){return s(this,function(n){switch(n.label){case 0:return[4,this.clone(t,"UpdateSiteDesign").execute({updateInfo:e})];case 1:return[2,n.sent()]}})})},t.prototype.deleteSiteDesign=function(e){return i(this,void 0,void 0,function(){return s(this,function(n){switch(n.label){case 0:return[4,this.clone(t,"DeleteSiteDesign").execute({id:e})];case 1:return[2,n.sent()]}})})},t.prototype.getSiteDesignRights=function(e){return i(this,void 0,void 0,function(){return s(this,function(n){switch(n.label){case 0:return[4,this.clone(t,"GetSiteDesignRights").execute({id:e})];case 1:return[2,n.sent()]}})})},t.prototype.grantSiteDesignRights=function(e,n,r){return void 0===r&&(r=1),i(this,void 0,void 0,function(){return s(this,function(o){switch(o.label){case 0:return[4,this.clone(t,"GrantSiteDesignRights").execute({grantedRights:r.toString(),id:e,principalNames:n})];case 1:return[2,o.sent()]}})})},t.prototype.revokeSiteDesignRights=function(e,n){return i(this,void 0,void 0,function(){return s(this,function(r){switch(r.label){case 0:return[4,this.clone(t,"RevokeSiteDesignRights").execute({id:e,principalNames:n})];case 1:return[2,r.sent()]}})})},t.prototype.addSiteDesignTask=function(e,n){return i(this,void 0,void 0,function(){return s(this,function(r){switch(r.label){case 0:return[4,this.clone(t,"AddSiteDesignTask").execute({webUrl:e,siteDesignId:n})];case 1:return[2,r.sent()]}})})},t.prototype.addSiteDesignTaskToCurrentWeb=function(e){return i(this,void 0,void 0,function(){return s(this,function(n){switch(n.label){case 0:return[4,this.clone(t,"AddSiteDesignTaskToCurrentWeb").execute({siteDesignId:e})];case 1:return[2,n.sent()]}})})},t.prototype.getSiteDesignTask=function(e){return i(this,void 0,void 0,function(){var n;return s(this,function(r){switch(r.label){case 0:return[4,this.clone(t,"GetSiteDesignTask").execute({taskId:e})];case 1:return n=r.sent(),[2,Object(m.j)(n,"ID")?n:null]}})})},t.prototype.getSiteDesignRun=function(e,n){return i(this,void 0,void 0,function(){return s(this,function(r){switch(r.label){case 0:return[4,this.clone(t,"GetSiteDesignRun").execute({webUrl:e,siteDesignId:n})];case 1:return[2,r.sent()]}})})},t.prototype.getSiteDesignRunStatus=function(e,n){return i(this,void 0,void 0,function(){return s(this,function(r){switch(r.label){case 0:return[4,this.clone(t,"GetSiteDesignRunStatus").execute({webUrl:e,runId:n})];case 1:return[2,r.sent()]}})})},t}(x),It=function(e){function t(n,r){return e.call(this,t.getBaseUrl(n),"_api/Microsoft.Sharepoint.Utilities.WebTemplateExtensions.SiteScriptUtility."+r)||this}return r(t,e),t.getBaseUrl=function(e){if("string"==typeof e)return e;var t=e,n=t.toUrl(),r=n.indexOf("_api/");return r<0?n:n.substr(0,r)},t.prototype.execute=function(e){return this.postCore({body:JSON.stringify(e)})},t.prototype.getSiteScripts=function(){return this.clone(t,"GetSiteScripts",!0).execute({})},t.prototype.createSiteScript=function(e,n,r){return i(this,void 0,void 0,function(){return s(this,function(o){switch(o.label){case 0:return[4,this.clone(t,"CreateSiteScript(Title=@title,Description=@desc)?@title='"+encodeURIComponent(e)+"'&@desc='"+encodeURIComponent(n)+"'").execute(r)];case 1:return[2,o.sent()]}})})},t.prototype.getSiteScriptMetadata=function(e){return i(this,void 0,void 0,function(){return s(this,function(n){switch(n.label){case 0:return[4,this.clone(t,"GetSiteScriptMetadata").execute({id:e})];case 1:return[2,n.sent()]}})})},t.prototype.deleteSiteScript=function(e){return i(this,void 0,void 0,function(){return s(this,function(n){switch(n.label){case 0:return[4,this.clone(t,"DeleteSiteScript").execute({id:e})];case 1:return n.sent(),[2]}})})},t.prototype.updateSiteScript=function(e,n){return i(this,void 0,void 0,function(){return s(this,function(r){switch(r.label){case 0:return n&&(e.Content=JSON.stringify(n)),[4,this.clone(t,"UpdateSiteScript").execute({updateInfo:e})];case 1:return[2,r.sent()]}})})},t.prototype.getSiteScriptFromList=function(e){return i(this,void 0,void 0,function(){return s(this,function(n){switch(n.label){case 0:return[4,this.clone(t,"GetSiteScriptFromList").execute({listUrl:e})];case 1:return[2,n.sent()]}})})},t.prototype.getSiteScriptFromWeb=function(e,n){return i(this,void 0,void 0,function(){return s(this,function(r){switch(r.label){case 0:return[4,this.clone(t,"getSiteScriptFromWeb").execute({webUrl:e,info:n})];case 1:return[2,r.sent()]}})})},t}(x),_t=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,t.prototype.add=function(e,t,r,o,i,s){void 0===r&&(r=""),void 0===o&&(o="STS"),void 0===i&&(i=1033),void 0===s&&(s=!0);var a={Description:r,Language:i,Title:e,Url:t,UseSamePermissionsAsParentSite:s,WebTemplate:o},c=Object(m.n)({parameters:Object(m.f)({__metadata:{type:"SP.WebCreationInformation"}},a)});return this.clone(n,"add").postCore({body:c}).then(function(e){return{data:e,web:new Pt(u(e).replace(/_api\/web\/?/i,""))}})};var n;return t=n=o([h("webs")],t)}(j),Ct=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t=o([h("webinfos")],t)}(j),Pt=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,t.fromUrl=function(e,t){return new n(a(e),t)},Object.defineProperty(t.prototype,"webs",{get:function(){return new _t(this)},enumerable:!0,configurable:!0}),t.prototype.getParentWeb=function(){var e=this;return this.select("ParentWeb/Id").expand("ParentWeb").get().then(function(t){var n=t.ParentWeb;return n?new ht(e.parentUrl).openWebById(n.Id):null})},t.prototype.getSubwebsFilteredForCurrentUser=function(e,t){return void 0===e&&(e=-1),void 0===t&&(t=-1),this.clone(_t,"getSubwebsFilteredForCurrentUser(nWebTemplateFilter="+e+",nConfigurationFilter="+t+")")},Object.defineProperty(t.prototype,"allProperties",{get:function(){return this.clone(R,"allproperties")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"webinfos",{get:function(){return new Ct(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"contentTypes",{get:function(){return new _e(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"lists",{get:function(){return new qe(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"fields",{get:function(){return new Ue(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"features",{get:function(){return new pt(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"availablefields",{get:function(){return new Ue(this,"availablefields")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"navigation",{get:function(){return new gt(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"siteUsers",{get:function(){return new A(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"siteGroups",{get:function(){return new F(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"siteUserInfoList",{get:function(){return new We(this,"siteuserinfolist")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"regionalSettings",{get:function(){return new vt(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"currentUser",{get:function(){return new L(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"folders",{get:function(){return new we(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"userCustomActions",{get:function(){return new Be(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"roleDefinitions",{get:function(){return new q(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"relatedItems",{get:function(){return bt.FromUrl(this.toUrl())},enumerable:!0,configurable:!0}),t.prototype.createBatch=function(){return new lt(this.parentUrl)},Object.defineProperty(t.prototype,"rootFolder",{get:function(){return new Ie(this,"rootFolder")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"associatedOwnerGroup",{get:function(){return new M(this,"associatedownergroup")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"associatedMemberGroup",{get:function(){return new M(this,"associatedmembergroup")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"associatedVisitorGroup",{get:function(){return new M(this,"associatedvisitorgroup")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"defaultDocumentLibrary",{get:function(){return new We(this,"DefaultDocumentLibrary")},enumerable:!0,configurable:!0}),t.prototype.getFolderById=function(e){return new Ie(this,"getFolderById('"+e+"')")},t.prototype.getFolderByServerRelativeUrl=function(e){return new Ie(this,"getFolderByServerRelativeUrl('"+e+"')")},t.prototype.getFolderByServerRelativePath=function(e){return new Ie(this,"getFolderByServerRelativePath(decodedUrl='"+e+"')")},t.prototype.getFileById=function(e){return new tt(this,"getFileById('"+e+"')")},t.prototype.getFileByServerRelativeUrl=function(e){return new tt(this,"getFileByServerRelativeUrl('"+e+"')")},t.prototype.getFileByServerRelativePath=function(e){return new tt(this,"getFileByServerRelativePath(decodedUrl='"+e+"')")},t.prototype.getList=function(e){return new We(this,"getList('"+e+"')")},t.prototype.update=function(e){var t=this,n=Object(m.n)(Object(m.f)({__metadata:{type:"SP.Web"}},e));return this.postCore({body:n,headers:{"X-HTTP-Method":"MERGE"}}).then(function(e){return{data:e,web:t}})},t.prototype.delete=function(){return e.prototype.deleteCore.call(this)},t.prototype.applyTheme=function(e,t,r,o){var i=Object(m.n)({backgroundImageUrl:r,colorPaletteUrl:e,fontSchemeUrl:t,shareGenerated:o});return this.clone(n,"applytheme").postCore({body:i})},t.prototype.applyWebTemplate=function(e){var t=this.clone(n,"applywebtemplate");return t.concat("(@t)"),t.query.set("@t",e),t.postCore()},t.prototype.ensureUser=function(e){var t=Object(m.n)({logonName:e});return this.clone(n,"ensureuser").postCore({body:t}).then(function(e){return{data:e,user:new k(u(e))}})},t.prototype.availableWebTemplates=function(e,t){return void 0===e&&(e=1033),void 0===t&&(t=!0),new j(this,"getavailablewebtemplates(lcid="+e+", doincludecrosslanguage="+t+")")},t.prototype.getCatalog=function(e){return this.clone(n,"getcatalog("+e+")").select("Id").get().then(function(e){return new We(u(e))})},t.prototype.getChanges=function(e){var t=Object(m.n)({query:Object(m.f)({__metadata:{type:"SP.ChangeQuery"}},e)});return this.clone(n,"getchanges").postCore({body:t})},Object.defineProperty(t.prototype,"customListTemplate",{get:function(){return new j(this,"getcustomlisttemplates")},enumerable:!0,configurable:!0}),t.prototype.getUserById=function(e){return new k(this,"getUserById("+e+")")},t.prototype.mapToIcon=function(e,t,r){return void 0===t&&(t=0),void 0===r&&(r=""),this.clone(n,"maptoicon(filename='"+e+"', progid='"+r+"', size="+t+")").get()},t.prototype.getStorageEntity=function(e){return this.clone(n,"getStorageEntity('"+e+"')").get()},t.prototype.setStorageEntity=function(e,t,r,o){return void 0===r&&(r=""),void 0===o&&(o=""),this.clone(n,"setStorageEntity").postCore({body:Object(m.n)({comments:o,description:r,key:e,value:t})})},t.prototype.removeStorageEntity=function(e){return this.clone(n,"removeStorageEntity('"+e+"')").postCore()},t.prototype.getAppCatalog=function(e){return new ut(e||this)},t.prototype.getSiteCollectionAppCatalog=function(e){return new ut(e||this,"_api/web/sitecollectionappcatalog/AvailableApps")},t.prototype.getClientSideWebParts=function(){return this.clone(j,"GetClientSideWebParts").get()},t.prototype.addClientSidePage=function(e,t){return void 0===t&&(t=e.replace(/\.[^\/.]+$/,"")),Nt.create(this,e,t)},t.prototype.addClientSidePageByPath=function(e,t){return void 0===t&&(t=e.replace(/\.[^\/.]+$/,"")),Nt.create(this,e,t)},t.prototype.createDefaultAssociatedGroups=function(e,t,r){var o=this.clone(n,"createDefaultAssociatedGroups(userLogin=@u,userLogin2=@v,groupNameSeed=@s)");return o.query.set("@u","'"+encodeURIComponent(e||"")+"'"),o.query.set("@v","'"+encodeURIComponent(t||"")+"'"),o.query.set("@s","'"+encodeURIComponent(r||"")+"'"),o.postCore()},t.prototype.hubSiteData=function(e){return void 0===e&&(e=!1),i(this,void 0,void 0,function(){return s(this,function(t){return[2,this.clone(n,"hubSiteData("+e+")").get().then(function(e){return JSON.parse(e)})]})})},t.prototype.syncHubSiteTheme=function(){return this.clone(n,"syncHubSiteTheme").postCore()},t.prototype.getSiteDesignRuns=function(e){return new wt(this,"").getSiteDesignRun(void 0,e)},t.prototype.getSiteScript=function(e){return new It(this,"").getSiteScriptFromWeb(void 0,e)},t.prototype.addSiteDesignTask=function(e){return new wt(this,"").addSiteDesignTaskToCurrentWeb(e)},t.prototype.getSiteDesignRunStatus=function(e){return new wt(this,"").getSiteDesignRunStatus(void 0,e)};var n;return t=n=o([h("_api/web")],t)}(fe);!function(e){e[e.NotPromoted=0]="NotPromoted",e[e.PromoteOnPublish=1]="PromoteOnPublish",e[e.Promoted=2]="Promoted"}(at||(at={}));var Et,Nt=function(e){function t(n,r,o,i,s,u){void 0===i&&(i=!1),void 0===s&&(s=[]),void 0===u&&(u=!1);var c=e.call(this,n,r)||this;return c.json=o,c.sections=s,c.commentsDisabled=u,c._bannerImageDirty=!1,"string"==typeof n?(c._parentUrl="",c._url=Object(m.d)(a(n),r)):c.extend(t.initFrom(n,null),r),c._pageSettings={controlType:0,pageSettingsSlice:{isDefaultDescription:!0,isDefaultThumbnail:!0}},c._layoutPart=t.getDefaultLayoutPart(),void 0===o||i||c.fromJSON(o),c}return r(t,e),t.create=function(e,n,r,o,a){return void 0===o&&(o="Article"),void 0===a&&(a=0),i(this,void 0,void 0,function(){var i,u;return s(this,function(s){switch(s.label){case 0:return n=n.replace(/\.aspx$/i,""),[4,t.initFrom(e,"_api/sitepages/pages").postCore({body:Object(m.n)(Object.assign(d("SP.Publishing.SitePage"),{PageLayoutType:o,PromotedState:a}))})];case 1:return i=s.sent(),u=new t(e,"",i),u.title=n,[4,u.save(!1)];case 2:return s.sent(),u.title=r,[2,u]}})})},t.fromFile=function(e){return e.getItem().then(function(n){return new t(a(e.toUrl()),"",{Id:n.Id},!0).configureFrom(e).load()})},t.getDefaultLayoutPart=function(){return{dataVersion:"1.4",description:"Title Region Description",id:"cbe7b0a9-3504-44dd-a3a3-0e5cacd07788",instanceId:"cbe7b0a9-3504-44dd-a3a3-0e5cacd07788",properties:{authors:[],layoutType:"FullWidthImage",showPublishDate:!1,showTopicHeader:!1,textAlignment:"Left",title:"",topicHeader:""},serverProcessedContent:{htmlStrings:{},searchablePlainTexts:{},imageSources:{},links:{}},title:"Title area"}},t.initFrom=function(e,n){return new t(a(e.toUrl()),n).configureFrom(e)},Object.defineProperty(t.prototype,"pageLayout",{get:function(){return this.json.PageLayoutType},set:function(e){this.json.PageLayoutType=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"bannerImageUrl",{get:function(){return this.json.BannerImageUrl},set:function(e){this.json.BannerImageUrl=e,this._bannerImageDirty=!0},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"bannerImageSourceType",{get:function(){return this._layoutPart.properties.imageSourceType},set:function(e){this._layoutPart.properties.imageSourceType=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"topicHeader",{get:function(){return Object(m.q)(this.json.TopicHeader)?this.json.TopicHeader:""},set:function(e){this.json.TopicHeader=e,this._layoutPart.properties.topicHeader=e,Object(m.r)(e)&&(this.showTopicHeader=!1)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"title",{get:function(){return this._layoutPart.properties.title},set:function(e){this.json.Title=e,this._layoutPart.properties.title=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"layoutType",{get:function(){return this._layoutPart.properties.layoutType},set:function(e){this._layoutPart.properties.layoutType=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"headerTextAlignment",{get:function(){return this._layoutPart.properties.textAlignment},set:function(e){this._layoutPart.properties.textAlignment=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"showTopicHeader",{get:function(){return this._layoutPart.properties.showTopicHeader},set:function(e){this._layoutPart.properties.showTopicHeader=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"showPublishDate",{get:function(){return this._layoutPart.properties.showPublishDate},set:function(e){this._layoutPart.properties.showPublishDate=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"hasVerticalSection",{get:function(){return this.sections.findIndex(function(e){return 2===e.layoutIndex})>-1},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"verticalSection",{get:function(){return this.hasVerticalSection?this.addVerticalSection():null},enumerable:!0,configurable:!0}),t.prototype.addSection=function(){var e=new xt(this,f(this.sections),1);return this.sections.push(e),e},t.prototype.addVerticalSection=function(){var e=this.sections.findIndex(function(e){return 2===e.layoutIndex});if(e>-1)return this.sections[e];var t=new xt(this,f(this.sections),2);return this.sections.push(t),t},t.prototype.fromJSON=function(e){this.json=e;var t=JSON.parse(e.CanvasContent1),n=JSON.parse(e.LayoutWebpartsContent);return n&&n.length>0&&(this._layoutPart=n[0]),this.setControls(t),this},t.prototype.load=function(){var e=this;return this.getItem("Id","CommentsDisabled").then(function(t){return new x(e,"_api/sitepages/pages("+t.Id+")").get().then(function(n){return e.commentsDisabled=t.CommentsDisabled,e.fromJSON(n)})})},t.prototype.save=function(e){var n=this;if(void 0===e&&(e=!0),null===this.json.Id)throw Error("The id for this page is null. If you want to create a new page, please use ClientSidePage.Create");var r=Promise.resolve({});return this._bannerImageDirty&&(r=r.then(function(e){return new Promise(function(e,t){var r=n.json.BannerImageUrl;Object(m.m)(r)&&(r=r.replace(/^https?:\/\/[a-z0-9\.]*?\.[a-z]{2,3}\//i,"/"));var o=new ht(a(n.toUrl())),i=new Pt(a(n.toUrl())),s=i.getFileByServerRelativePath(r),u="",c="",l="",p="",d="";Promise.all([o.select("Id","Url").get().then(function(e){return u=e.Id}),i.select("Id","Url").get().then(function(e){c=e.Id,d=e.Url}),s.listItemAllFields.select("UniqueId","ParentList/Id").expand("ParentList").get().then(function(e){l=e.UniqueId,p=e.ParentList.Id})]).then(function(){var t=new x(d,"_layouts/15/getpreview.ashx");t.query.set("guidSite",""+u),t.query.set("guidWeb",""+c),t.query.set("guidFile",""+l),n.bannerImageUrl=t.toUrlAndQuery(),Object(m.q)(n._layoutPart.serverProcessedContent)||(n._layoutPart.serverProcessedContent={}),n._layoutPart.serverProcessedContent.imageSources={imageSource:r},Object(m.q)(n._layoutPart.serverProcessedContent.customMetadata)||(n._layoutPart.serverProcessedContent.customMetadata={}),n._layoutPart.serverProcessedContent.customMetadata.imageSource={listId:p,siteId:u,uniqueId:l,webId:c},n._layoutPart.properties.webId=c,n._layoutPart.properties.siteId=u,n._layoutPart.properties.listId=p,n._layoutPart.properties.uniqueId=l,e()}).catch(t)})})),this.json.IsPageCheckedOutToCurrentUser||(r=r.then(function(e){return t.initFrom(n,"_api/sitepages/pages("+n.json.Id+")/checkoutpage").postCore()})),r=r.then(function(e){var r=Object.assign(d("SP.Publishing.SitePage"),{AuthorByline:n.json.AuthorByline||[],BannerImageUrl:n.bannerImageUrl,CanvasContent1:n.getCanvasContent1(),LayoutWebpartsContent:n.getLayoutWebpartsContent(),Title:n.title,TopicHeader:n.topicHeader}),o=t.initFrom(n,"_api/sitepages/pages("+n.json.Id+")/savepage");return o.configure({headers:{"if-match":"*"}}),o.postCore({body:Object(m.n)(r)})}),e&&(r=r.then(function(e){return t.initFrom(n,"_api/sitepages/pages("+n.json.Id+")/publish").postCore()}).then(function(e){e&&(n.json.IsPageCheckedOutToCurrentUser=!1)})),r=r.then(function(e){n._bannerImageDirty=!1})},t.prototype.discardPageCheckout=function(){return i(this,void 0,void 0,function(){var e;return s(this,function(n){switch(n.label){case 0:if(null===this.json.Id)throw Error("The id for this page is null. If you want to create a new page, please use ClientSidePage.Create");return[4,t.initFrom(this,"_api/sitepages/pages("+this.json.Id+")/discardPage").postCore({body:Object(m.n)(d("SP.Publishing.SitePage"))})];case 1:return e=n.sent(),this.fromJSON(e),[2]}})})},t.prototype.promoteToNews=function(){return i(this,void 0,void 0,function(){return s(this,function(e){return[2,this.promoteNewsImpl("promoteToNews")]})})},t.prototype.enableComments=function(){var e=this;return this.setCommentsOn(!0).then(function(t){return e.commentsDisabled=!1,t})},t.prototype.disableComments=function(){var e=this;return this.setCommentsOn(!1).then(function(t){return e.commentsDisabled=!0,t})},t.prototype.findControlById=function(e){return this.findControl(function(t){return t.id===e})},t.prototype.findControl=function(e){for(var t=0;t3?{}:{zoneEmphasis:e}},t.prototype.setCommentsOn=function(e){return this.getItem().then(function(t){return new ze(t,"SetCommentsDisabled("+!e+")").update({})})},t.prototype.promoteNewsImpl=function(e){return i(this,void 0,void 0,function(){var n,r;return s(this,function(o){switch(o.label){case 0:return Object(m.r)(this.json.VersionInfo.LastVersionCreatedBy)?(n=new Date(this.json.VersionInfo.LastVersionCreated),n.getFullYear()<2e3?[4,this.save(!0)]:[3,2]):[3,2];case 1:o.sent(),o.label=2;case 2:if(null===this.json.Id)throw Error("The id for this page is null. If you want to create a new page, please use ClientSidePage.Create");return[4,t.initFrom(this,"_api/sitepages/pages("+this.json.Id+")/"+e).postCore({body:Object(m.n)(d("SP.Publishing.SitePage"))})];case 3:return r=o.sent(),[2,r]}})})},t.prototype.mergePartToTree=function(e,t){var n=null,r=12,o=0,i=0,s=1;t&&(Object(m.j)(t,"zoneIndex")&&(i=t.zoneIndex),Object(m.j)(t,"sectionIndex")&&(o=t.sectionIndex),Object(m.j)(t,"sectionFactor")&&(r=t.sectionFactor),Object(m.j)(t,"layoutIndex")&&(s=t.layoutIndex));var a=e.data&&e.data.emphasis&&e.data.emphasis.zoneEmphasis?e.data.emphasis.zoneEmphasis:0,u=this.getOrCreateSection(i,s,a),c=u.columns.filter(function(e){return e.order===o});n=c.length<1?u.addColumn(r,s):c[0],e.column=n,n.addControl(e)},t.prototype.mergeColumnToTree=function(e){var t=Object(m.j)(e.data,"position")&&Object(m.j)(e.data.position,"zoneIndex")?e.data.position.zoneIndex:0,n=Object(m.j)(e.data,"position")&&Object(m.j)(e.data.position,"layoutIndex")?e.data.position.layoutIndex:1,r=this.getOrCreateSection(t,n,e.data.emphasis.zoneEmphasis||0);e.section=r,r.columns.push(e)},t.prototype.getOrCreateSection=function(e,t,n){var r=null,o=this.sections.filter(function(n){return n.order===e&&n.layoutIndex===t});return o.length<1?(r=2===t?this.addVerticalSection():this.addSection(),r.order=e,r.emphasis=n):r=o[0],r},t.prototype.getItem=function(){for(var e=this,n=[],r=0;r")||(e="

"+e+"

"),this.data.innerHTML=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"order",{get:function(){return this.data.position.controlIndex},set:function(e){this.data.position.controlIndex=e},enumerable:!0,configurable:!0}),t.prototype.onColumnChange=function(e){this.data.position.sectionFactor=e.factor,this.data.position.controlIndex=f(e.controls),this.data.position.zoneIndex=e.data.position.zoneIndex,this.data.position.sectionIndex=e.order,this.data.position.layoutIndex=e.data.position.layoutIndex},t.Default={addedFromPersistedData:!1,anchorComponentId:"",controlType:4,displayMode:2,editorType:"CKEditor",emphasis:{},id:"",innerHTML:"",position:{controlIndex:1,layoutIndex:1,sectionFactor:12,sectionIndex:1,zoneIndex:1}},t}(Rt),Ut=function(e){function t(n){return void 0===n&&(n=JSON.parse(JSON.stringify(t.Default))),e.call(this,n)||this}return r(t,e),t.fromComponentDef=function(e){var n=new t;return n.import(e),n},Object.defineProperty(t.prototype,"title",{get:function(){return this.data.webPartData.title},set:function(e){this.data.webPartData.title=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"description",{get:function(){return this.data.webPartData.description},set:function(e){this.data.webPartData.description=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"order",{get:function(){return this.data.position.controlIndex},set:function(e){this.data.position.controlIndex=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"height",{get:function(){return this.data.reservedHeight},set:function(e){this.data.reservedHeight=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"width",{get:function(){return this.data.reservedWidth},set:function(e){this.data.reservedWidth=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"dataVersion",{get:function(){return this.data.webPartData.dataVersion},set:function(e){this.data.webPartData.dataVersion=e},enumerable:!0,configurable:!0}),t.prototype.setProperties=function(e){return this.data.webPartData.properties=Object(m.f)(this.data.webPartData.properties,e),this},t.prototype.getProperties=function(){return this.data.webPartData.properties},t.prototype.onColumnChange=function(e){this.data.position={controlIndex:f(e.controls),layoutIndex:e.data.position.layoutIndex,sectionFactor:e.factor,sectionIndex:e.data.position.sectionIndex,zoneIndex:e.data.position.zoneIndex}},t.prototype.import=function(e){var t=Object(m.h)(),n=e.Id.replace(/^\{|\}$/g,"").toLowerCase(),r=JSON.parse(e.Manifest),o=r.preconfiguredEntries[0];this.setData(Object.assign({},this.data,{id:t,webPartData:{dataVersion:"1.0",description:o.description.default,id:n,instanceId:t,properties:o.properties,title:o.title.default},webPartId:n}))},t.Default={addedFromPersistedData:!1,controlType:3,displayMode:2,emphasis:{},id:null,position:{controlIndex:1,layoutIndex:1,sectionFactor:12,sectionIndex:1,zoneIndex:1},reservedHeight:500,reservedWidth:500,webPartData:null,webPartId:null},t}(Rt),kt=(new Map([["text","Querytext"],["template","QueryTemplate"],["sourceId","SourceId"],["trimDuplicatesIncludeId",""],["startRow",""],["rowLimit",""],["rankingModelId",""],["rowsPerPage",""],["selectProperties",""],["culture",""],["timeZoneId",""],["refinementFilters",""],["refiners",""],["hiddenConstraints",""],["sortList",""],["timeout",""],["hithighlightedProperties",""],["clientType",""],["personalizationData",""],["resultsURL",""],["queryTag",""],["properties",""],["queryTemplatePropertiesUrl",""],["reorderingRules",""],["hitHighlightedMultivaluePropertyLimit",""],["collapseSpecification",""],["uiLanguage",""],["desiredSnippetLength",""],["maxSnippetLength",""],["summaryLength",""]]),new Map([]),function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.execute=function(e){var t=this,n=this.parseQuery(e),r=Object(m.n)({request:Object(m.f)(d("Microsoft.Office.Server.Search.REST.SearchRequest"),Object.assign({},n,{HitHighlightedProperties:this.fixArrProp(n.HitHighlightedProperties),Properties:this.fixArrProp(n.Properties),RefinementFilters:this.fixArrProp(n.RefinementFilters),ReorderingRules:this.fixArrProp(n.ReorderingRules),SelectProperties:this.fixArrProp(n.SelectProperties),SortList:this.fixArrProp(n.SortList)}))});if(this._useCaching){this._forceCaching=!0;var o="PnPjs.SearchWithCaching("+Object(m.i)(r)+")";Object(m.q)(this._cachingOptions)?/\/_api\/search\/postquery$/i.test(this._cachingOptions.key)&&(this._cachingOptions.key=o):this._cachingOptions=new v.c(o)}return this.postCore({body:r}).then(function(e){return new Lt(e,t.toUrl(),n)})},t.prototype.fixArrProp=function(e){return void 0===e?{results:[]}:(e=Object(m.k)(e)?e:[e],Object(m.j)(e,"results")?e:{results:e})},t.prototype.parseQuery=function(e){return"string"==typeof e?{Querytext:e}:e.toSearchQuery?e.toSearchQuery():e},t=o([h("_api/search/postquery")],t)}(R)),Lt=function(){function e(e,t,n,r,o){void 0===r&&(r=null),void 0===o&&(o=null),this._url=t,this._query=n,this._raw=r,this._primary=o,this._raw=e.postquery?e.postquery:e}return Object.defineProperty(e.prototype,"ElapsedTime",{get:function(){return this.RawSearchResults.ElapsedTime},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"RowCount",{get:function(){return this.RawSearchResults.PrimaryQueryResult.RelevantResults.RowCount},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"TotalRows",{get:function(){return this.RawSearchResults.PrimaryQueryResult.RelevantResults.TotalRows},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"TotalRowsIncludingDuplicates",{get:function(){return this.RawSearchResults.PrimaryQueryResult.RelevantResults.TotalRowsIncludingDuplicates},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"RawSearchResults",{get:function(){return this._raw},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"PrimarySearchResults",{get:function(){return null===this._primary&&(this._primary=this.formatSearchResults(this._raw.PrimaryQueryResult.RelevantResults.Table.Rows)),this._primary},enumerable:!0,configurable:!0}),e.prototype.getPage=function(e,t){if(this.TotalRowsthis.TotalRows?Promise.resolve(null):new kt(this._url,null).execute(r)},e.prototype.formatSearchResults=function(e){for(var t=new Array,n=e.results?e.results:e,r=0,o=n;r0&&(n.properties=Object(m.f)(n.properties,{To:{results:e.To}})),e.CC&&e.CC.length>0&&(n.properties=Object(m.f)(n.properties,{CC:{results:e.CC}})),e.BCC&&e.BCC.length>0&&(n.properties=Object(m.f)(n.properties,{BCC:{results:e.BCC}})),e.AdditionalHeaders&&(n.properties=Object(m.f)(n.properties,{AdditionalHeaders:e.AdditionalHeaders})),this.clone(t,"SendEmail",!0).excute(n)},t.prototype.getCurrentUserEmailAddresses=function(){return this.clone(t,"GetCurrentUserEmailAddresses",!0).excute({}).then(function(e){return Object(m.j)(e,"GetCurrentUserEmailAddresses")?e.GetCurrentUserEmailAddresses:e})},t.prototype.resolvePrincipal=function(e,n,r,o,i,s){void 0===s&&(s=!1);var a={addToUserInfoList:i,input:e,inputIsEmailOnly:o,matchUserInfoList:s,scopes:n,sources:r};return this.clone(t,"ResolvePrincipalInCurrentContext",!0).excute(a).then(function(e){return Object(m.j)(e,"ResolvePrincipalInCurrentContext")?e.ResolvePrincipalInCurrentContext:e})},t.prototype.searchPrincipals=function(e,n,r,o,i){var s={groupName:o,input:e,maxCount:i,scopes:n,sources:r};return this.clone(t,"SearchPrincipalsUsingContextWeb",!0).excute(s).then(function(e){return Object(m.j)(e,"SearchPrincipalsUsingContextWeb")?e.SearchPrincipalsUsingContextWeb:e})},t.prototype.createEmailBodyForInvitation=function(e){var n={pageAddress:e};return this.clone(t,"CreateEmailBodyForInvitation",!0).excute(n).then(function(e){return Object(m.j)(e,"CreateEmailBodyForInvitation")?e.CreateEmailBodyForInvitation:e})},t.prototype.expandGroupsToPrincipals=function(e,n){void 0===n&&(n=30);var r={inputs:e,maxCount:n};return this.clone(t,"ExpandGroupsToPrincipals",!0).excute(r).then(function(e){return Object(m.j)(e,"ExpandGroupsToPrincipals")?e.ExpandGroupsToPrincipals:e})},t.prototype.createWikiPage=function(e){return this.clone(t,"CreateWikiPageInContextWeb",!0).excute({parameters:e}).then(function(e){return{data:Object(m.j)(e,"CreateWikiPageInContextWeb")?e.CreateWikiPageInContextWeb:e,file:new tt(u(e))}})},t.prototype.containsInvalidFileFolderChars=function(e,n){return void 0===n&&(n=!1),n?(t.InvalidFileFolderNameCharsOnPremiseRegex.lastIndex=0,t.InvalidFileFolderNameCharsOnPremiseRegex.test(e)):(t.InvalidFileFolderNameCharsOnlineRegex.lastIndex=0,t.InvalidFileFolderNameCharsOnlineRegex.test(e))},t.prototype.stripInvalidFileFolderChars=function(e,n,r){return void 0===n&&(n=""),void 0===r&&(r=!1),r?e.replace(t.InvalidFileFolderNameCharsOnPremiseRegex,n):e.replace(t.InvalidFileFolderNameCharsOnlineRegex,n)},t.InvalidFileFolderNameCharsOnlineRegex=/["*:<>?\/\\|\x00-\x1f\x7f-\x9f]/g,t.InvalidFileFolderNameCharsOnPremiseRegex=/["#%*:<>?\/\\|\x00-\x1f\x7f-\x9f]/g,t}(x),Xt=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.getById=function(e){return new Yt(this,"GetById?hubSiteId='"+e+"'")},t=o([h("_api/hubsites")],t)}(j),Yt=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(R),$t=function(){function e(e,t){void 0===e&&(e={}),void 0===t&&(t=""),this._options=e,this._baseUrl=t}return e.prototype.configure=function(t,n){return void 0===n&&(n=""),new e(t,n)},e.prototype.setup=function(e){l(e)},e.prototype.searchSuggest=function(e){var t;return t="string"==typeof e?{querytext:e}:e,this.create(Bt).execute(t)},e.prototype.search=function(e){return this.create(kt).execute(e)},e.prototype.searchWithCaching=function(e,t){return this.create(kt).usingCaching(t).execute(e)},Object.defineProperty(e.prototype,"site",{get:function(){return this.create(ht)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"web",{get:function(){return this.create(Pt)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"profiles",{get:function(){return this.create(Gt)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"social",{get:function(){return this.create(Ht)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"navigation",{get:function(){return this.create(mt)},enumerable:!0,configurable:!0}),e.prototype.createBatch=function(){return this.web.createBatch()},Object.defineProperty(e.prototype,"utility",{get:function(){return this.create(Jt,"")},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"siteScripts",{get:function(){return this.create(It,"")},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"siteDesigns",{get:function(){return this.create(wt,"")},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"hubSites",{get:function(){return this.create(Xt)},enumerable:!0,configurable:!0}),e.prototype.getTenantAppCatalogWeb=function(){var e=this;return this.create(Pt,"_api/SP_TenantSettings_Current").get().then(function(t){return new Pt(t.CorporateCatalogUrl).configure(e._options)})},e.prototype.create=function(e,t){return new e(this._baseUrl,t).configure(this._options)},e}(),Zt=new $t}).call(t,n(1))},function(e,t){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),n.d(t,"UserCustomActionMegaMenuId",function(){return f});var r=n(6),o=(n.n(r),n(7)),i=(n.n(o),n(8)),s=(n.n(i),n(9)),a=(n.n(s),n(10)),u=n(18),c=(n(22),this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}()),l=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},p=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))(function(o,i){function s(e){try{u(r.next(e))}catch(e){i(e)}}function a(e){try{u(r.throw(e))}catch(e){i(e)}}function u(e){e.done?o(e.value):new n(function(t){t(e.value)}).then(s,a)}u((r=r.apply(e,t||[])).next())})},d=this&&this.__generator||function(e,t){function n(e){return function(t){return r([e,t])}}function r(n){if(o)throw new TypeError("Generator is already executing.");for(;u;)try{if(o=1,i&&(s=i[2&n[0]?"return":n[0]?"throw":"next"])&&!(s=s.call(i,n[1])).done)return s;switch(i=0,s&&(n=[0,s.value]),n[0]){case 0:case 1:s=n;break;case 4:return u.label++,{value:n[1],done:!1};case 5:u.label++,i=n[1],n=[0];continue;case 7:n=u.ops.pop(),u.trys.pop();continue;default:if(s=u.trys,!(s=s.length>0&&s[s.length-1])&&(6===n[0]||2===n[0])){u=0;continue}if(3===n[0]&&(!s||n[1]>s[0]&&n[1]0&&(n=60*this.defaultTimeoutMinutes),t=i(new Date,"second",n)}return f({pnp:1,expiration:t,value:e})},e.prototype.cacheExpirationHandler=function(){var e=this;this.deleteExpired().then(function(t){setTimeout(o(e,e.cacheExpirationHandler),R.cacheExpirationIntervalMilliseconds)}).catch(function(e){console.error(e)})},e}(),U=function(){function e(e){void 0===e&&(e=new Map),this._store=e}return Object.defineProperty(e.prototype,"length",{get:function(){return this._store.size},enumerable:!0,configurable:!0}),e.prototype.clear=function(){this._store.clear()},e.prototype.getItem=function(e){return this._store.get(e)},e.prototype.key=function(e){return Array.from(this._store)[e][0]},e.prototype.removeItem=function(e){this._store.delete(e)},e.prototype.setItem=function(e,t){this._store.set(e,t)},e}(),k=function(){function e(e,t){void 0===e&&(e=null),void 0===t&&(t=null),this._local=e,this._session=t}return Object.defineProperty(e.prototype,"local",{get:function(){return null===this._local&&(this._local=this.getStore("local")),this._local},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"session",{get:function(){return null===this._session&&(this._session=this.getStore("session")),this._session},enumerable:!0,configurable:!0}),e.prototype.getStore=function(e){return new A("local"===e?"undefined"==typeof localStorage?new U:localStorage:"undefined"==typeof sessionStorage?new U:sessionStorage)},e}()}).call(t,n(1))},function(e,t,n){"use strict";n.d(t,"a",function(){return o});/** + * @license + * v1.3.11 + * MIT (https://github.com/pnp/pnpjs/blob/master/LICENSE) + * Copyright (c) 2020 Microsoft + * docs: https://pnp.github.io/pnpjs/ + * source: https://github.com/pnp/pnpjs + * bugs: https://github.com/pnp/pnpjs/issues + */ +var r,o=function(){function e(){}return Object.defineProperty(e,"activeLogLevel",{get:function(){return e.instance.activeLogLevel},set:function(t){e.instance.activeLogLevel=t},enumerable:!0,configurable:!0}),Object.defineProperty(e,"instance",{get:function(){return void 0!==e._instance&&null!==e._instance||(e._instance=new i),e._instance},enumerable:!0,configurable:!0}),e.subscribe=function(){for(var t=[],n=0;n0&&s[s.length-1])&&(6===n[0]||2===n[0])){u=0;continue}if(3===n[0]&&(!s||n[1]>s[0]&&n[1]-1},n.prototype.getCachedToken=function(e){if(!this._hasResource(e))return null;var t=this._getItem(this.CONSTANTS.STORAGE.ACCESS_TOKEN_KEY+e),n=this._getItem(this.CONSTANTS.STORAGE.EXPIRATION_KEY+e),r=this.config.expireOffsetSeconds||300;return n&&n>this._now()+r?t:(this._saveItem(this.CONSTANTS.STORAGE.ACCESS_TOKEN_KEY+e,""),this._saveItem(this.CONSTANTS.STORAGE.EXPIRATION_KEY+e,0),null)},n.prototype.getCachedUser=function(){if(this._user)return this._user;var e=this._getItem(this.CONSTANTS.STORAGE.IDTOKEN);return this._user=this._createUser(e),this._user},n.prototype.registerCallback=function(e,t,n){this._activeRenewals[t]=e,this._callBacksMappedToRenewStates[e]||(this._callBacksMappedToRenewStates[e]=[]);var r=this;this._callBacksMappedToRenewStates[e].push(n),this._callBackMappedToRenewStates[e]||(this._callBackMappedToRenewStates[e]=function(n,o,i,s){r._activeRenewals[t]=null;for(var a=0;a-1)){var t=this._user.profile.upn.split("@");e+="&domain_hint="+encodeURIComponent(t[t.length-1])}return e},n.prototype._createUser=function(e){var t=null,n=this._extractIdToken(e);return n&&n.hasOwnProperty("aud")&&(n.aud.toLowerCase()===this.config.clientId.toLowerCase()?(t={userName:"",profile:n},n.hasOwnProperty("upn")?t.userName=n.upn:n.hasOwnProperty("email")&&(t.userName=n.email)):this.warn("IdToken has invalid aud field")),t},n.prototype._getHash=function(e){return e.indexOf("#/")>-1?e=e.substring(e.indexOf("#/")+2):e.indexOf("#")>-1&&(e=e.substring(1)),e},n.prototype.isCallback=function(e){e=this._getHash(e);var t=this._deserialize(e);return t.hasOwnProperty(this.CONSTANTS.ERROR_DESCRIPTION)||t.hasOwnProperty(this.CONSTANTS.ACCESS_TOKEN)||t.hasOwnProperty(this.CONSTANTS.ID_TOKEN)},n.prototype.getLoginError=function(){return this._getItem(this.CONSTANTS.STORAGE.LOGIN_ERROR)},n.prototype.getRequestInfo=function(e){e=this._getHash(e);var t=this._deserialize(e),n={valid:!1,parameters:{},stateMatch:!1,stateResponse:"",requestType:this.REQUEST_TYPE.UNKNOWN};if(t&&(n.parameters=t,t.hasOwnProperty(this.CONSTANTS.ERROR_DESCRIPTION)||t.hasOwnProperty(this.CONSTANTS.ACCESS_TOKEN)||t.hasOwnProperty(this.CONSTANTS.ID_TOKEN))){n.valid=!0;var r="";if(!t.hasOwnProperty("state"))return this.warn("No state returned"),n;if(this.verbose("State: "+t.state),r=t.state,n.stateResponse=r,this._matchState(n))return n;if(!n.stateMatch&&window.parent){n.requestType=this._requestType;for(var o=this._renewStates,i=0;i-1&&t+1-1)return null;if(this.config&&this.config.endpoints)for(var n in this.config.endpoints)if(e.indexOf(n)>-1)return this.config.endpoints[n];return e.indexOf("http://")>-1||e.indexOf("https://")>-1?this._getHostFromUri(e)===this._getHostFromUri(this.config.redirectUri)?this.config.loginResource:null:this.config.loginResource},n.prototype._getHostFromUri=function(e){var t=String(e).replace(/^(https?:)\/\//,"");return t=t.split("/")[0]},n.prototype.handleWindowCallback=function(e){if(null==e&&(e=window.location.hash),this.isCallback(e)){var t=null,n=!1;this._openedWindows.length>0&&this._openedWindows[this._openedWindows.length-1].opener&&this._openedWindows[this._openedWindows.length-1].opener._adalInstance?(t=this._openedWindows[this._openedWindows.length-1].opener._adalInstance,n=!0):window.parent&&window.parent._adalInstance&&(t=window.parent._adalInstance);var r,o,i=t.getRequestInfo(e),s=null;o=n||window.parent!==window?t._callBackMappedToRenewStates[i.stateResponse]:t.callback,t.info("Returned from redirect url"),t.saveTokenFromHash(i),i.requestType===this.REQUEST_TYPE.RENEW_TOKEN&&window.parent?(window.parent!==window?t.verbose("Window is in iframe, acquiring token silently"):t.verbose("acquiring token interactive in progress"),r=i.parameters[t.CONSTANTS.ACCESS_TOKEN]||i.parameters[t.CONSTANTS.ID_TOKEN],s=t.CONSTANTS.ACCESS_TOKEN):i.requestType===this.REQUEST_TYPE.LOGIN&&(r=i.parameters[t.CONSTANTS.ID_TOKEN],s=t.CONSTANTS.ID_TOKEN);var a=i.parameters[t.CONSTANTS.ERROR_DESCRIPTION],u=i.parameters[t.CONSTANTS.ERROR];try{o&&o(a,r,u,s)}catch(e){t.error("Error occurred in user defined callback function: "+e)}window.parent!==window||n||(t.config.navigateToLoginRequestUrl?window.location.href=t._getItem(t.CONSTANTS.STORAGE.LOGIN_REQUEST):window.location.hash="")}},n.prototype._getNavigateUrl=function(e,t){var n="common";this.config.tenant&&(n=this.config.tenant);var r=this.instance+n+"/oauth2/authorize"+this._serialize(e,this.config,t)+this._addLibMetadata();return this.info("Navigate url:"+r),r},n.prototype._extractIdToken=function(e){var t=this._decodeJwt(e);if(!t)return null;try{var n=t.JWSPayload,r=this._base64DecodeStringUrlSafe(n);return r?JSON.parse(r):(this.info("The returned id_token could not be base64 url safe decoded."),null)}catch(e){this.error("The returned id_token could not be decoded",e)}return null},n.prototype._base64DecodeStringUrlSafe=function(e){return e=e.replace(/-/g,"+").replace(/_/g,"/"),window.atob?decodeURIComponent(escape(window.atob(e))):decodeURIComponent(escape(this._decode(e)))},n.prototype._decode=function(e){var t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";e=String(e).replace(/=+$/,"");var n=e.length;if(n%4==1)throw new Error("The token to be decoded is not correctly encoded.");for(var r,o,i,s,a,u,c,l,p="",d=0;d>16&255,c=a>>8&255,p+=String.fromCharCode(u,c);break}if(d+1===n-1){a=r<<18|o<<12,u=a>>16&255,p+=String.fromCharCode(u);break}a=r<<18|o<<12|i<<6|s,u=a>>16&255,c=a>>8&255,l=255&a,p+=String.fromCharCode(u,c,l)}return p},n.prototype._decodeJwt=function(e){if(this._isEmpty(e))return null;var t=/^([^\.\s]*)\.([^\.\s]+)\.([^\.\s]*)$/,n=t.exec(e);return!n||n.length<4?(this.warn("The returned id_token is not parseable."),null):{header:n[1],JWSPayload:n[2],JWSSig:n[3]}},n.prototype._convertUrlSafeToRegularBase64EncodedString=function(e){return e.replace("-","+").replace("_","/")},n.prototype._serialize=function(e,t,n){var r=[];if(null!==t){r.push("?response_type="+e),r.push("client_id="+encodeURIComponent(t.clientId)),n&&r.push("resource="+encodeURIComponent(n)),r.push("redirect_uri="+encodeURIComponent(t.redirectUri)),r.push("state="+encodeURIComponent(t.state)),t.hasOwnProperty("slice")&&r.push("slice="+encodeURIComponent(t.slice)),t.hasOwnProperty("extraQueryParameter")&&r.push(t.extraQueryParameter);var o=t.correlationId?t.correlationId:this._guid();r.push("client-request-id="+encodeURIComponent(o))}return r.join("&")},n.prototype._deserialize=function(e){var t,n=/\+/g,r=/([^&=]+)=([^&]*)/g,o=function(e){return decodeURIComponent(e.replace(n," "))},i={};for(t=r.exec(e);t;)i[o(t[1])]=o(t[2]),t=r.exec(e);return i},n.prototype._decimalToHex=function(e){for(var t=e.toString(16);t.length<2;)t="0"+t;return t},n.prototype._guid=function(){var e=window.crypto||window.msCrypto;if(e&&e.getRandomValues){var t=new Uint8Array(16);return e.getRandomValues(t),t[6]|=64,t[6]&=79,t[8]|=128,t[8]&=191,this._decimalToHex(t[0])+this._decimalToHex(t[1])+this._decimalToHex(t[2])+this._decimalToHex(t[3])+"-"+this._decimalToHex(t[4])+this._decimalToHex(t[5])+"-"+this._decimalToHex(t[6])+this._decimalToHex(t[7])+"-"+this._decimalToHex(t[8])+this._decimalToHex(t[9])+"-"+this._decimalToHex(t[10])+this._decimalToHex(t[11])+this._decimalToHex(t[12])+this._decimalToHex(t[13])+this._decimalToHex(t[14])+this._decimalToHex(t[15])}for(var n="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx",r="0123456789abcdef",o=0,i="",s=0;s<36;s++)"-"!==n[s]&&"4"!==n[s]&&(o=16*Math.random()|0),"x"===n[s]?i+=r[o]:"y"===n[s]?(o&=3,o|=8,i+=r[o]):i+=n[s];return i},n.prototype._expiresIn=function(e){return e||(e=3599),this._now()+parseInt(e,10)},n.prototype._now=function(){return Math.round((new Date).getTime()/1e3)},n.prototype._addAdalFrame=function(e){if(void 0!==e){this.info("Add adal frame to document:"+e);var t=document.getElementById(e);if(!t){if(document.createElement&&document.documentElement&&(window.opera||-1===window.navigator.userAgent.indexOf("MSIE 5.0"))){var n=document.createElement("iframe");n.setAttribute("id",e),n.setAttribute("aria-hidden","true"),n.style.visibility="hidden",n.style.position="absolute",n.style.width=n.style.height=n.borderWidth="0px",t=document.getElementsByTagName("body")[0].appendChild(n)}else document.body&&document.body.insertAdjacentHTML&&document.body.insertAdjacentHTML("beforeEnd",'');window.frames&&window.frames[e]&&(t=window.frames[e])}return t}},n.prototype._saveItem=function(e,t,n){if(this.config&&this.config.cacheLocation&&"localStorage"===this.config.cacheLocation){if(!this._supportsLocalStorage())return this.info("Local storage is not supported"),!1;if(n){var r=this._getItem(e)||"";localStorage.setItem(e,r+t+this.CONSTANTS.CACHE_DELIMETER)}else localStorage.setItem(e,t);return!0}return this._supportsSessionStorage()?(sessionStorage.setItem(e,t),!0):(this.info("Session storage is not supported"),!1)},n.prototype._getItem=function(e){return this.config&&this.config.cacheLocation&&"localStorage"===this.config.cacheLocation?this._supportsLocalStorage()?localStorage.getItem(e):(this.info("Local storage is not supported"),null):this._supportsSessionStorage()?sessionStorage.getItem(e):(this.info("Session storage is not supported"),null)},n.prototype._supportsLocalStorage=function(){try{return!!window.localStorage&&(window.localStorage.setItem("storageTest","A"),"A"==window.localStorage.getItem("storageTest")&&(window.localStorage.removeItem("storageTest"),!window.localStorage.getItem("storageTest")))}catch(e){return!1}},n.prototype._supportsSessionStorage=function(){try{return!!window.sessionStorage&&(window.sessionStorage.setItem("storageTest","A"),"A"==window.sessionStorage.getItem("storageTest")&&(window.sessionStorage.removeItem("storageTest"),!window.sessionStorage.getItem("storageTest")))}catch(e){return!1}},n.prototype._cloneConfig=function(e){if(null===e||"object"!=typeof e)return e;var t={};for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t},n.prototype._addLibMetadata=function(){return"&x-client-SKU=Js&x-client-Ver="+this._libVersion()},n.prototype.log=function(e,t,n,r){if(e<=Logging.level){if(!Logging.piiLoggingEnabled&&r)return;var o=(new Date).toUTCString(),i="";i=this.config.correlationId?o+":"+this.config.correlationId+"-"+this._libVersion()+"-"+this.CONSTANTS.LEVEL_STRING_MAP[e]+" "+t:o+":"+this._libVersion()+"-"+this.CONSTANTS.LEVEL_STRING_MAP[e]+" "+t,n&&(i+="\nstack:\n"+n.stack),Logging.log(i)}},n.prototype.error=function(e,t){this.log(this.CONSTANTS.LOGGING_LEVEL.ERROR,e,t)},n.prototype.warn=function(e){this.log(this.CONSTANTS.LOGGING_LEVEL.WARN,e,null)},n.prototype.info=function(e){this.log(this.CONSTANTS.LOGGING_LEVEL.INFO,e,null)},n.prototype.verbose=function(e){this.log(this.CONSTANTS.LOGGING_LEVEL.VERBOSE,e,null)},n.prototype.errorPii=function(e,t){this.log(this.CONSTANTS.LOGGING_LEVEL.ERROR,e,t,!0)},n.prototype.warnPii=function(e){this.log(this.CONSTANTS.LOGGING_LEVEL.WARN,e,null,!0)},n.prototype.infoPii=function(e){this.log(this.CONSTANTS.LOGGING_LEVEL.INFO,e,null,!0)},n.prototype.verbosePii=function(e){this.log(this.CONSTANTS.LOGGING_LEVEL.VERBOSE,e,null,!0)},n.prototype._libVersion=function(){return"1.0.17"},void 0!==e&&e.exports&&(e.exports=n,e.exports.inject=function(e){return new n(e)}),n}()},function(e,t,n){"use strict";function r(e,t){function n(){this.constructor=e}y(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}function o(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s}function i(e){return d.a.log({data:0===d.a.activeLogLevel?e.result:{},level:1,message:"["+e.requestId+"] ("+(new Date).getTime()+") Returning result from pipeline. Set logging to verbose to see data."}),Promise.resolve(e.result)}function s(e,t){return new Promise(function(n){e.result=t,e.hasResult=!0,n(e)})}function a(e){return e.pipeline.length>0?e.pipeline.shift()(e):Promise.resolve(e)}function u(e){e.pipeline.length<1&&d.a.write("["+e.requestId+"] ("+(new Date).getTime()+") Request pipeline contains no methods!",2);var t=a(e).then(function(e){return i(e)}).catch(function(e){throw d.a.error(e),e});return e.isBatched&&e.batch.addResolveBatchDependency(t),t}function c(e){return void 0===e&&(e=!1),function(t,n,r){var o=r.value;r.value=function(){for(var r=[],i=0;i0&&Object(p.j)(r[0],"hasResult")&&r[0].hasResult?(d.a.write("["+r[0].requestId+"] ("+(new Date).getTime()+") Skipping request pipeline method "+n+", existing result in pipeline.",0),Promise.resolve(r[0])):(d.a.write("["+r[0].requestId+"] ("+(new Date).getTime()+") Calling request pipeline method "+n+".",0),o.apply(t,r).then(function(e){return a(e)}))}}}function l(){return[w.logStart,w.caching,w.send,w.logEnd].slice(0)}n.d(t,"c",function(){return h}),n.d(t,"g",function(){return m}),n.d(t,"f",function(){return b}),n.d(t,"i",function(){return v}),n.d(t,"a",function(){return S}),n.d(t,"d",function(){return T}),n.d(t,"b",function(){return O}),n.d(t,"h",function(){return _}),n.d(t,"e",function(){return C});var p=n(3),d=n(4),h=function(){function e(e){this.key=e,this.expiration=Object(p.e)(new Date,"second",p.c.defaultCachingTimeoutSeconds),this.storeName=p.c.defaultCachingStore}return Object.defineProperty(e.prototype,"store",{get:function(){return"local"===this.storeName?e.storage.local:e.storage.session},enumerable:!0,configurable:!0}),e.storage=new p.b,e}(),f=function(){function e(e,t){this.parser=e,this.cacheOptions=t}return e.prototype.parse=function(e){var t=this;return this.parser.parse(e).then(function(e){return t.cacheData(e)})},e.prototype.cacheData=function(e){return null!==this.cacheOptions.store&&this.cacheOptions.store.put(this.cacheOptions.key,e,this.cacheOptions.expiration),e},e}(),y=function(e,t){return(y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)},g=function(e){function t(t,n,r,o){void 0===r&&(r=n.status),void 0===o&&(o=n.statusText);var i=e.call(this,t)||this;return i.response=n,i.status=r,i.statusText=o,i.isHttpRequestError=!0,i}return r(t,e),t.init=function(e){return e.clone().text().then(function(n){return new t("Error making HttpClient request in queryable ["+e.status+"] "+e.statusText+" ::> "+n,e.clone())})},t}(Error),m=function(){function e(){this.rawJson={}}return e.prototype.parse=function(e){var t=this;return new Promise(function(n,r){t.handleError(e,r)&&t.parseImpl(e,n,r)})},e.prototype.parseImpl=function(e,t,n){var r=this;e.headers.has("Content-Length")&&0===parseFloat(e.headers.get("Content-Length"))||204===e.status?t({}):e.text().then(function(e){return e.replace(/\s/gi,"").length>0?JSON.parse(e):{}}).then(function(e){return t(r.parseODataJSON(e))}).catch(function(e){return n(e)})},e.prototype.handleError=function(e,t){return e.ok||g.init(e).then(t),e.ok},e.prototype.parseODataJSON=function(e){this.rawJson=e;var t=e;return Object(p.j)(e,"d")?t=Object(p.j)(e.d,"results")?e.d.results:e.d:Object(p.j)(e,"value")&&(t=e.value),t},e}(),b=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(m),v=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.parseImpl=function(e,t){e.text().then(t)},t}(m),S=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.parseImpl=function(e,t){e.blob().then(t)},t}(m),T=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.parseImpl=function(e,t){e.json().then(t)},t}(m),O=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.parseImpl=function(e,t){Object(p.l)(e.arrayBuffer)?e.arrayBuffer().then(t):e.buffer().then(t)},t}(m),w=(function(e){function t(t){var n=e.call(this)||this;return n.parser=t,n}r(t,e),t.prototype.parseImpl=function(e,t){this.parser(e).then(t)}}(m),function(){function e(){}return e.logStart=function(e){return new Promise(function(t){d.a.log({data:1===d.a.activeLogLevel?{}:e,level:1,message:"["+e.requestId+"] ("+(new Date).getTime()+") Beginning "+e.verb+" request ("+e.requestAbsoluteUrl+")"}),t(e)})},e.caching=function(e){return new Promise(function(t){if(e.isCached){d.a.write("["+e.requestId+"] ("+(new Date).getTime()+") Caching is enabled for request, checking cache...",1);var n=new h(e.requestAbsoluteUrl.toLowerCase());if(void 0!==e.cachingOptions&&(n=Object(p.f)(n,e.cachingOptions)),null!==n.store){var r=n.store.get(n.key);if(null!==r)return d.a.log({data:1===d.a.activeLogLevel?{}:r,level:1,message:"["+e.requestId+"] ("+(new Date).getTime()+") Value returned from cache."}),Object(p.l)(e.batchDependency)&&e.batchDependency(),Object(p.j)(e.parser,"hydrate")&&(r=e.parser.hydrate(r)),s(e,r).then(function(e){return t(e)})}d.a.write("["+e.requestId+"] ("+(new Date).getTime()+") Value not found in cache.",1),e.parser=new f(e.parser,n)}return t(e)})},e.send=function(e){return new Promise(function(t,n){if(e.isBatched){var r=e.batch.add(e.requestAbsoluteUrl,e.verb,e.options,e.parser,e.requestId);Object(p.l)(e.batchDependency)&&e.batchDependency(),d.a.write("["+e.requestId+"] ("+(new Date).getTime()+") Batching request in batch "+e.batch.batchId+".",1),t(s(e,r))}else{d.a.write("["+e.requestId+"] ("+(new Date).getTime()+") Sending request.",1);var o=e.clientFactory(),i=Object(p.f)(e.options||{},{method:e.verb});o.fetch(e.requestAbsoluteUrl,i).then(function(t){return e.parser.parse(t)}).then(function(t){return s(e,t)}).then(function(e){return t(e)}).catch(function(e){return n(e)})}})},e.logEnd=function(e){return new Promise(function(t){e.isBatched?d.a.log({data:1===d.a.activeLogLevel?{}:e,level:1,message:"["+e.requestId+"] ("+(new Date).getTime()+") "+e.verb+" request will complete in batch "+e.batch.batchId+"."}):d.a.log({data:1===d.a.activeLogLevel?{}:e,level:1,message:"["+e.requestId+"] ("+(new Date).getTime()+") Completing "+e.verb+" request."}),t(e)})},o([c(!0)],e,"logStart",null),o([c()],e,"caching",null),o([c()],e,"send",null),o([c(!0)],e,"logEnd",null),e}()),I=function(){function e(){this._query=new Map,this._options={},this._url="",this._parentUrl="",this._useCaching=!1,this._cachingOptions=null,this._cloneParentWasCaching=!1,this._cloneParentCacheOptions=null,this._requestPipeline=null}return e.prototype.toUrl=function(){return this._url},e.prototype.concat=function(e){return this._url+=e,this},Object.defineProperty(e.prototype,"query",{get:function(){return this._query},enumerable:!0,configurable:!0}),e.prototype.configure=function(e){return Object(p.p)(this._options,e),this},e.prototype.configureFrom=function(e){return Object(p.p)(this._options,e._options),this},e.prototype.usingCaching=function(e){return p.c.globalCacheDisable||(this._useCaching=!0,void 0!==e&&(this._cachingOptions=e)),this},e.prototype.withPipeline=function(e){return this._requestPipeline=e.slice(0),this},e.prototype.getCore=function(e,t){return void 0===e&&(e=new T),void 0===t&&(t={}),this._cloneParentWasCaching&&this.usingCaching(this._cloneParentCacheOptions),this.reqImpl("GET",t,e)},e.prototype.postCore=function(e,t){return void 0===e&&(e={}),void 0===t&&(t=new T),this.reqImpl("POST",e,t)},e.prototype.patchCore=function(e,t){return void 0===e&&(e={}),void 0===t&&(t=new T),this.reqImpl("PATCH",e,t)},e.prototype.deleteCore=function(e,t){return void 0===e&&(e={}),void 0===t&&(t=new T),this.reqImpl("DELETE",e,t)},e.prototype.putCore=function(e,t){return void 0===e&&(e={}),void 0===t&&(t=new T),this.reqImpl("PUT",e,t)},e.prototype.reqImpl=function(e,t,n){var r=this;return void 0===t&&(t={}),this.getRequestPipeline(e,t,n).then(function(o){return r.toRequestContext(e,t,n,o)}).then(function(e){return u(e)})},e.prototype.append=function(e){this._url=Object(p.d)(this._url,e)},Object.defineProperty(e.prototype,"parentUrl",{get:function(){return this._parentUrl},enumerable:!0,configurable:!0}),e.prototype.extend=function(e,t){this._parentUrl=e._url,this._url=Object(p.d)(this._parentUrl,t||""),this.configureFrom(e)},e.prototype._clone=function(e,t){return e.configureFrom(this),this._useCaching&&(e._cloneParentWasCaching=!0,e._cloneParentCacheOptions=this._cachingOptions),e},e.prototype.getRequestPipeline=function(e,t,n){var r=this;return void 0===t&&(t={}),new Promise(function(e){e(Object(p.q)(r._requestPipeline)&&Object(p.k)(r._requestPipeline)?r._requestPipeline:l())})},e}(),_=function(e){function t(){var t=e.call(this)||this;return t._batch=null,t._batchDependency=null,t}return r(t,e),t.prototype.inBatch=function(e){if(null!==this.batch)throw Error("This query is already part of a batch.");return Object(p.q)(e)&&(this._batch=e),this},t.prototype.toUrl=function(){return this._url},t.prototype.get=function(e,t){return void 0===e&&(e=new b),void 0===t&&(t={}),this.getCore(e,t)},t.prototype.getCore=function(t,n){return void 0===t&&(t=new b),void 0===n&&(n={}),e.prototype.getCore.call(this,t,n)},t.prototype.postCore=function(t,n){return void 0===t&&(t={}),void 0===n&&(n=new b),e.prototype.postCore.call(this,t,n)},t.prototype.patchCore=function(t,n){return void 0===t&&(t={}),void 0===n&&(n=new b),e.prototype.patchCore.call(this,t,n)},t.prototype.deleteCore=function(t,n){return void 0===t&&(t={}),void 0===n&&(n=new b),e.prototype.deleteCore.call(this,t,n)},t.prototype.putCore=function(t,n){return void 0===t&&(t={}),void 0===n&&(n=new b),e.prototype.putCore.call(this,t,n)},t.prototype.reqImpl=function(t,n,r){return void 0===n&&(n={}),this.hasBatch&&(this._batchDependency=this.addBatchDependency()),e.prototype.reqImpl.call(this,t,n,r)},t.prototype.addBatchDependency=function(){return null!==this._batch?this._batch.addDependency():function(){return null}},Object.defineProperty(t.prototype,"hasBatch",{get:function(){return Object(p.q)(this._batch)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"batch",{get:function(){return this.hasBatch?this._batch:null},enumerable:!0,configurable:!0}),t.prototype._clone=function(t,n){return t=e.prototype._clone.call(this,t,n),n.includeBatch&&(t=t.inBatch(this._batch)),t},t}(I),C=function(){function e(e){void 0===e&&(e=Object(p.h)()),this._batchId=e,this._reqs=[],this._deps=[],this._rDeps=[]}return Object.defineProperty(e.prototype,"batchId",{get:function(){return this._batchId},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"requests",{get:function(){return this._reqs},enumerable:!0,configurable:!0}),e.prototype.add=function(e,t,n,r,o){var i={id:o,method:t.toUpperCase(),options:n,parser:r,reject:null,resolve:null,url:e},s=new Promise(function(e,t){i.resolve=e,i.reject=t});return this._reqs.push(i),s},e.prototype.addDependency=function(){var e=function(){};return this._deps.push(new Promise(function(t){e=t})),e},e.prototype.addResolveBatchDependency=function(e){this._rDeps.push(e)},e.prototype.execute=function(){var e=this;return Promise.all(this._deps).then(function(){return Promise.all(e._deps)}).then(function(){return e.executeImpl()}).then(function(){return Promise.all(e._rDeps)}).then(function(){})},e}()},function(e,t,n){"use strict";n.d(t,"a",function(){return r});var r=function(){function e(e,t,n){this.level=t,this.id=e.Id,this.label=e.Name,this.hoverText=e.LocalCustomProperties._Sys_Nav_HoverText,this.pathDepth=e.PathDepth;var r=e.LocalCustomProperties._Sys_Nav_SimpleLinkUrl||e.LocalCustomProperties._Sys_Nav_TargetUrl;r&&(this.url=n&&0===r.indexOf("~sitecollection")?n+r.substring("~sitecollection".length):r),this.items=[]}return e.prototype.hasChildren=function(){return this.items&&this.items.length>0},e.prototype.command=function(){this.url&&(window.location.href=this.url)},e}()},function(e,t,n){"use strict";var r=n(15),o=(n.n(r),n(16)),i=(n.n(o),this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))(function(o,i){function s(e){try{u(r.next(e))}catch(e){i(e)}}function a(e){try{u(r.throw(e))}catch(e){i(e)}}function u(e){e.done?o(e.value):new n(function(t){t(e.value)}).then(s,a)}u((r=r.apply(e,t||[])).next())})}),s=this&&this.__generator||function(e,t){function n(e){return function(t){return r([e,t])}}function r(n){if(o)throw new TypeError("Generator is already executing.");for(;u;)try{if(o=1,i&&(s=i[2&n[0]?"return":n[0]?"throw":"next"])&&!(s=s.call(i,n[1])).done)return s;switch(i=0,s&&(n=[0,s.value]),n[0]){case 0:case 1:s=n;break;case 4:return u.label++,{value:n[1],done:!1};case 5:u.label++,i=n[1],n=[0];continue;case 7:n=u.ops.pop(),u.trys.pop();continue;default:if(s=u.trys,!(s=s.length>0&&s[s.length-1])&&(6===n[0]||2===n[0])){u=0;continue}if(3===n[0]&&(!s||n[1]>s[0]&&n[1]",o=new Headers,o.append("accept","application/json"),o.append("content-type","application/xml"),i={headers:o,body:n},[4,this.context.spHttpClient.post(this.clientServiceUrl,r.SPHttpClient.configurations.v1,i)];case 2:return a=s.sent(),[4,a.json()];case 3:return u=s.sent(),c=u.find(function(e){return"SP.Taxonomy.Term"===e._ObjectType_}),c&&c.Labels&&c.Labels._Child_Items_&&(t=c.Labels._Child_Items_.map(function(e){return e.Value})),[3,5];case 4:return l=s.sent(),t=null,console.log(l.message),[3,5];case 5:return[2,t]}})})},e.prototype.getTermStores=function(){var e=this,t=new Headers;t.append("accept","application/json"),t.append("content-type","application/xml");var n={headers:t,body:''};return this.context.spHttpClient.post(this.clientServiceUrl,r.SPHttpClient.configurations.v1,n).then(function(t){return t.json().then(function(t){var n=t.filter(function(e){return"SP.Taxonomy.TermStore"===e._ObjectType_});return n.length>0?e.props.termsetNameOrID?n.map(function(t){var n=t.Groups._Child_Items_;if(e.props.termsetNameOrID){var r=e.props.termsetNameOrID;n=n.map(function(t){return t.TermSets._Child_Items_=t.TermSets._Child_Items_.filter(function(t){return t.Name===r||e.cleanGuid(t.Id).toLowerCase()===e.cleanGuid(r).toLowerCase()}),t})}return n=n.filter(function(e){return!e.IsSystemGroup}),n=n.filter(function(e){return e.TermSets._Child_Items_.length>0}),t.Groups._Child_Items_=n,t}):n:[]})})},e.prototype.getTermSet=function(){return i(this,void 0,void 0,function(){var e;return s(this,function(t){switch(t.label){case 0:return[4,this.getTermStores()];case 1:return e=t.sent(),[2,this.getTermSetId(e,this.props.termsetNameOrID)]}})})},e.prototype.getAllTerms=function(e,t,n,o){return void 0===o&&(o=!0),i(this,void 0,void 0,function(){var i,a,u,c,l,p,d,h=this;return s(this,function(s){switch(s.label){case 0:return i=e,this.isGuid(e)?[3,2]:[4,this.getTermStores()];case 1:if(a=s.sent(),!(u=this.getTermSetId(a,e)))return[2,null];i=this.cleanGuid(u.Id),s.label=2;case 2:return(c=this.getTermsById(i,o))?[2,c]:(l=''+i+'',p=new Headers,p.append("accept","application/json"),p.append("content-type","application/xml"),d={headers:p,body:l},[2,this.context.spHttpClient.post(this.clientServiceUrl,r.SPHttpClient.configurations.v1,d).then(function(e){return e.json().then(function(e){var r=e.filter(function(e){return"SP.Taxonomy.TermSet"===e._ObjectType_});if(r.length>0){var s=r[0];s.Terms=[];var a=e.filter(function(e){return"SP.Taxonomy.TermCollection"===e._ObjectType_});if(a.length>0){var u=a[0]._Child_Items_;!0===t&&(u=u.filter(function(e){return!1===e.IsDeprecated})),!0===n&&(u=u.filter(function(e){return!0===e.IsAvailableForTagging})),u=u.map(function(e){return e.IsRoot?e.CustomSortOrderIndex=s.CustomSortOrder?s.CustomSortOrder.split(":").indexOf(h.cleanGuid(e.Id)):-1:e.CustomSortOrderIndex=e.Parent.CustomSortOrder?e.Parent.CustomSortOrder.split(":").indexOf(h.cleanGuid(e.Id)):-1,e.Id=h.cleanGuid(e.Id),e.PathDepth=e.PathOfTerm.split(";").length,e.TermSet={Id:h.cleanGuid(s.Id),Name:s.Name},e.Parent&&(e.ParentId=h.cleanGuid(e.Parent.Id)),e}),u.length>0&&(u=h.sortTerms(u),s.Terms=u)}try{o&&window.sessionStorage&&window.sessionStorage.setItem(i,JSON.stringify(s))}catch(e){}return s}return null})})])}})})},e.prototype.searchTermsByName=function(e){return this.searchTermsByTermSet(e)},e.prototype.searchTermsByTermId=function(e,t){return i(this,void 0,void 0,function(){var n,r,o,i,a,u,c;return s(this,function(s){switch(s.label){case 0:return n=this.props.useSessionStorage,r=this.getTermsById(t,n),r?[2,this.searchTermsBySearchText(r,e)]:[3,1];case 1:return o=this.props,i=o.termsetNameOrID,a=o.hideDeprecatedTags,u=o.hideTagsNotAvailableForTagging,[4,this.getAllTermsByAnchorId(i,t,a,u,n)];case 2:if(c=s.sent())return[2,this.searchTermsBySearchText(c,e)];s.label=3;case 3:return[2,null]}})})},e.prototype.getAllTermsByAnchorId=function(e,t,n,r,o){return void 0===o&&(o=!0),i(this,void 0,void 0,function(){var i,a,u,c,l,p,d,h=this;return s(this,function(s){switch(s.label){case 0:return i=[],a=this.getTermsById(t,o),a?[2,a]:[4,this.getAllTerms(e,n,r)];case 1:if(u=s.sent(),c=u.Terms,t){if(l=c.filter(function(e){return e.Id.toLowerCase()===t.toLowerCase()}).shift()){p=l.PathOfTerm+";",d=c.filter(function(e){return e.PathOfTerm.substring(0,p.length)===p&&e.Id!==l.Id}),d.forEach(function(e){i.push(h.convertTermToPickerTerm(e))});try{o&&window.sessionStorage&&window.sessionStorage.setItem(t,JSON.stringify(i))}catch(e){}}}else c.forEach(function(e){i.push(h.convertTermToPickerTerm(e))});return[2,i]}})})},e.prototype.cleanGuid=function(e){return void 0!==e?e.replace("/Guid(","").replace("/","").replace(")",""):""},e.prototype.getTermSetId=function(e,t){if(e&&e.length>0&&t){var n=e[0];if(n.Groups&&n.Groups._Child_Items_)for(var r=0,o=n.Groups._Child_Items_;r-1}):[]},e.prototype.searchTermsByTermSet=function(e){var t=this;return new Promise(function(n){t.getTermStores().then(function(o){var i=t.props.termsetNameOrID;if(!t.isGuid(i)){var s=t.getTermSetId(o,i);if(!s)return void n(null);i=t.cleanGuid(s.Id)}if(void 0===o||0===o.length)return void n(null);var u="de-de"===t.context.pageContext.cultureInfo.currentUICultureName?1031:1033,c={start:e,lcid:0!==u?u:t.context.pageContext.web.language,sspList:t.cleanGuid(o[0].Id),termSetList:i,anchorId:t.props.anchorId?t.props.anchorId:a,isSpanTermStores:!1,isSpanTermSets:!1,isIncludeUnavailable:!0===t.props.hideTagsNotAvailableForTagging,isIncludeDeprecated:!0===t.props.hideDeprecatedTags,isAddTerms:!1,isIncludePathData:!1,excludeKeyword:!1,excludedTermset:a},l=new Headers;l.append("accept","application/json"),l.append("content-type","application/json");var p={headers:l,body:JSON.stringify(c)};return t.context.spHttpClient.post(t.suggestionServiceUrl,r.SPHttpClient.configurations.v1,p).then(function(e){return e.json().then(function(e){var r=e.d.Groups;if(r&&r.length>0){var o=r[0].Suggestions;if(o.length>0){var i=o.map(function(e){return t.convertSuggestTermToPickerTerm(e)});return void n(i)}}n([])})})})})},e.prototype.isGuid=function(e){return/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/.test(e)},e.prototype.sortTerms=function(e){for(var t=[],n=!0,r=1;n;){var i=e.filter(function(e){return e.PathDepth===r});if(i&&i.length>0){if(i=i.sort(this.sortTermByPath),1!==r){i=i.reverse();for(var s=0,a=i;st.PathOfTerm.toLowerCase()?1:0:e.CustomSortOrderIndext.CustomSortOrderIndex?1:0},e.prototype.convertTermToPickerTerm=function(e){return{key:this.cleanGuid(e.Id),name:e.Name,path:e.PathOfTerm,termSet:this.cleanGuid(e.TermSet.Id),termSetName:e.TermSet.Name}},e.prototype.convertSuggestTermToPickerTerm=function(e){var t="",n="";if(e.Paths&&e.Paths.length>0){var r=e.Paths[0].replace(/^\[/,"").replace(/\]$/,""),o=r.split(":");t=o.join(";")+";"+e.DefaultLabel,n=o[0]}return{key:this.cleanGuid(e.Id),name:e.DefaultLabel,path:t,termSet:a,termSetName:n}},e}();t.a=u},function(e,t){e.exports=o},function(e,t){e.exports=i},function(e,t,n){"use strict";n.d(t,"a",function(){return r});var r=function(){function e(){}return e.prototype.Get=function(e){return this[e]},e.prototype.Add=function(e,t){this[e]=t},e}()},function(e,t,n){"use strict";n.d(t,"a",function(){return i});var r=n(19),o=(n.n(r),n(20)),i=function(){function e(e,t,n){this.context=e,this.menuItems=t,this.updateCallback=n}return e.prototype.render=function(e){var t=this;e.innerHTML="",e.id="CustomNavigation";var n=document.createElement("nav");n.id="Mega-Menu",n.className="mega-menu-main",n.setAttribute("role","navigation"),n.setAttribute("aria-label","Hauptnavigation");var o=document.createElement("ul");o.setAttribute("role","menubar"),this.menuItems.forEach(function(e){var n=t.createTopLevelItem(e);o.appendChild(n)}),this.context.pageContext.web.permissions.hasPermission(r.SPPermission.manageWeb)&&o.appendChild(this.createSettingsItem()),n.appendChild(o),e.appendChild(n),this.attachEventListeners(),this.createScreenReaderAnnouncer()},e.prototype.createSettingsItem=function(){var e=this,t=document.createElement("li");t.setAttribute("role","none");var n=document.createElement("button");n.type="button",n.className="menu-item-link menu-item-settings",n.setAttribute("role","menuitem"),n.setAttribute("tabindex","0"),n.setAttribute("aria-haspopup","false"),n.setAttribute("aria-label","Einstellungen"),n.title="Einstellungen";var r=document.createElement("span");return r.className="ms-Icon ms-Icon--Settings menu-item-settings__icon",r.setAttribute("aria-hidden","true"),n.appendChild(r),n.addEventListener("click",function(){return e.openSettings()}),n.addEventListener("keydown",function(t){"Enter"!==t.key&&" "!==t.key||(t.preventDefault(),e.openSettings())}),t.appendChild(n),t},e.prototype.openSettings=function(){this._settingsPanel||(this._settingsPanel=new o.a(this.context,this.updateCallback)),this._settingsPanel.open()},e.prototype.createTopLevelItem=function(e){var t=document.createElement("li");t.setAttribute("role","none");var n=this.createTopLevelElement(e);if(t.appendChild(n),e.hasChildren()&&e.items&&e.items.length>0){var r=this.createMegaMenu(e);t.appendChild(r)}return t},e.prototype.createTopLevelElement=function(e){var t;return e.url?(t=document.createElement("a"),t.href=e.url,t.className="menu-item-link"):(t=document.createElement("span"),t.className="menu-item-text",t.setAttribute("tabindex","0")),t.setAttribute("role","menuitem"),t.setAttribute("aria-haspopup","true"),t.setAttribute("aria-expanded","false"),t.textContent=e.label,e.hoverText&&(t.title=e.hoverText),t},e.prototype.createMegaMenu=function(e){var t=this,n=document.createElement("div");n.className="mega-menu",n.setAttribute("role","menu"),n.setAttribute("aria-label",e.label+" Unterkategorien");var r=document.createElement("div");return r.className="mega-menu-grid",e.items&&e.items.forEach(function(e){var n=t.createCategorySection(e);r.appendChild(n)}),n.appendChild(r),n},e.prototype.createCategorySection=function(e){var t=document.createElement("div");t.className="mega-menu-category";var n=document.createElement("h3");if(e.url){var r=document.createElement("a");r.href=e.url,r.textContent=e.label,e.hoverText&&(r.title=e.hoverText),n.appendChild(r)}else{var o=document.createElement("span");o.textContent=e.label,e.hoverText&&(o.title=e.hoverText),n.appendChild(o)}if(t.appendChild(n),e.hasChildren()&&e.items&&e.items.length>0){var i=document.createElement("ul");e.items.forEach(function(e){var t=document.createElement("li"),n=document.createElement("a");n.href=e.url||"#",n.textContent=e.label,e.hoverText&&(n.title=e.hoverText),t.appendChild(n),i.appendChild(t)}),t.appendChild(i)}return t},e.prototype.attachEventListeners=function(){for(var e=document.querySelectorAll('#Mega-Menu > ul > li > a, #Mega-Menu > ul > li > span[role="menuitem"]'),t=0;t ul > li > a, #Mega-Menu > ul > li > span");o||i||s||a||(console.log("Schließe Menu wegen Focus-Verlust"),n.closeMegaMenu(e,t))},150)})},e.prototype.attachGlobalKeyboardNavigation=function(){var e=this;document.addEventListener("keydown",function(t){var n=document.activeElement;if("Escape"===t.key){var r=document.querySelector('.mega-menu[aria-expanded="true"]');if(r){var o=r.previousElementSibling;e.closeMegaMenu(o,r),o.focus()}}if("Tab"===t.key){if(!t.shiftKey){var i=n.closest("#Mega-Menu > ul > li > a, #Mega-Menu > ul > li > span");if(i){var s=i.closest("li"),a=s.querySelector(".mega-menu.js-open");if(a){t.preventDefault();var u=a.querySelector("a");return void(u&&u.focus())}}}if(t.shiftKey){var a=n.closest(".mega-menu");if(a&&a.classList.contains("js-open")){if(n===a.querySelectorAll("a")[0]){t.preventDefault();return void a.previousElementSibling.focus()}}}}})},e.prototype.openMegaMenu=function(e,t){e.setAttribute("aria-expanded","true"),t.setAttribute("aria-expanded","true"),t.classList.add("js-open"),console.log("Menu geöffnet:",e.textContent)},e.prototype.closeMegaMenu=function(e,t){e.setAttribute("aria-expanded","false"),t.setAttribute("aria-expanded","false"),t.classList.remove("js-open"),console.log("Menu geschlossen:",e.textContent)},e.prototype.toggleMegaMenu=function(e,t){"true"===e.getAttribute("aria-expanded")?this.closeMegaMenu(e,t):(this.closeAllMegaMenus(),this.openMegaMenu(e,t))},e.prototype.closeAllMegaMenus=function(){for(var e=document.querySelectorAll('#Mega-Menu > ul > li > a[aria-expanded="true"], #Mega-Menu > ul > li > span[aria-expanded="true"]'),t=0;t0&&s[s.length-1])&&(6===n[0]||2===n[0])){u=0;continue}if(3===n[0]&&(!s||n[1]>s[0]&&n[1]\n

Einstellungen

\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n "},e.prototype._save=function(){if(this._panelElement){var e=this._panelElement.querySelector("#mm-setting-termset"),t=this._panelElement.querySelector("#mm-setting-css");this.saveApplicationCustomizerProps({termSetName:e&&e.value?e.value:"",cssUrl:t&&t.value?t.value:""}),this.close()}},e.prototype._trapFocus=function(e){if(this._panelElement){var t=this._panelElement.querySelectorAll("button, input");if(t&&0!==t.length){var n=t[0],r=t[t.length-1],o=document.activeElement;e.shiftKey&&o===n?(e.preventDefault(),r.focus()):e.shiftKey||o!==r||(e.preventDefault(),n.focus())}}},e.prototype._escape=function(e){return e?e.replace(/&/g,"&").replace(/"/g,""").replace(//g,">"):""},e}()},function(e,t,n){"use strict";n.d(t,"a",function(){return a});var r=n(0),o=n(5),i=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))(function(o,i){function s(e){try{u(r.next(e))}catch(e){i(e)}}function a(e){try{u(r.throw(e))}catch(e){i(e)}}function u(e){e.done?o(e.value):new n(function(t){t(e.value)}).then(s,a)}u((r=r.apply(e,t||[])).next())})},s=this&&this.__generator||function(e,t){function n(e){return function(t){return r([e,t])}}function r(n){if(o)throw new TypeError("Generator is already executing.");for(;u;)try{if(o=1,i&&(s=i[2&n[0]?"return":n[0]?"throw":"next"])&&!(s=s.call(i,n[1])).done)return s;switch(i=0,s&&(n=[0,s.value]),n[0]){case 0:case 1:s=n;break;case 4:return u.label++,{value:n[1],done:!1};case 5:u.label++,i=n[1],n=[0];continue;case 7:n=u.ops.pop(),u.trys.pop();continue;default:if(s=u.trys,!(s=s.length>0&&s[s.length-1])&&(6===n[0]||2===n[0])){u=0;continue}if(3===n[0]&&(!s||n[1]>s[0]&&n[1]ul{margin:0;list-style:none;padding-inline-start:0;display:-ms-grid;display:grid;-ms-grid-columns:(minmax(120px,1fr)) [auto-fit];grid-template-columns:repeat(auto-fit,minmax(120px,1fr));width:100%}.mega-menu-main>ul>li{position:static}.mega-menu-main>ul>li>a,.mega-menu-main>ul>li>span[role=menuitem]{display:block;padding:15px 20px;transition:all .3s ease;outline:0;cursor:pointer}@media (max-width:900px){.mega-menu-main>ul>li>a,.mega-menu-main>ul>li>span[role=menuitem]{font-size:17px}}.mega-menu-main>ul>li:hover>a,.mega-menu-main>ul>li:hover>span[role=menuitem]{color:"[theme:white, default: #ffffff]";background:"[theme:themeLighter, default: #deecf9]"}.mega-menu-main>ul>li>a:focus,.mega-menu-main>ul>li>span[role=menuitem]:focus{color:"[theme:white, default: #ffffff]"}.mega-menu-main>ul>li>a:active,.mega-menu-main>ul>li>span[role=menuitem]:active{transform:translateY(0)}.mega-menu{position:absolute;left:0;right:0;top:100%;width:100%;background:"[theme:white, default: #ffffff]";box-shadow:0 4px 12px rgba(0,0,0,.15);display:none;padding:40px;max-height:calc(100vh - 60px);overflow-y:auto;z-index:1000;visibility:hidden;opacity:0;transition:visibility 0s,opacity .3s}.mega-menu-main>ul>li:hover .mega-menu{visibility:visible;opacity:1;display:block}.mega-menu.js-open{visibility:visible!important;opacity:1!important;display:block!important}.mega-menu-grid{max-width:none;margin:0 auto;display:-ms-grid;display:grid;-ms-grid-columns:(minmax(200px,1fr)) [auto-fit];grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:30px}.mega-menu-category{border-right:1px solid #d3d3d3}.mega-menu-category>h3{margin-bottom:12px;padding-bottom:8px}.mega-menu-category>h3>a,.mega-menu-category>h3>span{color:"[theme:neutralPrimary, default: #333333]";font-size:16px;font-weight:700;display:block}.mega-menu-category>h3>a{text-decoration:none;padding:0;border-radius:0;transition:color .2s ease;outline:0}.mega-menu-category>h3>a:hover{color:"[theme:themePrimary, default: #0078d7]"}.mega-menu-category>h3>a:focus{color:"[theme:white, default: #ffffff]";background:"[theme:error, default: #a80000]";text-decoration:none;padding:4px 0;margin:-4px -8px}.mega-menu-category ul{list-style:none;padding-inline-start:0}.mega-menu-category ul li{margin-bottom:4px}.mega-menu-category ul li a{color:"[theme:neutralSecondary, default: #666666]";text-decoration:none;font-size:14px;transition:all .2s ease;display:block;padding:4px 0;border-radius:4px;outline:0}.mega-menu-category ul li a:hover{padding-left:12px}.mega-menu-category ul li a:focus{color:"[theme:white, default: #ffffff]";padding-left:12px}.mega-menu-category ul li a{position:relative}@media (prefers-contrast:high){.mega-menu-main>ul>li>a:focus,.mega-menu-main>ul>li>span[role=menuitem]:focus{outline:4px solid;outline-offset:2px}.mega-menu-category>h3>a:focus,.mega-menu-category ul li a:focus{outline:3px solid;outline-offset:2px}}.content{padding:40px;max-width:1200px;margin:0 auto}.menu-item-link,.menu-item-text{display:block;padding:15px 20px;color:"[theme:neutralPrimary, default: #333333]";font-weight:600;transition:all .3s ease;border-bottom:3px solid transparent;outline:0;text-decoration:none}.menu-item-text{cursor:pointer}.menu-item-link:hover,.menu-item-text:hover{background-color:"[theme:neutralLighter, default: #f4f4f4]"}.menu-item-link:focus,.menu-item-text:focus{background-color:"[theme:themeDarker, default: #004578]";color:"[theme:white, default: #ffffff]"}.menu-item-settings{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;background:0 0;border:none;cursor:pointer;font:inherit;padding:15px 20px;color:"[theme:neutralPrimary, default: #333333]"}.menu-item-settings:hover{background-color:"[theme:neutralLighter, default: #f4f4f4]"}.menu-item-settings:focus{background-color:"[theme:themeDarker, default: #004578]";color:"[theme:white, default: #ffffff]"}.menu-item-settings__icon{font-size:18px;line-height:1;display:inline-block;transform:translateY(2px)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.mm-settings-overlay{position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:4000;animation:mmFadeIn .2s ease}.mm-settings-panel{position:fixed;top:0;right:0;height:100vh;width:480px;max-width:100%;background:"[theme:white, default: #ffffff]";box-shadow:-4px 0 12px rgba(0,0,0,.2);z-index:4001;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;font-size:17px;font-weight:300;font-family:Segoe UI,"Segoe UI Web (West European)",-apple-system,BlinkMacSystemFont,Roboto,Helvetica Neue,sans-serif;animation:mmSlideIn .25s ease}@media (max-width:600px){.mm-settings-panel{width:100%}}.mm-settings-header{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;padding:16px 20px;border-bottom:1px solid}.mm-settings-title{margin:0;font-size:18px;font-weight:600;font-size:17px;font-weight:300}.mm-settings-close{background:0 0;border:none;font-size:16px;line-height:1;cursor:pointer;padding:4px 8px;font-size:17px;font-weight:300}.mm-settings-close:focus{outline:3px solid;outline-offset:2px}.mm-settings-body{padding:20px;overflow-y:auto;-ms-flex:1;flex:1;font-size:14px;font-weight:400}.mm-settings-field{margin-bottom:16px}.mm-settings-field label{display:block;margin-bottom:4px;font-weight:600}.mm-settings-field input[type=text],.mm-settings-field label{color:"[theme:neutralPrimary, default: #333333]";font-size:14px;font-weight:400}.mm-settings-field input[type=text]{width:100%;padding:8px 12px;border:1px solid;border-radius:2px;box-sizing:border-box;background:"[theme:white, default: #ffffff]"}.mm-settings-field input[type=text]:focus{outline:3px solid;border-color:"[theme:themePrimary, default: #0078d7]"}.mm-settings-footer{padding:14px 20px;border-top:1px solid;display:-ms-flexbox;display:flex;gap:10px;-ms-flex-pack:end;justify-content:flex-end}.mm-settings-cancel,.mm-settings-save{cursor:pointer;border:none;border-radius:4px;padding:8px 16px;font-weight:600;font-size:14px;font-weight:400}.mm-settings-save{background:"[theme:themePrimary, default: #0078d7]";color:"[theme:white, default: #ffffff]"}.mm-settings-save:hover{background:"[theme:themeSecondary, default: #2b88d8]"}.mm-settings-cancel{background:"[theme:neutralTertiaryAlt, default: #c8c8c8]";color:"[theme:neutralPrimary, default: #333333]"}.mm-settings-cancel:hover{background:"[theme:neutralTertiary, default: #a6a6a6]"}.mm-settings-cancel:focus,.mm-settings-save:focus{outline:3px solid;outline-offset:2px}@keyframes mmSlideIn_09a8e1a7{0%{transform:translateX(40px);opacity:0}to{transform:translateX(0);opacity:1}}@keyframes mmFadeIn_09a8e1a7{0%{opacity:0}to{opacity:1}}',""])},function(e,t){function n(e,t){var n=e[1]||"",o=e[3];if(!o)return n;if(t&&"function"==typeof btoa){var i=r(o);return[n].concat(o.sources.map(function(e){return"/*# sourceURL="+o.sourceRoot+e+" */"})).concat([i]).join("\n")}return[n].join("\n")}function r(e){return"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(e))))+" */"}e.exports=function(e){var t=[];return t.toString=function(){return this.map(function(t){var r=n(t,e);return t[2]?"@media "+t[2]+"{"+r+"}":r}).join("")},t.i=function(e,n){"string"==typeof e&&(e=[[null,e,""]]);for(var r={},o=0;o0&&u(t)})}function a(){return setTimeout(function(){O.runState.flushTimer=0,s()},0)}function u(e,t){O.loadStyles?O.loadStyles(f(e).styleString,e):S?m(e,t):g(e)}function c(e){O.theme=e,d()}function l(e){void 0===e&&(e=3),3!==e&&2!==e||(p(O.registeredStyles),O.registeredStyles=[]),3!==e&&1!==e||(p(O.registeredThemableStyles),O.registeredThemableStyles=[])}function p(e){e.forEach(function(e){var t=e&&e.styleElement;t&&t.parentElement&&t.parentElement.removeChild(t)})}function d(){if(O.theme){for(var e=[],t=0,n=O.registeredThemableStyles;t0&&(l(1),u([].concat.apply([],e)))}}function h(e){return e&&(e=f(y(e)).styleString),e}function f(e){var t=O.theme,n=!1;return{styleString:(e||[]).map(function(e){var r=e.theme;if(r){n=!0;var o=t?t[r]:void 0,i=e.defaultValue||"inherit";return t&&!o&&console,o||i}return e.rawString}).join(""),themable:n}}function y(e){var t=[];if(e){for(var n=0,r=void 0;r=w.exec(e);){var o=r.index;o>n&&t.push({rawString:e.substring(n,o)}),t.push({theme:r[1],defaultValue:r[2]}),n=w.lastIndex}t.push({rawString:e.substring(n)})}return t}function g(e){var t=document.getElementsByTagName("head")[0],n=document.createElement("style"),r=f(e),o=r.styleString,i=r.themable;n.type="text/css",n.appendChild(document.createTextNode(o)),O.perf.count++,t.appendChild(n);var s={styleElement:n,themableStyle:e};i?O.registeredThemableStyles.push(s):O.registeredStyles.push(s)}function m(e,t){var n=document.getElementsByTagName("head")[0],r=O.registeredStyles,o=O.lastStyleElement,i=o?o.styleSheet:void 0,s=i?i.cssText:"",a=r[r.length-1],u=f(e).styleString;(!o||s.length+u.length>I)&&(o=document.createElement("style"),o.type="text/css",t?(n.replaceChild(o,t.styleElement),t.styleElement=o):n.appendChild(o),t||(a={styleElement:o,themableStyle:e},r.push(a))),o.styleSheet.cssText+=h(u),Array.prototype.push.apply(a.themableStyle,e),O.lastStyleElement=o}function b(){var e=!1;if("undefined"!=typeof document){var t=document.createElement("style");t.type="text/css",e=!!t.styleSheet}return e}var v=this&&this.__assign||Object.assign||function(e){for(var t,n=1,r=arguments.length;n= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ../../../../node_modules/tslib/tslib.es6.js","import { stringIsNullOrEmpty } from \"@pnp/common\";\n\nexport function extractWebUrl(candidateUrl: string) {\n\n if (stringIsNullOrEmpty(candidateUrl)) {\n return \"\";\n }\n\n let index = candidateUrl.indexOf(\"_api/\");\n\n if (index < 0) {\n index = candidateUrl.indexOf(\"_vti_bin/\");\n }\n\n if (index > -1) {\n return candidateUrl.substr(0, index);\n }\n\n // if all else fails just give them what they gave us back\n return candidateUrl;\n}\n\n\n\n// WEBPACK FOOTER //\n// ../../../../packages/sp/src/utils/extractweburl.ts","import { SharePointQueryableConstructor } from \"./sharepointqueryable\";\nimport { extend, combine, hOP } from \"@pnp/common\";\nimport { Logger, LogLevel } from \"@pnp/logging\";\nimport { ODataParser, ODataParserBase } from \"@pnp/odata\";\nimport { extractWebUrl } from \"./utils/extractweburl\";\n\nexport function odataUrlFrom(candidate: any): string {\n\n const parts: string[] = [];\n const s = [\"odata.type\", \"odata.editLink\", \"__metadata\", \"odata.metadata\"];\n if (hOP(candidate, s[0]) && candidate[s[0]] === \"SP.Web\") {\n // webs return an absolute url in the editLink\n if (hOP(candidate, s[1])) {\n parts.push(candidate[s[1]]);\n } else if (hOP(candidate, s[2])) {\n // we are dealing with verbose, which has an absolute uri\n parts.push(candidate.__metadata.uri);\n }\n\n } else {\n\n if (hOP(candidate, s[3]) && hOP(candidate, s[1])) {\n // we are dealign with minimal metadata (default)\n parts.push(extractWebUrl(candidate[s[3]]), \"_api\", candidate[s[1]]);\n } else if (hOP(candidate, s[1])) {\n parts.push(\"_api\", candidate[s[1]]);\n } else if (hOP(candidate, s[2])) {\n // we are dealing with verbose, which has an absolute uri\n parts.push(candidate.__metadata.uri);\n }\n }\n\n if (parts.length < 1) {\n Logger.write(\"No uri information found in ODataEntity parsing, chaining will fail for this object.\", LogLevel.Warning);\n return \"\";\n }\n\n return combine(...parts);\n}\n\nclass SPODataEntityParserImpl extends ODataParserBase {\n\n constructor(protected factory: SharePointQueryableConstructor) {\n super();\n }\n\n public hydrate = (d: D) => {\n const o = new this.factory(odataUrlFrom(d), null);\n return extend(o, d);\n }\n\n public parse(r: Response): Promise {\n return super.parse(r).then((d: any) => {\n const o = new this.factory(odataUrlFrom(d), null);\n return extend(o, d);\n });\n }\n}\n\nclass SPODataEntityArrayParserImpl extends ODataParserBase<(T & D)[]> {\n\n constructor(protected factory: SharePointQueryableConstructor) {\n super();\n }\n\n public hydrate = (d: D[]) => {\n return d.map(v => {\n const o = new this.factory(odataUrlFrom(v), null);\n return extend(o, v);\n });\n }\n\n public parse(r: Response): Promise<(T & D)[]> {\n return super.parse(r).then((d: D[]) => {\n return d.map(v => {\n const o = new this.factory(odataUrlFrom(v), null);\n return extend(o, v);\n });\n });\n }\n}\n\nexport function spODataEntity(factory: SharePointQueryableConstructor): ODataParser {\n return new SPODataEntityParserImpl(factory);\n}\n\nexport function spODataEntityArray(factory: SharePointQueryableConstructor): ODataParser<(T & DataType)[]> {\n return new SPODataEntityArrayParserImpl(factory);\n}\n\n\n\n// WEBPACK FOOTER //\n// ../../../../packages/sp/src/odata.ts","import {\n LibraryConfiguration,\n TypedHash,\n RuntimeConfig,\n HttpClientImpl,\n FetchClient,\n} from \"@pnp/common\";\n\nexport interface SPConfigurationPart {\n sp?: {\n /**\n * Any headers to apply to all requests\n */\n headers?: TypedHash;\n\n /**\n * The base url used for all requests\n */\n baseUrl?: string;\n\n /**\n * Defines a factory method used to create fetch clients\n */\n fetchClientFactory?: () => HttpClientImpl;\n };\n}\n\nexport interface SPConfiguration extends LibraryConfiguration, SPConfigurationPart { }\n\nexport function setup(config: SPConfiguration): void {\n RuntimeConfig.extend(config);\n}\n\nexport class SPRuntimeConfigImpl {\n\n public get headers(): TypedHash {\n\n const spPart = RuntimeConfig.get(\"sp\");\n if (spPart !== undefined && spPart.headers !== undefined) {\n return spPart.headers;\n }\n\n return {};\n }\n\n public get baseUrl(): string | null {\n\n const spPart = RuntimeConfig.get(\"sp\");\n if (spPart !== undefined && spPart.baseUrl !== undefined) {\n return spPart.baseUrl;\n }\n\n if (RuntimeConfig.spfxContext !== undefined && RuntimeConfig.spfxContext !== null) {\n return RuntimeConfig.spfxContext.pageContext.web.absoluteUrl;\n }\n\n return null;\n }\n\n public get fetchClientFactory(): () => HttpClientImpl {\n\n const spPart = RuntimeConfig.get(\"sp\");\n if (spPart !== undefined && spPart.fetchClientFactory !== undefined) {\n return spPart.fetchClientFactory;\n } else {\n return () => new FetchClient();\n }\n }\n}\n\nexport let SPRuntimeConfig = new SPRuntimeConfigImpl();\n\n\n\n// WEBPACK FOOTER //\n// ../../../../packages/sp/src/config/splibconfig.ts","import { SPHttpClient } from \"./sphttpclient\";\nimport { combine, extend } from \"@pnp/common\";\nimport { ODataDefaultParser } from \"@pnp/odata\";\nimport { SPRuntimeConfig } from \"../config/splibconfig\";\n\nexport class CachedDigest {\n public expiration: Date;\n public value: string;\n}\n\n// allows for the caching of digests across all HttpClient's which each have their own DigestCache wrapper.\nconst digests = new Map();\n\nexport class DigestCache {\n\n constructor(private _httpClient: SPHttpClient, private _digests: Map = digests) { }\n\n public getDigest(webUrl: string): Promise {\n\n const cachedDigest: CachedDigest = this._digests.get(webUrl);\n if (cachedDigest !== undefined) {\n const now = new Date();\n if (now < cachedDigest.expiration) {\n return Promise.resolve(cachedDigest.value);\n }\n }\n\n const url = combine(webUrl, \"/_api/contextinfo\");\n\n const headers = {\n \"Accept\": \"application/json;odata=verbose\",\n \"Content-Type\": \"application/json;odata=verbose;charset=utf-8\",\n };\n\n return this._httpClient.fetchRaw(url, {\n cache: \"no-cache\",\n credentials: \"same-origin\",\n headers: extend(headers, SPRuntimeConfig.headers, true),\n method: \"POST\",\n }).then((response) => {\n const parser = new ODataDefaultParser();\n return parser.parse(response).then((d: any) => d.GetContextWebInformation);\n }).then((data: any) => {\n const newCachedDigest = new CachedDigest();\n newCachedDigest.value = data.FormDigestValue;\n const seconds = data.FormDigestTimeoutSeconds;\n const expiration = new Date();\n expiration.setTime(expiration.getTime() + 1000 * seconds);\n newCachedDigest.expiration = expiration;\n this._digests.set(webUrl, newCachedDigest);\n return newCachedDigest.value;\n });\n }\n\n public clear() {\n this._digests.clear();\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ../../../../packages/sp/src/net/digestcache.ts","import { DigestCache } from \"./digestcache\";\nimport {\n extend,\n mergeHeaders,\n FetchOptions,\n RequestClient,\n getCtxCallback,\n HttpClientImpl,\n} from \"@pnp/common\";\nimport { SPRuntimeConfig } from \"../config/splibconfig\";\nimport { extractWebUrl } from \"../utils/extractweburl\";\n\nexport class SPHttpClient implements RequestClient {\n\n private _digestCache: DigestCache;\n\n constructor(private _impl: HttpClientImpl = SPRuntimeConfig.fetchClientFactory()) {\n this._digestCache = new DigestCache(this);\n }\n\n public fetch(url: string, options: FetchOptions = {}): Promise {\n\n let opts = extend(options, { cache: \"no-cache\", credentials: \"same-origin\" }, true);\n\n const headers = new Headers();\n\n // first we add the global headers so they can be overwritten by any passed in locally to this call\n mergeHeaders(headers, SPRuntimeConfig.headers);\n\n // second we add the local options so we can overwrite the globals\n mergeHeaders(headers, options.headers);\n\n // lastly we apply any default headers we need that may not exist\n if (!headers.has(\"Accept\")) {\n headers.append(\"Accept\", \"application/json\");\n }\n\n if (!headers.has(\"Content-Type\")) {\n headers.append(\"Content-Type\", \"application/json;odata=verbose;charset=utf-8\");\n }\n\n if (!headers.has(\"X-ClientService-ClientTag\")) {\n headers.append(\"X-ClientService-ClientTag\", \"PnPCoreJS:@pnp-$$Version$$\");\n }\n\n if (!headers.has(\"User-Agent\")) {\n // this marks the requests for understanding by the service\n headers.append(\"User-Agent\", \"NONISV|SharePointPnP|PnPCoreJS/$$Version$$\");\n }\n\n opts = extend(opts, { headers: headers });\n\n if (opts.method && opts.method.toUpperCase() !== \"GET\") {\n\n // if we have either a request digest or an authorization header we don't need a digest\n if (!headers.has(\"X-RequestDigest\") && !headers.has(\"Authorization\")) {\n return this._digestCache.getDigest(extractWebUrl(url))\n .then((digest) => {\n headers.append(\"X-RequestDigest\", digest);\n return this.fetchRaw(url, opts);\n });\n }\n }\n\n return this.fetchRaw(url, opts);\n }\n\n public fetchRaw(url: string, options: FetchOptions = {}): Promise {\n\n // here we need to normalize the headers\n const rawHeaders = new Headers();\n mergeHeaders(rawHeaders, options.headers);\n options = extend(options, { headers: rawHeaders });\n\n const retry = (ctx: RetryContext): void => {\n\n // handles setting the proper timeout for a retry\n const setRetry = (response: Response) => {\n let delay;\n\n if (response.headers.has(\"Retry-After\")) {\n // if we have gotten a header, use that value as the delay value\n delay = parseInt(response.headers.get(\"Retry-After\"), 10);\n } else {\n // grab our current delay\n delay = ctx.delay;\n\n // Increment our counters.\n ctx.delay *= 2;\n }\n\n ctx.attempts++;\n\n // If we have exceeded the retry count, reject.\n if (ctx.retryCount <= ctx.attempts) {\n ctx.reject(Error(`Retry count exceeded (${ctx.retryCount}) for request. Response status: [${response.status}] ${response.statusText}`));\n } else {\n // Set our retry timeout for {delay} milliseconds.\n setTimeout(getCtxCallback(this, retry, ctx), delay);\n }\n };\n\n // send the actual request\n this._impl.fetch(url, options).then((response) => {\n\n if (response.status === 429) {\n // we have been throttled\n setRetry(response);\n } else {\n ctx.resolve(response);\n }\n\n }).catch((response: Response) => {\n\n if (response.status === 503 || response.status === 504) {\n // http status code 503 or 504, we can retry this\n setRetry(response);\n } else {\n ctx.reject(response);\n }\n });\n };\n\n return new Promise((resolve, reject) => {\n\n const retryContext: RetryContext = {\n attempts: 0,\n delay: 100,\n reject: reject,\n resolve: resolve,\n retryCount: 7,\n };\n\n retry.call(this, retryContext);\n });\n }\n\n public get(url: string, options: FetchOptions = {}): Promise {\n const opts = extend(options, { method: \"GET\" });\n return this.fetch(url, opts);\n }\n\n public post(url: string, options: FetchOptions = {}): Promise {\n const opts = extend(options, { method: \"POST\" });\n return this.fetch(url, opts);\n }\n\n public patch(url: string, options: FetchOptions = {}): Promise {\n const opts = extend(options, { method: \"PATCH\" });\n return this.fetch(url, opts);\n }\n\n public delete(url: string, options: FetchOptions = {}): Promise {\n const opts = extend(options, { method: \"DELETE\" });\n return this.fetch(url, opts);\n }\n}\n\ninterface RetryContext {\n attempts: number;\n delay: number;\n reject: (reason?: any) => void;\n resolve: (value?: Response | PromiseLike) => void;\n retryCount: number;\n}\n\n\n\n// WEBPACK FOOTER //\n// ../../../../packages/sp/src/net/sphttpclient.ts","export default (typeof global !== \"undefined\" ? global :\n typeof self !== \"undefined\" ? self :\n typeof window !== \"undefined\" ? window : {});\n\n\n\n// WEBPACK FOOTER //\n// ../../../../node_modules/rollup-plugin-node-globals/src/global.js","declare var global: { location: string, _spPageContextInfo?: { webAbsoluteUrl?: string, webServerRelativeUrl?: string } };\nimport { combine, isUrlAbsolute, hOP } from \"@pnp/common\";\nimport { SPRuntimeConfig } from \"../config/splibconfig\";\n\n/**\n * Ensures that a given url is absolute for the current web based on context\n *\n * @param candidateUrl The url to make absolute\n *\n */\nexport function toAbsoluteUrl(candidateUrl: string): Promise {\n\n return new Promise((resolve) => {\n\n if (isUrlAbsolute(candidateUrl)) {\n // if we are already absolute, then just return the url\n return resolve(candidateUrl);\n }\n\n if (SPRuntimeConfig.baseUrl !== null) {\n // base url specified either with baseUrl of spfxContext config property\n return resolve(combine(SPRuntimeConfig.baseUrl, candidateUrl));\n }\n\n if (global._spPageContextInfo !== undefined) {\n\n // operating in classic pages\n if (hOP(global._spPageContextInfo, \"webAbsoluteUrl\")) {\n return resolve(combine(global._spPageContextInfo.webAbsoluteUrl, candidateUrl));\n } else if (hOP(global._spPageContextInfo, \"webServerRelativeUrl\")) {\n return resolve(combine(global._spPageContextInfo.webServerRelativeUrl, candidateUrl));\n }\n }\n\n // does window.location exist and have a certain path part in it?\n if (global.location !== undefined) {\n const baseUrl = global.location.toString().toLowerCase();\n [\"/_layouts/\", \"/siteassets/\"].forEach((s: string) => {\n const index = baseUrl.indexOf(s);\n if (index > 0) {\n return resolve(combine(baseUrl.substr(0, index), candidateUrl));\n }\n });\n }\n\n return resolve(candidateUrl);\n });\n}\n\n\n\n// WEBPACK FOOTER //\n// ../../../../packages/sp/src/utils/toabsoluteurl.ts","export function metadata(type: string) {\n return {\n \"__metadata\": { \"type\": type },\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ../../../../packages/sp/src/utils/metadata.ts","import {\n combine,\n isUrlAbsolute,\n FetchOptions,\n mergeOptions,\n extend,\n getGUID,\n jsS,\n} from \"@pnp/common\";\nimport {\n ODataParser,\n ODataQueryable,\n RequestContext,\n} from \"@pnp/odata\";\nimport { Logger, LogLevel } from \"@pnp/logging\";\nimport { SPBatch } from \"./batch\";\nimport { SPHttpClient } from \"./net/sphttpclient\";\nimport { toAbsoluteUrl } from \"./utils/toabsoluteurl\";\nimport { metadata } from \"./utils/metadata\";\n\nexport interface SharePointQueryableConstructor {\n new(baseUrl: string | SharePointQueryable, path?: string): T;\n}\n\n/**\n * SharePointQueryable Base Class\n *\n */\nexport class SharePointQueryable extends ODataQueryable {\n\n protected _forceCaching: boolean;\n\n /**\n * Creates a new instance of the SharePointQueryable class\n *\n * @constructor\n * @param baseUrl A string or SharePointQueryable that should form the base part of the url\n *\n */\n constructor(baseUrl: string | SharePointQueryable, path?: string) {\n super();\n\n this._forceCaching = false;\n\n if (typeof baseUrl === \"string\") {\n // we need to do some extra parsing to get the parent url correct if we are\n // being created from just a string.\n\n if (isUrlAbsolute(baseUrl) || baseUrl.lastIndexOf(\"/\") < 0) {\n this._parentUrl = baseUrl;\n this._url = combine(baseUrl, path);\n } else if (baseUrl.lastIndexOf(\"/\") > baseUrl.lastIndexOf(\"(\")) {\n // .../items(19)/fields\n const index = baseUrl.lastIndexOf(\"/\");\n this._parentUrl = baseUrl.slice(0, index);\n path = combine(baseUrl.slice(index), path);\n this._url = combine(this._parentUrl, path);\n } else {\n // .../items(19)\n const index = baseUrl.lastIndexOf(\"(\");\n this._parentUrl = baseUrl.slice(0, index);\n this._url = combine(baseUrl, path);\n }\n } else {\n this.extend(baseUrl, path);\n const target = baseUrl.query.get(\"@target\");\n if (target !== undefined) {\n this.query.set(\"@target\", target);\n }\n }\n }\n\n /**\n * Creates a new instance of the supplied factory and extends this into that new instance\n *\n * @param factory constructor for the new SharePointQueryable\n */\n public as(factory: SharePointQueryableConstructor): T {\n const o = new factory(this._url, null);\n return extend(o, this, true);\n }\n\n /**\n * Gets the full url with query information\n *\n */\n public toUrlAndQuery(): string {\n\n const aliasedParams = new Map(this.query);\n\n let url = this.toUrl().replace(/'!(@.*?)::(.*?)'/ig, (match, labelName, value) => {\n Logger.write(`Rewriting aliased parameter from match ${match} to label: ${labelName} value: ${value}`, LogLevel.Verbose);\n aliasedParams.set(labelName, `'${value}'`);\n return labelName;\n });\n\n if (aliasedParams.size > 0) {\n const char = url.indexOf(\"?\") > -1 ? \"&\" : \"?\";\n url += `${char}${Array.from(aliasedParams).map((v: [string, string]) => v[0] + \"=\" + v[1]).join(\"&\")}`;\n }\n\n return url;\n }\n\n /**\n * Choose which fields to return\n *\n * @param selects One or more fields to return\n */\n public select(...selects: string[]): this {\n if (selects.length > 0) {\n this.query.set(\"$select\", selects.join(\",\"));\n }\n return this;\n }\n\n /**\n * Expands fields such as lookups to get additional data\n *\n * @param expands The Fields for which to expand the values\n */\n public expand(...expands: string[]): this {\n if (expands.length > 0) {\n this.query.set(\"$expand\", expands.join(\",\"));\n }\n return this;\n }\n\n /**\n * Gets a parent for this instance as specified\n *\n * @param factory The contructor for the class to create\n */\n protected getParent(\n factory: SharePointQueryableConstructor,\n baseUrl: string | SharePointQueryable = this.parentUrl,\n path?: string,\n batch?: SPBatch): T {\n\n let parent = new factory(baseUrl, path).configureFrom(this);\n\n const t = \"@target\";\n if (this.query.has(t)) {\n parent.query.set(t, this.query.get(t));\n }\n if (batch !== undefined) {\n parent = parent.inBatch(batch);\n }\n return parent;\n }\n\n /**\n * Clones this SharePointQueryable into a new SharePointQueryable instance of T\n * @param factory Constructor used to create the new instance\n * @param additionalPath Any additional path to include in the clone\n * @param includeBatch If true this instance's batch will be added to the cloned instance\n */\n protected clone(factory: SharePointQueryableConstructor, additionalPath?: string, includeBatch = true): T {\n\n const clone: T = super._clone(new factory(this, additionalPath), { includeBatch });\n\n // handle sp specific clone actions\n const t = \"@target\";\n if (this.query.has(t)) {\n clone.query.set(t, this.query.get(t));\n }\n\n return clone;\n }\n\n /**\n * Converts the current instance to a request context\n *\n * @param verb The request verb\n * @param options The set of supplied request options\n * @param parser The supplied ODataParser instance\n * @param pipeline Optional request processing pipeline\n */\n protected toRequestContext(\n verb: string,\n options: FetchOptions = {},\n parser: ODataParser,\n pipeline: Array<(c: RequestContext) => Promise>>): Promise> {\n\n const dependencyDispose = this.hasBatch ? this._batchDependency : () => { return; };\n\n return toAbsoluteUrl(this.toUrlAndQuery()).then(url => {\n\n mergeOptions(options, this._options);\n\n // build our request context\n const context: RequestContext = {\n batch: this.batch,\n batchDependency: dependencyDispose,\n cachingOptions: this._cachingOptions,\n clientFactory: () => new SPHttpClient(),\n isBatched: this.hasBatch,\n isCached: this._forceCaching || (this._useCaching && /^get$/i.test(verb)),\n options: options,\n parser: parser,\n pipeline: pipeline,\n requestAbsoluteUrl: url,\n requestId: getGUID(),\n verb: verb,\n };\n\n return context;\n });\n }\n}\n\n/**\n * Represents a REST collection which can be filtered, paged, and selected\n *\n */\nexport class SharePointQueryableCollection extends SharePointQueryable {\n\n /**\n * Filters the returned collection (https://msdn.microsoft.com/en-us/library/office/fp142385.aspx#bk_supported)\n *\n * @param filter The string representing the filter query\n */\n public filter(filter: string): this {\n this.query.set(\"$filter\", filter);\n return this;\n }\n\n /**\n * Orders based on the supplied fields\n *\n * @param orderby The name of the field on which to sort\n * @param ascending If false DESC is appended, otherwise ASC (default)\n */\n public orderBy(orderBy: string, ascending = true): this {\n const o = \"$orderby\";\n const query = this.query.has(o) ? this.query.get(o).split(\",\") : [];\n query.push(`${orderBy} ${ascending ? \"asc\" : \"desc\"}`);\n this.query.set(o, query.join(\",\"));\n return this;\n }\n\n /**\n * Skips the specified number of items\n *\n * @param skip The number of items to skip\n */\n public skip(skip: number): this {\n this.query.set(\"$skip\", skip.toString());\n return this;\n }\n\n /**\n * Limits the query to only return the specified number of items\n *\n * @param top The query row limit\n */\n public top(top: number): this {\n this.query.set(\"$top\", top.toString());\n return this;\n }\n}\n\n/**\n * Represents an instance that can be selected\n *\n */\nexport class SharePointQueryableInstance extends SharePointQueryable {\n\n /**\n * Curries the update function into the common pieces\n * \n * @param type \n * @param mapper \n */\n protected _update(type: string, mapper: (data: Data, props: Props) => Return): (props: Props) => Promise {\n return (props: any) => this.postCore({\n body: jsS(extend(metadata(type), props)),\n headers: {\n \"X-HTTP-Method\": \"MERGE\",\n },\n }).then((d: Data) => mapper(d, props));\n }\n\n /**\n * Deletes this instance\n *\n */\n protected _delete(): Promise {\n return this.postCore({\n headers: {\n \"X-HTTP-Method\": \"DELETE\",\n },\n });\n }\n\n /**\n * Deletes this instance with an etag value in the headers\n * \n * @param eTag eTag to delete\n */\n protected _deleteWithETag(eTag = \"*\"): Promise {\n return this.postCore({\n headers: {\n \"IF-Match\": eTag,\n \"X-HTTP-Method\": \"DELETE\",\n },\n });\n }\n}\n\n/**\n * Decorator used to specify the default path for SharePointQueryable objects\n * \n * @param path \n */\nexport function defaultPath(path: string) {\n\n return function (target: T) {\n\n return class extends target {\n constructor(...args: any[]) {\n super(args[0], args.length > 1 && args[1] !== undefined ? args[1] : path);\n }\n };\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ../../../../packages/sp/src/sharepointqueryable.ts","import { SharePointQueryable, SharePointQueryableInstance, SharePointQueryableCollection, defaultPath } from \"./sharepointqueryable\";\nimport { SiteGroups } from \"./sitegroups\";\nimport { TypedHash, jsS, extend } from \"@pnp/common\";\nimport { metadata } from \"./utils/metadata\";\n\n/**\n * Properties that provide both a getter, and a setter.\n *\n */\nexport interface UserUpdateResult {\n user: SiteUser;\n data: any;\n}\n\n/**\n * Describes a collection of all site collection users\n *\n */\n@defaultPath(\"siteusers\")\nexport class SiteUsers extends SharePointQueryableCollection {\n\n /**\n * Gets a user from the collection by id\n *\n * @param id The id of the user to retrieve\n */\n public getById(id: number): SiteUser {\n return new SiteUser(this, `getById(${id})`);\n }\n\n /**\n * Gets a user from the collection by email\n *\n * @param email The email address of the user to retrieve\n */\n public getByEmail(email: string): SiteUser {\n return new SiteUser(this, `getByEmail('${email}')`);\n }\n\n /**\n * Gets a user from the collection by login name\n *\n * @param loginName The login name of the user to retrieve\n */\n public getByLoginName(loginName: string): SiteUser {\n const su = new SiteUser(this);\n su.concat(`('!@v::${encodeURIComponent(loginName)}')`);\n return su;\n }\n\n /**\n * Removes a user from the collection by id\n *\n * @param id The id of the user to remove\n */\n public removeById(id: number | SharePointQueryable): Promise {\n return this.clone(SiteUsers, `removeById(${id})`).postCore();\n }\n\n /**\n * Removes a user from the collection by login name\n *\n * @param loginName The login name of the user to remove\n */\n public removeByLoginName(loginName: string): Promise {\n const o = this.clone(SiteUsers, `removeByLoginName(@v)`);\n o.query.set(\"@v\", `'${encodeURIComponent(loginName)}'`);\n return o.postCore();\n }\n\n /**\n * Adds a user to a group\n *\n * @param loginName The login name of the user to add to the group\n *\n */\n public add(loginName: string): Promise {\n return this.clone(SiteUsers, null).postCore({\n body: jsS(extend(metadata(\"SP.User\"), { LoginName: loginName })),\n }).then(() => this.getByLoginName(loginName));\n }\n}\n\n/**\n * Base class for a user\n * \n */\nexport class UserBase extends SharePointQueryableInstance {\n\n /**\n * Gets the groups for this user\n *\n */\n public get groups() {\n return new SiteGroups(this, \"groups\");\n }\n}\n\n/**\n * Describes a single user\n *\n */\nexport class SiteUser extends UserBase {\n\n /**\n * Updates this user instance with the supplied properties\n *\n * @param properties A plain object of property names and values to update for the user\n */\n public update = this._update, any>(\"SP.User\", data => ({ data, user: this }));\n\n /**\n * Delete this user\n *\n */\n public delete = this._delete;\n}\n\n/**\n * Represents the current user\n */\n@defaultPath(\"currentuser\")\nexport class CurrentUser extends UserBase { }\n\nexport interface SiteUserProps {\n Email: string;\n Id: number;\n IsHiddenInUI: boolean;\n IsShareByEmailGuestUser: boolean;\n IsSiteAdmin: boolean;\n LoginName: string;\n PrincipalType: number;\n Title: string;\n}\n\n\n\n// WEBPACK FOOTER //\n// ../../../../packages/sp/src/siteusers.ts","import { SharePointQueryableInstance, SharePointQueryableCollection, defaultPath } from \"./sharepointqueryable\";\nimport { SiteUsers } from \"./siteusers\";\nimport { extend, TypedHash, jsS, hOP } from \"@pnp/common\";\nimport { metadata } from \"./utils/metadata\";\n\n/**\n * Principal Type enum\n *\n */\nexport enum PrincipalType {\n None = 0,\n User = 1,\n DistributionList = 2,\n SecurityGroup = 4,\n SharePointGroup = 8,\n All = 15,\n}\n\n/**\n * Results from updating a group\n *\n */\nexport interface GroupUpdateResult {\n group: SiteGroup;\n data: any;\n}\n\n/**\n * Results from adding a group\n *\n */\nexport interface GroupAddResult {\n group: SiteGroup;\n data: any;\n}\n\n/**\n * Describes a collection of site groups\n *\n */\n@defaultPath(\"sitegroups\")\nexport class SiteGroups extends SharePointQueryableCollection {\n\n /**\t\n * Gets a group from the collection by id\t\n *\t\n * @param id The id of the group to retrieve\t\n */\n public getById(id: number) {\n const sg = new SiteGroup(this);\n sg.concat(`(${id})`);\n return sg;\n }\n\n /**\n * Adds a new group to the site collection\n *\n * @param props The group properties object of property names and values to be set for the group\n */\n public add(properties: TypedHash): Promise {\n const postBody = jsS(extend(metadata(\"SP.Group\"), properties));\n\n return this.postCore({ body: postBody }).then((data) => {\n return {\n data: data,\n group: this.getById(data.Id),\n };\n });\n }\n\n /**\n * Gets a group from the collection by name\n *\n * @param groupName The name of the group to retrieve\n */\n public getByName(groupName: string): SiteGroup {\n return new SiteGroup(this, `getByName('${groupName}')`);\n }\n\n /**\n * Removes the group with the specified member id from the collection\n *\n * @param id The id of the group to remove\n */\n public removeById(id: number): Promise {\n return this.clone(SiteGroups, `removeById('${id}')`).postCore();\n }\n\n /**\n * Removes the cross-site group with the specified name from the collection\n *\n * @param loginName The name of the group to remove\n */\n public removeByLoginName(loginName: string): Promise {\n return this.clone(SiteGroups, `removeByLoginName('${loginName}')`).postCore();\n }\n}\n\n/**\n * Describes a single group\n *\n */\nexport class SiteGroup extends SharePointQueryableInstance {\n\n /**\n * Gets the users for this group\n *\n */\n public get users(): SiteUsers {\n return new SiteUsers(this, \"users\");\n }\n\n public update = this._update, any>(\"SP.Group\", (d, p) => {\n let retGroup: SiteGroup = this;\n\n if (hOP(p, \"Title\")) {\n /* tslint:disable-next-line no-string-literal */\n retGroup = this.getParent(SiteGroup, this.parentUrl, `getByName('${p[\"Title\"]}')`);\n }\n\n return {\n data: d,\n group: retGroup,\n };\n });\n\n /**\n * Set the owner of a group using a user id\n * @param userId the id of the user that will be set as the owner of the current group\n */\n public async setUserAsOwner(userId: number): Promise {\n return this.clone(SiteGroup, `SetUserAsOwner(${userId})`).postCore();\n }\n}\n\nexport interface SiteGroupAddResult {\n group: SiteGroup;\n data: any;\n}\n\n\n\n// WEBPACK FOOTER //\n// ../../../../packages/sp/src/sitegroups.ts","import { SharePointQueryableInstance, SharePointQueryableCollection, defaultPath } from \"./sharepointqueryable\";\nimport { SiteGroups } from \"./sitegroups\";\nimport { BasePermissions } from \"./types\";\nimport { extend, TypedHash, jsS, hOP } from \"@pnp/common\";\nimport { metadata } from \"./utils/metadata\";\n\n/**\n * Describes a set of role assignments for the current scope\n *\n */\n@defaultPath(\"roleassignments\")\nexport class RoleAssignments extends SharePointQueryableCollection {\n\n /**\t\n * Gets the role assignment associated with the specified principal id from the collection.\t\n *\t\n * @param id The id of the role assignment\t\n */\n public getById(id: number) {\n const ra = new RoleAssignment(this);\n ra.concat(`(${id})`);\n return ra;\n }\n\n /**\n * Adds a new role assignment with the specified principal and role definitions to the collection\n *\n * @param principalId The id of the user or group to assign permissions to\n * @param roleDefId The id of the role definition that defines the permissions to assign\n *\n */\n public add(principalId: number, roleDefId: number): Promise {\n return this.clone(RoleAssignments, `addroleassignment(principalid=${principalId}, roledefid=${roleDefId})`).postCore();\n }\n\n /**\n * Removes the role assignment with the specified principal and role definition from the collection\n *\n * @param principalId The id of the user or group in the role assignment\n * @param roleDefId The id of the role definition in the role assignment\n *\n */\n public remove(principalId: number, roleDefId: number): Promise {\n return this.clone(RoleAssignments, `removeroleassignment(principalid=${principalId}, roledefid=${roleDefId})`).postCore();\n }\n}\n\n/**\n * Describes a role assignment\n *\n */\nexport class RoleAssignment extends SharePointQueryableInstance {\n\n /**\n * Gets the groups that directly belong to the access control list (ACL) for this securable object\n *\n */\n public get groups(): SiteGroups {\n return new SiteGroups(this, \"groups\");\n }\n\n /**\n * Gets the role definition bindings for this role assignment\n *\n */\n public get bindings(): RoleDefinitionBindings {\n return new RoleDefinitionBindings(this);\n }\n\n /**\n * Deletes this role assignment\n *\n */\n public delete = this._delete;\n}\n\n/**\n * Describes a collection of role definitions\n *\n */\n@defaultPath(\"roledefinitions\")\nexport class RoleDefinitions extends SharePointQueryableCollection {\n\n /**\t \n * Gets the role definition with the specified id from the collection\t \n *\t \n * @param id The id of the role definition\t \n *\t \n */\n public getById(id: number): RoleDefinition {\n return new RoleDefinition(this, `getById(${id})`);\n }\n\n /**\n * Gets the role definition with the specified name\n *\n * @param name The name of the role definition\n *\n */\n public getByName(name: string): RoleDefinition {\n return new RoleDefinition(this, `getbyname('${name}')`);\n }\n\n /**\n * Gets the role definition with the specified role type\n *\n * @param roleTypeKind The roletypekind of the role definition (None=0, Guest=1, Reader=2, Contributor=3, WebDesigner=4, Administrator=5, Editor=6, System=7)\n *\n */\n public getByType(roleTypeKind: number): RoleDefinition {\n return new RoleDefinition(this, `getbytype(${roleTypeKind})`);\n }\n\n /**\n * Creates a role definition\n *\n * @param name The new role definition's name\n * @param description The new role definition's description\n * @param order The order in which the role definition appears\n * @param basePermissions The permissions mask for this role definition\n *\n */\n public add(name: string, description: string, order: number, basePermissions: BasePermissions): Promise {\n\n const postBody = jsS({\n BasePermissions: {\n High: basePermissions.High.toString(),\n Low: basePermissions.Low.toString(),\n },\n Description: description,\n Name: name,\n Order: order,\n __metadata: { \"type\": \"SP.RoleDefinition\" },\n });\n\n return this.postCore({ body: postBody }).then((data) => {\n return {\n data: data,\n definition: this.getById(data.Id),\n };\n });\n }\n}\n\n/**\n * Describes a role definition\n *\n */\nexport class RoleDefinition extends SharePointQueryableInstance {\n\n /**\n * Deletes this role definition\n *\n */\n public delete = this._delete;\n\n /**\n * Updates this role definition with the supplied properties\n *\n * @param properties A plain object hash of values to update for the role definition\n */\n /* tslint:disable no-string-literal */\n public update(properties: TypedHash): Promise {\n\n if (hOP(properties, \"BasePermissions\") !== undefined) {\n properties[\"BasePermissions\"] = extend({ __metadata: { type: \"SP.BasePermissions\" } }, {\n High: properties[\"BasePermissions\"].High.toString(),\n Low: properties[\"BasePermissions\"].Low.toString(),\n });\n }\n\n const postBody = jsS(extend(metadata(\"SP.RoleDefinition\"), properties));\n\n return this.postCore({\n body: postBody,\n headers: {\n \"X-HTTP-Method\": \"MERGE\",\n },\n }).then((data) => {\n\n let retDef: RoleDefinition = this;\n\n if (hOP(properties, \"Name\")) {\n const parent = this.getParent(RoleDefinitions, this.parentUrl, \"\");\n retDef = parent.getByName(properties[\"Name\"]);\n }\n\n return {\n data: data,\n definition: retDef,\n };\n });\n }\n /* tslint:enable */\n}\n\n/**\n * Result from updating a role definition\n *\n */\nexport interface RoleDefinitionUpdateResult {\n definition: RoleDefinition;\n data: any;\n}\n\n/**\n * Result from adding a role definition\n *\n */\nexport interface RoleDefinitionAddResult {\n definition: RoleDefinition;\n data: any;\n}\n\n/**\n * Describes the role definitons bound to a role assignment object\n *\n */\n@defaultPath(\"roledefinitionbindings\")\nexport class RoleDefinitionBindings extends SharePointQueryableCollection { }\n\n\n\n// WEBPACK FOOTER //\n// ../../../../packages/sp/src/roles.ts","// reference: https://msdn.microsoft.com/en-us/library/office/dn600183.aspx\nimport { TypedHash } from \"@pnp/common\";\n\nimport { NavigationNode } from \"./navigation\";\n\n/**\n * Represents the unique sequential location of a change within the change log.\n */\nexport interface ChangeToken {\n /**\n * Gets or sets a string value that contains the serialized representation of the change token generated by the protocol server.\n */\n StringValue: string;\n}\n\n/**\n * Defines a query that is performed against the change log.\n */\nexport interface ChangeQuery {\n /**\n * Gets or sets a value that specifies whether add changes are included in the query.\n */\n Add?: boolean;\n\n /**\n * Gets or sets a value that specifies whether changes to alerts are included in the query.\n */\n Alert?: boolean;\n\n /**\n * Gets or sets a value that specifies the end date and end time for changes that are returned through the query.\n */\n ChangeTokenEnd?: ChangeToken;\n\n /**\n * Gets or sets a value that specifies the start date and start time for changes that are returned through the query.\n */\n ChangeTokenStart?: ChangeToken;\n\n /**\n * Gets or sets a value that specifies whether changes to content types are included in the query.\n */\n ContentType?: boolean;\n\n /**\n * Gets or sets a value that specifies whether deleted objects are included in the query.\n */\n DeleteObject?: boolean;\n\n /**\n * Gets or sets a value that specifies whether changes to fields are included in the query.\n */\n Field?: boolean;\n\n /**\n * Gets or sets a value that specifies whether changes to files are included in the query.\n */\n File?: boolean;\n\n /**\n * Gets or sets value that specifies whether changes to folders are included in the query.\n */\n Folder?: boolean;\n\n /**\n * Gets or sets a value that specifies whether changes to groups are included in the query.\n */\n Group?: boolean;\n\n /**\n * Gets or sets a value that specifies whether adding users to groups is included in the query.\n */\n GroupMembershipAdd?: boolean;\n\n /**\n * Gets or sets a value that specifies whether deleting users from the groups is included in the query.\n */\n GroupMembershipDelete?: boolean;\n\n /**\n * Gets or sets a value that specifies whether general changes to list items are included in the query.\n */\n Item?: boolean;\n\n /**\n * Gets or sets a value that specifies whether changes to lists are included in the query.\n */\n List?: boolean;\n\n /**\n * Gets or sets a value that specifies whether move changes are included in the query.\n */\n Move?: boolean;\n\n /**\n * Gets or sets a value that specifies whether changes to the navigation structure of a site collection are included in the query.\n */\n Navigation?: boolean;\n\n /**\n * Gets or sets a value that specifies whether renaming changes are included in the query.\n */\n Rename?: boolean;\n\n /**\n * Gets or sets a value that specifies whether restoring items from the recycle bin or from backups is included in the query.\n */\n Restore?: boolean;\n\n /**\n * Gets or sets a value that specifies whether adding role assignments is included in the query.\n */\n RoleAssignmentAdd?: boolean;\n\n /**\n * Gets or sets a value that specifies whether adding role assignments is included in the query.\n */\n RoleAssignmentDelete?: boolean;\n\n /**\n * Gets or sets a value that specifies whether adding role assignments is included in the query.\n */\n RoleDefinitionAdd?: boolean;\n\n /**\n * Gets or sets a value that specifies whether adding role assignments is included in the query.\n */\n RoleDefinitionDelete?: boolean;\n\n /**\n * Gets or sets a value that specifies whether adding role assignments is included in the query.\n */\n RoleDefinitionUpdate?: boolean;\n\n /**\n * Gets or sets a value that specifies whether modifications to security policies are included in the query.\n */\n SecurityPolicy?: boolean;\n\n /**\n * Gets or sets a value that specifies whether changes to site collections are included in the query.\n */\n Site?: boolean;\n\n /**\n * Gets or sets a value that specifies whether updates made using the item SystemUpdate method are included in the query.\n */\n SystemUpdate?: boolean;\n\n /**\n * Gets or sets a value that specifies whether update changes are included in the query.\n */\n Update?: boolean;\n\n /**\n * Gets or sets a value that specifies whether changes to users are included in the query.\n */\n User?: boolean;\n\n /**\n * Gets or sets a value that specifies whether changes to views are included in the query.\n */\n View?: boolean;\n\n /**\n * Gets or sets a value that specifies whether changes to Web sites are included in the query.\n */\n Web?: boolean;\n}\n\n/**\n * Specifies a Collaborative Application Markup Language (CAML) query on a list or joined lists.\n */\nexport interface CamlQuery {\n\n /**\n * Gets or sets a value that indicates whether the query returns dates in Coordinated Universal Time (UTC) format.\n */\n DatesInUtc?: boolean;\n\n /**\n * Gets or sets a value that specifies the server relative URL of a list folder from which results will be returned.\n */\n FolderServerRelativeUrl?: string;\n\n /**\n * Gets or sets a value that specifies the information required to get the next page of data for the list view.\n */\n ListItemCollectionPosition?: ListItemCollectionPosition;\n\n /**\n * Gets or sets value that specifies the XML schema that defines the list view.\n */\n ViewXml?: string;\n}\n\n/**\n * Specifies the information required to get the next page of data for a list view.\n */\nexport interface ListItemCollectionPosition {\n /**\n * Gets or sets a value that specifies information, as name-value pairs, required to get the next page of data for a list view.\n */\n PagingInfo: string;\n}\n\n/**\n * Represents the input parameter of the GetListItemChangesSinceToken method.\n */\nexport interface ChangeLogitemQuery {\n /**\n * The change token for the request.\n */\n ChangeToken?: string;\n\n /**\n * The XML element that defines custom filtering for the query.\n */\n Contains?: string;\n\n /**\n * The records from the list to return and their return order.\n */\n Query?: string;\n\n /**\n * The options for modifying the query.\n */\n QueryOptions?: string;\n\n /**\n * RowLimit\n */\n RowLimit?: string;\n\n /**\n * The names of the fields to include in the query result.\n */\n ViewFields?: string;\n\n /**\n * The GUID of the view.\n */\n ViewName?: string;\n}\n\n/**\n * Determines the display mode of the given control or view\n */\nexport enum ControlMode {\n Display = 1,\n Edit = 2,\n New = 3,\n}\n\n/**\n * Represents properties of a list item field and its value.\n */\nexport interface ListItemFormUpdateValue {\n\n /**\n * The error message result after validating the value for the field.\n */\n ErrorMessage?: string;\n\n /**\n * The internal name of the field.\n */\n FieldName?: string;\n\n /**\n * The value of the field, in string format.\n */\n FieldValue?: string;\n\n /**\n * Indicates whether there was an error result after validating the value for the field.\n */\n HasException?: boolean;\n}\n\n/**\n * Specifies the type of the field.\n */\nexport enum FieldTypes {\n Invalid = 0,\n Integer = 1,\n Text = 2,\n Note = 3,\n DateTime = 4,\n Counter = 5,\n Choice = 6,\n Lookup = 7,\n Boolean = 8,\n Number = 9,\n Currency = 10,\n URL = 11,\n Computed = 12,\n Threading = 13,\n Guid = 14,\n MultiChoice = 15,\n GridChoice = 16,\n Calculated = 17,\n File = 18,\n Attachments = 19,\n User = 20,\n Recurrence = 21,\n CrossProjectLink = 22,\n ModStat = 23,\n Error = 24,\n ContentTypeId = 25,\n PageSeparator = 26,\n ThreadIndex = 27,\n WorkflowStatus = 28,\n AllDayEvent = 29,\n WorkflowEventType = 30,\n}\n\nexport enum DateTimeFieldFormatType {\n DateOnly = 0,\n DateTime = 1,\n}\n\nexport enum DateTimeFieldFriendlyFormatType {\n Unspecified = 0,\n Disabled = 1,\n Relative = 2,\n}\n\n/**\n * Specifies the control settings while adding a field.\n */\nexport enum AddFieldOptions {\n /**\n * Specify that a new field added to the list must also be added to the default content type in the site collection\n */\n DefaultValue = 0,\n /**\n * Specify that a new field added to the list must also be added to the default content type in the site collection.\n */\n AddToDefaultContentType = 1,\n /**\n * Specify that a new field must not be added to any other content type\n */\n AddToNoContentType = 2,\n /**\n * Specify that a new field that is added to the specified list must also be added to all content types in the site collection\n */\n AddToAllContentTypes = 4,\n /**\n * Specify adding an internal field name hint for the purpose of avoiding possible database locking or field renaming operations\n */\n AddFieldInternalNameHint = 8,\n /**\n * Specify that a new field that is added to the specified list must also be added to the default list view\n */\n AddFieldToDefaultView = 16,\n /**\n * Specify to confirm that no other field has the same display name\n */\n AddFieldCheckDisplayName = 32,\n}\n\nexport interface XmlSchemaFieldCreationInformation {\n Options?: AddFieldOptions;\n SchemaXml: string;\n}\n\nexport enum CalendarType {\n Gregorian = 1,\n Japan = 3,\n Taiwan = 4,\n Korea = 5,\n Hijri = 6,\n Thai = 7,\n Hebrew = 8,\n GregorianMEFrench = 9,\n GregorianArabic = 10,\n GregorianXLITEnglish = 11,\n GregorianXLITFrench = 12,\n KoreaJapanLunar = 14,\n ChineseLunar = 15,\n SakaEra = 16,\n UmAlQura = 23,\n}\n\nexport enum UrlFieldFormatType {\n Hyperlink = 0,\n Image = 1,\n}\n\nexport interface BasePermissions {\n Low: number;\n High: number;\n}\n\nexport enum PermissionKind {\n\n /**\n * Has no permissions on the Site. Not available through the user interface.\n */\n EmptyMask = 0,\n\n /**\n * View items in lists, documents in document libraries, and Web discussion comments.\n */\n ViewListItems = 1,\n\n /**\n * Add items to lists, documents to document libraries, and Web discussion comments.\n */\n AddListItems = 2,\n\n /**\n * Edit items in lists, edit documents in document libraries, edit Web discussion comments\n * in documents, and customize Web Part Pages in document libraries.\n */\n EditListItems = 3,\n\n /**\n * Delete items from a list, documents from a document library, and Web discussion\n * comments in documents.\n */\n DeleteListItems = 4,\n\n /**\n * Approve a minor version of a list item or document.\n */\n ApproveItems = 5,\n\n /**\n * View the source of documents with server-side file handlers.\n */\n OpenItems = 6,\n\n /**\n * View past versions of a list item or document.\n */\n ViewVersions = 7,\n\n /**\n * Delete past versions of a list item or document.\n */\n DeleteVersions = 8,\n\n /**\n * Discard or check in a document which is checked out to another user.\n */\n CancelCheckout = 9,\n\n /**\n * Create, change, and delete personal views of lists.\n */\n ManagePersonalViews = 10,\n\n /**\n * Create and delete lists, add or remove columns in a list, and add or remove public views of a list.\n */\n ManageLists = 12,\n\n /**\n * View forms, views, and application pages, and enumerate lists.\n */\n ViewFormPages = 13,\n\n /**\n * Make content of a list or document library retrieveable for anonymous users through SharePoint search.\n * The list permissions in the site do not change.\n */\n AnonymousSearchAccessList = 14,\n\n /**\n * Allow users to open a Site, list, or folder to access items inside that container.\n */\n Open = 17,\n\n /**\n * View pages in a Site.\n */\n ViewPages = 18,\n\n /**\n * Add, change, or delete HTML pages or Web Part Pages, and edit the Site using\n * a Windows SharePoint Services compatible editor.\n */\n AddAndCustomizePages = 19,\n\n /**\n * Apply a theme or borders to the entire Site.\n */\n ApplyThemeAndBorder = 20,\n\n /**\n * Apply a style sheet (.css file) to the Site.\n */\n ApplyStyleSheets = 21,\n\n /**\n * View reports on Site usage.\n */\n ViewUsageData = 22,\n\n /**\n * Create a Site using Self-Service Site Creation.\n */\n CreateSSCSite = 23,\n\n /**\n * Create subsites such as team sites, Meeting Workspace sites, and Document Workspace sites.\n */\n ManageSubwebs = 24,\n\n /**\n * Create a group of users that can be used anywhere within the site collection.\n */\n CreateGroups = 25,\n\n /**\n * Create and change permission levels on the Site and assign permissions to users\n * and groups.\n */\n ManagePermissions = 26,\n\n /**\n * Enumerate files and folders in a Site using Microsoft Office SharePoint Designer\n * and WebDAV interfaces.\n */\n BrowseDirectories = 27,\n\n /**\n * View information about users of the Site.\n */\n BrowseUserInfo = 28,\n\n /**\n * Add or remove personal Web Parts on a Web Part Page.\n */\n AddDelPrivateWebParts = 29,\n\n /**\n * Update Web Parts to display personalized information.\n */\n UpdatePersonalWebParts = 30,\n\n /**\n * Grant the ability to perform all administration tasks for the Site as well as\n * manage content, activate, deactivate, or edit properties of Site scoped Features\n * through the object model or through the user interface (UI). When granted on the\n * root Site of a Site Collection, activate, deactivate, or edit properties of\n * site collection scoped Features through the object model. To browse to the Site\n * Collection Features page and activate or deactivate Site Collection scoped Features\n * through the UI, you must be a Site Collection administrator.\n */\n ManageWeb = 31,\n\n /**\n * Content of lists and document libraries in the Web site will be retrieveable for anonymous users through\n * SharePoint search if the list or document library has AnonymousSearchAccessList set.\n */\n AnonymousSearchAccessWebLists = 32,\n\n /**\n * Use features that launch client applications. Otherwise, users must work on documents\n * locally and upload changes.\n */\n UseClientIntegration = 37,\n\n /**\n * Use SOAP, WebDAV, or Microsoft Office SharePoint Designer interfaces to access the Site.\n */\n UseRemoteAPIs = 38,\n\n /**\n * Manage alerts for all users of the Site.\n */\n ManageAlerts = 39,\n\n /**\n * Create e-mail alerts.\n */\n CreateAlerts = 40,\n\n /**\n * Allows a user to change his or her user information, such as adding a picture.\n */\n EditMyUserInfo = 41,\n\n /**\n * Enumerate permissions on Site, list, folder, document, or list item.\n */\n EnumeratePermissions = 63,\n\n /**\n * Has all permissions on the Site. Not available through the user interface.\n */\n FullMask = 65,\n}\n\nexport interface FollowedContent {\n FollowedDocumentsUrl: string;\n FollowedSitesUrl: string;\n}\n\nexport interface UserProfile {\n /**\n * An object containing the user's FollowedDocumentsUrl and FollowedSitesUrl.\n */\n FollowedContent?: FollowedContent;\n /**\n * The account name of the user. (SharePoint Online only)\n */\n AccountName?: string;\n /**\n * The display name of the user. (SharePoint Online only)\n */\n DisplayName?: string;\n /**\n * The FirstRun flag of the user. (SharePoint Online only)\n */\n O15FirstRunExperience?: number;\n /**\n * The personal site of the user.\n */\n PersonalSite?: string;\n /**\n * The capabilities of the user's personal site. Represents a bitwise PersonalSiteCapabilities value:\n * None = 0; Profile Value = 1; Social Value = 2; Storage Value = 4; MyTasksDashboard Value = 8; Education Value = 16; Guest Value = 32.\n */\n PersonalSiteCapabilities?: number;\n /**\n * The error thrown when the user's personal site was first created, if any. (SharePoint Online only)\n */\n PersonalSiteFirstCreationError?: string;\n /**\n * The date and time when the user's personal site was first created. (SharePoint Online only)\n */\n PersonalSiteFirstCreationTime?: Date;\n /**\n * The status for the state of the personal site instantiation\n */\n PersonalSiteInstantiationState?: number;\n /**\n * The date and time when the user's personal site was last created. (SharePoint Online only)\n */\n PersonalSiteLastCreationTime?: Date;\n /**\n * The number of attempts made to create the user's personal site. (SharePoint Online only)\n */\n PersonalSiteNumberOfRetries?: number;\n /**\n * Indicates whether the user's picture is imported from Exchange.\n */\n PictureImportEnabled?: boolean;\n /**\n * The public URL of the personal site of the current user. (SharePoint Online only)\n */\n PublicUrl?: string;\n /**\n * The URL used to create the user's personal site.\n */\n UrlToCreatePersonalSite?: string;\n}\n\nexport interface HashTag {\n /**\n * The hash tag's internal name.\n */\n Name?: string;\n /**\n * The number of times that the hash tag is used.\n */\n UseCount?: number;\n}\n\nexport interface HashTagCollection {\n Items: HashTag[];\n}\n\nexport interface UserIdInfo {\n NameId?: string;\n NameIdIssuer?: string;\n}\n\n/**\n * Specifies the type of a principal.\n */\n/* tslint:disable:no-bitwise */\nexport const enum PrincipalType {\n /**\n * Enumeration whose value specifies no principal type.\n */\n None = 0,\n /**\n * Enumeration whose value specifies a user as the principal type.\n */\n User = 1,\n /**\n * Enumeration whose value specifies a distribution list as the principal type.\n */\n DistributionList = 2,\n /**\n * Enumeration whose value specifies a security group as the principal type.\n */\n SecurityGroup = 4,\n /**\n * Enumeration whose value specifies a group as the principal type.\n */\n SharePointGroup = 8,\n /**\n * Enumeration whose value specifies all principal types.\n */\n All = SharePointGroup | SecurityGroup | DistributionList | User,\n}\n/* tslint:enable:no-bitwise */\n\n/**\n * Specifies the source of a principal.\n */\n/* tslint:disable:no-bitwise */\nexport const enum PrincipalSource {\n /**\n * Enumeration whose value specifies no principal source.\n */\n None = 0,\n /**\n * Enumeration whose value specifies user information list as the principal source.\n */\n UserInfoList = 1,\n /**\n * Enumeration whose value specifies Active Directory as the principal source.\n */\n Windows = 2,\n /**\n * Enumeration whose value specifies the current membership provider as the principal source.\n */\n MembershipProvider = 4,\n /**\n * Enumeration whose value specifies the current role provider as the principal source.\n */\n RoleProvider = 8,\n /**\n * Enumeration whose value specifies all principal sources.\n */\n All = RoleProvider | MembershipProvider | Windows | UserInfoList,\n}\n/* tslint:enable:no-bitwise */\n\nexport enum RoleType {\n None = 0,\n Guest = 1,\n Reader = 2,\n Contributor = 3,\n WebDesigner = 4,\n Administrator = 5,\n}\n\nexport interface PrincipalInfo {\n Department: string;\n DisplayName: string;\n Email: string;\n JobTitle: string;\n LoginName: string;\n Mobile: string;\n PrincipalId: number;\n PrincipalType: PrincipalType;\n SIPAddress: string;\n}\n\nexport interface DocumentLibraryInformation {\n AbsoluteUrl?: string;\n Modified?: Date;\n ModifiedFriendlyDisplay?: string;\n ServerRelativeUrl?: string;\n Title?: string;\n}\n\nexport interface ContextInfo {\n FormDigestTimeoutSeconds?: number;\n FormDigestValue?: number;\n LibraryVersion?: string;\n SiteFullUrl?: string;\n SupportedSchemaVersions?: string[];\n WebFullUrl?: string;\n}\n\nexport interface RenderListData {\n Row: any[];\n FirstRow: number;\n FolderPermissions: string;\n LastRow: number;\n FilterLink: string;\n ForceNoHierarchy: string;\n HierarchyHasIndention: string;\n}\n\nexport enum PageType {\n Invalid = -1,\n DefaultView,\n NormalView,\n DialogView,\n View,\n DisplayForm,\n DisplayFormDialog,\n EditForm,\n EditFormDialog,\n NewForm,\n NewFormDialog,\n SolutionForm,\n PAGE_MAXITEMS,\n}\n\nexport interface ListFormData {\n ContentType?: string;\n Title?: string;\n Author?: string;\n Editor?: string;\n Created?: Date;\n Modified: Date;\n Attachments?: any;\n ListSchema?: any;\n FormControlMode?: number;\n FieldControlModes?: {\n Title?: number,\n Author?: number,\n Editor?: number,\n Created?: number,\n Modified?: number,\n Attachments?: number,\n };\n WebAttributes?: {\n WebUrl?: string,\n EffectivePresenceEnabled?: boolean,\n AllowScriptableWebParts?: boolean,\n PermissionCustomizePages?: boolean,\n LCID?: number,\n CurrentUserId?: number,\n };\n ItemAttributes?: {\n Id?: number,\n FsObjType?: number,\n ExternalListItem?: boolean,\n Url?: string,\n EffectiveBasePermissionsLow?: number,\n EffectiveBasePermissionsHigh?: number,\n };\n ListAttributes?: {\n Id?: string,\n BaseType?: number,\n Direction?: string,\n ListTemplateType?: number,\n DefaultItemOpen?: number,\n EnableVersioning?: boolean,\n };\n CSRCustomLayout?: boolean;\n PostBackRequired?: boolean;\n PreviousPostBackHandled?: boolean;\n UploadMode?: boolean;\n SubmitButtonID?: string;\n ItemContentTypeName?: string;\n ItemContentTypeId?: string;\n JSLinks?: string;\n}\n\nexport enum SharingLinkKind {\n /**\n * Uninitialized link\n */\n Uninitialized = 0,\n /**\n * Direct link to the object being shared\n */\n Direct = 1,\n /**\n * Organization-shareable link to the object being shared with view permissions\n */\n OrganizationView = 2,\n /**\n * Organization-shareable link to the object being shared with edit permissions\n */\n OrganizationEdit = 3,\n /**\n * View only anonymous link\n */\n AnonymousView = 4,\n /**\n * Read/Write anonymous link\n */\n AnonymousEdit = 5,\n /**\n * Flexible sharing Link where properties can change without affecting link URL\n */\n Flexible = 6,\n}\n\nexport interface ShareObjectOptions {\n url?: string;\n loginNames?: string | string[];\n role: SharingRole;\n emailData?: SharingEmailData;\n group?: RoleType;\n propagateAcl?: boolean;\n includeAnonymousLinkInEmail?: boolean;\n useSimplifiedRoles?: boolean;\n}\n\n/**\n * Indicates the role of the sharing link\n */\nexport enum SharingRole {\n None = 0,\n View = 1,\n Edit = 2,\n Owner = 3,\n}\n\n/**\n * Represents email data.\n */\nexport interface SharingEmailData {\n\n /**\n * The e-mail subject.\n */\n subject?: string;\n\n /**\n * The e-mail body.\n */\n body: string;\n}\n\nexport interface ShareLinkSettings {\n /**\n * The optional unique identifier of an existing sharing link to be retrieved and updated if necessary.\n */\n shareId?: string;\n\n /**\n * The kind of the sharing link to be created.\n */\n linkKind: SharingLinkKind;\n\n /**\n * A date/time string for which the format conforms to the ISO 8601:2004(E) complete representation for calendar date and time of day and\n * which represents the time and date of expiry for the anonymous link. Both the minutes and hour value must be specified for the\n * difference between the local and UTC time. Midnight is represented as 00:00:00.\n */\n expiration?: string;\n\n /**\n * The role to be used for the sharing link. This is required for Flexible links, and ignored for legacy link kinds.\n */\n role?: SharingRole;\n\n /**\n * Indicates if the sharing link, should support anonymous access. This is required for Flexible links, and ignored for legacy link kinds.\n */\n allowAnonymousAccess?: boolean;\n}\n\nexport interface ShareLinkRequest {\n\n /**\n * A string of JSON representing users in people picker format. Only needed if an e-mail notification should be sent.\n */\n peoplePickerInput?: string;\n\n /**\n * Whether to create the link or not if it doesn't exist yet.\n */\n createLink: boolean;\n\n /**\n * The e-mail data. Only needed if an e-mail notification should be sent.\n */\n emailData?: SharingEmailData;\n\n /**\n * The settings for the sharing link to be created/updated\n */\n settings: ShareLinkSettings;\n}\n\n/**\n * Represents a response for sharing a link\n */\nexport interface ShareLinkResponse {\n /**\n * A SharingLinkInfo that represents the sharing link. Will be populated if sharing operation is returning a sharing link.\n */\n sharingLinkInfo: SharingLinkInfo;\n}\n\nexport interface SharingLinkInfo {\n\n AllowsAnonymousAccess: boolean;\n Created: string;\n CreatedBy: PrincipalInfo;\n Expiration: string;\n IsActive: boolean;\n IsEditLink: boolean;\n IsFormsLink: boolean;\n IsUnhealthy: boolean;\n LastModified: string;\n LastModifiedBy: PrincipalInfo;\n LinkKind: SharingLinkKind;\n ShareId: string;\n Url: string;\n}\n\nexport enum SharingOperationStatusCode {\n /**\n * The share operation completed without errors.\n */\n CompletedSuccessfully = 0,\n /**\n * The share operation completed and generated requests for access.\n */\n AccessRequestsQueued = 1,\n /**\n * The share operation failed as there were no resolved users.\n */\n NoResolvedUsers = -1,\n /**\n * The share operation failed due to insufficient permissions.\n */\n AccessDenied = -2,\n /**\n * The share operation failed when attempting a cross site share, which is not supported.\n */\n CrossSiteRequestNotSupported = -3,\n /**\n * The sharing operation failed due to an unknown error.\n */\n UnknowError = -4,\n /**\n * The text you typed is too long. Please shorten it.\n */\n EmailBodyTooLong = -5,\n /**\n * The maximum number of unique scopes in the list has been exceeded.\n */\n ListUniqueScopesExceeded = -6,\n /**\n * The share operation failed because a sharing capability is disabled in the site.\n */\n CapabilityDisabled = -7,\n /**\n * The specified object for the share operation is not supported.\n */\n ObjectNotSupported = -8,\n /**\n * A SharePoint group cannot contain another SharePoint group.\n */\n NestedGroupsNotSupported = -9,\n}\n\nexport interface SharingResult {\n\n /**\n * The relative URL of a page which can be navigated to, to show permissions.\n */\n PermissionsPageRelativeUrl?: string;\n\n /**\n * A collection of users which have new pending access requests as a result of sharing.\n */\n UsersWithAccessRequests?: any[]; // SPSharingUserCollection\n\n /**\n * An enumeration which summarizes the result of the sharing operation.\n */\n StatusCode?: SharingOperationStatusCode;\n\n /**\n * An error message about the failure if sharing was unsuccessful.\n */\n ErrorMessage?: string;\n\n /**\n * A list of UserSharingResults from attempting to share a securable with unique permissions.\n */\n UniquelyPermissionedUsers?: UserSharingResult[];\n /**\n * Groups which were granted permissions.\n */\n GroupsSharedWith?: any[]; // SPGroupCollection\n\n /**\n * The SharePoint group users were added to, if any were added to a group.\n */\n GroupUsersAddedTo?: any; // SPGroup\n\n /**\n * A list of users being added to a SharePoint permissions goup\n */\n UsersAddedToGroup?: UserSharingResult[];\n\n /**\n * A list of SPInvitationCreationResult for external users being invited to have access.\n */\n InvitedUsers?: SPInvitationCreationResult[];\n\n /**\n * The name of the securable being shared.\n */\n Name?: string;\n\n /**\n * The url of the securable being shared.\n */\n Url?: string;\n\n /**\n * IconUrl\n */\n IconUrl?: string;\n}\n\nexport interface UserSharingResult {\n IsUserKnown?: boolean;\n Status?: boolean;\n Message?: string;\n User?: string;\n DisplayName?: string;\n Email?: string;\n CurrentRole?: SharingRole;\n AllowedRoles?: SharingRole[];\n InvitationLink?: string;\n}\n\nexport interface SPInvitationCreationResult {\n Succeeded?: boolean;\n Email?: string;\n InvitationLink?: string;\n}\n\nexport interface SharingRecipient {\n email?: string;\n alias?: string;\n}\n\nexport interface SharingEntityPermission {\n /**\n * The Input Entity provided to the Call.\n */\n inputEntity: string;\n /**\n * The Resolved Entity after resolving using PeoplePicker API.\n */\n resolvedEntity: string;\n /**\n * Does the Entity have Access to the Securable Object\n */\n hasAccess: boolean;\n /**\n * Role of the Entity on ListItem\n */\n role: SharingRole;\n}\n\nexport interface SharingInformationRequest {\n /**\n * Max Principal's to return.\n */\n maxPrincipalsToReturn: number;\n /**\n * Supported Features (For future use by Office Client).\n */\n clientSupportedFeatures: string;\n}\n\nexport interface ObjectSharingSettings {\n /**\n * The URL pointing to the containing SPWeb object\n */\n WebUrl: string;\n /**\n * The unique ID of the parent list (if applicable)\n */\n ListId?: string;\n /**\n * The list item ID (if applicable)\n */\n ItemId?: string;\n /**\n * The object title\n */\n ItemName: string;\n /**\n * The server relative object URL\n */\n ItemUrl: string;\n /**\n * Contains information about the sharing state of a shareable object\n */\n ObjectSharingInformation: any; // SPObjectSharingInformation\n /**\n * Boolean indicating whether the sharing context operates under the access request mode\n */\n AccessRequestMode: boolean;\n /**\n * Boolean indicating whether the sharing context operates under the permissions only mode\n * (i.e. adding to a group or hiding the groups dropdown in the SharePoint UI)\n */\n PermissionsOnlyMode: boolean;\n /**\n * URL of the site from which the shared object inherits permissions\n */\n InheritingWebLink: string;\n /**\n * Boolean flag denoting if guest users are enabled for the site collection\n */\n ShareByEmailEnabled: boolean;\n /**\n * Boolean indicating whether the current user is a guest user\n */\n IsGuestUser: boolean;\n /**\n * Boolean indicating whether the site has the standard \"Editor\" role\n */\n HasEditRole: boolean;\n /**\n * Boolean indicating whether the site has the standard \"Reader\" role\n */\n HasReadRole: boolean;\n /**\n * Boolean indicating whether the object to share is a picture library\n */\n IsPictureLibrary: boolean;\n /**\n * Boolean indicating whether the folder object can be shared\n */\n CanShareFolder: boolean;\n /**\n * Boolean indicating whether email invitations can be sent\n */\n CanSendEmail: boolean;\n /**\n * Default share link type\n */\n DefaultShareLinkType: SharingLinkKind;\n /**\n * Boolean indicating whether the object to share supports ACL propagation\n */\n SupportsAclPropagation: boolean;\n /**\n * Boolean indicating whether the current user can only share within the tenancy\n */\n CanCurrentUserShareInternally: boolean;\n /**\n * Boolean indicating whether the current user can share outside the tenancy, by inviting external users\n */\n CanCurrentUserShareExternally: boolean;\n /**\n * Boolean indicating whether the current user can retrieve an anonymous View link, if one has already been created\n * If one has not been created, the user cannot create one\n */\n CanCurrentUserRetrieveReadonlyLink: boolean;\n /**\n * Boolean indicating whether the current user can create or disable an anonymous Edit link\n */\n CanCurrentUserManageReadonlyLink: boolean;\n /**\n * Boolean indicating whether the current user can retrieve an anonymous Edit link, if one has already been created\n * If one has not been created, the user cannot create one\n */\n CanCurrentUserRetrieveReadWriteLink: boolean;\n /**\n * Boolean indicating whether the current user can create or disable an anonymous Edit link\n */\n CanCurrentUserManageReadWriteLink: boolean;\n /**\n * Boolean indicating whether the current user can retrieve an organization View link, if one has already been created\n * If one has not been created, the user cannot create one\n */\n CanCurrentUserRetrieveOrganizationReadonlyLink: boolean;\n /**\n * Boolean indicating whether the current user can create or disable an organization Edit link\n */\n CanCurrentUserManageOrganizationReadonlyLink: boolean;\n /**\n * Boolean indicating whether the current user can retrieve an organization Edit link, if one has already been created\n * If one has not been created, the user cannot create one\n */\n CanCurrentUserRetrieveOrganizationReadWriteLink: boolean;\n /**\n * Boolean indicating whether the current user can create or disable an organization Edit link\n */\n CanCurrentUserManageOrganizationReadWriteLink: boolean;\n /**\n * Boolean indicating whether the current user can make use of Share-By-Link\n */\n CanSendLink: boolean;\n /**\n * Boolean indicating whether the client logic should warn the user\n * that they are about to share with external email addresses.\n */\n ShowExternalSharingWarning: boolean;\n /**\n * A list of SharingPermissionInformation objects that can be used to share\n */\n SharingPermissions: any[]; // SPSharingPermissionInformationCollection\n /**\n * A dictionary object that lists the display name and the id of\n * the SharePoint simplified roles (edit, view)\n */\n SimplifiedRoles: { [key: string]: string };\n /**\n * A dictionary object that lists the display name and the id of the SharePoint groups\n */\n GroupsList: { [key: string]: string };\n /**\n * A dictionary object that lists the display name and the id of the SharePoint regular roles\n */\n Roles: { [key: string]: string };\n /**\n * An object containing the SharePoint UI specific sharing settings.\n */\n SharePointSettings: any; // SharePointSharingSettings\n /**\n * Boolean indicating whether the current user is a site collection administrator\n */\n IsUserSiteAdmin: boolean;\n /**\n * A value that indicates number of days an anonymous link can be valid before it expires\n */\n RequiredAnonymousLinkExpirationInDays: number;\n}\n\nexport interface SharingInformation {\n /**\n * External Sharing.\n */\n canAddExternalPrincipal?: boolean;\n /**\n * Internal Sharing.\n */\n canAddInternalPrincipal?: boolean;\n /**\n * Can Send Email.\n */\n canSendEmail?: boolean;\n /**\n * Can Use Simplified Roles present in Roles Enum.\n */\n canUseSimplifiedRoles?: boolean;\n /**\n * Has Unique Permissions.\n */\n hasUniquePermissions?: boolean;\n /**\n * Current Users Role on the Item.\n */\n currentRole?: SharingRole;\n /**\n * Does the User+Item require Approval from Admin for Sharing.\n */\n requiresAccessApproval?: boolean;\n /**\n * (Owners only)Whether there are pending access requests for the securable object.\n */\n hasPendingAccessRequests?: boolean;\n /**\n * (Owners only)The link to the access requests page for the securable object, or an empty string if the link is not available.\n */\n pendingAccessRequestsLink?: string;\n /**\n * sharedObjectType\n */\n sharedObjectType?: SPSharedObjectType;\n /**\n * Url for the Securable Object (Encoded).\n */\n directUrl?: string;\n /**\n * Parent Web Url for the Securable Object (Encoded).\n */\n webUrl?: string;\n /**\n * Default SharingLinkKind.\n */\n defaultLinkKind?: SharingLinkKind;\n /**\n * Tenant's SharingDomainRestrictionMode.\n */\n domainRestrictionMode?: SharingDomainRestrictionMode;\n /**\n * Tenant's RestrictedDomains.\n */\n RestrictedDomains?: string;\n /**\n * Tenant's Anonymous Link Expiration Restriction in Days.\n */\n anonymousLinkExpirationRestrictionDays?: number;\n /**\n * The PermissionCollection that are on the Securable Object (Princpals & Links)\n */\n permissionsInformation?: any; // PermissionCollection\n /**\n * PickerSettings used by the PeoplePicker Control.\n */\n pickerSettings?: any; // PickerSettings\n}\n\nexport enum SPSharedObjectType {\n Unknown = 0,\n File = 1,\n Folder = 2,\n Item = 3,\n List = 4,\n Web = 5,\n Max = 6,\n}\n\nexport enum SharingDomainRestrictionMode {\n None = 0,\n AllowList = 1,\n BlockList = 2,\n}\n\nexport interface EmailProperties {\n\n To: string[];\n CC?: string[];\n BCC?: string[];\n Subject: string;\n Body: string;\n AdditionalHeaders?: TypedHash;\n From?: string;\n}\n\nexport interface WikiPageCreationInformation {\n /**\n * The server-relative-url of the wiki page to be created.\n */\n ServerRelativeUrl: string;\n\n /**\n * The wiki content to be set in the wiki page.\n */\n WikiHtmlContent: string;\n}\n\nexport enum RenderListDataOptions {\n None = 0,\n ContextInfo = 1,\n ListData = 2,\n ListSchema = 4,\n MenuView = 8,\n ListContentType = 16,\n FileSystemItemId = 32,\n ClientFormSchema = 64,\n QuickLaunch = 128,\n Spotlight = 256,\n Visualization = 512,\n ViewMetadata = 1024,\n DisableAutoHyperlink = 2048,\n EnableMediaTAUrls = 4096,\n ParentInfo = 8192,\n PageContextInfo = 16384,\n ClientSideComponentManifest = 32768,\n}\n\nexport interface RenderListDataParameters {\n AllowMultipleValueFilterForTaxonomyFields?: boolean;\n DatesInUtc?: boolean;\n ExpandGroups?: boolean;\n FirstGroupOnly?: boolean;\n FolderServerRelativeUrl?: string;\n ImageFieldsToTryRewriteToCdnUrls?: string;\n OverrideViewXml?: string;\n Paging?: string;\n RenderOptions?: RenderListDataOptions[] | number;\n ReplaceGroup?: boolean;\n ViewXml?: string;\n}\n\nexport interface MenuNode {\n CustomProperties: any[];\n FriendlyUrlSegment: string;\n IsDeleted: boolean;\n IsHidden: boolean;\n Key: string;\n Nodes: MenuNode[];\n NodeType: number;\n SimpleUrl: string;\n Title: string;\n}\n\nexport interface MenuNodeCollection {\n FriendlyUrlPrefix: string;\n Nodes: MenuNode[];\n SimpleUrl: string;\n SPSitePrefix: string;\n SPWebPrefix: string;\n StartingNodeKey: string;\n StartingNodeTitle: string;\n Version: Date;\n}\n\nexport enum FieldUserSelectionMode {\n PeopleAndGroups = 1,\n PeopleOnly = 0,\n}\n\nexport interface FieldCreationProperties extends TypedHash {\n DefaultFormula?: string;\n Description?: string;\n EnforceUniqueValues?: boolean;\n FieldTypeKind?: number;\n Group?: string;\n Hidden?: boolean;\n Indexed?: boolean;\n Required?: boolean;\n Title?: string;\n ValidationFormula?: string;\n ValidationMessage?: string;\n}\n\nexport enum ChoiceFieldFormatType {\n Dropdown,\n RadioButtons,\n}\n\n/**\n * Client people picker query parameters\n */\nexport interface ClientPeoplePickerQueryParameters {\n /**\n * Gets or sets a value that specifies whether e-mail addresses can be used to perform search.\n */\n AllowEmailAddresses?: boolean;\n /**\n * Gets or sets a value that specifies whether multiple entities are allowed.\n */\n AllowMultipleEntities?: boolean;\n /**\n * Gets or sets a value that specifies whether only e-mail addresses can be used to perform search.\n */\n AllowOnlyEmailAddresses?: boolean;\n /**\n * Gets or sets a value that specifies whether all URL zones are used to perform search.\n */\n AllUrlZones?: boolean;\n /**\n * Gets or sets a value that specifies claim providers that are used to perform search.\n */\n EnabledClaimProviders?: string;\n /**\n * Gets or sets a value that specifies whether claims are forced (if yes, multiple results for single entity can be returned).\n */\n ForceClaims?: boolean;\n /**\n * Gets or sets a value that specifies limit of results returned.\n */\n MaximumEntitySuggestions: number;\n /**\n * Gets or sets a value that specifies principal sources to perform search.\n */\n PrincipalSource?: PrincipalSource;\n /**\n * Gets or sets a value that specifies principal types to search for.\n */\n PrincipalType?: PrincipalType;\n /**\n * Gets or sets a value that specifies additional query settings.\n */\n QuerySettings?: PeoplePickerQuerySettings;\n /**\n * Gets or sets a value that specifies the term to search for.\n */\n QueryString: string;\n /**\n * Gets or sets a value that specifies ID of the SharePoint Group that will be used to perform search.\n */\n SharePointGroupID?: number;\n /**\n * Gets or sets a value that specifies URL zones that are used to perform search.\n */\n UrlZone?: UrlZone;\n /**\n * Gets or sets a value that specifies whether search is limited to specific URL zone.\n */\n UrlZoneSpecified?: boolean;\n /**\n * Gets or sets a value that specifies GUID of the Web Application that is used to perform search.\n */\n WebApplicationID?: string;\n}\n\n/**\n * People picker query settings\n */\nexport interface PeoplePickerQuerySettings {\n ExcludeAllUsersOnTenantClaim?: boolean;\n}\n\n/**\n * People picker entity\n */\nexport interface PeoplePickerEntity {\n Description: string;\n DisplayText: string;\n EntityData: PeoplePickerEntityData;\n EntityType: string;\n IsResolved: boolean;\n Key: string;\n MultipleMatches: PeoplePickerEntityData[];\n ProviderDisplayName: string;\n ProviderName: string;\n}\n\n/**\n * People picker entity data\n */\nexport interface PeoplePickerEntityData {\n AccountName?: string;\n Department?: string;\n Email?: string;\n IsAltSecIdPresent?: string;\n MobilePhone?: string;\n ObjectId?: string;\n OtherMails?: string;\n PrincipalType?: string;\n SPGroupID?: string;\n SPUserID?: string;\n Title?: string;\n}\n\n/**\n * Specifies the originating zone of a request received.\n */\nexport const enum UrlZone {\n /**\n * Specifies the default zone used for requests unless another zone is specified.\n */\n DefaultZone,\n /**\n * Specifies an intranet zone.\n */\n Intranet,\n /**\n * Specifies an Internet zone.\n */\n Internet,\n /**\n * Specifies a custom zone.\n */\n Custom,\n /**\n * Specifies an extranet zone.\n */\n Extranet,\n}\n\nexport interface StorageEntity {\n Value: string | null;\n Comment: string | null;\n Description: string | null;\n}\n\nexport interface LikeData {\n name: string;\n loginName: string;\n id: number;\n email: string;\n creationDate: string;\n}\n\nexport interface HubSite {\n Id: string;\n Title: string;\n SiteId: string;\n TenantInstanceId: string;\n SiteUrl: string;\n LogoUrl: string;\n Description: string;\n Targets: string;\n}\n\nexport interface HubSiteData {\n headerEmphasis: string | null;\n logoUrl: string | null;\n megaMenuEnabled: boolean;\n name: string;\n navigation: NavigationNode[];\n requiresJoinApproval: boolean;\n siteDesignId: string;\n themeKey: string | null;\n url: string;\n usesMetadataNavigation: boolean;\n}\n\n\n\n// WEBPACK FOOTER //\n// ../../../../packages/sp/src/types.ts","import { RoleAssignments } from \"./roles\";\nimport { BasePermissions, PermissionKind } from \"./types\";\nimport { SharePointQueryable, SharePointQueryableInstance } from \"./sharepointqueryable\";\nimport { hOP } from \"@pnp/common\";\n\nexport class SharePointQueryableSecurable extends SharePointQueryableInstance {\n\n /**\n * Gets the set of role assignments for this item\n *\n */\n public get roleAssignments(): RoleAssignments {\n return new RoleAssignments(this);\n }\n\n /**\n * Gets the closest securable up the security hierarchy whose permissions are applied to this list item\n *\n */\n public get firstUniqueAncestorSecurableObject(): SharePointQueryableInstance {\n return new SharePointQueryableInstance(this, \"FirstUniqueAncestorSecurableObject\");\n }\n\n /**\n * Gets the effective permissions for the user supplied\n *\n * @param loginName The claims username for the user (ex: i:0#.f|membership|user@domain.com)\n */\n public getUserEffectivePermissions(loginName: string): Promise {\n const q = this.clone(SharePointQueryable, \"getUserEffectivePermissions(@user)\");\n q.query.set(\"@user\", `'${encodeURIComponent(loginName)}'`);\n return q.get().then(r => {\n // handle verbose mode\n return hOP(r, \"GetUserEffectivePermissions\") ? r.GetUserEffectivePermissions : r;\n });\n }\n\n /**\n * Gets the effective permissions for the current user\n */\n public getCurrentUserEffectivePermissions(): Promise {\n const q = this.clone(SharePointQueryable, \"EffectiveBasePermissions\");\n return q.get().then(r => {\n // handle verbose mode\n return hOP(r, \"EffectiveBasePermissions\") ? r.EffectiveBasePermissions : r;\n });\n }\n\n /**\n * Breaks the security inheritance at this level optinally copying permissions and clearing subscopes\n *\n * @param copyRoleAssignments If true the permissions are copied from the current parent scope\n * @param clearSubscopes Optional. true to make all child securable objects inherit role assignments from the current object\n */\n public breakRoleInheritance(copyRoleAssignments = false, clearSubscopes = false): Promise {\n\n return this.clone(SharePointQueryableSecurable, `breakroleinheritance(copyroleassignments=${copyRoleAssignments}, clearsubscopes=${clearSubscopes})`).postCore();\n }\n\n /**\n * Removes the local role assignments so that it re-inherit role assignments from the parent object.\n *\n */\n public resetRoleInheritance(): Promise {\n\n return this.clone(SharePointQueryableSecurable, \"resetroleinheritance\").postCore();\n }\n\n /**\n * Determines if a given user has the appropriate permissions\n *\n * @param loginName The user to check\n * @param permission The permission being checked\n */\n public userHasPermissions(loginName: string, permission: PermissionKind): Promise {\n\n return this.getUserEffectivePermissions(loginName).then(perms => {\n\n return this.hasPermissions(perms, permission);\n });\n }\n\n /**\n * Determines if the current user has the requested permissions\n *\n * @param permission The permission we wish to check\n */\n public currentUserHasPermissions(permission: PermissionKind): Promise {\n\n return this.getCurrentUserEffectivePermissions().then(perms => {\n\n return this.hasPermissions(perms, permission);\n });\n }\n\n /**\n * Taken from sp.js, checks the supplied permissions against the mask\n *\n * @param value The security principal's permissions on the given object\n * @param perm The permission checked against the value\n */\n /* tslint:disable:no-bitwise */\n public hasPermissions(value: BasePermissions, perm: PermissionKind): boolean {\n\n if (!perm) {\n return true;\n }\n if (perm === PermissionKind.FullMask) {\n return (value.High & 32767) === 32767 && value.Low === 65535;\n }\n\n perm = perm - 1;\n let num = 1;\n\n if (perm >= 0 && perm < 32) {\n num = num << perm;\n return 0 !== (value.Low & num);\n } else if (perm >= 32 && perm < 64) {\n num = num << perm - 32;\n return 0 !== (value.High & num);\n }\n return false;\n }\n /* tslint:enable */\n}\n\n\n\n// WEBPACK FOOTER //\n// ../../../../packages/sp/src/sharepointqueryablesecurable.ts","import { extend, combine, jsS } from \"@pnp/common\";\nimport { odataUrlFrom } from \"./odata\";\nimport {\n SharePointQueryable,\n SharePointQueryableInstance,\n SharePointQueryableCollection,\n} from \"./sharepointqueryable\";\nimport { SharePointQueryableSecurable } from \"./sharepointqueryablesecurable\";\nimport {\n RoleType,\n SharingLinkKind,\n ShareLinkResponse,\n SharingRole,\n SharingEmailData,\n SharingResult,\n SharingRecipient,\n SharingEntityPermission,\n SharingInformationRequest,\n ObjectSharingSettings,\n SharingInformation,\n ShareObjectOptions,\n} from \"./types\";\nimport { extractWebUrl } from \"./utils/extractweburl\";\n\n/**\n * Internal helper class used to augment classes to include sharing functionality\n */\nexport class SharePointQueryableShareable extends SharePointQueryable {\n\n /**\n * Gets a sharing link for the supplied\n *\n * @param kind The kind of link to share\n * @param expiration The optional expiration for this link\n */\n public getShareLink(kind: SharingLinkKind, expiration: Date = null): Promise {\n\n // date needs to be an ISO string or null\n const expString = expiration !== null ? expiration.toISOString() : null;\n\n // clone using the factory and send the request\n return this.clone(SharePointQueryableShareable, \"shareLink\").postCore({\n body: jsS({\n request: {\n createLink: true,\n emailData: null,\n settings: {\n expiration: expString,\n linkKind: kind,\n },\n },\n }),\n });\n }\n\n /**\n * Shares this instance with the supplied users\n *\n * @param loginNames Resolved login names to share\n * @param role The role\n * @param requireSignin True to require the user is authenticated, otherwise false\n * @param propagateAcl True to apply this share to all children\n * @param emailData If supplied an email will be sent with the indicated properties\n */\n public shareWith(loginNames: string | string[], role: SharingRole, requireSignin = false, propagateAcl = false, emailData?: SharingEmailData): Promise {\n\n // handle the multiple input types\n if (!Array.isArray(loginNames)) {\n loginNames = [loginNames];\n }\n\n const userStr = jsS(loginNames.map(login => { return { Key: login }; }));\n const roleFilter = role === SharingRole.Edit ? RoleType.Contributor : RoleType.Reader;\n\n // start by looking up the role definition id we need to set the roleValue\n // remove need to reference Web here, which created a circular build issue\n const w = new SharePointQueryableCollection(\"_api/web\", \"roledefinitions\");\n return w.select(\"Id\").filter(`RoleTypeKind eq ${roleFilter}`).get().then((def: { Id: number }[]) => {\n\n if (!Array.isArray(def) || def.length < 1) {\n throw Error(`Could not locate a role defintion with RoleTypeKind ${roleFilter}`);\n }\n\n let postBody = {\n includeAnonymousLinkInEmail: requireSignin,\n peoplePickerInput: userStr,\n propagateAcl: propagateAcl,\n roleValue: `role:${def[0].Id}`,\n useSimplifiedRoles: true,\n };\n\n if (emailData !== undefined) {\n\n postBody = extend(postBody, {\n emailBody: emailData.body,\n emailSubject: emailData.subject !== undefined ? emailData.subject : \"\",\n sendEmail: true,\n });\n }\n\n return this.clone(SharePointQueryableShareable, \"shareObject\").postCore({\n body: jsS(postBody),\n });\n });\n }\n\n /**\n * Shares an object based on the supplied options\n *\n * @param options The set of options to send to the ShareObject method\n * @param bypass If true any processing is skipped and the options are sent directly to the ShareObject method\n */\n public shareObject(options: ShareObjectOptions, bypass = false): Promise {\n\n if (bypass) {\n\n // if the bypass flag is set send the supplied parameters directly to the service\n return this.sendShareObjectRequest(options);\n }\n\n // extend our options with some defaults\n options = extend(options, {\n group: null,\n includeAnonymousLinkInEmail: false,\n propagateAcl: false,\n useSimplifiedRoles: true,\n }, true);\n\n return this.getRoleValue(options.role, options.group).then(roleValue => {\n\n // handle the multiple input types\n if (!Array.isArray(options.loginNames)) {\n options.loginNames = [options.loginNames];\n }\n\n const userStr = jsS(options.loginNames.map(login => { return { Key: login }; }));\n\n let postBody = {\n peoplePickerInput: userStr,\n roleValue: roleValue,\n url: options.url,\n };\n\n if (options.emailData !== undefined && options.emailData !== null) {\n\n postBody = extend(postBody, {\n emailBody: options.emailData.body,\n emailSubject: options.emailData.subject !== undefined ? options.emailData.subject : \"Shared with you.\",\n sendEmail: true,\n });\n }\n\n return this.sendShareObjectRequest(postBody);\n });\n }\n\n /**\n * Calls the web's UnshareObject method\n *\n * @param url The url of the object to unshare\n */\n public unshareObjectWeb(url: string): Promise {\n\n return this.clone(SharePointQueryableShareable, \"unshareObject\").postCore({\n body: jsS({\n url: url,\n }),\n });\n }\n\n /**\n * Checks Permissions on the list of Users and returns back role the users have on the Item.\n *\n * @param recipients The array of Entities for which Permissions need to be checked.\n */\n public checkPermissions(recipients: SharingRecipient[]): Promise {\n\n return this.clone(SharePointQueryableShareable, \"checkPermissions\").postCore({\n body: jsS({\n recipients: recipients,\n }),\n });\n }\n\n /**\n * Get Sharing Information.\n *\n * @param request The SharingInformationRequest Object.\n * @param expands Expand more fields.\n * \n */\n public getSharingInformation(request: SharingInformationRequest = null, expands?: string[]): Promise {\n\n const q = this.clone(SharePointQueryableShareable, \"getSharingInformation\");\n return q.expand.apply(q, expands).postCore({\n body: jsS({\n request: request,\n }),\n });\n }\n\n /**\n * Gets the sharing settings of an item.\n *\n * @param useSimplifiedRoles Determines whether to use simplified roles.\n */\n public getObjectSharingSettings(useSimplifiedRoles = true): Promise {\n\n return this.clone(SharePointQueryableShareable, \"getObjectSharingSettings\").postCore({\n body: jsS({\n useSimplifiedRoles: useSimplifiedRoles,\n }),\n });\n }\n\n /**\n * Unshares this object\n */\n public unshareObject(): Promise {\n\n return this.clone(SharePointQueryableShareable, \"unshareObject\").postCore();\n }\n\n /**\n * Deletes a link by type\n *\n * @param kind Deletes a sharing link by the kind of link\n */\n public deleteLinkByKind(kind: SharingLinkKind): Promise {\n\n return this.clone(SharePointQueryableShareable, \"deleteLinkByKind\").postCore({\n body: jsS({ linkKind: kind }),\n });\n }\n\n /**\n * Removes the specified link to the item.\n *\n * @param kind The kind of link to be deleted.\n * @param shareId\n */\n public unshareLink(kind: SharingLinkKind, shareId = \"00000000-0000-0000-0000-000000000000\"): Promise {\n\n return this.clone(SharePointQueryableShareable, \"unshareLink\").postCore({\n body: jsS({ linkKind: kind, shareId: shareId }),\n });\n }\n\n /**\n * Calculates the roleValue string used in the sharing query\n *\n * @param role The Sharing Role\n * @param group The Group type\n */\n protected getRoleValue(role: SharingRole, group: RoleType): Promise {\n\n // we will give group precedence, because we had to make a choice\n if (group !== undefined && group !== null) {\n\n switch (group) {\n case RoleType.Contributor:\n // remove need to reference Web here, which created a circular build issue\n const memberGroup = new SharePointQueryableInstance(\"_api/web\", \"associatedmembergroup\");\n return memberGroup.select(\"Id\").get<{ Id: number }>().then(g => `group: ${g.Id}`);\n case RoleType.Reader:\n case RoleType.Guest:\n // remove need to reference Web here, which created a circular build issue\n const visitorGroup = new SharePointQueryableInstance(\"_api/web\", \"associatedvisitorgroup\");\n return visitorGroup.select(\"Id\").get<{ Id: number }>().then(g => `group: ${g.Id}`);\n default:\n throw Error(\"Could not determine role value for supplied value. Contributor, Reader, and Guest are supported\");\n }\n } else {\n\n const roleFilter = role === SharingRole.Edit ? RoleType.Contributor : RoleType.Reader;\n // remove need to reference Web here, which created a circular build issue\n const roleDefs = new SharePointQueryableCollection(\"_api/web\", \"roledefinitions\");\n return roleDefs.select(\"Id\").top(1).filter(`RoleTypeKind eq ${roleFilter}`).get<{ Id: number }[]>().then(def => {\n if (def.length < 1) {\n throw Error(\"Could not locate associated role definition for supplied role. Edit and View are supported\");\n }\n return `role: ${def[0].Id}`;\n });\n }\n }\n\n private getShareObjectWeb(candidate: string): Promise {\n return Promise.resolve(new SharePointQueryableInstance(extractWebUrl(candidate), \"/_api/SP.Web.ShareObject\"));\n }\n\n private sendShareObjectRequest(options: any): Promise {\n\n return this.getShareObjectWeb(this.toUrl()).then(web => {\n\n return web.expand(\"UsersWithAccessRequests\", \"GroupsSharedWith\").as(SharePointQueryableShareable).postCore({\n body: jsS(options),\n });\n });\n }\n}\n\nexport class SharePointQueryableShareableWeb extends SharePointQueryableSecurable {\n\n /**\n * Shares this web with the supplied users\n * @param loginNames The resolved login names to share\n * @param role The role to share this web\n * @param emailData Optional email data\n */\n public shareWith(loginNames: string | string[], role: SharingRole = SharingRole.View, emailData?: SharingEmailData): Promise {\n\n const dependency = this.addBatchDependency();\n // remove need to reference Web here, which created a circular build issue\n const web = new SharePointQueryableInstance(extractWebUrl(this.toUrl()), \"/_api/web/url\");\n return web.get().then((url: string) => {\n\n dependency();\n\n return this.shareObject(combine(url, \"/_layouts/15/aclinv.aspx?forSharing=1&mbypass=1\"), loginNames, role, emailData);\n });\n }\n\n /**\n * Provides direct access to the static web.ShareObject method\n *\n * @param url The url to share\n * @param loginNames Resolved loginnames string[] of a single login name string\n * @param roleValue Role value\n * @param emailData Optional email data\n * @param groupId Optional group id\n * @param propagateAcl\n * @param includeAnonymousLinkInEmail\n * @param useSimplifiedRoles\n */\n public shareObject(url: string,\n loginNames: string | string[],\n role: SharingRole,\n emailData?: SharingEmailData,\n group?: RoleType,\n propagateAcl = false,\n includeAnonymousLinkInEmail = false,\n useSimplifiedRoles = true): Promise {\n\n return this.clone(SharePointQueryableShareable, null).shareObject({\n emailData: emailData,\n group: group,\n includeAnonymousLinkInEmail: includeAnonymousLinkInEmail,\n loginNames: loginNames,\n propagateAcl: propagateAcl,\n role: role,\n url: url,\n useSimplifiedRoles: useSimplifiedRoles,\n });\n }\n\n /**\n * Supplies a method to pass any set of arguments to ShareObject\n *\n * @param options The set of options to send to ShareObject\n */\n public shareObjectRaw(options: any): Promise {\n return this.clone(SharePointQueryableShareable, null).shareObject(options, true);\n }\n\n /**\n * Unshares the object\n *\n * @param url The url of the object to stop sharing\n */\n public unshareObject(url: string): Promise {\n\n return this.clone(SharePointQueryableShareable, null).unshareObjectWeb(url);\n }\n}\n\nexport class SharePointQueryableShareableItem extends SharePointQueryableSecurable {\n\n /**\n * Gets a link suitable for sharing for this item\n *\n * @param kind The type of link to share\n * @param expiration The optional expiration date\n */\n public getShareLink(kind: SharingLinkKind = SharingLinkKind.OrganizationView, expiration: Date = null): Promise {\n return this.clone(SharePointQueryableShareable, null).getShareLink(kind, expiration);\n }\n\n /**\n * Shares this item with one or more users\n *\n * @param loginNames string or string[] of resolved login names to which this item will be shared\n * @param role The role (View | Edit) applied to the share\n * @param emailData Optional, if inlucded an email will be sent. Note subject currently has no effect.\n */\n public shareWith(loginNames: string | string[], role: SharingRole = SharingRole.View, requireSignin = false, emailData?: SharingEmailData): Promise {\n\n return this.clone(SharePointQueryableShareable, null).shareWith(loginNames, role, requireSignin, false, emailData);\n }\n\n /**\n * Checks Permissions on the list of Users and returns back role the users have on the Item.\n *\n * @param recipients The array of Entities for which Permissions need to be checked.\n */\n public checkSharingPermissions(recipients: SharingRecipient[]): Promise {\n\n return this.clone(SharePointQueryableShareable, null).checkPermissions(recipients);\n }\n\n /**\n * Get Sharing Information.\n *\n * @param request The SharingInformationRequest Object.\n * @param expands Expand more fields.\n * \n */\n public getSharingInformation(request: SharingInformationRequest = null, expands?: string[]): Promise {\n\n return this.clone(SharePointQueryableShareable, null).getSharingInformation(request, expands);\n }\n\n /**\n * Gets the sharing settings of an item.\n *\n * @param useSimplifiedRoles Determines whether to use simplified roles.\n */\n public getObjectSharingSettings(useSimplifiedRoles = true): Promise {\n\n return this.clone(SharePointQueryableShareable, null).getObjectSharingSettings(useSimplifiedRoles);\n }\n\n /**\n * Unshare this item\n */\n public unshare(): Promise {\n return this.clone(SharePointQueryableShareable, null).unshareObject();\n }\n\n /**\n * Deletes a sharing link by kind\n *\n * @param kind Deletes a sharing link by the kind of link\n */\n public deleteSharingLinkByKind(kind: SharingLinkKind): Promise {\n\n return this.clone(SharePointQueryableShareable, null).deleteLinkByKind(kind);\n }\n\n /**\n * Removes the specified link to the item.\n *\n * @param kind The kind of link to be deleted.\n * @param shareId\n */\n public unshareLink(kind: SharingLinkKind, shareId?: string): Promise {\n\n return this.clone(SharePointQueryableShareable, null).unshareLink(kind, shareId);\n }\n}\n\nexport class FileFolderShared extends SharePointQueryableInstance {\n /**\n * Gets a link suitable for sharing\n *\n * @param kind The kind of link to get\n * @param expiration Optional, an expiration for this link\n */\n public getShareLink(kind: SharingLinkKind = SharingLinkKind.OrganizationView, expiration: Date = null): Promise {\n\n const dependency = this.addBatchDependency();\n\n return this.getShareable().then(shareable => {\n dependency();\n return shareable.getShareLink(kind, expiration);\n });\n }\n\n /**\n * Checks Permissions on the list of Users and returns back role the users have on the Item.\n *\n * @param recipients The array of Entities for which Permissions need to be checked.\n */\n public checkSharingPermissions(recipients: SharingRecipient[]): Promise {\n\n const dependency = this.addBatchDependency();\n\n return this.getShareable().then(shareable => {\n dependency();\n return shareable.checkPermissions(recipients);\n });\n }\n\n /**\n * Get Sharing Information.\n *\n * @param request The SharingInformationRequest Object.\n * @param expands Expand more fields.\n * \n */\n public getSharingInformation(request: SharingInformationRequest = null, expands?: string[]): Promise {\n\n const dependency = this.addBatchDependency();\n\n return this.getShareable().then(shareable => {\n dependency();\n return shareable.getSharingInformation(request, expands);\n });\n }\n\n /**\n * Gets the sharing settings of an item.\n *\n * @param useSimplifiedRoles Determines whether to use simplified roles.\n */\n public getObjectSharingSettings(useSimplifiedRoles = true): Promise {\n\n const dependency = this.addBatchDependency();\n\n return this.getShareable().then(shareable => {\n dependency();\n return shareable.getObjectSharingSettings(useSimplifiedRoles);\n });\n }\n\n /**\n * Unshare this item\n */\n public unshare(): Promise {\n\n const dependency = this.addBatchDependency();\n\n return this.getShareable().then(shareable => {\n dependency();\n return shareable.unshareObject();\n });\n }\n\n /**\n * Deletes a sharing link by the kind of link\n *\n * @param kind The kind of link to be deleted.\n */\n public deleteSharingLinkByKind(kind: SharingLinkKind): Promise {\n\n const dependency = this.addBatchDependency();\n\n return this.getShareable().then(shareable => {\n dependency();\n return shareable.deleteLinkByKind(kind);\n });\n }\n\n /**\n * Removes the specified link to the item.\n *\n * @param kind The kind of link to be deleted.\n * @param shareId The share id to delete\n */\n public unshareLink(kind: SharingLinkKind, shareId?: string): Promise {\n\n const dependency = this.addBatchDependency();\n\n return this.getShareable().then(shareable => {\n dependency();\n return shareable.unshareLink(kind, shareId);\n });\n }\n\n /**\n * For files and folders we need to use the associated item end point\n */\n protected getShareable(): Promise {\n\n // sharing only works on the item end point, not the file one - so we create a folder instance with the item url internally\n return this.clone(SharePointQueryableShareableFile, \"listItemAllFields\", false).select(\"odata.id\").get().then(d => {\n\n let shareable = new SharePointQueryableShareable(odataUrlFrom(d));\n\n // we need to handle batching\n if (this.hasBatch) {\n shareable = shareable.inBatch(this.batch);\n }\n\n return shareable;\n });\n }\n}\n\nexport class SharePointQueryableShareableFile extends FileFolderShared {\n\n /**\n * Shares this item with one or more users\n *\n * @param loginNames string or string[] of resolved login names to which this item will be shared\n * @param role The role (View | Edit) applied to the share\n * @param shareEverything Share everything in this folder, even items with unique permissions.\n * @param requireSignin If true the user must signin to view link, otherwise anyone with the link can access the resource\n * @param emailData Optional, if inlucded an email will be sent. Note subject currently has no effect.\n */\n public shareWith(loginNames: string | string[],\n role: SharingRole = SharingRole.View,\n requireSignin = false,\n emailData?: SharingEmailData): Promise {\n\n const dependency = this.addBatchDependency();\n\n return this.getShareable().then(shareable => {\n dependency();\n return shareable.shareWith(loginNames, role, requireSignin, false, emailData);\n });\n }\n}\n\nexport class SharePointQueryableShareableFolder extends FileFolderShared {\n\n /**\n * Shares this item with one or more users\n *\n * @param loginNames string or string[] of resolved login names to which this item will be shared\n * @param role The role (View | Edit) applied to the share\n * @param shareEverything Share everything in this folder, even items with unique permissions.\n * @param requireSignin If true the user must signin to view link, otherwise anyone with the link can access the resource\n * @param emailData Optional, if inlucded an email will be sent. Note subject currently has no effect.\n */\n public shareWith(loginNames: string | string[],\n role: SharingRole = SharingRole.View,\n requireSignin = false,\n shareEverything = false,\n emailData?: SharingEmailData): Promise {\n\n const dependency = this.addBatchDependency();\n\n return this.getShareable().then(shareable => {\n dependency();\n return shareable.shareWith(loginNames, role, requireSignin, shareEverything, emailData);\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ../../../../packages/sp/src/sharepointqueryableshareable.ts","import { SharePointQueryable, SharePointQueryableInstance, SharePointQueryableCollection, defaultPath } from \"./sharepointqueryable\";\nimport { jsS } from \"@pnp/common\";\n\nexport class LimitedWebPartManager extends SharePointQueryable {\n\n /**\n * Gets the set of web part definitions contained by this web part manager\n *\n */\n public get webparts(): WebPartDefinitions {\n\n return new WebPartDefinitions(this, \"webparts\");\n }\n\n /**\n * Exports a webpart definition\n *\n * @param id the GUID id of the definition to export\n */\n public export(id: string): Promise {\n\n return this.clone(LimitedWebPartManager, \"ExportWebPart\").postCore({\n body: jsS({ webPartId: id }),\n });\n }\n\n /**\n * Imports a webpart\n *\n * @param xml webpart definition which must be valid XML in the .dwp or .webpart format\n */\n public import(xml: string): Promise {\n\n return this.clone(LimitedWebPartManager, \"ImportWebPart\").postCore({\n body: jsS({ webPartXml: xml }),\n });\n }\n}\n\nexport class WebPartDefinitions extends SharePointQueryableCollection {\n\n /**\n * Gets a web part definition from the collection by id\n *\n * @param id The storage ID of the SPWebPartDefinition to retrieve\n */\n public getById(id: string): WebPartDefinition {\n return new WebPartDefinition(this, `getbyid('${id}')`);\n }\n\n /**\n * Gets a web part definition from the collection by storage id\n *\n * @param id The WebPart.ID of the SPWebPartDefinition to retrieve\n */\n public getByControlId(id: string): WebPartDefinition {\n\n return new WebPartDefinition(this, `getByControlId('${id}')`);\n }\n}\n\nexport class WebPartDefinition extends SharePointQueryableInstance {\n\n /**\n * Gets the webpart information associated with this definition\n */\n public get webpart(): WebPart {\n\n return new WebPart(this);\n }\n\n /**\n * Saves changes to the Web Part made using other properties and methods on the SPWebPartDefinition object\n */\n public saveChanges(): Promise {\n\n return this.clone(WebPartDefinition, \"SaveWebPartChanges\").postCore();\n }\n\n /**\n * Moves the Web Part to a different location on a Web Part Page\n *\n * @param zoneId The ID of the Web Part Zone to which to move the Web Part\n * @param zoneIndex A Web Part zone index that specifies the position at which the Web Part is to be moved within the destination Web Part zone\n */\n public moveTo(zoneId: string, zoneIndex: number): Promise {\n\n return this.clone(WebPartDefinition, `MoveWebPartTo(zoneID='${zoneId}', zoneIndex=${zoneIndex})`).postCore();\n }\n\n /**\n * Closes the Web Part. If the Web Part is already closed, this method does nothing\n */\n public close(): Promise {\n\n return this.clone(WebPartDefinition, \"CloseWebPart\").postCore();\n }\n\n /**\n * Opens the Web Part. If the Web Part is already closed, this method does nothing\n */\n public open(): Promise {\n\n return this.clone(WebPartDefinition, \"OpenWebPart\").postCore();\n\n }\n\n /**\n * Removes a webpart from a page, all settings will be lost\n */\n public delete(): Promise {\n\n return this.clone(WebPartDefinition, \"DeleteWebPart\").postCore();\n }\n}\n\n@defaultPath(\"webpart\")\nexport class WebPart extends SharePointQueryableInstance { }\n\n\n\n// WEBPACK FOOTER //\n// ../../../../packages/sp/src/webparts.ts","import { extend, TypedHash, jsS, isUrlAbsolute } from \"@pnp/common\";\nimport { SharePointQueryable, SharePointQueryableCollection, SharePointQueryableInstance, defaultPath } from \"./sharepointqueryable\";\nimport { SharePointQueryableShareableFolder } from \"./sharepointqueryableshareable\";\nimport { Files } from \"./files\";\nimport { odataUrlFrom } from \"./odata\";\nimport { Item } from \"./items\";\nimport { extractWebUrl } from \"./utils/extractweburl\";\n\n/**\n * Describes a collection of Folder objects\n *\n */\n@defaultPath(\"folders\")\nexport class Folders extends SharePointQueryableCollection {\n\n /**\n * Gets a folder by folder name\n *\n */\n public getByName(name: string): Folder {\n const f = new Folder(this);\n f.concat(`('${name}')`);\n return f;\n }\n\n /**\n * Adds a new folder to the current folder (relative) or any folder (absolute)\n *\n * @param url The relative or absolute url where the new folder will be created. Urls starting with a forward slash are absolute.\n * @returns The new Folder and the raw response.\n */\n public add(url: string): Promise {\n\n return this.clone(Folders, `add('${url}')`).postCore().then((data) => {\n return {\n data,\n folder: this.getByName(url),\n };\n });\n }\n\n /**\n * Adds a new folder by path and should be prefered over add\n * \n * @param serverRelativeUrl The server relative url of the new folder to create\n * @param overwrite True to overwrite an existing folder, default false\n */\n public addUsingPath(serverRelativeUrl: string, overwrite = false): Promise {\n\n return this.clone(Folders, `addUsingPath(DecodedUrl='${serverRelativeUrl}',overwrite=${overwrite})`).postCore().then((data) => {\n\n return {\n data,\n folder: new Folder(extractWebUrl(this.toUrl()), `_api/web/getFolderByServerRelativePath(decodedUrl='${serverRelativeUrl}')`),\n };\n });\n }\n}\n\n/**\n * Describes a single Folder instance\n *\n */\nexport class Folder extends SharePointQueryableShareableFolder {\n\n /**\n * Specifies the sequence in which content types are displayed.\n *\n */\n public get contentTypeOrder(): SharePointQueryableCollection {\n return new SharePointQueryableCollection(this, \"contentTypeOrder\");\n }\n\n /**\n * Gets this folder's files\n *\n */\n public get files(): Files {\n return new Files(this);\n }\n\n /**\n * Gets this folder's sub folders\n *\n */\n public get folders(): Folders {\n return new Folders(this);\n }\n\n /**\n * Gets this folder's list item field values\n *\n */\n public get listItemAllFields(): SharePointQueryableInstance {\n return new SharePointQueryableInstance(this, \"listItemAllFields\");\n }\n\n /**\n * Gets the parent folder, if available\n *\n */\n public get parentFolder(): Folder {\n return new Folder(this, \"parentFolder\");\n }\n\n /**\n * Gets this folder's properties\n *\n */\n public get properties(): SharePointQueryableInstance {\n return new SharePointQueryableInstance(this, \"properties\");\n }\n\n /**\n * Gets this folder's server relative url\n *\n */\n public get serverRelativeUrl(): SharePointQueryable {\n return new SharePointQueryable(this, \"serverRelativeUrl\");\n }\n\n /**\n * Gets a value that specifies the content type order.\n *\n */\n public get uniqueContentTypeOrder(): SharePointQueryableCollection {\n return new SharePointQueryableCollection(this, \"uniqueContentTypeOrder\");\n }\n\n public update = this._update>(\"SP.Folder\", data => ({ data, folder: this }));\n\n /**\n * Delete this folder\n *\n * @param eTag Value used in the IF-Match header, by default \"*\"\n */\n public delete(eTag = \"*\"): Promise {\n return this.clone(Folder, null).postCore({\n headers: {\n \"IF-Match\": eTag,\n \"X-HTTP-Method\": \"DELETE\",\n },\n });\n }\n\n /**\n * Moves the folder to the Recycle Bin and returns the identifier of the new Recycle Bin item.\n */\n public recycle(): Promise {\n return this.clone(Folder, \"recycle\").postCore();\n }\n\n /**\n * Gets the associated list item for this folder, loading the default properties\n */\n public getItem(...selects: string[]): Promise {\n\n const q = this.listItemAllFields;\n return q.select.apply(q, selects).get().then((d: any) => {\n\n return extend(new Item(odataUrlFrom(d)), d);\n });\n }\n\n /**\n * Moves a folder to destination path\n *\n * @param destUrl Absolute or relative URL of the destination path\n */\n public moveTo(destUrl: string): Promise {\n return this.select(\"ServerRelativeUrl\").get().then(({ ServerRelativeUrl: srcUrl, [\"odata.id\"]: absoluteUrl }) => {\n const webBaseUrl = extractWebUrl(absoluteUrl);\n const hostUrl = webBaseUrl.replace(\"://\", \"___\").split(\"/\")[0].replace(\"___\", \"://\");\n const f = new Folder(webBaseUrl, \"/_api/SP.MoveCopyUtil.MoveFolder()\");\n return f.postCore({\n body: jsS({\n destUrl: isUrlAbsolute(destUrl) ? destUrl : `${hostUrl}${destUrl}`,\n srcUrl: `${hostUrl}${srcUrl}`,\n }),\n });\n });\n }\n\n /**\n * Copies a folder to destination path\n *\n * @param destUrl Absolute or relative URL of the destination path\n */\n public copyTo(destUrl: string): Promise {\n return this.select(\"ServerRelativeUrl\").get().then(({ ServerRelativeUrl: srcUrl, [\"odata.id\"]: absoluteUrl }) => {\n const webBaseUrl = extractWebUrl(absoluteUrl);\n const hostUrl = webBaseUrl.replace(\"://\", \"___\").split(\"/\")[0].replace(\"___\", \"://\");\n const f = new Folder(webBaseUrl, \"/_api/SP.MoveCopyUtil.CopyFolder()\");\n return f.postCore({\n body: jsS({\n destUrl: isUrlAbsolute(destUrl) ? destUrl : `${hostUrl}${destUrl}`,\n srcUrl: `${hostUrl}${srcUrl}`,\n }),\n });\n });\n }\n}\n\nexport interface FolderAddResult {\n folder: Folder;\n data: any;\n}\n\nexport interface FolderUpdateResult {\n folder: Folder;\n data: any;\n}\n\n\n\n// WEBPACK FOOTER //\n// ../../../../packages/sp/src/folders.ts","import { TypedHash, jsS } from \"@pnp/common\";\nimport { SharePointQueryableCollection, SharePointQueryableInstance, defaultPath } from \"./sharepointqueryable\";\nimport { metadata } from \"./utils/metadata\";\n\n/**\n * Describes a collection of content types\n *\n */\n@defaultPath(\"contenttypes\")\nexport class ContentTypes extends SharePointQueryableCollection {\n\n /**\n * Adds an existing contenttype to a content type collection\n *\n * @param contentTypeId in the following format, for example: 0x010102\n */\n public addAvailableContentType(contentTypeId: string): Promise {\n\n const postBody: string = jsS({\n \"contentTypeId\": contentTypeId,\n });\n\n return this.clone(ContentTypes, \"addAvailableContentType\").postCore<{ id: string }>({ body: postBody }).then((data) => {\n return {\n contentType: this.getById(data.id),\n data: data,\n };\n });\n }\n\n /**\t\n * Gets a ContentType by content type id\t\n */\n public getById(id: string): ContentType {\n const ct: ContentType = new ContentType(this);\n ct.concat(`('${id}')`);\n return ct;\n }\n\n /**\n * Adds a new content type to the collection\n *\n * @param id The desired content type id for the new content type (also determines the parent content type)\n * @param name The name of the content type\n * @param description The description of the content type\n * @param group The group in which to add the content type\n * @param additionalSettings Any additional settings to provide when creating the content type\n *\n */\n public add(\n id: string,\n name: string,\n description = \"\",\n group = \"Custom Content Types\",\n additionalSettings: TypedHash = {}): Promise {\n\n const postBody = jsS(Object.assign(metadata(\"SP.ContentType\"), {\n \"Description\": description,\n \"Group\": group,\n \"Id\": { \"StringValue\": id },\n \"Name\": name,\n }, additionalSettings));\n\n return this.postCore({ body: postBody }).then((data) => {\n return { contentType: this.getById(data.id), data: data };\n });\n }\n}\n\n/**\n * Describes a single ContentType instance\n *\n */\nexport class ContentType extends SharePointQueryableInstance {\n\n /**\n * Gets the column (also known as field) references in the content type.\n */\n public get fieldLinks(): FieldLinks {\n return new FieldLinks(this);\n }\n\n /**\n * Gets a value that specifies the collection of fields for the content type.\n */\n public get fields(): SharePointQueryableCollection {\n return new SharePointQueryableCollection(this, \"fields\");\n }\n\n /**\n * Gets the parent content type of the content type.\n */\n public get parent(): ContentType {\n return new ContentType(this, \"parent\");\n }\n\n /**\n * Gets a value that specifies the collection of workflow associations for the content type.\n */\n public get workflowAssociations(): SharePointQueryableCollection {\n return new SharePointQueryableCollection(this, \"workflowAssociations\");\n }\n\n /**\n * Delete this content type\n */\n public delete = this._delete;\n}\n\nexport interface ContentTypeAddResult {\n contentType: ContentType;\n data: any;\n}\n\n/**\n * Represents a collection of field link instances\n */\n@defaultPath(\"fieldlinks\")\nexport class FieldLinks extends SharePointQueryableCollection {\n /**\t\n * Gets a FieldLink by GUID id\t\n *\t\n * @param id The GUID id of the field link\t\n */\n public getById(id: string) {\n const fl = new FieldLink(this);\n fl.concat(`(guid'${id}')`);\n return fl;\n }\n}\n\n/**\n * Represents a field link instance\n */\nexport class FieldLink extends SharePointQueryableInstance { }\n\n\n\n// WEBPACK FOOTER //\n// ../../../../packages/sp/src/contenttypes.ts","import { SharePointQueryableInstance, SharePointQueryableCollection, defaultPath } from \"./sharepointqueryable\";\nimport { TextParser, BlobParser, JSONParser, BufferParser, ODataParser } from \"@pnp/odata\";\n\nexport interface AttachmentFileInfo {\n name: string;\n content: string | Blob | ArrayBuffer;\n}\n\n/**\n * Describes a collection of Item objects\n *\n */\n@defaultPath(\"AttachmentFiles\")\nexport class AttachmentFiles extends SharePointQueryableCollection {\n\n /**\n * Gets a Attachment File by filename\n *\n * @param name The name of the file, including extension.\n */\n public getByName(name: string): AttachmentFile {\n const f = new AttachmentFile(this);\n f.concat(`('${name}')`);\n return f;\n }\n\n /**\n * Adds a new attachment to the collection. Not supported for batching.\n *\n * @param name The name of the file, including extension.\n * @param content The Base64 file content.\n */\n public add(name: string, content: string | Blob | ArrayBuffer): Promise {\n return this.clone(AttachmentFiles, `add(FileName='${name}')`, false).postCore({\n body: content,\n }).then((response) => {\n return {\n data: response,\n file: this.getByName(name),\n };\n });\n }\n\n /**\n * Adds multiple new attachment to the collection. Not supported for batching.\n *\n * @param files The collection of files to add\n */\n public addMultiple(files: AttachmentFileInfo[]): Promise {\n\n // add the files in series so we don't get update conflicts\n return files.reduce((chain, file) => chain.then(() => this.clone(AttachmentFiles, `add(FileName='${file.name}')`, false).postCore({\n body: file.content,\n })), Promise.resolve());\n }\n\n /**\n * Delete multiple attachments from the collection. Not supported for batching.\n *\n * @param files The collection of files to delete\n */\n public deleteMultiple(...files: string[]): Promise {\n return files.reduce((chain, file) => chain.then(() => this.getByName(file).delete()), Promise.resolve());\n }\n\n /**\n * Delete multiple attachments from the collection and send to recycle bin. Not supported for batching.\n *\n * @param files The collection of files to be deleted and sent to recycle bin\n */\n public recycleMultiple(...files: string[]): Promise {\n return files.reduce((chain, file) => chain.then(() => this.getByName(file).recycle()), Promise.resolve());\n }\n}\n\n/**\n * Describes a single attachment file instance\n *\n */\nexport class AttachmentFile extends SharePointQueryableInstance {\n\n public delete = this._deleteWithETag;\n\n /**\n * Gets the contents of the file as text\n *\n */\n public getText(): Promise {\n return this.getParsed(new TextParser());\n }\n\n /**\n * Gets the contents of the file as a blob, does not work in Node.js\n *\n */\n public getBlob(): Promise {\n return this.getParsed(new BlobParser());\n }\n\n /**\n * Gets the contents of a file as an ArrayBuffer, works in Node.js\n */\n public getBuffer(): Promise {\n return this.getParsed(new BufferParser());\n }\n\n /**\n * Gets the contents of a file as an ArrayBuffer, works in Node.js\n */\n public getJSON(): Promise {\n return this.getParsed(new JSONParser());\n }\n\n /**\n * Sets the content of a file. Not supported for batching\n *\n * @param content The value to set for the file contents\n */\n public setContent(content: string | ArrayBuffer | Blob): Promise {\n\n return this.clone(AttachmentFile, \"$value\", false).postCore({\n body: content,\n headers: {\n \"X-HTTP-Method\": \"PUT\",\n },\n }).then(_ => new AttachmentFile(this));\n }\n\n /**\n * Delete this attachment file and send it to recycle bin\n *\n * @param eTag Value used in the IF-Match header, by default \"*\"\n */\n public recycle(eTag = \"*\"): Promise {\n return this.clone(AttachmentFile, \"recycleObject\").postCore({\n headers: {\n \"IF-Match\": eTag,\n \"X-HTTP-Method\": \"DELETE\",\n },\n });\n }\n\n // /**\n // * Delete this attachment file\n // *\n // * @param eTag Value used in the IF-Match header, by default \"*\"\n // */\n // public delete(eTag = \"*\"): Promise {\n // return this.postCore({\n // headers: {\n // \"IF-Match\": eTag,\n // \"X-HTTP-Method\": \"DELETE\",\n // },\n // });\n // }\n\n private getParsed(parser: ODataParser): Promise {\n return this.clone(AttachmentFile, \"$value\", false).get(parser);\n }\n}\n\nexport interface AttachmentFileAddResult {\n file: AttachmentFile;\n data: any;\n}\n\n\n\n// WEBPACK FOOTER //\n// ../../../../packages/sp/src/attachmentfiles.ts","import { SharePointQueryable, SharePointQueryableCollection, SharePointQueryableInstance, defaultPath } from \"./sharepointqueryable\";\nimport { TypedHash, jsS } from \"@pnp/common\";\nimport { metadata } from \"./utils/metadata\";\n\n/**\n * Describes the views available in the current context\n *\n */\n@defaultPath(\"views\")\nexport class Views extends SharePointQueryableCollection {\n\n /**\t \n * Gets a view by guid id\t \n *\t \n * @param id The GUID id of the view\t \n */\n public getById(id: string): View {\n const v = new View(this);\n v.concat(`('${id}')`);\n return v;\n }\n\n /**\n * Gets a view by title (case-sensitive)\n *\n * @param title The case-sensitive title of the view\n */\n public getByTitle(title: string): View {\n return new View(this, `getByTitle('${title}')`);\n }\n\n /**\n * Adds a new view to the collection\n *\n * @param title The new views's title\n * @param personalView True if this is a personal view, otherwise false, default = false\n * @param additionalSettings Will be passed as part of the view creation body\n */\n public add(title: string, personalView = false, additionalSettings: TypedHash = {}): Promise {\n\n const postBody = jsS(Object.assign(metadata(\"SP.View\"), {\n \"PersonalView\": personalView,\n \"Title\": title,\n }, additionalSettings));\n\n return this.clone(Views, null).postCore<{ Id: string }>({ body: postBody }).then((data) => {\n return {\n data: data,\n view: this.getById(data.Id),\n };\n });\n }\n}\n\n/**\n * Describes a single View instance\n *\n */\nexport class View extends SharePointQueryableInstance {\n\n public get fields(): ViewFields {\n return new ViewFields(this);\n }\n\n /**\n * Updates this view intance with the supplied properties\n *\n * @param properties A plain object hash of values to update for the view\n */\n public update = this._update>(\"SP.View\", data => ({ data, view: this }));\n\n /**\n * Delete this view\n *\n */\n public delete = this._delete;\n\n /**\n * Returns the list view as HTML.\n *\n */\n public renderAsHtml(): Promise {\n return this.clone(SharePointQueryable, \"renderashtml\").get();\n }\n\n /**\n * Sets the view schema\n * \n * @param viewXml The view XML to set\n */\n public setViewXml(viewXml: string): Promise {\n\n return this.clone(View, \"SetViewXml\").postCore({\n body: jsS({\n viewXml,\n }),\n });\n }\n}\n\n@defaultPath(\"viewfields\")\nexport class ViewFields extends SharePointQueryableCollection {\n /**\n * Gets a value that specifies the XML schema that represents the collection.\n */\n public getSchemaXml(): Promise {\n return this.clone(SharePointQueryable, \"schemaxml\").get();\n }\n\n /**\n * Adds the field with the specified field internal name or display name to the collection.\n *\n * @param fieldTitleOrInternalName The case-sensitive internal name or display name of the field to add.\n */\n public add(fieldTitleOrInternalName: string): Promise {\n return this.clone(ViewFields, `addviewfield('${fieldTitleOrInternalName}')`).postCore();\n }\n\n /**\n * Moves the field with the specified field internal name to the specified position in the collection.\n *\n * @param fieldInternalName The case-sensitive internal name of the field to move.\n * @param index The zero-based index of the new position for the field.\n */\n public move(fieldInternalName: string, index: number): Promise {\n return this.clone(ViewFields, \"moveviewfieldto\").postCore({\n body: jsS({ \"field\": fieldInternalName, \"index\": index }),\n });\n }\n\n /**\n * Removes all the fields from the collection.\n */\n public removeAll(): Promise {\n return this.clone(ViewFields, \"removeallviewfields\").postCore();\n }\n\n /**\n * Removes the field with the specified field internal name from the collection.\n *\n * @param fieldInternalName The case-sensitive internal name of the field to remove from the view.\n */\n public remove(fieldInternalName: string): Promise {\n return this.clone(ViewFields, `removeviewfield('${fieldInternalName}')`).postCore();\n }\n}\n\nexport interface ViewAddResult {\n view: View;\n data: any;\n}\n\nexport interface ViewUpdateResult {\n view: View;\n data: any;\n}\n\n\n\n// WEBPACK FOOTER //\n// ../../../../packages/sp/src/views.ts","import { SharePointQueryableCollection, SharePointQueryableInstance, defaultPath } from \"./sharepointqueryable\";\nimport { extend, TypedHash, jsS } from \"@pnp/common\";\nimport {\n XmlSchemaFieldCreationInformation,\n DateTimeFieldFormatType,\n DateTimeFieldFriendlyFormatType,\n FieldTypes,\n CalendarType,\n UrlFieldFormatType,\n FieldUserSelectionMode,\n FieldCreationProperties,\n ChoiceFieldFormatType,\n} from \"./types\";\nimport { metadata } from \"./utils/metadata\";\n\n/**\n * Describes a collection of Field objects\n *\n */\n@defaultPath(\"fields\")\nexport class Fields extends SharePointQueryableCollection {\n\n /**\t\n * Gets a field from the collection by id\t\n *\t\n * @param id The Id of the list\t\n */\n public getById(id: string): Field {\n const f: Field = new Field(this);\n f.concat(`('${id}')`);\n return f;\n }\n\n /**\n * Gets a field from the collection by title\n *\n * @param title The case-sensitive title of the field\n */\n public getByTitle(title: string): Field {\n return new Field(this, `getByTitle('${title}')`);\n }\n\n /**\n * Gets a field from the collection by using internal name or title\n *\n * @param name The case-sensitive internal name or title of the field\n */\n public getByInternalNameOrTitle(name: string): Field {\n return new Field(this, `getByInternalNameOrTitle('${name}')`);\n }\n\n /**\n * Creates a field based on the specified schema\n */\n public createFieldAsXml(xml: string | XmlSchemaFieldCreationInformation): Promise {\n\n let info: XmlSchemaFieldCreationInformation;\n if (typeof xml === \"string\") {\n info = { SchemaXml: xml };\n } else {\n info = xml as XmlSchemaFieldCreationInformation;\n }\n\n const postBody: string = jsS({\n \"parameters\":\n extend(metadata(\"SP.XmlSchemaFieldCreationInformation\"), info),\n });\n\n return this.clone(Fields, \"createfieldasxml\").postCore<{ Id: string }>({ body: postBody }).then((data) => {\n return {\n data: data,\n field: this.getById(data.Id),\n };\n });\n }\n\n /**\n * Adds a new field to the collection\n *\n * @param title The new field's title\n * @param fieldType The new field's type (ex: SP.FieldText)\n * @param properties Differ by type of field being created (see: https://msdn.microsoft.com/en-us/library/office/dn600182.aspx)\n */\n public add(title: string, fieldType: string, properties: FieldCreationProperties & { FieldTypeKind: number }): Promise {\n\n const postBody: string = jsS(Object.assign(metadata(fieldType), {\n \"Title\": title,\n }, properties));\n\n return this.clone(Fields, null).postCore<{ Id: string }>({ body: postBody }).then((data) => {\n return {\n data: data,\n field: this.getById(data.Id),\n };\n });\n }\n\n /**\n * Adds a new SP.FieldText to the collection\n *\n * @param title The field title\n * @param maxLength The maximum number of characters allowed in the value of the field.\n * @param properties Differ by type of field being created (see: https://msdn.microsoft.com/en-us/library/office/dn600182.aspx)\n */\n public addText(title: string, maxLength = 255, properties?: FieldCreationProperties): Promise {\n\n const props: { FieldTypeKind: number, MaxLength: number } = {\n FieldTypeKind: 2,\n MaxLength: maxLength,\n };\n\n return this.add(title, \"SP.FieldText\", extend(props, properties));\n }\n\n /**\n * Adds a new SP.FieldCalculated to the collection\n *\n * @param title The field title.\n * @param formula The formula for the field.\n * @param dateFormat The date and time format that is displayed in the field.\n * @param outputType Specifies the output format for the field. Represents a FieldType value.\n * @param properties Differ by type of field being created (see: https://msdn.microsoft.com/en-us/library/office/dn600182.aspx)\n */\n public addCalculated(\n title: string,\n formula: string,\n dateFormat: DateTimeFieldFormatType,\n outputType: FieldTypes = FieldTypes.Text,\n properties?: FieldCreationProperties): Promise {\n\n const props: {\n DateFormat: DateTimeFieldFormatType;\n FieldTypeKind: number;\n Formula: string;\n OutputType: FieldTypes;\n } = {\n DateFormat: dateFormat,\n FieldTypeKind: 17,\n Formula: formula,\n OutputType: outputType,\n };\n\n return this.add(title, \"SP.FieldCalculated\", extend(props, properties));\n }\n\n /**\n * Adds a new SP.FieldDateTime to the collection\n *\n * @param title The field title\n * @param displayFormat The format of the date and time that is displayed in the field.\n * @param calendarType Specifies the calendar type of the field.\n * @param friendlyDisplayFormat The type of friendly display format that is used in the field.\n * @param properties Differ by type of field being created (see: https://msdn.microsoft.com/en-us/library/office/dn600182.aspx)\n */\n public addDateTime(\n title: string,\n displayFormat: DateTimeFieldFormatType = DateTimeFieldFormatType.DateOnly,\n calendarType: CalendarType = CalendarType.Gregorian,\n friendlyDisplayFormat: DateTimeFieldFriendlyFormatType = DateTimeFieldFriendlyFormatType.Unspecified,\n properties?: FieldCreationProperties): Promise {\n\n const props = {\n DateTimeCalendarType: calendarType,\n DisplayFormat: displayFormat,\n FieldTypeKind: 4,\n FriendlyDisplayFormat: friendlyDisplayFormat,\n };\n\n return this.add(title, \"SP.FieldDateTime\", extend(props, properties));\n }\n\n /**\n * Adds a new SP.FieldNumber to the collection\n *\n * @param title The field title\n * @param minValue The field's minimum value\n * @param maxValue The field's maximum value\n * @param properties Differ by type of field being created (see: https://msdn.microsoft.com/en-us/library/office/dn600182.aspx)\n */\n public addNumber(\n title: string,\n minValue?: number,\n maxValue?: number,\n properties?: FieldCreationProperties): Promise {\n\n let props: { FieldTypeKind: number } = { FieldTypeKind: 9 };\n\n if (minValue !== undefined) {\n props = extend({ MinimumValue: minValue }, props);\n }\n\n if (maxValue !== undefined) {\n props = extend({ MaximumValue: maxValue }, props);\n }\n\n return this.add(title, \"SP.FieldNumber\", extend(props, properties));\n }\n\n /**\n * Adds a new SP.FieldCurrency to the collection\n *\n * @param title The field title\n * @param minValue The field's minimum value\n * @param maxValue The field's maximum value\n * @param currencyLocalId Specifies the language code identifier (LCID) used to format the value of the field\n * @param properties Differ by type of field being created (see: https://msdn.microsoft.com/en-us/library/office/dn600182.aspx)\n */\n public addCurrency(\n title: string,\n minValue?: number,\n maxValue?: number,\n currencyLocalId = 1033,\n properties?: FieldCreationProperties): Promise {\n\n let props: { CurrencyLocaleId: number; FieldTypeKind: number; } = {\n CurrencyLocaleId: currencyLocalId,\n FieldTypeKind: 10,\n };\n\n if (minValue !== undefined) {\n props = extend({ MinimumValue: minValue }, props);\n }\n\n if (maxValue !== undefined) {\n props = extend({ MaximumValue: maxValue }, props);\n }\n\n return this.add(title, \"SP.FieldCurrency\", extend(props, properties));\n }\n\n /**\n * Adds a new SP.FieldMultiLineText to the collection\n *\n * @param title The field title\n * @param numberOfLines Specifies the number of lines of text to display for the field.\n * @param richText Specifies whether the field supports rich formatting.\n * @param restrictedMode Specifies whether the field supports a subset of rich formatting.\n * @param appendOnly Specifies whether all changes to the value of the field are displayed in list forms.\n * @param allowHyperlink Specifies whether a hyperlink is allowed as a value of the field.\n * @param properties Differ by type of field being created (see: https://msdn.microsoft.com/en-us/library/office/dn600182.aspx)\n *\n */\n public addMultilineText(\n title: string,\n numberOfLines = 6,\n richText = true,\n restrictedMode = false,\n appendOnly = false,\n allowHyperlink = true,\n properties?: FieldCreationProperties): Promise {\n\n const props = {\n AllowHyperlink: allowHyperlink,\n AppendOnly: appendOnly,\n FieldTypeKind: 3,\n NumberOfLines: numberOfLines,\n RestrictedMode: restrictedMode,\n RichText: richText,\n };\n\n return this.add(title, \"SP.FieldMultiLineText\", extend(props, properties));\n }\n\n /**\n * Adds a new SP.FieldUrl to the collection\n *\n * @param title The field title\n */\n public addUrl(\n title: string,\n displayFormat: UrlFieldFormatType = UrlFieldFormatType.Hyperlink,\n properties?: FieldCreationProperties): Promise {\n\n const props = {\n DisplayFormat: displayFormat,\n FieldTypeKind: 11,\n };\n\n return this.add(title, \"SP.FieldUrl\", extend(props, properties));\n }\n\n /** Adds a user field to the colleciton\n * \n * @param title The new field's title\n * @param selectionMode The selection mode of the field\n * @param selectionGroup Value that specifies the identifier of the SharePoint group whose members can be selected as values of the field\n * @param properties\n */\n public addUser(title: string,\n selectionMode: FieldUserSelectionMode,\n properties?: FieldCreationProperties): Promise {\n\n const props = {\n FieldTypeKind: 20,\n SelectionMode: selectionMode,\n };\n\n return this.add(title, \"SP.FieldUser\", extend(props, properties));\n }\n\n /**\n * Adds a SP.FieldLookup to the collection\n *\n * @param title The new field's title\n * @param lookupListId The guid id of the list where the source of the lookup is found\n * @param lookupFieldName The internal name of the field in the source list\n * @param properties Set of additional properties to set on the new field\n */\n public addLookup(\n title: string,\n lookupListId: string,\n lookupFieldName: string,\n properties?: FieldCreationProperties): Promise {\n\n const props = extend({\n FieldTypeKind: 7,\n LookupFieldName: lookupFieldName,\n LookupListId: lookupListId,\n Title: title,\n }, properties);\n\n const postBody: string = jsS({\n \"parameters\":\n extend(metadata(\"SP.FieldCreationInformation\"), props),\n });\n\n return this.clone(Fields, \"addfield\").postCore<{ Id: string }>({ body: postBody }).then((data) => {\n return {\n data: data,\n field: this.getById(data.Id),\n };\n });\n }\n\n /**\n * Adds a new SP.FieldChoice to the collection\n *\n * @param title The field title.\n * @param choices The choices for the field.\n * @param format The display format of the available options for the field.\n * @param fillIn Specifies whether the field allows fill-in values.\n * @param properties Differ by type of field being created (see: https://msdn.microsoft.com/en-us/library/office/dn600182.aspx)\n */\n public addChoice(\n title: string,\n choices: string[],\n format: ChoiceFieldFormatType = ChoiceFieldFormatType.Dropdown,\n fillIn?: boolean,\n properties?: FieldCreationProperties): Promise {\n\n const props = {\n Choices: {\n results: choices,\n },\n EditFormat: format,\n FieldTypeKind: 6,\n FillInChoice: fillIn,\n };\n\n return this.add(title, \"SP.FieldChoice\", extend(props, properties));\n }\n\n /**\n * Adds a new SP.FieldMultiChoice to the collection\n *\n * @param title The field title.\n * @param choices The choices for the field.\n * @param fillIn Specifies whether the field allows fill-in values.\n * @param properties Differ by type of field being created (see: https://msdn.microsoft.com/en-us/library/office/dn600182.aspx)\n */\n public addMultiChoice(\n title: string,\n choices: string[],\n fillIn?: boolean,\n properties?: FieldCreationProperties): Promise {\n\n const props = {\n Choices: {\n results: choices,\n },\n FieldTypeKind: 15,\n FillInChoice: fillIn,\n };\n\n return this.add(title, \"SP.FieldMultiChoice\", extend(props, properties));\n }\n\n /**\n * Adds a new SP.FieldBoolean to the collection\n *\n * @param title The field title.\n * @param properties Differ by type of field being created (see: https://msdn.microsoft.com/en-us/library/office/dn600182.aspx)\n */\n public addBoolean(\n title: string,\n properties?: FieldCreationProperties): Promise {\n\n const props = {\n FieldTypeKind: 8,\n };\n\n return this.add(title, \"SP.Field\", extend(props, properties));\n }\n\n /**\n * Creates a secondary (dependent) lookup field, based on the Id of the primary lookup field.\n * \n * @param displayName The display name of the new field.\n * @param primaryLookupFieldId The guid of the primary Lookup Field.\n * @param showField Which field to show from the lookup list.\n */\n public addDependentLookupField(\n displayName: string,\n primaryLookupFieldId: string,\n showField: string,\n ): Promise {\n return this.clone(\n Fields,\n `adddependentlookupfield(displayName='${displayName}', primarylookupfieldid='${primaryLookupFieldId}', showfield='${showField}')`,\n )\n .postCore<{ Id: string }>()\n .then(data => {\n return {\n data,\n field: this.getById(data.Id),\n };\n });\n }\n\n /**\n * Adds a new SP.FieldLocation to the collection\n *\n * @param title The field title.\n * @param properties Differ by type of field being created (see: https://msdn.microsoft.com/en-us/library/office/dn600182.aspx)\n */\n public addLocation(\n title: string,\n properties?: FieldCreationProperties): Promise {\n\n const props: { FieldTypeKind: number } = { FieldTypeKind: 33 };\n\n return this.add(title, \"SP.FieldLocation\", extend(props, properties));\n }\n}\n\n/**\n * Describes a single of Field instance\n *\n */\nexport class Field extends SharePointQueryableInstance {\n\n /**\n * Delete this fields\n *\n */\n public delete = this._delete;\n\n /**\n * Updates this field intance with the supplied properties\n *\n * @param properties A plain object hash of values to update for the list\n * @param fieldType The type value, required to update child field type properties\n */\n public update(properties: TypedHash, fieldType = \"SP.Field\"): Promise {\n\n const postBody: string = jsS(extend(metadata(fieldType), properties));\n\n return this.postCore({\n body: postBody,\n headers: {\n \"X-HTTP-Method\": \"MERGE\",\n },\n }).then((data) => {\n return {\n data,\n field: this,\n };\n });\n }\n\n /**\n * Sets the value of the ShowInDisplayForm property for this field.\n */\n public setShowInDisplayForm(show: boolean): Promise {\n return this.clone(Field, `setshowindisplayform(${show})`).postCore();\n }\n\n /**\n * Sets the value of the ShowInEditForm property for this field.\n */\n public setShowInEditForm(show: boolean): Promise {\n return this.clone(Field, `setshowineditform(${show})`).postCore();\n }\n\n /**\n * Sets the value of the ShowInNewForm property for this field.\n */\n public setShowInNewForm(show: boolean): Promise {\n return this.clone(Field, `setshowinnewform(${show})`).postCore();\n }\n}\n\n/**\n * This interface defines the result of adding a field\n */\nexport interface FieldAddResult {\n data: any;\n field: Field;\n}\n\nexport interface FieldUpdateResult {\n data: any;\n field: Field;\n}\n\n\n\n// WEBPACK FOOTER //\n// ../../../../packages/sp/src/fields.ts","import { SharePointQueryableCollection, SharePointQueryableInstance, defaultPath } from \"./sharepointqueryable\";\n\n/**\n * Describes a collection of Field objects\n *\n */\n@defaultPath(\"forms\")\nexport class Forms extends SharePointQueryableCollection {\n /**\t\n * Gets a form by id\t\n *\t\n * @param id The guid id of the item to retrieve\t\n */\n public getById(id: string): Form {\n const i = new Form(this);\n i.concat(`('${id}')`);\n return i;\n }\n}\n\n/**\n * Describes a single of Form instance\n *\n */\nexport class Form extends SharePointQueryableInstance { }\n\n\n\n// WEBPACK FOOTER //\n// ../../../../packages/sp/src/forms.ts","import { SharePointQueryableCollection, SharePointQueryableInstance, defaultPath } from \"./sharepointqueryable\";\nimport { jsS } from \"@pnp/common\";\n\n/**\n * Describes a collection of webhook subscriptions\n *\n */\n@defaultPath(\"subscriptions\")\nexport class Subscriptions extends SharePointQueryableCollection {\n\n /**\n * Returns all the webhook subscriptions or the specified webhook subscription\n *\n * @param subscriptionId The id of a specific webhook subscription to retrieve, omit to retrieve all the webhook subscriptions\n */\n public getById(subscriptionId: string): Subscription {\n const s = new Subscription(this);\n s.concat(`('${subscriptionId}')`);\n return s;\n }\n\n /**\n * Creates a new webhook subscription\n *\n * @param notificationUrl The url to receive the notifications\n * @param expirationDate The date and time to expire the subscription in the form YYYY-MM-ddTHH:mm:ss+00:00 (maximum of 6 months)\n * @param clientState A client specific string (optional)\n */\n public add(notificationUrl: string, expirationDate: string, clientState?: string): Promise {\n\n const postBody: any = {\n \"expirationDateTime\": expirationDate,\n \"notificationUrl\": notificationUrl,\n \"resource\": this.toUrl(),\n };\n\n if (clientState) {\n postBody.clientState = clientState;\n }\n\n return this.postCore({ body: jsS(postBody), headers: { \"Content-Type\": \"application/json\" } }).then(result => {\n\n return { data: result, subscription: this.getById(result.id) };\n });\n }\n}\n\n/**\n * Describes a single webhook subscription instance\n *\n */\nexport class Subscription extends SharePointQueryableInstance {\n\n /**\n * Renews this webhook subscription\n *\n * @param expirationDate The date and time to expire the subscription in the form YYYY-MM-ddTHH:mm:ss+00:00 (maximum of 6 months, optional)\n * @param notificationUrl The url to receive the notifications (optional)\n * @param clientState A client specific string (optional)\n */\n public update(expirationDate?: string, notificationUrl?: string, clientState?: string): Promise {\n\n const postBody: any = {\n };\n\n if (expirationDate) {\n postBody.expirationDateTime = expirationDate;\n }\n\n if (notificationUrl) {\n postBody.notificationUrl = notificationUrl;\n }\n\n if (clientState) {\n postBody.clientState = clientState;\n }\n\n return this.patchCore({ body: jsS(postBody), headers: { \"Content-Type\": \"application/json\" } }).then(data => {\n return { data: data, subscription: this };\n });\n }\n\n /**\n * Removes this webhook subscription\n *\n */\n public delete(): Promise {\n return super.deleteCore();\n }\n}\n\nexport interface SubscriptionAddResult {\n subscription: Subscription;\n data: any;\n}\n\nexport interface SubscriptionUpdateResult {\n subscription: Subscription;\n data: any;\n}\n\n\n\n// WEBPACK FOOTER //\n// ../../../../packages/sp/src/subscriptions.ts","import { SharePointQueryableInstance, SharePointQueryableCollection, defaultPath } from \"./sharepointqueryable\";\nimport { extend, TypedHash, jsS } from \"@pnp/common\";\n\n/**\n * Describes a collection of user custom actions\n *\n */\n@defaultPath(\"usercustomactions\")\nexport class UserCustomActions extends SharePointQueryableCollection {\n\n /**\t \n * Returns the user custom action with the specified id\t \n *\t \n * @param id The GUID id of the user custom action to retrieve\t \n */\n public getById(id: string): UserCustomAction {\n const uca = new UserCustomAction(this);\n uca.concat(`('${id}')`);\n return uca;\n }\n\n /**\n * Creates a user custom action\n *\n * @param properties The information object of property names and values which define the new user custom action\n *\n */\n public add(properties: TypedHash): Promise {\n\n const postBody = jsS(extend({ __metadata: { \"type\": \"SP.UserCustomAction\" } }, properties));\n\n return this.postCore({ body: postBody }).then((data) => {\n return {\n action: this.getById(data.Id),\n data: data,\n };\n });\n }\n\n /**\n * Deletes all user custom actions in the collection\n *\n */\n public clear(): Promise {\n return this.clone(UserCustomActions, \"clear\").postCore();\n }\n}\n\n/**\n * Describes a single user custom action\n *\n */\nexport class UserCustomAction extends SharePointQueryableInstance {\n\n /**\n * Updates this user custom action with the supplied properties\n *\n * @param properties An information object of property names and values to update for this user custom action\n */\n public update = this._update>(\"SP.UserCustomAction\", (data) => ({ data, action: this }));\n\n /**\n * Removes this user custom action\n *\n */\n public delete(): Promise {\n return super.deleteCore();\n }\n}\n\n/**\n * Result from adding a user custom action\n *\n */\nexport interface UserCustomActionAddResult {\n data: any;\n action: UserCustomAction;\n}\n\n/**\n * Result from udating a user custom action\n *\n */\nexport interface UserCustomActionUpdateResult {\n data: any;\n action: UserCustomAction;\n}\n\n\n\n// WEBPACK FOOTER //\n// ../../../../packages/sp/src/usercustomactions.ts","import { Items } from \"./items\";\nimport { Views, View } from \"./views\";\nimport { ContentTypes } from \"./contenttypes\";\nimport { Fields } from \"./fields\";\nimport { Forms } from \"./forms\";\nimport { Subscriptions } from \"./subscriptions\";\nimport { SharePointQueryable, SharePointQueryableCollection, defaultPath } from \"./sharepointqueryable\";\nimport { SharePointQueryableSecurable } from \"./sharepointqueryablesecurable\";\nimport { extend, TypedHash, hOP, jsS, isArray } from \"@pnp/common\";\nimport { ControlMode, RenderListData, ChangeQuery, CamlQuery, ChangeLogitemQuery, ListFormData, RenderListDataParameters, ListItemFormUpdateValue, RenderListDataOptions } from \"./types\";\nimport { UserCustomActions } from \"./usercustomactions\";\nimport { odataUrlFrom } from \"./odata\";\nimport { Folder } from \"./folders\";\nimport { metadata } from \"./utils/metadata\";\nimport { SiteScripts } from \"..\";\nimport { toAbsoluteUrl } from \"./utils/toabsoluteurl\";\n\n/**\n * Describes a collection of List objects\n *\n */\n@defaultPath(\"lists\")\nexport class Lists extends SharePointQueryableCollection {\n\n /**\n * Gets a list from the collection by guid id\n *\n * @param id The Id of the list (GUID)\n */\n public getById(id: string): List {\n const list = new List(this);\n list.concat(`('${id}')`);\n return list;\n }\n\n /**\n * Gets a list from the collection by title\n *\n * @param title The title of the list\n */\n public getByTitle(title: string): List {\n return new List(this, `getByTitle('${title}')`);\n }\n\n /**\n * Adds a new list to the collection\n *\n * @param title The new list's title\n * @param description The new list's description\n * @param template The list template value\n * @param enableContentTypes If true content types will be allowed and enabled, otherwise they will be disallowed and not enabled\n * @param additionalSettings Will be passed as part of the list creation body\n */\n public add(title: string, description = \"\", template = 100, enableContentTypes = false, additionalSettings: TypedHash = {}): Promise {\n\n const addSettings = extend({\n \"AllowContentTypes\": enableContentTypes,\n \"BaseTemplate\": template,\n \"ContentTypesEnabled\": enableContentTypes,\n \"Description\": description,\n \"Title\": title,\n \"__metadata\": { \"type\": \"SP.List\" },\n }, additionalSettings);\n\n return this.postCore({ body: jsS(addSettings) }).then((data) => {\n return { data: data, list: this.getByTitle(addSettings.Title) };\n });\n }\n\n /**\n * Ensures that the specified list exists in the collection (note: this method not supported for batching)\n *\n * @param title The new list's title\n * @param description The new list's description\n * @param template The list template value\n * @param enableContentTypes If true content types will be allowed and enabled, otherwise they will be disallowed and not enabled\n * @param additionalSettings Will be passed as part of the list creation body or used to update an existing list\n */\n public ensure(\n title: string,\n description = \"\",\n template = 100,\n enableContentTypes = false,\n additionalSettings: TypedHash = {}): Promise {\n\n if (this.hasBatch) {\n throw Error(\"The ensure list method is not supported for use in a batch.\");\n }\n\n return new Promise((resolve, reject) => {\n\n const addOrUpdateSettings = extend(additionalSettings, { Title: title, Description: description, ContentTypesEnabled: enableContentTypes }, true);\n\n const list: List = this.getByTitle(addOrUpdateSettings.Title);\n\n list.get().then(_ => {\n\n list.update(addOrUpdateSettings).then(d => {\n resolve({ created: false, data: d, list: this.getByTitle(addOrUpdateSettings.Title) });\n }).catch(e => reject(e));\n\n }).catch(_ => {\n\n this.add(title, description, template, enableContentTypes, addOrUpdateSettings).then((r) => {\n resolve({ created: true, data: r.data, list: this.getByTitle(addOrUpdateSettings.Title) });\n }).catch((e) => reject(e));\n });\n });\n }\n\n /**\n * Gets a list that is the default asset location for images or other files, which the users upload to their wiki pages.\n */\n public ensureSiteAssetsLibrary(): Promise {\n return this.clone(Lists, \"ensuresiteassetslibrary\").postCore().then((json) => {\n return new List(odataUrlFrom(json));\n });\n }\n\n /**\n * Gets a list that is the default location for wiki pages.\n */\n public ensureSitePagesLibrary(): Promise {\n return this.clone(Lists, \"ensuresitepageslibrary\").postCore().then((json) => {\n return new List(odataUrlFrom(json));\n });\n }\n}\n\n/**\n * Describes a single List instance\n *\n */\nexport class List extends SharePointQueryableSecurable {\n\n /**\n * Gets the content types in this list\n *\n */\n public get contentTypes(): ContentTypes {\n return new ContentTypes(this);\n }\n\n /**\n * Gets the items in this list\n *\n */\n public get items(): Items {\n return new Items(this);\n }\n\n /**\n * Gets the views in this list\n *\n */\n public get views(): Views {\n return new Views(this);\n }\n\n /**\n * Gets the fields in this list\n *\n */\n public get fields(): Fields {\n return new Fields(this);\n }\n\n /**\n * Gets the forms in this list\n *\n */\n public get forms(): Forms {\n return new Forms(this);\n }\n\n /**\n * Gets the default view of this list\n *\n */\n public get defaultView(): View {\n return new View(this, \"DefaultView\");\n }\n\n /**\n * Get all custom actions on a site collection\n *\n */\n public get userCustomActions(): UserCustomActions {\n return new UserCustomActions(this);\n }\n\n /**\n * Gets the effective base permissions of this list\n *\n */\n public get effectiveBasePermissions(): SharePointQueryable {\n return new SharePointQueryable(this, \"EffectiveBasePermissions\");\n }\n\n /**\n * Gets the event receivers attached to this list\n *\n */\n public get eventReceivers(): SharePointQueryableCollection {\n return new SharePointQueryableCollection(this, \"EventReceivers\");\n }\n\n /**\n * Gets the related fields of this list\n *\n */\n public get relatedFields(): SharePointQueryable {\n return new SharePointQueryable(this, \"getRelatedFields\");\n }\n\n /**\n * Gets the IRM settings for this list\n *\n */\n public get informationRightsManagementSettings(): SharePointQueryable {\n return new SharePointQueryable(this, \"InformationRightsManagementSettings\");\n }\n\n /**\n * Gets the webhook subscriptions of this list\n *\n */\n public get subscriptions(): Subscriptions {\n return new Subscriptions(this);\n }\n\n /**\n * The root folder of the list\n */\n public get rootFolder(): Folder {\n return new Folder(this, \"rootFolder\");\n }\n\n /**\n * Gets a view by view guid id\n *\n */\n public getView(viewId: string): View {\n return new View(this, `getView('${viewId}')`);\n }\n\n /**\n * Updates this list intance with the supplied properties\n *\n * @param properties A plain object hash of values to update for the list\n * @param eTag Value used in the IF-Match header, by default \"*\"\n */\n /* tslint:disable no-string-literal */\n public update(properties: TypedHash, eTag = \"*\"): Promise {\n\n const postBody = jsS(extend({\n \"__metadata\": { \"type\": \"SP.List\" },\n }, properties));\n\n return this.postCore({\n body: postBody,\n headers: {\n \"IF-Match\": eTag,\n \"X-HTTP-Method\": \"MERGE\",\n },\n }).then((data) => {\n\n let retList: List = this;\n\n if (hOP(properties, \"Title\")) {\n retList = this.getParent(List, this.parentUrl, `getByTitle('${properties[\"Title\"]}')`);\n }\n\n return {\n data: data,\n list: retList,\n };\n });\n }\n /* tslint:enable */\n\n /**\n * Delete this list\n *\n * @param eTag Value used in the IF-Match header, by default \"*\"\n */\n public delete(eTag = \"*\"): Promise {\n return this.postCore({\n headers: {\n \"IF-Match\": eTag,\n \"X-HTTP-Method\": \"DELETE\",\n },\n });\n }\n\n /**\n * Returns the collection of changes from the change log that have occurred within the list, based on the specified query.\n */\n public getChanges(query: ChangeQuery): Promise {\n\n return this.clone(List, \"getchanges\").postCore({\n body: jsS({ \"query\": extend(metadata(\"SP.ChangeQuery\"), query) }),\n });\n }\n\n /**\n * Returns a collection of items from the list based on the specified query.\n *\n * @param CamlQuery The Query schema of Collaborative Application Markup\n * Language (CAML) is used in various ways within the context of Microsoft SharePoint Foundation\n * to define queries against list data.\n * see:\n *\n * https://msdn.microsoft.com/en-us/library/office/ms467521.aspx\n *\n * @param expands A URI with a $expand System Query Option indicates that Entries associated with\n * the Entry or Collection of Entries identified by the Resource Path\n * section of the URI must be represented inline (i.e. eagerly loaded).\n * see:\n *\n * https://msdn.microsoft.com/en-us/library/office/fp142385.aspx\n *\n * http://www.odata.org/documentation/odata-version-2-0/uri-conventions/#ExpandSystemQueryOption\n */\n public getItemsByCAMLQuery(query: CamlQuery, ...expands: string[]): Promise {\n\n const q = this.clone(List, \"getitems\");\n return q.expand.apply(q, expands).postCore({\n body: jsS({ \"query\": extend({ \"__metadata\": { \"type\": \"SP.CamlQuery\" } }, query) }),\n });\n }\n\n /**\n * See: https://msdn.microsoft.com/en-us/library/office/dn292554.aspx\n */\n public getListItemChangesSinceToken(query: ChangeLogitemQuery): Promise {\n\n return this.clone(List, \"getlistitemchangessincetoken\").postCore({\n body: jsS({ \"query\": extend({ \"__metadata\": { \"type\": \"SP.ChangeLogItemQuery\" } }, query) }),\n }, { parse(r) { return r.text(); } });\n }\n\n /**\n * Moves the list to the Recycle Bin and returns the identifier of the new Recycle Bin item.\n */\n public recycle(): Promise {\n return this.clone(List, \"recycle\").postCore().then(data => {\n if (hOP(data, \"Recycle\")) {\n return data.Recycle;\n } else {\n return data;\n }\n });\n }\n\n /**\n * Renders list data based on the view xml provided\n */\n public renderListData(viewXml: string): Promise {\n\n const q = this.clone(List, \"renderlistdata(@viewXml)\");\n q.query.set(\"@viewXml\", `'${viewXml}'`);\n return q.postCore().then(data => {\n // data will be a string, so we parse it again\n return JSON.parse(hOP(data, \"RenderListData\") ? data.RenderListData : data);\n });\n }\n\n /**\n * Returns the data for the specified query view\n *\n * @param parameters The parameters to be used to render list data as JSON string.\n * @param overrideParameters The parameters that are used to override and extend the regular SPRenderListDataParameters.\n * @param queryParams Allows setting of query parameters\n */\n public renderListDataAsStream(parameters: RenderListDataParameters, overrideParameters: any = null, queryParams = new Map()): Promise {\n\n if (hOP(parameters, \"RenderOptions\") && isArray(parameters.RenderOptions)) {\n parameters.RenderOptions = (parameters.RenderOptions).reduce((v, c) => v + c);\n }\n\n const postBody = {\n overrideParameters: extend(metadata(\"SP.RenderListDataOverrideParameters\"), overrideParameters),\n parameters: extend(metadata(\"SP.RenderListDataParameters\"), parameters),\n };\n\n const clone = this.clone(List, \"RenderListDataAsStream\", true);\n\n if (queryParams && queryParams.size > 0) {\n queryParams.forEach((v, k) => clone.query.set(k, v));\n }\n\n return clone.postCore({\n body: jsS(postBody),\n });\n }\n\n /**\n * Gets the field values and field schema attributes for a list item.\n */\n public renderListFormData(itemId: number, formId: string, mode: ControlMode): Promise {\n return this.clone(List, `renderlistformdata(itemid=${itemId}, formid='${formId}', mode='${mode}')`).postCore().then(data => {\n // data will be a string, so we parse it again\n return JSON.parse(hOP(data, \"RenderListFormData\") ? data.RenderListFormData : data);\n });\n }\n\n /**\n * Reserves a list item ID for idempotent list item creation.\n */\n public reserveListItemId(): Promise {\n return this.clone(List, \"reservelistitemid\").postCore().then(data => {\n if (hOP(data, \"ReserveListItemId\")) {\n return data.ReserveListItemId;\n } else {\n return data;\n }\n });\n }\n\n /**\n * Returns the ListItemEntityTypeFullName for this list, used when adding/updating list items. Does not support batching.\n *\n */\n public getListItemEntityTypeFullName(): Promise {\n return this.clone(List, null, false).select(\"ListItemEntityTypeFullName\").get<{ ListItemEntityTypeFullName: string }>().then(o => o.ListItemEntityTypeFullName);\n }\n\n /**\n * Creates an item using path (in a folder), validates and sets its field values.\n *\n * @param formValues The fields to change and their new values.\n * @param decodedUrl Path decoded url; folder's server relative path.\n * @param bNewDocumentUpdate true if the list item is a document being updated after upload; otherwise false.\n * @param checkInComment Optional check in comment.\n */\n public addValidateUpdateItemUsingPath(\n formValues: ListItemFormUpdateValue[],\n decodedUrl: string,\n bNewDocumentUpdate = false,\n checkInComment?: string,\n ): Promise {\n return this.clone(List, \"AddValidateUpdateItemUsingPath()\").postCore({\n body: jsS({\n bNewDocumentUpdate,\n checkInComment,\n formValues,\n listItemCreateInfo: {\n FolderPath: {\n DecodedUrl: decodedUrl,\n __metadata: { type: \"SP.ResourcePath\" },\n },\n __metadata: { type: \"SP.ListItemCreationInformationUsingPath\" },\n },\n }),\n }).then(res => {\n if (typeof res.AddValidateUpdateItemUsingPath !== \"undefined\") {\n return res.AddValidateUpdateItemUsingPath.results;\n }\n return res;\n });\n }\n\n /**\n * Gets the site script syntax (JSON) for the current list\n */\n public async getSiteScript(): Promise {\n const rootFolder = await this.clone(List).rootFolder.select(\"ServerRelativeUrl\").get();\n const absoluteListUrl = await toAbsoluteUrl(rootFolder.ServerRelativeUrl);\n return new SiteScripts(this, \"\").getSiteScriptFromList(absoluteListUrl);\n }\n}\n\nexport interface ListAddResult {\n list: List;\n data: any;\n}\n\nexport interface ListUpdateResult {\n list: List;\n data: any;\n}\n\nexport interface ListEnsureResult {\n list: List;\n created: boolean;\n data: any;\n}\n\n\n\n// WEBPACK FOOTER //\n// ../../../../packages/sp/src/lists.ts","import { SharePointQueryableCollection, SharePointQueryableInstance, defaultPath } from \"./sharepointqueryable\";\nimport { extend, jsS } from \"@pnp/common\";\nimport { odataUrlFrom } from \"./odata\";\nimport { metadata } from \"./utils/metadata\";\n\nexport interface CommentAuthorData {\n email: string;\n id: number;\n isActive: boolean;\n isExternal: boolean;\n jobTitle: string | null;\n loginName: string;\n name: string;\n principalType: number;\n userId: any | null;\n}\n\nexport interface CommentData {\n author: CommentAuthorData;\n createdDate: string;\n id: string;\n isLikedByUser: boolean;\n isReply: boolean;\n itemId: number;\n likeCount: number;\n listId: string;\n mentions: any | null;\n parentId: string;\n replyCount: number;\n text: string;\n}\n\nexport interface Identity {\n loginName: string;\n email: string;\n name: string;\n}\n\nexport interface CommentInfo {\n text: string;\n mentions?: Identity[];\n}\n\n/**\n * Represents a Collection of comments\n */\n@defaultPath(\"comments\")\nexport class Comments extends SharePointQueryableCollection {\n\n /**\n * Adds a new comment to this collection\n * \n * @param info Comment information to add\n */\n public add(info: string | CommentInfo): Promise {\n\n if (typeof info === \"string\") {\n info = { text: info };\n }\n\n const postBody = jsS(extend(metadata(\"Microsoft.SharePoint.Comments.comment\"), info));\n\n return this.clone(Comments, null).postCore({ body: postBody }).then(d => {\n return extend(this.getById(d.id), d);\n });\n }\n\n /**\n * Gets a comment by id\n * \n * @param id Id of the comment to load\n */\n public getById(id: string | number): Comment {\n const c = new Comment(this);\n c.concat(`(${id})`);\n return c;\n }\n\n /**\n * Deletes all the comments in this collection\n */\n public clear(): Promise {\n return this.clone(Comments, \"DeleteAll\").postCore();\n }\n}\n\n/**\n * Represents a comment\n */\nexport class Comment extends SharePointQueryableInstance {\n\n public get replies(): Replies {\n return new Replies(this);\n }\n\n /**\n * Likes the comment as the current user\n */\n public like(): Promise {\n return this.clone(Comment, \"Like\").postCore();\n }\n\n /**\n * Unlikes the comment as the current user\n */\n public unlike(): Promise {\n return this.clone(Comment, \"Unlike\").postCore();\n }\n\n /**\n * Deletes this comment\n */\n public delete(): Promise {\n return this.deleteCore();\n }\n}\n\n/**\n * Represents a Collection of comments\n */\n@defaultPath(\"replies\")\nexport class Replies extends SharePointQueryableCollection {\n\n /**\n * Adds a new reply to this collection\n * \n * @param info Comment information to add\n */\n public add(info: string | CommentInfo): Promise {\n\n if (typeof info === \"string\") {\n info = { text: info };\n }\n\n const postBody = jsS(extend(metadata(\"Microsoft.SharePoint.Comments.comment\"), info));\n\n return this.clone(Replies, null).postCore({ body: postBody }).then(d => {\n return extend(new Comment(odataUrlFrom(d)), d);\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ../../../../packages/sp/src/comments.ts","import { SharePointQueryable, SharePointQueryableCollection, SharePointQueryableInstance, defaultPath } from \"./sharepointqueryable\";\nimport { SharePointQueryableShareableItem } from \"./sharepointqueryableshareable\";\nimport { Folder } from \"./folders\";\nimport { File } from \"./files\";\nimport { ContentType } from \"./contenttypes\";\nimport { extend, TypedHash, jsS, hOP } from \"@pnp/common\";\nimport { ListItemFormUpdateValue, LikeData } from \"./types\";\nimport { ODataParserBase, ODataDefaultParser, ODataParser } from \"@pnp/odata\";\nimport { AttachmentFiles } from \"./attachmentfiles\";\nimport { List } from \"./lists\";\nimport { Logger, LogLevel } from \"@pnp/logging\";\nimport { Comments } from \"./comments\";\nimport { metadata } from \"./utils/metadata\";\n\n/**\n * Describes a collection of Item objects\n *\n */\n@defaultPath(\"items\")\nexport class Items extends SharePointQueryableCollection {\n\n /**\t\n * Gets an Item by id\t\n *\t\n * @param id The integer id of the item to retrieve\t\n */\n public getById(id: number): Item {\n const i = new Item(this);\n i.concat(`(${id})`);\n return i;\n }\n\n /**\n * Gets BCS Item by string id\n *\n * @param stringId The string id of the BCS item to retrieve\n */\n public getItemByStringId(stringId: string): Item {\n // creates an item with the parent list path and append out method call\n return new Item(this.parentUrl, `getItemByStringId('${stringId}')`);\n }\n\n /**\n * Skips the specified number of items (https://msdn.microsoft.com/en-us/library/office/fp142385.aspx#sectionSection6)\n *\n * @param skip The starting id where the page should start, use with top to specify pages\n * @param reverse It true the PagedPrev=true parameter is added allowing backwards navigation in the collection\n */\n public skip(skip: number, reverse = false): this {\n if (reverse) {\n this.query.set(\"$skiptoken\", encodeURIComponent(`Paged=TRUE&PagedPrev=TRUE&p_ID=${skip}`));\n } else {\n this.query.set(\"$skiptoken\", encodeURIComponent(`Paged=TRUE&p_ID=${skip}`));\n }\n return this;\n }\n\n /**\n * Gets a collection designed to aid in paging through data\n *\n */\n public getPaged(parser: ODataParser = new ODataDefaultParser()): Promise> {\n\n return this.get(new PagedItemCollectionParser(this, parser));\n }\n\n /**\n * Gets all the items in a list, regardless of count. Does not support batching or caching\n *\n * @param requestSize Number of items to return in each request (Default: 2000)\n * @param acceptHeader Allows for setting the value of the Accept header for SP 2013 support\n */\n public getAll(requestSize = 2000, acceptHeader = \"application/json;odata=nometadata\"): Promise {\n\n Logger.write(\"Calling items.getAll should be done sparingly. Ensure this is the correct choice. If you are unsure, it is not.\", LogLevel.Warning);\n\n // this will be used for the actual query\n // and we set no metadata here to try and reduce traffic\n const items = new Items(this, \"\").top(requestSize).configure({\n headers: {\n \"Accept\": acceptHeader,\n },\n });\n\n // let's copy over the odata query params that can be applied\n // $top - allow setting the page size this way (override what we did above)\n // $select - allow picking the return fields (good behavior)\n // $filter - allow setting a filter, though this may fail due for large lists\n this.query.forEach((v: string, k: string) => {\n if (/^\\$select|filter|top|expand$/i.test(k)) {\n items.query.set(k, v);\n }\n });\n\n // give back the promise\n return new Promise((resolve, reject) => {\n\n // this will eventually hold the items we return\n const itemsCollector: any[] = [];\n\n // action that will gather up our results recursively\n const gatherer = (last: PagedItemCollection) => {\n\n // collect that set of results\n [].push.apply(itemsCollector, last.results);\n\n // if we have more, repeat - otherwise resolve with the collected items\n if (last.hasNext) {\n last.getNext().then(gatherer).catch(reject);\n } else {\n resolve(itemsCollector);\n }\n };\n\n // start the cycle\n items.getPaged().then(gatherer).catch(reject);\n });\n }\n\n /**\n * Adds a new item to the collection\n *\n * @param properties The new items's properties\n * @param listItemEntityTypeFullName The type name of the list's entities\n */\n public add(properties: TypedHash = {}, listItemEntityTypeFullName: string = null): Promise {\n\n const removeDependency = this.addBatchDependency();\n\n return this.ensureListItemEntityTypeName(listItemEntityTypeFullName).then(listItemEntityType => {\n\n const postBody = jsS(extend(metadata(listItemEntityType), properties));\n\n const promise = this.clone(Items, \"\").postCore<{ Id: number }>({ body: postBody }).then((data) => {\n return {\n data: data,\n item: this.getById(data.Id),\n };\n });\n\n removeDependency();\n\n return promise;\n });\n }\n\n /**\n * Ensures we have the proper list item entity type name, either from the value provided or from the list\n *\n * @param candidatelistItemEntityTypeFullName The potential type name\n */\n private ensureListItemEntityTypeName(candidatelistItemEntityTypeFullName: string): Promise {\n\n return candidatelistItemEntityTypeFullName ?\n Promise.resolve(candidatelistItemEntityTypeFullName) :\n this.getParent(List).getListItemEntityTypeFullName();\n }\n}\n\n/**\n * Descrines a single Item instance\n *\n */\nexport class Item extends SharePointQueryableShareableItem {\n\n /**\n * Delete this item\n *\n * @param eTag Value used in the IF-Match header, by default \"*\"\n */\n public delete = this._deleteWithETag;\n\n /**\n * Gets the set of attachments for this item\n *\n */\n public get attachmentFiles(): AttachmentFiles {\n return new AttachmentFiles(this);\n }\n\n /**\n * Gets the content type for this item\n *\n */\n public get contentType(): ContentType {\n return new ContentType(this, \"ContentType\");\n }\n\n /**\n * Gets the collection of comments associated with this list item\n */\n public get comments(): Comments {\n return new Comments(this);\n }\n\n /**\n * Gets the effective base permissions for the item\n *\n */\n public get effectiveBasePermissions(): SharePointQueryable {\n return new SharePointQueryable(this, \"EffectiveBasePermissions\");\n }\n\n /**\n * Gets the effective base permissions for the item in a UI context\n *\n */\n public get effectiveBasePermissionsForUI(): SharePointQueryable {\n return new SharePointQueryable(this, \"EffectiveBasePermissionsForUI\");\n }\n\n /**\n * Gets the field values for this list item in their HTML representation\n *\n */\n public get fieldValuesAsHTML(): SharePointQueryableInstance {\n return new SharePointQueryableInstance(this, \"FieldValuesAsHTML\");\n }\n\n /**\n * Gets the field values for this list item in their text representation\n *\n */\n public get fieldValuesAsText(): SharePointQueryableInstance {\n return new SharePointQueryableInstance(this, \"FieldValuesAsText\");\n }\n\n /**\n * Gets the field values for this list item for use in editing controls\n *\n */\n public get fieldValuesForEdit(): SharePointQueryableInstance {\n return new SharePointQueryableInstance(this, \"FieldValuesForEdit\");\n }\n\n /**\n * Gets the folder associated with this list item (if this item represents a folder)\n *\n */\n public get folder(): Folder {\n return new Folder(this, \"folder\");\n }\n\n /**\n * Gets the folder associated with this list item (if this item represents a folder)\n *\n */\n public get file(): File {\n return new File(this, \"file\");\n }\n\n /**\n * Gets the collection of versions associated with this item\n */\n public get versions(): ItemVersions {\n return new ItemVersions(this);\n }\n\n public get list(): List {\n return this.getParent(List, this.parentUrl.substr(0, this.parentUrl.lastIndexOf(\"/\")));\n }\n\n /**\n * Updates this list intance with the supplied properties\n *\n * @param properties A plain object hash of values to update for the list\n * @param eTag Value used in the IF-Match header, by default \"*\"\n * @param listItemEntityTypeFullName The type name of the list's entities\n */\n public update(properties: TypedHash, eTag = \"*\", listItemEntityTypeFullName: string = null): Promise {\n\n return new Promise((resolve, reject) => {\n\n const removeDependency = this.addBatchDependency();\n\n return this.ensureListItemEntityTypeName(listItemEntityTypeFullName).then(listItemEntityType => {\n\n const postBody = jsS(extend(metadata(listItemEntityType), properties));\n\n removeDependency();\n\n return this.postCore({\n body: postBody,\n headers: {\n \"IF-Match\": eTag,\n \"X-HTTP-Method\": \"MERGE\",\n },\n }, new ItemUpdatedParser()).then((data) => {\n resolve({\n data: data,\n item: this,\n });\n });\n }).catch(e => reject(e));\n });\n }\n\n /**\n * Gets the collection of people who have liked this item\n */\n public getLikedBy(): Promise {\n return this.clone(Item, \"likedBy\").postCore();\n }\n\n /**\n * Likes this item as the current user\n */\n public like(): Promise {\n return this.clone(Item, \"like\").postCore();\n }\n\n /**\n * Unlikes this item as the current user\n */\n public unlike(): Promise {\n return this.clone(Item, \"unlike\").postCore();\n }\n\n /**\n * Moves the list item to the Recycle Bin and returns the identifier of the new Recycle Bin item.\n */\n public recycle(): Promise {\n return this.clone(Item, \"recycle\").postCore();\n }\n\n /**\n * Gets a string representation of the full URL to the WOPI frame.\n * If there is no associated WOPI application, or no associated action, an empty string is returned.\n *\n * @param action Display mode: 0: view, 1: edit, 2: mobileView, 3: interactivePreview\n */\n public getWopiFrameUrl(action = 0): Promise {\n const i = this.clone(Item, \"getWOPIFrameUrl(@action)\");\n i.query.set(\"@action\", action);\n return i.postCore().then((data: any) => {\n\n // handle verbose mode\n if (hOP(data, \"GetWOPIFrameUrl\")) {\n return data.GetWOPIFrameUrl;\n }\n\n return data;\n });\n }\n\n /**\n * Validates and sets the values of the specified collection of fields for the list item.\n *\n * @param formValues The fields to change and their new values.\n * @param newDocumentUpdate true if the list item is a document being updated after upload; otherwise false.\n */\n public validateUpdateListItem(formValues: ListItemFormUpdateValue[], newDocumentUpdate = false): Promise {\n return this.clone(Item, \"validateupdatelistitem\").postCore({\n body: jsS({ \"formValues\": formValues, bNewDocumentUpdate: newDocumentUpdate }),\n });\n }\n\n /**\n * Get the like by information for a modern site page \n */\n public getLikedByInformation(): Promise {\n return this.clone(Item, \"likedByInformation\").expand(\"likedby\").getCore();\n }\n\n /**\n * Ensures we have the proper list item entity type name, either from the value provided or from the list\n *\n * @param candidatelistItemEntityTypeFullName The potential type name\n */\n private ensureListItemEntityTypeName(candidatelistItemEntityTypeFullName: string): Promise {\n\n return candidatelistItemEntityTypeFullName ?\n Promise.resolve(candidatelistItemEntityTypeFullName) :\n this.list.getListItemEntityTypeFullName();\n }\n}\n\nexport interface ItemAddResult {\n item: Item;\n data: any;\n}\n\nexport interface ItemUpdateResult {\n item: Item;\n data: ItemUpdateResultData;\n}\n\nexport interface ItemUpdateResultData {\n \"odata.etag\": string;\n}\n\n/**\n * Describes a collection of Version objects\n *\n */\n@defaultPath(\"versions\")\nexport class ItemVersions extends SharePointQueryableCollection {\n /**\t\n * Gets a version by id\t\n *\t\n * @param versionId The id of the version to retrieve\t\n */\n public getById(versionId: number): ItemVersion {\n const v = new ItemVersion(this);\n v.concat(`(${versionId})`);\n return v;\n }\n}\n\n/**\n * Describes a single Version instance\n *\n */\nexport class ItemVersion extends SharePointQueryableInstance {\n\n /**\n * Delete a specific version of a file.\n *\n * @param eTag Value used in the IF-Match header, by default \"*\"\n */\n public delete = this._deleteWithETag;\n}\n\n/**\n * Provides paging functionality for list items\n */\nexport class PagedItemCollection {\n\n constructor(private parent: Items, private nextUrl: string, public results: T, private innerParser: ODataParser) { }\n\n /**\n * If true there are more results available in the set, otherwise there are not\n */\n public get hasNext(): boolean {\n return typeof this.nextUrl === \"string\" && this.nextUrl.length > 0;\n }\n\n /**\n * Gets the next set of results, or resolves to null if no results are available\n */\n public getNext(): Promise> {\n\n if (this.hasNext) {\n const items = new Items(this.nextUrl, null).configureFrom(this.parent);\n return items.getPaged(this.innerParser);\n }\n\n return new Promise(r => r(null));\n }\n}\n\nclass PagedItemCollectionParser extends ODataParserBase> {\n\n constructor(private _parent: Items, private innerParser: ODataParser) {\n super();\n }\n\n public parse(r: Response): Promise> {\n\n return this.innerParser.parse(r).then(async items => {\n\n const json = (this.innerParser).rawJson;\n\n const nextUrl = hOP(json, \"d\") && hOP(json.d, \"__next\") ? json.d.__next : json[\"odata.nextLink\"];\n\n return new PagedItemCollection(this._parent, nextUrl, items, this.innerParser);\n });\n }\n}\n\nclass ItemUpdatedParser extends ODataParserBase {\n public async parse(r: Response): Promise {\n return new Promise((resolve, reject) => {\n\n if (this.handleError(r, reject)) {\n resolve({\n \"odata.etag\": r.headers.get(\"etag\"),\n });\n }\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ../../../../packages/sp/src/items.ts","import { SharePointQueryableCollection, SharePointQueryableInstance, defaultPath } from \"./sharepointqueryable\";\nimport { TextParser, BlobParser, JSONParser, BufferParser } from \"@pnp/odata\";\nimport { extend, getGUID, stringIsNullOrEmpty } from \"@pnp/common\";\nimport { LimitedWebPartManager } from \"./webparts\";\nimport { Item } from \"./items\";\nimport { SharePointQueryableShareableFile } from \"./sharepointqueryableshareable\";\nimport { odataUrlFrom } from \"./odata\";\n\nexport interface ChunkedFileUploadProgressData {\n uploadId: string;\n stage: \"starting\" | \"continue\" | \"finishing\";\n blockNumber: number;\n totalBlocks: number;\n chunkSize: number;\n currentPointer: number;\n fileSize: number;\n}\n\nexport interface AddUsingPathProps {\n /**\n * Overwrite the file if it exists\n */\n Overwrite: boolean;\n /**\n * specifies whether to auto checkout on invalid Data. It'll be useful if the list contains validation whose requirements upload will not be able to meet.\n */\n AutoCheckoutOnInvalidData?: boolean;\n /**\n * Specifies a XOR hash of the file data which should be used to ensure end-2-end data integrity, base64 representation\n */\n XorHash?: string;\n}\n\n/**\n * Describes a collection of File objects\n *\n */\n@defaultPath(\"files\")\nexport class Files extends SharePointQueryableCollection {\n\n /**\n * Gets a File by filename\n *\n * @param name The name of the file, including extension.\n */\n public getByName(name: string): File {\n const f = new File(this);\n f.concat(`('${name}')`);\n return f;\n }\n\n /**\n * Uploads a file. Not supported for batching\n *\n * @param url The folder-relative url of the file.\n * @param content The file contents blob.\n * @param shouldOverWrite Should a file with the same name in the same location be overwritten? (default: true)\n * @returns The new File and the raw response.\n */\n public add(url: string, content: string | ArrayBuffer | Blob, shouldOverWrite = true): Promise {\n return new Files(this, `add(overwrite=${shouldOverWrite},url='${url}')`)\n .postCore({\n body: content,\n }).then((response) => {\n return {\n data: response,\n file: this.getByName(url),\n };\n });\n }\n\n /**\n * Adds a file using the pound percent safe methods\n * \n * @param url Excoded url of the file\n * @param content The file content\n * @param parameters Additional parameters to control method behavior\n */\n public addUsingPath(url: string, content: string | ArrayBuffer | Blob, parameters: AddUsingPathProps = { Overwrite: false }): Promise {\n\n const path = [`AddUsingPath(decodedurl='${url}'`];\n\n if (parameters) {\n if (parameters.Overwrite) {\n path.push(\",Overwrite=true\");\n }\n if (parameters.AutoCheckoutOnInvalidData) {\n path.push(\",AutoCheckoutOnInvalidData=true\");\n }\n if (!stringIsNullOrEmpty(parameters.XorHash)) {\n path.push(`,XorHash=${parameters.XorHash}`);\n }\n }\n\n path.push(\")\");\n\n return new Files(this, path.join(\"\"))\n .postCore({\n body: content,\n }).then((response) => {\n return {\n data: response,\n file: this.getByName(url),\n };\n });\n }\n\n /**\n * Uploads a file. Not supported for batching\n *\n * @param url The folder-relative url of the file.\n * @param content The Blob file content to add\n * @param progress A callback function which can be used to track the progress of the upload\n * @param shouldOverWrite Should a file with the same name in the same location be overwritten? (default: true)\n * @param chunkSize The size of each file slice, in bytes (default: 10485760)\n * @returns The new File and the raw response.\n */\n public addChunked(\n url: string,\n content: Blob,\n progress?: (data: ChunkedFileUploadProgressData) => void,\n shouldOverWrite = true,\n chunkSize = 10485760,\n ): Promise {\n const adder = this.clone(Files, `add(overwrite = ${ shouldOverWrite }, url = '${url}')`, false);\n return adder.postCore()\n .then(() => this.getByName(url))\n .then(file => file.setContentChunked(content, progress, chunkSize));\n }\n\n /**\n * Adds a ghosted file to an existing list or document library. Not supported for batching.\n *\n * @param fileUrl The server-relative url where you want to save the file.\n * @param templateFileType The type of use to create the file.\n * @returns The template file that was added and the raw response.\n */\n public addTemplateFile(fileUrl: string, templateFileType: TemplateFileType): Promise {\n return this.clone(Files, `addTemplateFile(urloffile = '${fileUrl}', templatefiletype = ${ templateFileType })`, false)\n .postCore().then((response) => {\n return {\n data: response,\n file: this.getByName(fileUrl),\n };\n });\n }\n}\n\n/**\n * Describes a single File instance\n *\n */\nexport class File extends SharePointQueryableShareableFile {\n\n /**\n * Gets a value that specifies the list item field values for the list item corresponding to the file.\n *\n */\n public get listItemAllFields(): SharePointQueryableInstance {\n return new SharePointQueryableInstance(this, \"listItemAllFields\");\n }\n\n /**\n * Gets a collection of versions\n *\n */\n public get versions(): Versions {\n return new Versions(this);\n }\n\n /**\n * Approves the file submitted for content approval with the specified comment.\n * Only documents in lists that are enabled for content approval can be approved.\n *\n * @param comment The comment for the approval.\n */\n public approve(comment = \"\"): Promise {\n return this.clone(File, `approve(comment = '${comment}')`).postCore();\n }\n\n /**\n * Stops the chunk upload session without saving the uploaded data. Does not support batching.\n * If the file doesn’t already exist in the library, the partially uploaded file will be deleted.\n * Use this in response to user action (as in a request to cancel an upload) or an error or exception.\n * Use the uploadId value that was passed to the StartUpload method that started the upload session.\n * This method is currently available only on Office 365.\n *\n * @param uploadId The unique identifier of the upload session.\n */\n public cancelUpload(uploadId: string): Promise {\n return this.clone(File, `cancelUpload(uploadId = guid'${uploadId}')`, false).postCore();\n }\n\n /**\n * Checks the file in to a document library based on the check-in type.\n *\n * @param comment A comment for the check-in. Its length must be <= 1023.\n * @param checkinType The check-in type for the file.\n */\n public checkin(comment = \"\", checkinType = CheckinType.Major): Promise {\n\n if (comment.length > 1023) {\n throw Error(\"The maximum comment length is 1023 characters.\");\n }\n\n return this.clone(File, `checkin(comment = '${comment}', checkintype = ${ checkinType })`).postCore();\n }\n\n /**\n * Checks out the file from a document library.\n */\n public checkout(): Promise {\n return this.clone(File, \"checkout\").postCore();\n }\n\n /**\n * Copies the file to the destination url.\n *\n * @param url The absolute url or server relative url of the destination file path to copy to.\n * @param shouldOverWrite Should a file with the same name in the same location be overwritten?\n */\n public copyTo(url: string, shouldOverWrite = true): Promise {\n return this.clone(File, `copyTo(strnewurl = '${url}', boverwrite = ${ shouldOverWrite })`).postCore();\n }\n\n /**\n * Delete this file.\n *\n * @param eTag Value used in the IF-Match header, by default \"*\"\n */\n public delete(eTag = \"*\"): Promise {\n return this.clone(File, null).postCore({\n headers: {\n \"IF-Match\": eTag,\n \"X-HTTP-Method\": \"DELETE\",\n },\n });\n }\n\n /**\n * Denies approval for a file that was submitted for content approval.\n * Only documents in lists that are enabled for content approval can be denied.\n *\n * @param comment The comment for the denial.\n */\n public deny(comment = \"\"): Promise {\n if (comment.length > 1023) {\n throw Error(\"The maximum comment length is 1023 characters.\");\n }\n return this.clone(File, `deny(comment = '${comment}')`).postCore();\n }\n\n /**\n * Specifies the control set used to access, modify, or add Web Parts associated with this Web Part Page and view.\n * An exception is thrown if the file is not an ASPX page.\n *\n * @param scope The WebPartsPersonalizationScope view on the Web Parts page.\n */\n public getLimitedWebPartManager(scope = WebPartsPersonalizationScope.Shared): LimitedWebPartManager {\n return new LimitedWebPartManager(this, `getLimitedWebPartManager(scope = ${ scope })`);\n }\n\n /**\n * Moves the file to the specified destination url.\n *\n * @param url The absolute url or server relative url of the destination file path to move to.\n * @param moveOperations The bitwise MoveOperations value for how to move the file.\n */\n public moveTo(url: string, moveOperations = MoveOperations.Overwrite): Promise {\n return this.clone(File, `moveTo(newurl = '${url}', flags = ${ moveOperations })`).postCore();\n }\n\n /**\n * Submits the file for content approval with the specified comment.\n *\n * @param comment The comment for the published file. Its length must be <= 1023.\n */\n public publish(comment = \"\"): Promise {\n if (comment.length > 1023) {\n throw Error(\"The maximum comment length is 1023 characters.\");\n }\n return this.clone(File, `publish(comment = '${comment}')`).postCore();\n }\n\n /**\n * Moves the file to the Recycle Bin and returns the identifier of the new Recycle Bin item.\n *\n * @returns The GUID of the recycled file.\n */\n public recycle(): Promise {\n return this.clone(File, \"recycle\").postCore();\n }\n\n /**\n * Reverts an existing checkout for the file.\n *\n */\n public undoCheckout(): Promise {\n return this.clone(File, \"undoCheckout\").postCore();\n }\n\n /**\n * Removes the file from content approval or unpublish a major version.\n *\n * @param comment The comment for the unpublish operation. Its length must be <= 1023.\n */\n public unpublish(comment = \"\"): Promise {\n if (comment.length > 1023) {\n throw Error(\"The maximum comment length is 1023 characters.\");\n }\n return this.clone(File, `unpublish(comment = '${comment}')`).postCore();\n }\n\n /**\n * Gets the contents of the file as text. Not supported in batching.\n *\n */\n public getText(): Promise {\n\n return this.clone(File, \"$value\", false).get(new TextParser(), { headers: { \"binaryStringResponseBody\": \"true\" } });\n }\n\n /**\n * Gets the contents of the file as a blob, does not work in Node.js. Not supported in batching.\n *\n */\n public getBlob(): Promise {\n\n return this.clone(File, \"$value\", false).get(new BlobParser(), { headers: { \"binaryStringResponseBody\": \"true\" } });\n }\n\n /**\n * Gets the contents of a file as an ArrayBuffer, works in Node.js. Not supported in batching.\n */\n public getBuffer(): Promise {\n\n return this.clone(File, \"$value\", false).get(new BufferParser(), { headers: { \"binaryStringResponseBody\": \"true\" } });\n }\n\n /**\n * Gets the contents of a file as an ArrayBuffer, works in Node.js. Not supported in batching.\n */\n public getJSON(): Promise {\n\n return this.clone(File, \"$value\", false).get(new JSONParser(), { headers: { \"binaryStringResponseBody\": \"true\" } });\n }\n\n /**\n * Sets the content of a file, for large files use setContentChunked. Not supported in batching.\n *\n * @param content The file content\n *\n */\n public setContent(content: string | ArrayBuffer | Blob): Promise {\n\n return this.clone(File, \"$value\", false).postCore({\n body: content,\n headers: {\n \"X-HTTP-Method\": \"PUT\",\n },\n }).then(_ => new File(this));\n }\n\n /**\n * Gets the associated list item for this folder, loading the default properties\n */\n public getItem(...selects: string[]): Promise {\n\n const q = this.listItemAllFields;\n return q.select.apply(q, selects).get().then((d: any) => {\n\n return extend((new Item(odataUrlFrom(d))).configureFrom(this), d);\n });\n }\n\n /**\n * Sets the contents of a file using a chunked upload approach. Not supported in batching.\n *\n * @param file The file to upload\n * @param progress A callback function which can be used to track the progress of the upload\n * @param chunkSize The size of each file slice, in bytes (default: 10485760)\n */\n public setContentChunked(file: Blob, progress?: (data: ChunkedFileUploadProgressData) => void, chunkSize = 10485760): Promise {\n\n if (progress === undefined) {\n progress = () => null;\n }\n\n const fileSize = file.size;\n const blockCount = parseInt((file.size / chunkSize).toString(), 10) + ((file.size % chunkSize === 0) ? 1 : 0);\n const uploadId = getGUID();\n\n // start the chain with the first fragment\n progress({ uploadId, blockNumber: 1, chunkSize, currentPointer: 0, fileSize, stage: \"starting\", totalBlocks: blockCount });\n\n let chain = this.startUpload(uploadId, file.slice(0, chunkSize));\n\n // skip the first and last blocks\n for (let i = 2; i < blockCount; i++) {\n chain = chain.then(pointer => {\n progress({ uploadId, blockNumber: i, chunkSize, currentPointer: pointer, fileSize, stage: \"continue\", totalBlocks: blockCount });\n return this.continueUpload(uploadId, pointer, file.slice(pointer, pointer + chunkSize));\n });\n }\n\n return chain.then(pointer => {\n progress({ uploadId, blockNumber: blockCount, chunkSize, currentPointer: pointer, fileSize, stage: \"finishing\", totalBlocks: blockCount });\n return this.finishUpload(uploadId, pointer, file.slice(pointer));\n });\n }\n\n /**\n * Starts a new chunk upload session and uploads the first fragment.\n * The current file content is not changed when this method completes.\n * The method is idempotent (and therefore does not change the result) as long as you use the same values for uploadId and stream.\n * The upload session ends either when you use the CancelUpload method or when you successfully\n * complete the upload session by passing the rest of the file contents through the ContinueUpload and FinishUpload methods.\n * The StartUpload and ContinueUpload methods return the size of the running total of uploaded data in bytes,\n * so you can pass those return values to subsequent uses of ContinueUpload and FinishUpload.\n * This method is currently available only on Office 365.\n *\n * @param uploadId The unique identifier of the upload session.\n * @param fragment The file contents.\n * @returns The size of the total uploaded data in bytes.\n */\n protected startUpload(uploadId: string, fragment: ArrayBuffer | Blob): Promise {\n return this.clone(File, `startUpload(uploadId = guid'${uploadId}')`, false)\n .postCore({ body: fragment })\n .then(n => {\n // When OData=verbose the payload has the following shape:\n // { StartUpload: \"10485760\" }\n if (typeof n === \"object\") {\n n = (n as any).StartUpload;\n }\n return parseFloat(n);\n });\n }\n\n /**\n * Continues the chunk upload session with an additional fragment.\n * The current file content is not changed.\n * Use the uploadId value that was passed to the StartUpload method that started the upload session.\n * This method is currently available only on Office 365.\n *\n * @param uploadId The unique identifier of the upload session.\n * @param fileOffset The size of the offset into the file where the fragment starts.\n * @param fragment The file contents.\n * @returns The size of the total uploaded data in bytes.\n */\n protected continueUpload(uploadId: string, fileOffset: number, fragment: ArrayBuffer | Blob): Promise {\n return this.clone(File, `continueUpload(uploadId = guid'${uploadId}', fileOffset = ${ fileOffset })`, false)\n .postCore({ body: fragment })\n .then(n => {\n // When OData=verbose the payload has the following shape:\n // { ContinueUpload: \"20971520\" }\n if (typeof n === \"object\") {\n n = (n as any).ContinueUpload;\n }\n return parseFloat(n);\n });\n }\n\n /**\n * Uploads the last file fragment and commits the file. The current file content is changed when this method completes.\n * Use the uploadId value that was passed to the StartUpload method that started the upload session.\n * This method is currently available only on Office 365.\n *\n * @param uploadId The unique identifier of the upload session.\n * @param fileOffset The size of the offset into the file where the fragment starts.\n * @param fragment The file contents.\n * @returns The newly uploaded file.\n */\n protected finishUpload(uploadId: string, fileOffset: number, fragment: ArrayBuffer | Blob): Promise {\n return this.clone(File, `finishUpload(uploadId = guid'${uploadId}', fileOffset = ${ fileOffset })`, false)\n .postCore<{ ServerRelativeUrl: string }>({ body: fragment })\n .then(response => {\n return {\n data: response,\n file: new File(odataUrlFrom(response)),\n };\n });\n }\n}\n\n/**\n * Describes a collection of Version objects\n *\n */\n@defaultPath(\"versions\")\nexport class Versions extends SharePointQueryableCollection {\n\n /**\t\n * Gets a version by id\t\n *\t\n * @param versionId The id of the version to retrieve\t\n */\n public getById(versionId: number): Version {\n const v = new Version(this);\n v.concat(`(${ versionId })`);\n return v;\n }\n\n /**\n * Deletes all the file version objects in the collection.\n *\n */\n public deleteAll(): Promise {\n return new Versions(this, \"deleteAll\").postCore();\n }\n\n /**\n * Deletes the specified version of the file.\n *\n * @param versionId The ID of the file version to delete.\n */\n public deleteById(versionId: number): Promise {\n return this.clone(Versions, `deleteById(vid = ${ versionId })`).postCore();\n }\n\n /**\n * Recycles the specified version of the file.\n *\n * @param versionId The ID of the file version to delete.\n */\n public recycleByID(versionId: number): Promise {\n return this.clone(Versions, `recycleByID(vid = ${ versionId })`).postCore();\n }\n\n /**\n * Deletes the file version object with the specified version label.\n *\n * @param label The version label of the file version to delete, for example: 1.2\n */\n public deleteByLabel(label: string): Promise {\n return this.clone(Versions, `deleteByLabel(versionlabel = '${label}')`).postCore();\n }\n\n /**\n * Recycles the file version object with the specified version label.\n *\n * @param label The version label of the file version to delete, for example: 1.2\n */\n public recycleByLabel(label: string): Promise {\n return this.clone(Versions, `recycleByLabel(versionlabel = '${label}')`).postCore();\n }\n\n /**\n * Creates a new file version from the file specified by the version label.\n *\n * @param label The version label of the file version to restore, for example: 1.2\n */\n public restoreByLabel(label: string): Promise {\n return this.clone(Versions, `restoreByLabel(versionlabel = '${label}')`).postCore();\n }\n}\n\n/**\n * Describes a single Version instance\n *\n */\nexport class Version extends SharePointQueryableInstance {\n\n /**\n * Delete a specific version of a file.\n *\n * @param eTag Value used in the IF-Match header, by default \"*\"\n */\n public delete = this._deleteWithETag;\n\n // /**\n // * Delete a specific version of a file.\n // *\n // * @param eTag Value used in the IF-Match header, by default \"*\"\n // */\n // public delete(eTag = \"*\"): Promise {\n // return this.postCore({\n // headers: {\n // \"IF-Match\": eTag,\n // \"X-HTTP-Method\": \"DELETE\",\n // },\n // });\n // }\n}\n\nexport enum CheckinType {\n Minor = 0,\n Major = 1,\n Overwrite = 2,\n}\n\nexport interface FileAddResult {\n file: File;\n data: any;\n}\n\nexport enum WebPartsPersonalizationScope {\n User = 0,\n Shared = 1,\n}\n\nexport enum MoveOperations {\n Overwrite = 1,\n AllowBrokenThickets = 8,\n}\n\nexport enum TemplateFileType {\n StandardPage = 0,\n WikiPage = 1,\n FormPage = 2,\n ClientSidePage = 3,\n}\n\n\n\n// WEBPACK FOOTER //\n// ../../../../packages/sp/src/files.ts","import { SharePointQueryable, SharePointQueryableInstance, SharePointQueryableCollection } from \"./sharepointqueryable\";\nimport { File } from \"./files\";\nimport { odataUrlFrom } from \"./odata\";\nimport { extractWebUrl } from \"./utils/extractweburl\";\n\n/**\n * Represents an app catalog\n */\nexport class AppCatalog extends SharePointQueryableCollection {\n\n constructor(baseUrl: string | SharePointQueryable, path = \"_api/web/tenantappcatalog/AvailableApps\") {\n super(extractWebUrl(typeof baseUrl === \"string\" ? baseUrl : baseUrl.toUrl()), path);\n }\n\n /**\n * Get details of specific app from the app catalog\n * @param id - Specify the guid of the app\n */\n public getAppById(id: string): App {\n return new App(this, `getById('${id}')`);\n }\n\n /**\n * Uploads an app package. Not supported for batching\n *\n * @param filename Filename to create.\n * @param content app package data (eg: the .app or .sppkg file).\n * @param shouldOverWrite Should an app with the same name in the same location be overwritten? (default: true)\n * @returns Promise\n */\n public add(filename: string, content: string | ArrayBuffer | Blob, shouldOverWrite = true): Promise {\n\n const catalog = this.toUrl().indexOf(\"tenantappcatalog\") > 0 ? \"tenantappcatalog\" : \"sitecollectionappcatalog\";\n\n // you don't add to the availableapps collection\n const adder = new AppCatalog(extractWebUrl(this.toUrl()), `_api/web/${catalog}/add(overwrite=${shouldOverWrite},url='${filename}')`);\n\n return adder.postCore({\n body: content,\n }).then(r => {\n return {\n data: r,\n file: new File(odataUrlFrom(r)),\n };\n });\n }\n}\n\n/**\n * Represents the actions you can preform on a given app within the catalog\n */\nexport class App extends SharePointQueryableInstance {\n\n /**\n * This method deploys an app on the app catalog. It must be called in the context\n * of the tenant app catalog web or it will fail.\n * \n * @param skipFeatureDeployment Deploy the app to the entire tenant\n */\n public deploy(skipFeatureDeployment = false): Promise {\n return this.clone(App, `Deploy(${skipFeatureDeployment})`).postCore();\n }\n\n /**\n * This method retracts a deployed app on the app catalog. It must be called in the context\n * of the tenant app catalog web or it will fail.\n */\n public retract(): Promise {\n return this.clone(App, \"Retract\").postCore();\n }\n\n /**\n * This method allows an app which is already deployed to be installed on a web\n */\n public install(): Promise {\n return this.clone(App, \"Install\").postCore();\n }\n\n /**\n * This method allows an app which is already insatlled to be uninstalled on a web\n */\n public uninstall(): Promise {\n return this.clone(App, \"Uninstall\").postCore();\n }\n\n /**\n * This method allows an app which is already insatlled to be upgraded on a web\n */\n public upgrade(): Promise {\n return this.clone(App, \"Upgrade\").postCore();\n }\n\n /**\n * This method removes an app from the app catalog. It must be called in the context\n * of the tenant app catalog web or it will fail.\n */\n public remove(): Promise {\n return this.clone(App, \"Remove\").postCore();\n }\n}\n\nexport interface AppAddResult {\n data: any;\n file: File;\n}\n\n\n\n// WEBPACK FOOTER //\n// ../../../../packages/sp/src/appcatalog.ts","import { ODataBatch } from \"@pnp/odata\";\nimport { getGUID, isUrlAbsolute, combine, mergeHeaders, hOP } from \"@pnp/common\";\nimport { Logger, LogLevel } from \"@pnp/logging\";\nimport { SPHttpClient } from \"./net/sphttpclient\";\nimport { SPRuntimeConfig } from \"./config/splibconfig\";\nimport { toAbsoluteUrl } from \"./utils/toabsoluteurl\";\n\n/**\n * Manages a batch of OData operations\n */\nexport class SPBatch extends ODataBatch {\n\n constructor(private baseUrl: string) {\n super();\n }\n\n /**\n * Parses the response from a batch request into an array of Response instances\n *\n * @param body Text body of the response from the batch request\n */\n public static ParseResponse(body: string): Promise {\n return new Promise((resolve, reject) => {\n const responses: Response[] = [];\n const header = \"--batchresponse_\";\n // Ex. \"HTTP/1.1 500 Internal Server Error\"\n const statusRegExp = new RegExp(\"^HTTP/[0-9.]+ +([0-9]+) +(.*)\", \"i\");\n const lines = body.split(\"\\n\");\n let state = \"batch\";\n let status: number;\n let statusText: string;\n for (let i = 0; i < lines.length; ++i) {\n const line = lines[i];\n switch (state) {\n case \"batch\":\n if (line.substr(0, header.length) === header) {\n state = \"batchHeaders\";\n } else {\n if (line.trim() !== \"\") {\n throw Error(`Invalid response, line ${i}`);\n }\n }\n break;\n case \"batchHeaders\":\n if (line.trim() === \"\") {\n state = \"status\";\n }\n break;\n case \"status\":\n const parts = statusRegExp.exec(line);\n if (parts.length !== 3) {\n throw Error(`Invalid status, line ${i}`);\n }\n status = parseInt(parts[1], 10);\n statusText = parts[2];\n state = \"statusHeaders\";\n break;\n case \"statusHeaders\":\n if (line.trim() === \"\") {\n state = \"body\";\n }\n break;\n case \"body\":\n responses.push((status === 204) ? new Response() : new Response(line, { status: status, statusText: statusText }));\n state = \"batch\";\n break;\n }\n }\n if (state !== \"status\") {\n reject(Error(\"Unexpected end of input\"));\n }\n resolve(responses);\n });\n }\n\n protected executeImpl(): Promise {\n\n Logger.write(`[${this.batchId}] (${(new Date()).getTime()}) Executing batch with ${this.requests.length} requests.`, LogLevel.Info);\n\n // if we don't have any requests, don't bother sending anything\n // this could be due to caching further upstream, or just an empty batch\n if (this.requests.length < 1) {\n Logger.write(`Resolving empty batch.`, LogLevel.Info);\n return Promise.resolve();\n }\n\n // creating the client here allows the url to be populated for nodejs client as well as potentially\n // any other hacks needed for other types of clients. Essentially allows the absoluteRequestUrl\n // below to be correct\n const client = new SPHttpClient();\n\n // due to timing we need to get the absolute url here so we can use it for all the individual requests\n // and for sending the entire batch\n return toAbsoluteUrl(this.baseUrl).then(absoluteRequestUrl => {\n\n // build all the requests, send them, pipe results in order to parsers\n const batchBody: string[] = [];\n\n let currentChangeSetId = \"\";\n\n for (let i = 0; i < this.requests.length; i++) {\n const reqInfo = this.requests[i];\n\n if (reqInfo.method === \"GET\") {\n\n if (currentChangeSetId.length > 0) {\n // end an existing change set\n batchBody.push(`--changeset_${currentChangeSetId}--\\n\\n`);\n currentChangeSetId = \"\";\n }\n\n batchBody.push(`--batch_${this.batchId}\\n`);\n\n } else {\n\n if (currentChangeSetId.length < 1) {\n // start new change set\n currentChangeSetId = getGUID();\n batchBody.push(`--batch_${this.batchId}\\n`);\n batchBody.push(`Content-Type: multipart/mixed; boundary=\"changeset_${currentChangeSetId}\"\\n\\n`);\n }\n\n batchBody.push(`--changeset_${currentChangeSetId}\\n`);\n }\n\n // common batch part prefix\n batchBody.push(`Content-Type: application/http\\n`);\n batchBody.push(`Content-Transfer-Encoding: binary\\n\\n`);\n\n const headers = new Headers();\n\n // this is the url of the individual request within the batch\n const url = isUrlAbsolute(reqInfo.url) ? reqInfo.url : combine(absoluteRequestUrl, reqInfo.url);\n\n Logger.write(`[${this.batchId}] (${(new Date()).getTime()}) Adding request ${reqInfo.method} ${url} to batch.`, LogLevel.Verbose);\n\n if (reqInfo.method !== \"GET\") {\n\n let method = reqInfo.method;\n\n const castHeaders: any = reqInfo.options.headers;\n if (hOP(reqInfo, \"options\") && hOP(reqInfo.options, \"headers\") && castHeaders[\"X-HTTP-Method\"] !== undefined) {\n\n method = castHeaders[\"X-HTTP-Method\"];\n delete castHeaders[\"X-HTTP-Method\"];\n }\n\n batchBody.push(`${method} ${url} HTTP/1.1\\n`);\n\n headers.set(\"Content-Type\", \"application/json;odata=verbose;charset=utf-8\");\n\n } else {\n batchBody.push(`${reqInfo.method} ${url} HTTP/1.1\\n`);\n }\n\n // merge global config headers\n mergeHeaders(headers, SPRuntimeConfig.headers);\n\n // merge per-request headers\n if (reqInfo.options) {\n mergeHeaders(headers, reqInfo.options.headers);\n }\n\n // lastly we apply any default headers we need that may not exist\n if (!headers.has(\"Accept\")) {\n headers.append(\"Accept\", \"application/json\");\n }\n\n if (!headers.has(\"Content-Type\")) {\n headers.append(\"Content-Type\", \"application/json;odata=verbose;charset=utf-8\");\n }\n\n if (!headers.has(\"X-ClientService-ClientTag\")) {\n headers.append(\"X-ClientService-ClientTag\", \"PnPCoreJS:@pnp-$$Version$$\");\n }\n\n // write headers into batch body\n headers.forEach((value: string, name: string) => {\n batchBody.push(`${name}: ${value}\\n`);\n });\n\n batchBody.push(\"\\n\");\n\n if (reqInfo.options.body) {\n batchBody.push(`${reqInfo.options.body}\\n\\n`);\n }\n }\n\n if (currentChangeSetId.length > 0) {\n // Close the changeset\n batchBody.push(`--changeset_${currentChangeSetId}--\\n\\n`);\n currentChangeSetId = \"\";\n }\n\n batchBody.push(`--batch_${this.batchId}--\\n`);\n\n const batchOptions = {\n \"body\": batchBody.join(\"\"),\n \"headers\": {\n \"Content-Type\": `multipart/mixed; boundary=batch_${this.batchId}`,\n },\n \"method\": \"POST\",\n };\n\n Logger.write(`[${this.batchId}] (${(new Date()).getTime()}) Sending batch request.`, LogLevel.Info);\n\n return client.fetch(combine(absoluteRequestUrl, \"/_api/$batch\"), batchOptions)\n .then(r => r.text())\n .then(SPBatch.ParseResponse)\n .then((responses: Response[]) => {\n\n if (responses.length !== this.requests.length) {\n throw Error(\"Could not properly parse responses to match requests in batch.\");\n }\n\n Logger.write(`[${this.batchId}] (${(new Date()).getTime()}) Resolving batched requests.`, LogLevel.Info);\n\n return responses.reduce((chain, response, index) => {\n\n const request = this.requests[index];\n\n Logger.write(`[${request.id}] (${(new Date()).getTime()}) Resolving request in batch ${this.batchId}.`, LogLevel.Info);\n\n return chain.then(_ => request.parser.parse(response).then(request.resolve).catch(request.reject));\n\n }, Promise.resolve());\n });\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ../../../../packages/sp/src/batch.ts","import { SharePointQueryableInstance, SharePointQueryableCollection, defaultPath } from \"./sharepointqueryable\";\nimport { jsS } from \"@pnp/common\";\n\n/**\n * Describes a collection of List objects\n *\n */\n@defaultPath(\"features\")\nexport class Features extends SharePointQueryableCollection {\n\n /**\n * Adds a new list to the collection\n *\n * @param id The Id of the feature (GUID)\n * @param force If true the feature activation will be forced\n */\n public add(id: string, force = false): Promise {\n\n return this.clone(Features, \"add\").postCore({\n body: jsS({\n featdefScope: 0,\n featureId: id,\n force: force,\n }),\n }).then(data => {\n return {\n data: data,\n feature: this.getById(id),\n };\n });\n }\n\n /**\t \n * Gets a list from the collection by guid id\t \n *\t \n * @param id The Id of the feature (GUID)\t \n */\n public getById(id: string): Feature {\n const feature = new Feature(this);\n feature.concat(`('${id}')`);\n return feature;\n }\n\n /**\n * Removes (deactivates) a feature from the collection\n *\n * @param id The Id of the feature (GUID)\n * @param force If true the feature deactivation will be forced\n */\n public remove(id: string, force = false): Promise {\n\n return this.clone(Features, \"remove\").postCore({\n body: jsS({\n featureId: id,\n force: force,\n }),\n });\n }\n}\n\nexport class Feature extends SharePointQueryableInstance {\n\n /**\n * Removes (deactivates) a feature from the collection\n *\n * @param force If true the feature deactivation will be forced\n */\n public deactivate(force = false): Promise {\n\n const removeDependency = this.addBatchDependency();\n\n const idGet = new Feature(this).select(\"DefinitionId\");\n\n return idGet.get<{ DefinitionId: string }>().then(feature => {\n\n const promise = this.getParent(Features, this.parentUrl, \"\", this.batch).remove(feature.DefinitionId, force);\n\n removeDependency();\n\n return promise;\n });\n }\n}\n\nexport interface FeatureAddResult {\n data: any;\n feature: Feature;\n}\n\n\n\n// WEBPACK FOOTER //\n// ../../../../packages/sp/src/features.ts","import { SharePointQueryable, SharePointQueryableInstance, defaultPath } from \"./sharepointqueryable\";\nimport { Web } from \"./webs\";\nimport { UserCustomActions } from \"./usercustomactions\";\nimport { ContextInfo, DocumentLibraryInformation, ChangeQuery } from \"./types\";\nimport { SPBatch } from \"./batch\";\nimport { Features } from \"./features\";\nimport { hOP, jsS, extend } from \"@pnp/common\";\nimport { SPHttpClient } from \"./net/sphttpclient\";\n\n/**\n * Describes a site collection\n *\n */\n@defaultPath(\"_api/site\")\nexport class Site extends SharePointQueryableInstance {\n\n /**\n * Gets the root web of the site collection\n *\n */\n public get rootWeb(): Web {\n return new Web(this, \"rootweb\");\n }\n\n /**\n * Gets the active features for this site collection\n *\n */\n public get features(): Features {\n return new Features(this);\n }\n\n /**\n * Gets all custom actions for this site collection\n *\n */\n public get userCustomActions(): UserCustomActions {\n return new UserCustomActions(this);\n }\n\n /**\n * Gets a Web instance representing the root web of the site collection\n * correctly setup for chaining within the library\n */\n public getRootWeb(): Promise {\n return this.rootWeb.select(\"Url\").get().then(web => new Web(web.Url));\n }\n\n /**\n * Gets the context information for this site collection\n */\n public getContextInfo(): Promise {\n const q = new Site(this.parentUrl, \"_api/contextinfo\");\n return q.postCore().then(data => {\n if (hOP(data, \"GetContextWebInformation\")) {\n const info = data.GetContextWebInformation;\n info.SupportedSchemaVersions = info.SupportedSchemaVersions.results;\n return info;\n } else {\n return data;\n }\n });\n }\n\n /**\n * Gets the document libraries on a site. Static method. (SharePoint Online only)\n *\n * @param absoluteWebUrl The absolute url of the web whose document libraries should be returned\n */\n public getDocumentLibraries(absoluteWebUrl: string): Promise {\n const q = new SharePointQueryable(\"\", \"_api/sp.web.getdocumentlibraries(@v)\");\n q.query.set(\"@v\", \"'\" + absoluteWebUrl + \"'\");\n return q.get().then(data => {\n if (hOP(data, \"GetDocumentLibraries\")) {\n return data.GetDocumentLibraries;\n } else {\n return data;\n }\n });\n }\n\n /**\n * Gets the site url from a page url\n *\n * @param absolutePageUrl The absolute url of the page\n */\n public getWebUrlFromPageUrl(absolutePageUrl: string): Promise {\n const q = new SharePointQueryable(\"\", \"_api/sp.web.getweburlfrompageurl(@v)\");\n q.query.set(\"@v\", `'${absolutePageUrl}'`);\n return q.get().then(data => {\n if (hOP(data, \"GetWebUrlFromPageUrl\")) {\n return data.GetWebUrlFromPageUrl;\n } else {\n return data;\n }\n });\n }\n\n /**\n * Returns the collection of changes from the change log that have occurred within the site, based on the specified query\n *\n * @param query The change query\n */\n public getChanges(query: ChangeQuery): Promise {\n\n const postBody = jsS({ \"query\": extend({ \"__metadata\": { \"type\": \"SP.ChangeQuery\" } }, query) });\n return this.clone(Site, \"getchanges\").postCore({ body: postBody });\n }\n\n /**\n * Deletes the current site\n *\n */\n public async delete(): Promise {\n const site = await this.clone(Site, \"\").select(\"Id\").get<{ Id: string }>();\n\n const q = new Site(this.parentUrl, \"_api/SPSiteManager/Delete\");\n await q.postCore({\n body: jsS({\n siteId: site.Id,\n }),\n });\n }\n\n /**\n * Creates a new batch for requests within the context of this site collection\n *\n */\n public createBatch(): SPBatch {\n return new SPBatch(this.parentUrl);\n }\n\n /**\n * Opens a web by id (using POST)\n *\n * @param webId The GUID id of the web to open\n */\n public openWebById(webId: string): Promise {\n\n return this.clone(Site, `openWebById('${webId}')`).postCore().then(d => ({\n data: d,\n web: Web.fromUrl(d[\"odata.id\"] || d.__metadata.uri),\n }));\n }\n\n /**\n * Associates a site collection to a hub site.\n * \n * @param siteId Id of the hub site collection you want to join.\n * If you want to disassociate the site collection from hub site, then\n * pass the siteId as 00000000-0000-0000-0000-000000000000\n */\n public joinHubSite(siteId: string): Promise {\n return this.clone(Site, `joinHubSite('${siteId}')`).postCore();\n }\n\n /**\n * Registers the current site collection as hub site collection\n */\n public registerHubSite(): Promise {\n return this.clone(Site, `registerHubSite`).postCore();\n }\n\n /**\n * Unregisters the current site collection as hub site collection.\n */\n public unRegisterHubSite(): Promise {\n return this.clone(Site, `unRegisterHubSite`).postCore();\n }\n\n /**\n * Creates a Modern communication site.\n * \n * @param title The title of the site to create\n * @param lcid The language to use for the site. If not specified will default to 1033 (English).\n * @param shareByEmailEnabled If set to true, it will enable sharing files via Email. By default it is set to false\n * @param url The fully qualified URL (e.g. https://yourtenant.sharepoint.com/sites/mysitecollection) of the site.\n * @param description The description of the communication site.\n * @param classification The Site classification to use. For instance 'Contoso Classified'. See https://www.youtube.com/watch?v=E-8Z2ggHcS0 for more information\n * @param siteDesignId The Guid of the site design to be used.\n * You can use the below default OOTB GUIDs:\n * Topic: 00000000-0000-0000-0000-000000000000\n * Showcase: 6142d2a0-63a5-4ba0-aede-d9fefca2c767\n * Blank: f6cc5403-0d63-442e-96c0-285923709ffc\n * @param hubSiteId The Guid of the already existing Hub site\n * @param owner Required when creating the site using app-only context\n */\n\n public createCommunicationSite(\n title: string,\n lcid = 1033,\n shareByEmailEnabled = false,\n url: string,\n description = \"\",\n classification = \"\",\n siteDesignId = \"00000000-0000-0000-0000-000000000000\",\n hubSiteId = \"00000000-0000-0000-0000-000000000000\",\n owner?: string,\n ): Promise {\n\n const props = {\n Classification: classification,\n Description: description,\n HubSiteId: hubSiteId,\n Lcid: lcid,\n Owner: owner,\n ShareByEmailEnabled: shareByEmailEnabled,\n SiteDesignId: siteDesignId,\n Title: title,\n Url: url,\n WebTemplate: \"SITEPAGEPUBLISHING#0\",\n WebTemplateExtensionId: \"00000000-0000-0000-0000-000000000000\",\n };\n\n const postBody = jsS({\n \"request\":\n extend({\n \"__metadata\": { \"type\": \"Microsoft.SharePoint.Portal.SPSiteCreationRequest\" },\n }, props),\n });\n\n return this.getRootWeb().then(async (d: any) => {\n\n const client = new SPHttpClient();\n const methodUrl = `${d.parentUrl}/_api/SPSiteManager/Create`;\n return client.post(methodUrl, {\n body: postBody,\n headers: {\n \"Accept\": \"application/json;odata=verbose\",\n \"Content-Type\": \"application/json;odata=verbose;charset=utf-8\",\n },\n }).then(r => r.json()).then((n: any) => {\n\n if (hOP(n, \"error\")) {\n throw n;\n }\n\n if (hOP(n, \"d\") && hOP(n.d, \"Create\")) {\n return n.d.Create;\n }\n\n return n;\n });\n });\n }\n\n /**\n * Creates a Modern team site backed by Office 365 group. For use in SP Online only. This will not work with App-only tokens\n * \n * @param displayName The title or display name of the Modern team site to be created\n * @param alias Alias of the underlying Office 365 Group\n * @param isPublic Defines whether the Office 365 Group will be public (default), or private.\n * @param lcid The language to use for the site. If not specified will default to English (1033).\n * @param description The description of the site to be created.\n * @param classification The Site classification to use. For instance 'Contoso Classified'. See https://www.youtube.com/watch?v=E-8Z2ggHcS0 for more information\n * @param owners The Owners of the site to be created \n * @param siteDesignId The ID of the site design to apply to the new site \n */\n\n public createModernTeamSite(\n displayName: string,\n alias: string,\n isPublic = true,\n lcid = 1033,\n description = \"\",\n classification = \"\",\n owners?: string[],\n hubSiteId = \"00000000-0000-0000-0000-000000000000\",\n siteDesignId?: string,\n ): Promise {\n\n const postBody = {\n alias: alias,\n displayName: displayName,\n isPublic: isPublic,\n optionalParams: {\n Classification: classification,\n CreationOptions: {\n \"results\": [`SPSiteLanguage:${lcid}`, `HubSiteId:${hubSiteId}`],\n },\n Description: description,\n Owners: {\n \"results\": owners ? owners : [],\n },\n },\n };\n\n if (siteDesignId) {\n postBody.optionalParams.CreationOptions.results.push(`implicit_formula_292aa8a00786498a87a5ca52d9f4214a_${siteDesignId}`);\n }\n\n return this.getRootWeb().then(async (d: any) => {\n\n const client = new SPHttpClient();\n const methodUrl = `${d.parentUrl}/_api/GroupSiteManager/CreateGroupEx`;\n return client.post(methodUrl, {\n body: jsS(postBody),\n headers: {\n \"Accept\": \"application/json;odata=verbose\",\n \"Content-Type\": \"application/json;odata=verbose;charset=utf-8\",\n },\n }).then(r => r.json());\n });\n }\n}\n\n/**\n * The result of opening a web by id: contains the data returned as well as a chainable web instance\n */\nexport interface OpenWebByIdResult {\n data: any;\n web: Web;\n}\n\n/**\n * The result of creating a site collection\n */\nexport interface ISPSiteCreationResponse {\n SiteId: string;\n SiteStatus: number;\n SiteUrl: string;\n}\n\n\n\n// WEBPACK FOOTER //\n// ../../../../packages/sp/src/site.ts","import { SharePointQueryable, SharePointQueryableInstance, SharePointQueryableCollection, defaultPath } from \"./sharepointqueryable\";\nimport { MenuNodeCollection } from \"./types\";\nimport { jsS, extend, TypedHash } from \"@pnp/common\";\nimport { metadata } from \"./utils/metadata\";\n\n/**\n * Result from adding a navigation node\n *\n */\nexport interface NavigationNodeAddResult {\n data: any;\n node: NavigationNode;\n}\n\n/**\n * Represents a collection of navigation nodes\n *\n */\nexport class NavigationNodes extends SharePointQueryableCollection {\n\n /**\t \n * Gets a navigation node by id\t\n *\t\n * @param id The id of the node\t\n */\n public getById(id: number): NavigationNode {\n const node = new NavigationNode(this);\n node.concat(`(${id})`);\n return node;\n }\n\n /**\n * Adds a new node to the collection\n *\n * @param title Display name of the node\n * @param url The url of the node\n * @param visible If true the node is visible, otherwise it is hidden (default: true)\n */\n public add(title: string, url: string, visible = true): Promise {\n\n const postBody = jsS(extend(metadata(\"SP.NavigationNode\"), {\n IsVisible: visible,\n Title: title,\n Url: url,\n }));\n\n return this.clone(NavigationNodes, null).postCore({ body: postBody }).then((data) => {\n return {\n data: data,\n node: this.getById(data.Id),\n };\n });\n }\n\n /**\n * Moves a node to be after another node in the navigation\n *\n * @param nodeId Id of the node to move\n * @param previousNodeId Id of the node after which we move the node specified by nodeId\n */\n public moveAfter(nodeId: number, previousNodeId: number): Promise {\n\n const postBody = jsS({\n nodeId: nodeId,\n previousNodeId: previousNodeId,\n });\n\n return this.clone(NavigationNodes, \"MoveAfter\").postCore({ body: postBody });\n }\n}\n\n/**\n * Represents an instance of a navigation node\n *\n */\nexport class NavigationNode extends SharePointQueryableInstance {\n\n /**\n * Represents the child nodes of this node\n */\n public get children(): NavigationNodes {\n return new NavigationNodes(this, \"Children\");\n }\n\n /**\n * Deletes this node and any child nodes\n */\n public delete(): Promise {\n return super.deleteCore();\n }\n\n /**\n * Updates this node\n * \n * @param properties Properties used to update this node\n */\n public update(properties: TypedHash): Promise {\n\n const postBody = jsS(extend({\n \"__metadata\": { \"type\": \"SP.NavigationNode\" },\n }, properties));\n\n return this.postCore({\n body: postBody,\n headers: {\n \"X-HTTP-Method\": \"MERGE\",\n },\n }).then((data) => {\n return {\n data: data,\n node: this,\n };\n });\n }\n}\n\nexport interface NavNodeUpdateResult {\n data: any;\n node: NavigationNode;\n}\n\n/**\n * Exposes the navigation components\n *\n */\n@defaultPath(\"navigation\")\nexport class Navigation extends SharePointQueryable {\n\n /**\n * Gets the quicklaunch navigation nodes for the current context\n *\n */\n public get quicklaunch(): NavigationNodes {\n return new NavigationNodes(this, \"quicklaunch\");\n }\n\n /**\n * Gets the top bar navigation nodes for the current context\n *\n */\n public get topNavigationBar(): NavigationNodes {\n return new NavigationNodes(this, \"topnavigationbar\");\n }\n}\n\nexport interface INavigationService {\n getMenuState(menuNodeKey?: string, depth?: number, mapProviderName?: string, customProperties?: string): Promise;\n getMenuNodeKey(currentUrl: string, mapProviderName?: string): Promise;\n}\n\n/**\n * Represents the top level navigation service\n */\nexport class NavigationService extends SharePointQueryable implements INavigationService {\n\n constructor(baseUrl: string | SharePointQueryable, path: string = null) {\n super(baseUrl, path);\n }\n\n /**\n * The MenuState service operation returns a Menu-State (dump) of a SiteMapProvider on a site.\n * \n * @param menuNodeKey MenuNode.Key of the start node within the SiteMapProvider If no key is provided the SiteMapProvider.RootNode will be the root of the menu state.\n * @param depth Depth of the dump. If no value is provided a dump with the depth of 10 is returned\n * @param mapProviderName The name identifying the SiteMapProvider to be used\n * @param customProperties comma seperated list of custom properties to be returned.\n */\n public getMenuState(menuNodeKey: string = null, depth = 10, mapProviderName: string = null, customProperties: string = null): Promise {\n\n return (new NavigationService(this, \"_api/navigation/MenuState\")).postCore({\n body: jsS({\n customProperties: customProperties,\n depth: depth,\n mapProviderName: mapProviderName,\n menuNodeKey: menuNodeKey,\n }),\n });\n }\n\n /**\n * Tries to get a SiteMapNode.Key for a given URL within a site collection.\n * \n * @param currentUrl A url representing the SiteMapNode\n * @param mapProviderName The name identifying the SiteMapProvider to be used\n */\n public getMenuNodeKey(currentUrl: string, mapProviderName: string = null): Promise {\n\n return (new NavigationService(this, \"_api/navigation/MenuNodeKey\")).postCore({\n body: jsS({\n currentUrl: currentUrl,\n mapProviderName: mapProviderName,\n }),\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ../../../../packages/sp/src/navigation.ts","import { SharePointQueryable, defaultPath } from \"./sharepointqueryable\";\nimport { jsS } from \"@pnp/common\";\n\nexport interface RelatedItem {\n ListId: string;\n ItemId: number;\n Url: string;\n Title: string;\n WebId: string;\n IconUrl: string;\n}\n\nexport interface RelatedItemManger {\n\n getRelatedItems(sourceListName: string, sourceItemId: number): Promise;\n\n getPageOneRelatedItems(sourceListName: string, sourceItemId: number): Promise;\n\n addSingleLink(sourceListName: string,\n sourceItemId: number,\n sourceWebUrl: string,\n targetListName: string,\n targetItemID: number,\n targetWebUrl: string,\n tryAddReverseLink?: boolean): Promise;\n\n /**\n * Adds a related item link from an item specified by list name and item id, to an item specified by url\n *\n * @param sourceListName The source list name or list id\n * @param sourceItemId The source item id\n * @param targetItemUrl The target item url\n * @param tryAddReverseLink If set to true try to add the reverse link (will not return error if it fails)\n */\n addSingleLinkToUrl(sourceListName: string, sourceItemId: number, targetItemUrl: string, tryAddReverseLink?: boolean): Promise;\n\n /**\n * Adds a related item link from an item specified by url, to an item specified by list name and item id\n *\n * @param sourceItemUrl The source item url\n * @param targetListName The target list name or list id\n * @param targetItemId The target item id\n * @param tryAddReverseLink If set to true try to add the reverse link (will not return error if it fails)\n */\n addSingleLinkFromUrl(sourceItemUrl: string, targetListName: string, targetItemId: number, tryAddReverseLink?: boolean): Promise;\n\n deleteSingleLink(sourceListName: string,\n sourceItemId: number,\n sourceWebUrl: string,\n targetListName: string,\n targetItemId: number,\n targetWebUrl: string,\n tryDeleteReverseLink?: boolean): Promise;\n}\n\n@defaultPath(\"_api/SP.RelatedItemManager\")\nexport class RelatedItemManagerImpl extends SharePointQueryable implements RelatedItemManger {\n\n public static FromUrl(url: string): RelatedItemManagerImpl {\n\n if (url === null) {\n return new RelatedItemManagerImpl(\"\");\n }\n\n const index = url.indexOf(\"_api/\");\n\n if (index > -1) {\n return new RelatedItemManagerImpl(url.substr(0, index));\n }\n\n return new RelatedItemManagerImpl(url);\n }\n\n public getRelatedItems(sourceListName: string, sourceItemId: number): Promise {\n\n const query = this.clone(RelatedItemManagerImpl, null);\n query.concat(\".GetRelatedItems\");\n\n return query.postCore({\n body: jsS({\n SourceItemID: sourceItemId,\n SourceListName: sourceListName,\n }),\n });\n }\n\n public getPageOneRelatedItems(sourceListName: string, sourceItemId: number): Promise {\n\n const query = this.clone(RelatedItemManagerImpl, null);\n query.concat(\".GetPageOneRelatedItems\");\n\n return query.postCore({\n body: jsS({\n SourceItemID: sourceItemId,\n SourceListName: sourceListName,\n }),\n });\n }\n\n public addSingleLink(sourceListName: string,\n sourceItemId: number,\n sourceWebUrl: string,\n targetListName: string,\n targetItemID: number,\n targetWebUrl: string,\n tryAddReverseLink = false): Promise {\n\n const query = this.clone(RelatedItemManagerImpl, null);\n query.concat(\".AddSingleLink\");\n\n return query.postCore({\n body: jsS({\n SourceItemID: sourceItemId,\n SourceListName: sourceListName,\n SourceWebUrl: sourceWebUrl,\n TargetItemID: targetItemID,\n TargetListName: targetListName,\n TargetWebUrl: targetWebUrl,\n TryAddReverseLink: tryAddReverseLink,\n }),\n });\n }\n\n /**\n * Adds a related item link from an item specified by list name and item id, to an item specified by url\n *\n * @param sourceListName The source list name or list id\n * @param sourceItemId The source item id\n * @param targetItemUrl The target item url\n * @param tryAddReverseLink If set to true try to add the reverse link (will not return error if it fails)\n */\n public addSingleLinkToUrl(sourceListName: string, sourceItemId: number, targetItemUrl: string, tryAddReverseLink = false): Promise {\n\n const query = this.clone(RelatedItemManagerImpl, null);\n query.concat(\".AddSingleLinkToUrl\");\n\n return query.postCore({\n body: jsS({\n SourceItemID: sourceItemId,\n SourceListName: sourceListName,\n TargetItemUrl: targetItemUrl,\n TryAddReverseLink: tryAddReverseLink,\n }),\n });\n }\n\n /**\n * Adds a related item link from an item specified by url, to an item specified by list name and item id\n *\n * @param sourceItemUrl The source item url\n * @param targetListName The target list name or list id\n * @param targetItemId The target item id\n * @param tryAddReverseLink If set to true try to add the reverse link (will not return error if it fails)\n */\n public addSingleLinkFromUrl(sourceItemUrl: string, targetListName: string, targetItemId: number, tryAddReverseLink = false): Promise {\n\n const query = this.clone(RelatedItemManagerImpl, null);\n query.concat(\".AddSingleLinkFromUrl\");\n\n return query.postCore({\n body: jsS({\n SourceItemUrl: sourceItemUrl,\n TargetItemID: targetItemId,\n TargetListName: targetListName,\n TryAddReverseLink: tryAddReverseLink,\n }),\n });\n }\n\n public deleteSingleLink(sourceListName: string,\n sourceItemId: number,\n sourceWebUrl: string,\n targetListName: string,\n targetItemId: number,\n targetWebUrl: string,\n tryDeleteReverseLink = false): Promise {\n\n const query = this.clone(RelatedItemManagerImpl, null);\n query.concat(\".DeleteSingleLink\");\n\n return query.postCore({\n body: jsS({\n SourceItemID: sourceItemId,\n SourceListName: sourceListName,\n SourceWebUrl: sourceWebUrl,\n TargetItemID: targetItemId,\n TargetListName: targetListName,\n TargetWebUrl: targetWebUrl,\n TryDeleteReverseLink: tryDeleteReverseLink,\n }),\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ../../../../packages/sp/src/relateditems.ts","import {\n SharePointQueryableInstance,\n SharePointQueryableCollection,\n defaultPath,\n} from \"./sharepointqueryable\";\n\nimport {\n spODataEntity,\n} from \"./odata\";\n\nimport {\n dateAdd, hOP,\n} from \"@pnp/common\";\n\n/**\n * Describes regional settings ODada object\n */\n@defaultPath(\"regionalsettings\")\nexport class RegionalSettings extends SharePointQueryableInstance {\n /**\n * Gets the collection of languages used in a server farm.\n */\n public get installedLanguages(): InstalledLanguages {\n return new InstalledLanguages(this);\n }\n\n /**\n * Gets the collection of language packs that are installed on the server.\n */\n public get globalInstalledLanguages(): InstalledLanguages {\n return new InstalledLanguages(this, \"globalinstalledlanguages\");\n }\n\n /**\n * Gets time zone\n */\n public get timeZone(): TimeZone {\n return new TimeZone(this);\n }\n\n /**\n * Gets time zones\n */\n public get timeZones(): TimeZones {\n return new TimeZones(this);\n }\n}\n\n/**\n * Describes installed languages ODada queriable collection\n */\n@defaultPath(\"installedlanguages\")\nexport class InstalledLanguages extends SharePointQueryableCollection {}\n\n/**\n * Describes TimeZone ODada object\n */\n@defaultPath(\"timezone\")\nexport class TimeZone extends SharePointQueryableInstance {\n /**\n * Gets an Local Time by UTC Time\n *\n * @param utcTime UTC Time as Date or ISO String\n */\n public utcToLocalTime(utcTime: string | Date): Promise {\n let dateIsoString: string;\n if (typeof utcTime === \"string\") {\n dateIsoString = utcTime;\n } else {\n dateIsoString = utcTime.toISOString();\n }\n\n return this.clone(TimeZone, `utctolocaltime('${dateIsoString}')`)\n .postCore()\n .then(res => hOP(res, \"UTCToLocalTime\") ? res.UTCToLocalTime : res);\n }\n\n /**\n * Gets an UTC Time by Local Time\n *\n * @param localTime Local Time as Date or ISO String\n */\n public localTimeToUTC(localTime: string | Date): Promise {\n let dateIsoString: string;\n\n if (typeof localTime === \"string\") {\n dateIsoString = localTime;\n } else {\n dateIsoString = dateAdd(localTime, \"minute\", localTime.getTimezoneOffset() * -1).toISOString();\n }\n\n return this.clone(TimeZone, `localtimetoutc('${dateIsoString}')`)\n .postCore()\n .then(res => hOP(res, \"LocalTimeToUTC\") ? res.LocalTimeToUTC : res);\n }\n}\n\n/**\n * Describes time zones queriable collection\n */\n@defaultPath(\"timezones\")\nexport class TimeZones extends SharePointQueryableCollection {\n // https://msdn.microsoft.com/en-us/library/office/jj247008.aspx - timezones ids\n /**\n * Gets an TimeZone by id\n *\n * @param id The integer id of the timezone to retrieve\n */\n public getById(id: number): Promise {\n // do the post and merge the result into a TimeZone instance so the data and methods are available\n return this.clone(TimeZones, `GetById(${id})`).postCore({}, spODataEntity(TimeZone));\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ../../../../packages/sp/src/regionalsettings.ts","import { SharePointQueryable } from \"./sharepointqueryable\";\nimport { hOP } from \"@pnp/common\";\n\nexport interface SiteDesignInfo {\n /**\n * The ID of the site design to apply.\n */\n Id: string;\n /**\n * The display name of the site design.\n */\n Title: string;\n /**\n * Identifies which base template to add the design to. Use the value 64 for the Team site template, and the value 68 for the Communication site template.\n */\n WebTemplate: string;\n /**\n * An array of one or more site scripts. Each is identified by an ID. The scripts will run in the order listed.\n */\n SiteScriptIds: string[];\n /**\n * The display description of site design.\n */\n Description: string;\n /**\n * The URL of a preview image. If none is specified, SharePoint uses a generic image.\n */\n PreviewImageUrl: string;\n /**\n * The alt text description of the image for accessibility.\n */\n PreviewImageAltText: string;\n /**\n * True if the site design is applied as the default site design; otherwise, false. \n * For more information see Customize a default site design https://docs.microsoft.com/en-us/sharepoint/dev/declarative-customization/customize-default-site-design.\n */\n IsDefault: boolean;\n Version: string;\n}\n\nexport interface SiteDesignCreationInfo {\n /**\n * The display name of the site design.\n */\n Title: string;\n /**\n * Identifies which base template to add the design to. Use the value 64 for the Team site template, and the value 68 for the Communication site template.\n */\n WebTemplate: string;\n /**\n * An array of one or more site scripts. Each is identified by an ID. The scripts will run in the order listed.\n */\n SiteScriptIds?: string[];\n /**\n * (Optional) The display description of site design.\n */\n Description?: string;\n /**\n * (Optional) The URL of a preview image. If none is specified, SharePoint uses a generic image.\n */\n PreviewImageUrl?: string;\n /**\n * (Optional) The alt text description of the image for accessibility.\n */\n PreviewImageAltText?: string;\n /**\n * (Optional) True if the site design is applied as the default site design; otherwise, false. \n * For more information see Customize a default site design https://docs.microsoft.com/en-us/sharepoint/dev/declarative-customization/customize-default-site-design.\n */\n IsDefault?: boolean;\n}\n\nexport interface SiteDesignUpdateInfo {\n /**\n * The ID of the site design to apply.\n */\n Id: string;\n /**\n * (Optional) The new display name of the updated site design.\n */\n Title?: string;\n /**\n * (Optional) The new template to add the site design to. Use the value 64 for the Team site template, and the value 68 for the Communication site template.\n */\n WebTemplate?: string;\n /**\n * (Optional) A new array of one or more site scripts. Each is identified by an ID. The scripts run in the order listed.\n */\n SiteScriptIds?: string[];\n /**\n * (Optional) The new display description of the updated site design.\n */\n Description?: string;\n /**\n * (Optional) The new URL of a preview image.\n */\n PreviewImageUrl?: string;\n /**\n * (Optional) The new alt text description of the image for accessibility.\n */\n PreviewImageAltText?: string;\n /**\n * (Optional) True if the site design is applied as the default site design; otherwise, false. \n * For more information see Customize a default site design https://docs.microsoft.com/en-us/sharepoint/dev/declarative-customization/customize-default-site-design. \n * If you had previously set the IsDefault parameter to TRUE and wish it to remain true, you must pass in this parameter again (otherwise it will be reset to FALSE).\n */\n IsDefault?: boolean;\n}\n\nexport interface ISiteDesignTask {\n /**\n * The ID of the site design task\n */\n ID: string;\n /**\n * Logonname of the user who created the task\n */\n LogonName: string;\n /**\n * The ID of the site design the task is running on\n */\n SiteDesignID: string;\n /**\n * The ID of the site collection\n */\n SiteID: string;\n /**\n * The ID of the web\n */\n WebID: string;\n}\n\nexport interface ISiteScriptActionStatus {\n ActionIndex: number;\n ActionKey: string;\n ActionTitle: string;\n LastModified: number;\n OrdinalIndex: string;\n OutcomeCode: number;\n OutcomeText: string;\n SiteScriptID: string;\n SiteScriptIndex: number;\n SiteScriptTitle: string;\n}\n\nexport interface ISiteDesignRun {\n /**\n * The ID of the site design run\n */\n ID: string;\n /**\n * The ID of the site design that was applied\n */\n SiteDesignID: string;\n /**\n * The title of the site design that was applied\n */\n SiteDesignTitle: string;\n /**\n * The version of the site design that was applied\n */\n SiteDesignVersion: number;\n /**\n * The site id where the site design was applied\n */\n SiteID: string;\n /**\n * The start time when the site design was applied\n */\n StartTime: number;\n /**\n * The web id where the site design was applied\n */\n WebID: string;\n}\n\nexport interface SiteDesignPrincipals {\n DisplayName: string;\n PrincipalName: string;\n Rights: number;\n}\n\nexport interface SiteDesignsUtilityMethods {\n getSiteDesigns(): Promise;\n createSiteDesign(creationInfo: SiteDesignCreationInfo): Promise;\n applySiteDesign(siteDesignId: string, webUrl: string): Promise;\n getSiteDesignMetadata(id: string): Promise;\n updateSiteDesign(updateInfo: SiteDesignUpdateInfo): Promise;\n deleteSiteDesign(id: string): Promise;\n getSiteDesignRights(id: string): Promise;\n grantSiteDesignRights(id: string, principalNames: string[], grantedRights?: number): Promise;\n revokeSiteDesignRights(id: string, principalNames: string[]): Promise;\n addSiteDesignTask(webUrl: string, siteDesignId: string): Promise;\n addSiteDesignTaskToCurrentWeb(siteDesignId: string): Promise;\n getSiteDesignTask(id: string): Promise;\n getSiteDesignRun(webUrl: string, siteDesignId?: string): Promise;\n getSiteDesignRunStatus(webUrl: string, runId: string): Promise;\n}\n\n/**\n * Implements the site designs API REST methods\n *\n */\nexport class SiteDesigns extends SharePointQueryable implements SiteDesignsUtilityMethods {\n /**\n * Creates a new instance of the SiteDesigns method class\n *\n * @param baseUrl The parent url provider\n * @param methodName The static method name to call on the utility class\n */\n constructor(baseUrl: string | SharePointQueryable, methodName: string) {\n super(SiteDesigns.getBaseUrl(baseUrl), `_api/Microsoft.Sharepoint.Utilities.WebTemplateExtensions.SiteScriptUtility.${methodName}`);\n }\n\n private static getBaseUrl(candidate: string | SharePointQueryable) {\n if (typeof candidate === \"string\") {\n return candidate;\n }\n\n const c = candidate as SharePointQueryable;\n const url = c.toUrl();\n const index = url.indexOf(\"_api/\");\n if (index < 0) {\n return url;\n }\n\n return url.substr(0, index);\n }\n\n public execute(props: any): Promise {\n return this.postCore({\n body: JSON.stringify(props),\n headers: {\n \"Content-Type\": \"application/json;charset=utf-8\",\n },\n });\n }\n\n /**\n * Creates a new site design available to users when they create a new site from the SharePoint home page.\n * \n * @param creationInfo A sitedesign creation information object\n */\n public async createSiteDesign(creationInfo: SiteDesignCreationInfo): Promise {\n return await this.clone(SiteDesigns, `CreateSiteDesign`).execute({ info: creationInfo });\n }\n\n /**\n * Applies a site design to an existing site collection.\n *\n * @param siteDesignId The ID of the site design to apply.\n * @param webUrl The URL of the site collection where you want to apply the site design.\n */\n public async applySiteDesign(siteDesignId: string, webUrl: string): Promise {\n return await this.clone(SiteDesigns, `ApplySiteDesign`).execute({ siteDesignId: siteDesignId, \"webUrl\": webUrl });\n }\n\n /**\n * Gets a list of information about existing site designs.\n */\n public async getSiteDesigns(): Promise {\n return await this.clone(SiteDesigns, `GetSiteDesigns`).execute({});\n }\n\n /**\n * Gets information about a specific site design.\n * @param id The ID of the site design to get information about.\n */\n public async getSiteDesignMetadata(id: string): Promise {\n return await this.clone(SiteDesigns, `GetSiteDesignMetadata`).execute({ id: id });\n }\n\n /**\n * Updates a site design with new values. In the REST call, all parameters are optional except the site script Id.\n * If you had previously set the IsDefault parameter to TRUE and wish it to remain true, you must pass in this parameter again (otherwise it will be reset to FALSE). \n * @param updateInfo A sitedesign update information object\n */\n public async updateSiteDesign(updateInfo: SiteDesignUpdateInfo): Promise {\n return await this.clone(SiteDesigns, `UpdateSiteDesign`).execute({ updateInfo: updateInfo });\n }\n\n /**\n * Deletes a site design.\n * @param id The ID of the site design to delete.\n */\n public async deleteSiteDesign(id: string): Promise {\n return await this.clone(SiteDesigns, `DeleteSiteDesign`).execute({ id: id });\n }\n\n /**\n * Gets a list of principals that have access to a site design.\n * @param id The ID of the site design to get rights information from.\n */\n public async getSiteDesignRights(id: string): Promise {\n return await this.clone(SiteDesigns, `GetSiteDesignRights`).execute({ id: id });\n }\n\n /**\n * Grants access to a site design for one or more principals.\n * @param id The ID of the site design to grant rights on.\n * @param principalNames An array of one or more principals to grant view rights. \n * Principals can be users or mail-enabled security groups in the form of \"alias\" or \"alias@.com\"\n * @param grantedRights Always set to 1. This represents the View right.\n */\n public async grantSiteDesignRights(id: string, principalNames: string[], grantedRights = 1): Promise {\n return await this.clone(SiteDesigns, `GrantSiteDesignRights`)\n .execute({\n \"grantedRights\": grantedRights.toString(),\n \"id\": id,\n \"principalNames\": principalNames,\n });\n }\n\n /**\n * Revokes access from a site design for one or more principals.\n * @param id The ID of the site design to revoke rights from.\n * @param principalNames An array of one or more principals to revoke view rights from. \n * If all principals have rights revoked on the site design, the site design becomes viewable to everyone.\n */\n public async revokeSiteDesignRights(id: string, principalNames: string[]): Promise {\n return await this.clone(SiteDesigns, `RevokeSiteDesignRights`)\n .execute({\n \"id\": id,\n \"principalNames\": principalNames,\n });\n }\n\n /**\n * Adds a site design task on the specified web url to be invoked asynchronously.\n * @param webUrl The absolute url of the web on where to create the task\n * @param siteDesignId The ID of the site design to create a task for\n */\n public async addSiteDesignTask(webUrl: string, siteDesignId: string): Promise {\n return await this.clone(SiteDesigns, `AddSiteDesignTask`)\n .execute({ \"webUrl\": webUrl, \"siteDesignId\": siteDesignId });\n }\n\n /**\n * Adds a site design task on the current web to be invoked asynchronously.\n * @param siteDesignId The ID of the site design to create a task for\n */\n public async addSiteDesignTaskToCurrentWeb(siteDesignId: string): Promise {\n return await this.clone(SiteDesigns, `AddSiteDesignTaskToCurrentWeb`)\n .execute({ \"siteDesignId\": siteDesignId });\n }\n\n /**\n * Retrieves the site design task, if the task has finished running null will be returned\n * @param id The ID of the site design task\n */\n public async getSiteDesignTask(id: string): Promise {\n const task = await this.clone(SiteDesigns, `GetSiteDesignTask`)\n .execute({ \"taskId\": id });\n\n return hOP(task, \"ID\") ? task : null;\n }\n\n /**\n * Retrieves a list of site design that have run on a specific web\n * @param webUrl The url of the web where the site design was applied\n * @param siteDesignId (Optional) the site design ID, if not provided will return all site design runs\n */\n public async getSiteDesignRun(webUrl: string, siteDesignId?: string): Promise {\n return await this.clone(SiteDesigns, `GetSiteDesignRun`)\n .execute({ \"webUrl\": webUrl, siteDesignId: siteDesignId });\n }\n\n /**\n * Retrieves the status of a site design that has been run or is still running\n * @param webUrl The url of the web where the site design was applied\n * @param runId the run ID\n */\n public async getSiteDesignRunStatus(webUrl: string, runId: string): Promise {\n return await this.clone(SiteDesigns, `GetSiteDesignRunStatus`)\n .execute({ \"webUrl\": webUrl, runId: runId });\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ../../../../packages/sp/src/sitedesigns.ts","import { SharePointQueryable } from \"./sharepointqueryable\";\n\nexport interface SiteScriptInfo {\n Id: string;\n Title: string;\n Description: string;\n Content: string;\n Version: string;\n}\n\nexport interface SiteScriptUpdateInfo {\n Id: string;\n Title?: string;\n Description?: string;\n Content?: string;\n Version?: string;\n}\n\nexport interface SiteScriptUtilityMethods {\n getSiteScripts(): Promise;\n createSiteScript(title: string, description: string, content: any): Promise;\n getSiteScriptMetadata(id: string): Promise;\n deleteSiteScript(id: string): Promise;\n updateSiteScript(siteScriptUpdateInfo: SiteScriptUpdateInfo, content?: any): Promise;\n getSiteScriptFromList(listUrl: string): Promise;\n getSiteScriptFromWeb(webUrl: string, info: ISiteScriptSerializationInfo): Promise;\n}\n\nexport interface ISiteScriptSerializationInfo {\n IncludeBranding?: boolean;\n IncludedLists?: string[];\n IncludeLinksToExportedItems?: boolean;\n IncludeRegionalSettings?: boolean;\n IncludeSiteExternalSharingCapability?: boolean;\n IncludeTheme?: boolean;\n}\n\nexport interface ISiteScriptSerializationResult {\n JSON: string;\n Warnings: string[];\n}\n\n/**\n * Implements the site script API REST methods\n *\n */\nexport class SiteScripts extends SharePointQueryable implements SiteScriptUtilityMethods {\n /**\n * Creates a new instance of the SiteScripts method class\n *\n * @param baseUrl The parent url provider\n * @param methodName The static method name to call on the utility class\n */\n constructor(baseUrl: string | SharePointQueryable, methodName: string) {\n super(SiteScripts.getBaseUrl(baseUrl), `_api/Microsoft.Sharepoint.Utilities.WebTemplateExtensions.SiteScriptUtility.${methodName}`);\n }\n\n private static getBaseUrl(candidate: string | SharePointQueryable) {\n if (typeof candidate === \"string\") {\n return candidate;\n }\n\n const c = candidate as SharePointQueryable;\n const url = c.toUrl();\n const index = url.indexOf(\"_api/\");\n if (index < 0) {\n return url;\n }\n\n return url.substr(0, index);\n }\n\n public execute(props: any): Promise {\n return this.postCore({\n body: JSON.stringify(props),\n });\n }\n\n /**\n * Gets a list of information on all existing site scripts.\n */\n public getSiteScripts(): Promise {\n return this.clone(SiteScripts, \"GetSiteScripts\", true).execute({});\n }\n\n /**\n * Creates a new site script.\n * \n * @param title The display name of the site design.\n * @param content JSON value that describes the script. For more information, see JSON reference.\n */\n public async createSiteScript(title: string, description: string, content: any): Promise {\n return await this.clone(SiteScripts,\n `CreateSiteScript(Title=@title,Description=@desc)?@title='${encodeURIComponent(title)}'&@desc='${encodeURIComponent(description)}'`)\n .execute(content);\n }\n\n /**\n * Gets information about a specific site script. It also returns the JSON of the script.\n * \n * @param id The ID of the site script to get information about.\n */\n public async getSiteScriptMetadata(id: string): Promise {\n return await this.clone(SiteScripts, \"GetSiteScriptMetadata\").execute({ id: id });\n }\n\n /**\n * Deletes a site script.\n * \n * @param id The ID of the site script to delete.\n */\n public async deleteSiteScript(id: string): Promise {\n await this.clone(SiteScripts, \"DeleteSiteScript\").execute({ id: id });\n }\n\n /**\n * Updates a site script with new values. In the REST call, all parameters are optional except the site script Id.\n * \n * @param siteScriptUpdateInfo Object that contains the information to update a site script. \n * Make sure you stringify the content object or pass it in the second 'content' parameter\n * @param content (Optional) A new JSON script defining the script actions. For more information, see Site design JSON schema.\n */\n public async updateSiteScript(siteScriptUpdateInfo: SiteScriptUpdateInfo, content?: any): Promise {\n if (content) {\n siteScriptUpdateInfo.Content = JSON.stringify(content);\n }\n\n return await this.clone(SiteScripts, \"UpdateSiteScript\").execute({ updateInfo: siteScriptUpdateInfo });\n }\n\n /**\n * Gets the site script syntax (JSON) for a specific list\n * @param listUrl The absolute url of the list to retrieve site script\n */\n public async getSiteScriptFromList(listUrl: string): Promise {\n return await this.clone(SiteScripts, `GetSiteScriptFromList`)\n .execute({ \"listUrl\": listUrl });\n }\n\n /**\n * Gets the site script syntax (JSON) for a specific web\n * @param webUrl The absolute url of the web to retrieve site script\n * @param extractInfo configuration object to specify what to extract\n */\n public async getSiteScriptFromWeb(webUrl: string, extractInfo: ISiteScriptSerializationInfo): Promise {\n return await this.clone(SiteScripts, `getSiteScriptFromWeb`)\n .execute({ \"webUrl\": webUrl, info: extractInfo });\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ../../../../packages/sp/src/sitescripts.ts","import { extend, TypedHash, jsS } from \"@pnp/common\";\nimport { SharePointQueryableInstance, SharePointQueryableCollection, defaultPath } from \"./sharepointqueryable\";\nimport { SharePointQueryableShareableWeb } from \"./sharepointqueryableshareable\";\nimport { Folders, Folder } from \"./folders\";\nimport { Lists, List } from \"./lists\";\nimport { Fields } from \"./fields\";\nimport { Site } from \"./site\";\nimport { Navigation } from \"./navigation\";\nimport { SiteGroups, SiteGroup } from \"./sitegroups\";\nimport { ContentTypes } from \"./contenttypes\";\nimport { RoleDefinitions } from \"./roles\";\nimport { File } from \"./files\";\nimport { extractWebUrl } from \"./utils/extractweburl\";\nimport { ChangeQuery, StorageEntity, HubSiteData as IHubSiteData } from \"./types\";\nimport { SiteUsers, SiteUser, CurrentUser, SiteUserProps } from \"./siteusers\";\nimport { UserCustomActions } from \"./usercustomactions\";\nimport { odataUrlFrom } from \"./odata\";\nimport { SPBatch } from \"./batch\";\nimport { Features } from \"./features\";\nimport { RelatedItemManger, RelatedItemManagerImpl } from \"./relateditems\";\nimport { AppCatalog } from \"./appcatalog\";\nimport { RegionalSettings } from \"./regionalsettings\";\nimport { ClientSidePage, ClientSidePageComponent } from \"./clientsidepages\";\nimport { SiteDesigns, ISiteDesignRun, ISiteDesignTask, ISiteScriptActionStatus } from \"./sitedesigns\";\nimport { SiteScripts, ISiteScriptSerializationInfo, ISiteScriptSerializationResult } from \"./sitescripts\";\n\n/**\n * Describes a collection of webs\n *\n */\n@defaultPath(\"webs\")\nexport class Webs extends SharePointQueryableCollection {\n\n /**\n * Adds a new web to the collection\n *\n * @param title The new web's title\n * @param url The new web's relative url\n * @param description The new web's description\n * @param template The new web's template internal name (default = STS)\n * @param language The locale id that specifies the new web's language (default = 1033 [English, US])\n * @param inheritPermissions When true, permissions will be inherited from the new web's parent (default = true)\n */\n public add(\n title: string,\n url: string,\n description = \"\",\n template = \"STS\",\n language = 1033,\n inheritPermissions = true): Promise {\n\n const props = {\n Description: description,\n Language: language,\n Title: title,\n Url: url,\n UseSamePermissionsAsParentSite: inheritPermissions,\n WebTemplate: template,\n };\n\n const postBody = jsS({\n \"parameters\":\n extend({\n \"__metadata\": { \"type\": \"SP.WebCreationInformation\" },\n }, props),\n });\n\n return this.clone(Webs, \"add\").postCore({ body: postBody }).then((data) => {\n return {\n data: data,\n web: new Web(odataUrlFrom(data).replace(/_api\\/web\\/?/i, \"\")),\n };\n });\n }\n}\n\n/**\n * Describes a collection of web infos\n *\n */\n@defaultPath(\"webinfos\")\nexport class WebInfos extends SharePointQueryableCollection { }\n\n/**\n * Describes a web\n *\n */\n@defaultPath(\"_api/web\")\nexport class Web extends SharePointQueryableShareableWeb {\n\n /**\n * Creates a new web instance from the given url by indexing the location of the /_api/\n * segment. If this is not found the method creates a new web with the entire string as\n * supplied.\n *\n * @param url\n */\n public static fromUrl(url: string, path?: string) {\n return new Web(extractWebUrl(url), path);\n }\n\n /**\n * Gets this web's subwebs\n *\n */\n public get webs(): Webs {\n return new Webs(this);\n }\n\n /**\n * Gets this web's parent web and data\n *\n */\n public getParentWeb(): Promise<{ data: any; web: Web }> {\n return this.select(\"ParentWeb/Id\").expand(\"ParentWeb\").get()\n .then(({ ParentWeb }) => ParentWeb ? new Site(this.parentUrl).openWebById(ParentWeb.Id) : null);\n }\n\n /**\n * Returns a collection of objects that contain metadata about subsites of the current site in which the current user is a member.\n *\n * @param nWebTemplateFilter Specifies the site definition (default = -1)\n * @param nConfigurationFilter A 16-bit integer that specifies the identifier of a configuration (default = -1)\n */\n public getSubwebsFilteredForCurrentUser(nWebTemplateFilter = -1, nConfigurationFilter = -1): Webs {\n return this.clone(Webs, `getSubwebsFilteredForCurrentUser(nWebTemplateFilter=${nWebTemplateFilter},nConfigurationFilter=${nConfigurationFilter})`);\n }\n\n /**\n * Allows access to the web's all properties collection\n */\n public get allProperties(): SharePointQueryableInstance {\n return this.clone(SharePointQueryableInstance, \"allproperties\");\n }\n\n /**\n * Gets a collection of WebInfos for this web's subwebs\n *\n */\n public get webinfos(): WebInfos {\n return new WebInfos(this);\n }\n\n /**\n * Gets the content types available in this web\n *\n */\n public get contentTypes(): ContentTypes {\n return new ContentTypes(this);\n }\n\n /**\n * Gets the lists in this web\n *\n */\n public get lists(): Lists {\n return new Lists(this);\n }\n\n /**\n * Gets the fields in this web\n *\n */\n public get fields(): Fields {\n return new Fields(this);\n }\n\n /**\n * Gets the active features for this web\n *\n */\n public get features(): Features {\n return new Features(this);\n }\n\n /**\n * Gets the available fields in this web\n *\n */\n public get availablefields(): Fields {\n return new Fields(this, \"availablefields\");\n }\n\n /**\n * Gets the navigation options in this web\n *\n */\n public get navigation(): Navigation {\n return new Navigation(this);\n }\n\n /**\n * Gets the site users\n *\n */\n public get siteUsers(): SiteUsers {\n return new SiteUsers(this);\n }\n\n /**\n * Gets the site groups\n *\n */\n public get siteGroups(): SiteGroups {\n return new SiteGroups(this);\n }\n\n /**\n * Gets site user info list\n *\n */\n public get siteUserInfoList(): List {\n return new List(this, \"siteuserinfolist\");\n }\n\n /**\n * Gets regional settings\n *\n */\n public get regionalSettings(): RegionalSettings {\n return new RegionalSettings(this);\n }\n\n /**\n * Gets the current user\n */\n public get currentUser(): CurrentUser {\n return new CurrentUser(this);\n }\n\n /**\n * Gets the top-level folders in this web\n *\n */\n public get folders(): Folders {\n return new Folders(this);\n }\n\n /**\n * Gets all user custom actions for this web\n *\n */\n public get userCustomActions(): UserCustomActions {\n return new UserCustomActions(this);\n }\n\n /**\n * Gets the collection of RoleDefinition resources\n *\n */\n public get roleDefinitions(): RoleDefinitions {\n return new RoleDefinitions(this);\n }\n\n /**\n * Provides an interface to manage related items\n *\n */\n public get relatedItems(): RelatedItemManger {\n return RelatedItemManagerImpl.FromUrl(this.toUrl());\n }\n\n /**\n * Creates a new batch for requests within the context of this web\n *\n */\n public createBatch(): SPBatch {\n return new SPBatch(this.parentUrl);\n }\n\n /**\n * Gets the root folder of this web\n *\n */\n public get rootFolder(): Folder {\n return new Folder(this, \"rootFolder\");\n }\n\n /**\n * Gets the associated owner group for this web\n *\n */\n public get associatedOwnerGroup(): SiteGroup {\n return new SiteGroup(this, \"associatedownergroup\");\n }\n\n /**\n * Gets the associated member group for this web\n *\n */\n public get associatedMemberGroup(): SiteGroup {\n return new SiteGroup(this, \"associatedmembergroup\");\n }\n\n /**\n * Gets the associated visitor group for this web\n *\n */\n public get associatedVisitorGroup(): SiteGroup {\n return new SiteGroup(this, \"associatedvisitorgroup\");\n }\n\n /**\n * Gets the default document library for this web\n *\n */\n public get defaultDocumentLibrary(): List {\n return new List(this, \"DefaultDocumentLibrary\");\n }\n\n /**\n * Gets a folder by id\n *\n * @param uniqueId The uniqueId of the folder\n */\n public getFolderById(uniqueId: string): Folder {\n return new Folder(this, `getFolderById('${uniqueId}')`);\n }\n\n /**\n * Gets a folder by server relative url\n *\n * @param folderRelativeUrl The server relative path to the folder (including /sites/ if applicable)\n */\n public getFolderByServerRelativeUrl(folderRelativeUrl: string): Folder {\n return new Folder(this, `getFolderByServerRelativeUrl('${folderRelativeUrl}')`);\n }\n\n /**\n * Gets a folder by server relative relative path if your folder name contains # and % characters\n * you need to first encode the file name using encodeURIComponent() and then pass the url\n * let url = \"/sites/test/Shared Documents/\" + encodeURIComponent(\"%123\");\n * This works only in SharePoint online.\n *\n * @param folderRelativeUrl The server relative path to the folder (including /sites/ if applicable)\n */\n public getFolderByServerRelativePath(folderRelativeUrl: string): Folder {\n return new Folder(this, `getFolderByServerRelativePath(decodedUrl='${folderRelativeUrl}')`);\n }\n\n /**\n * Gets a file by id\n *\n * @param uniqueId The uniqueId of the file\n */\n public getFileById(uniqueId: string): File {\n return new File(this, `getFileById('${uniqueId}')`);\n }\n\n /**\n * Gets a file by server relative url\n *\n * @param fileRelativeUrl The server relative path to the file (including /sites/ if applicable)\n */\n public getFileByServerRelativeUrl(fileRelativeUrl: string): File {\n return new File(this, `getFileByServerRelativeUrl('${fileRelativeUrl}')`);\n }\n\n /**\n * Gets a file by server relative url if your file name contains # and % characters\n * you need to first encode the file name using encodeURIComponent() and then pass the url\n * let url = \"/sites/test/Shared Documents/\" + encodeURIComponent(\"%123.docx\");\n *\n * @param fileRelativeUrl The server relative path to the file (including /sites/ if applicable)\n */\n public getFileByServerRelativePath(fileRelativeUrl: string): File {\n return new File(this, `getFileByServerRelativePath(decodedUrl='${fileRelativeUrl}')`);\n }\n\n /**\n * Gets a list by server relative url (list's root folder)\n *\n * @param listRelativeUrl The server relative path to the list's root folder (including /sites/ if applicable)\n */\n public getList(listRelativeUrl: string): List {\n return new List(this, `getList('${listRelativeUrl}')`);\n }\n\n /**\n * Updates this web instance with the supplied properties\n *\n * @param properties A plain object hash of values to update for the web\n */\n public update(properties: TypedHash): Promise {\n\n const postBody = jsS(extend({\n \"__metadata\": { \"type\": \"SP.Web\" },\n }, properties));\n\n return this.postCore({\n body: postBody,\n headers: {\n \"X-HTTP-Method\": \"MERGE\",\n },\n }).then((data) => {\n return {\n data: data,\n web: this,\n };\n });\n }\n\n /**\n * Deletes this web\n *\n */\n public delete(): Promise {\n return super.deleteCore();\n }\n\n /**\n * Applies the theme specified by the contents of each of the files specified in the arguments to the site\n *\n * @param colorPaletteUrl The server-relative URL of the color palette file\n * @param fontSchemeUrl The server-relative URL of the font scheme\n * @param backgroundImageUrl The server-relative URL of the background image\n * @param shareGenerated When true, the generated theme files are stored in the root site. When false, they are stored in this web\n */\n public applyTheme(colorPaletteUrl: string, fontSchemeUrl: string, backgroundImageUrl: string, shareGenerated: boolean): Promise {\n\n const postBody = jsS({\n backgroundImageUrl: backgroundImageUrl,\n colorPaletteUrl: colorPaletteUrl,\n fontSchemeUrl: fontSchemeUrl,\n shareGenerated: shareGenerated,\n });\n\n return this.clone(Web, \"applytheme\").postCore({ body: postBody });\n }\n\n /**\n * Applies the specified site definition or site template to the Web site that has no template applied to it\n *\n * @param template Name of the site definition or the name of the site template\n */\n public applyWebTemplate(template: string): Promise {\n\n const q = this.clone(Web, \"applywebtemplate\");\n q.concat(`(@t)`);\n q.query.set(\"@t\", template);\n return q.postCore();\n }\n\n /**\n * Checks whether the specified login name belongs to a valid user in the web. If the user doesn't exist, adds the user to the web.\n *\n * @param loginName The login name of the user (ex: i:0#.f|membership|user@domain.onmicrosoft.com)\n */\n public ensureUser(loginName: string): Promise {\n const postBody = jsS({\n logonName: loginName,\n });\n\n return this.clone(Web, \"ensureuser\").postCore({ body: postBody }).then((data: any) => {\n return {\n data: data,\n user: new SiteUser(odataUrlFrom(data)),\n };\n });\n }\n\n /**\n * Returns a collection of site templates available for the site\n *\n * @param language The locale id of the site templates to retrieve (default = 1033 [English, US])\n * @param includeCrossLanguage When true, includes language-neutral site templates; otherwise false (default = true)\n */\n public availableWebTemplates(language = 1033, includeCrossLanugage = true): SharePointQueryableCollection {\n return new SharePointQueryableCollection(this, `getavailablewebtemplates(lcid=${language}, doincludecrosslanguage=${includeCrossLanugage})`);\n }\n\n /**\n * Returns the list gallery on the site\n *\n * @param type The gallery type - WebTemplateCatalog = 111, WebPartCatalog = 113 ListTemplateCatalog = 114,\n * MasterPageCatalog = 116, SolutionCatalog = 121, ThemeCatalog = 123, DesignCatalog = 124, AppDataCatalog = 125\n */\n public getCatalog(type: number): Promise {\n return this.clone(Web, `getcatalog(${type})`).select(\"Id\").get().then((data) => {\n return new List(odataUrlFrom(data));\n });\n }\n\n /**\n * Returns the collection of changes from the change log that have occurred within the web, based on the specified query\n *\n * @param query The change query\n */\n public getChanges(query: ChangeQuery): Promise {\n\n const postBody = jsS({ \"query\": extend({ \"__metadata\": { \"type\": \"SP.ChangeQuery\" } }, query) });\n return this.clone(Web, \"getchanges\").postCore({ body: postBody });\n }\n\n /**\n * Gets the custom list templates for the site\n *\n */\n public get customListTemplate(): SharePointQueryableCollection {\n return new SharePointQueryableCollection(this, \"getcustomlisttemplates\");\n }\n\n /**\n * Returns the user corresponding to the specified member identifier for the current site\n *\n * @param id The id of the user\n */\n public getUserById(id: number): SiteUser {\n return new SiteUser(this, `getUserById(${id})`);\n }\n\n /**\n * Returns the name of the image file for the icon that is used to represent the specified file\n *\n * @param filename The file name. If this parameter is empty, the server returns an empty string\n * @param size The size of the icon: 16x16 pixels = 0, 32x32 pixels = 1 (default = 0)\n * @param progId The ProgID of the application that was used to create the file, in the form OLEServerName.ObjectName\n */\n public mapToIcon(filename: string, size = 0, progId = \"\"): Promise {\n return this.clone(Web, `maptoicon(filename='${filename}', progid='${progId}', size=${size})`).get();\n }\n\n /**\n * Returns the tenant property corresponding to the specified key in the app catalog site\n *\n * @param key Id of storage entity to be set\n */\n public getStorageEntity(key: string): Promise {\n return this.clone(Web, `getStorageEntity('${key}')`).get();\n }\n\n /**\n * This will set the storage entity identified by the given key (MUST be called in the context of the app catalog)\n *\n * @param key Id of storage entity to be set\n * @param value Value of storage entity to be set\n * @param description Description of storage entity to be set\n * @param comments Comments of storage entity to be set\n */\n public setStorageEntity(key: string, value: string, description = \"\", comments = \"\"): Promise {\n return this.clone(Web, `setStorageEntity`).postCore({\n body: jsS({\n comments,\n description,\n key,\n value,\n }),\n });\n }\n\n /**\n * This will remove the storage entity identified by the given key\n *\n * @param key Id of storage entity to be removed\n */\n public removeStorageEntity(key: string): Promise {\n return this.clone(Web, `removeStorageEntity('${key}')`).postCore();\n }\n\n /**\n * Gets the tenant app catalog for this web\n *\n * @param url Optional url or web containing the app catalog (default: current web)\n */\n public getAppCatalog(url?: string | Web) {\n return new AppCatalog(url || this);\n }\n\n /**\n * Gets the site collection app catalog for this web\n *\n * @param url Optional url or web containing the app catalog (default: current web)\n */\n public getSiteCollectionAppCatalog(url?: string | Web) {\n return new AppCatalog(url || this, \"_api/web/sitecollectionappcatalog/AvailableApps\");\n }\n\n /**\n * Gets the collection of available client side web parts for this web instance\n */\n public getClientSideWebParts(): Promise {\n return this.clone(SharePointQueryableCollection, \"GetClientSideWebParts\").get();\n }\n\n /**\n * Creates a new client side page\n *\n * @param pageName Name of the new page\n * @param title Display title of the new page\n */\n public addClientSidePage(pageName: string, title = pageName.replace(/\\.[^/.]+$/, \"\")): Promise {\n return ClientSidePage.create(this, pageName, title);\n }\n\n /**\n * Creates a new client side page using the library path\n *\n * @param pageName Name of the new page\n * @param listRelativePath The server relative path to the list's root folder (including /sites/ if applicable)\n * @param title Display title of the new page\n */\n public addClientSidePageByPath(pageName: string, title = pageName.replace(/\\.[^/.]+$/, \"\")): Promise {\n return ClientSidePage.create(this, pageName, title);\n }\n\n /**\n * Creates the default associated groups (Members, Owners, Visitors) and gives them the default permissions on the site.\n * The target site must have unique permissions and no associated members / owners / visitors groups\n *\n * @param siteOwner The user login name to be added to the site Owners group. Default is the current user\n * @param siteOwner2 The second user login name to be added to the site Owners group. Default is empty\n * @param groupNameSeed The base group name. E.g. 'TestSite' would produce 'TestSite Members' etc.\n */\n public createDefaultAssociatedGroups(siteOwner?: string, siteOwner2?: string, groupNameSeed?: string): Promise {\n const q = this.clone(Web, `createDefaultAssociatedGroups(userLogin=@u,userLogin2=@v,groupNameSeed=@s)`);\n q.query.set(\"@u\", `'${encodeURIComponent(siteOwner || \"\")}'`);\n q.query.set(\"@v\", `'${encodeURIComponent(siteOwner2 || \"\")}'`);\n q.query.set(\"@s\", `'${encodeURIComponent(groupNameSeed || \"\")}'`);\n return q.postCore();\n }\n\n /**\n * Gets hub site data for the current web.\n *\n * @param forceRefresh Default value is false. When false, the data is returned from the server's cache.\n * When true, the cache is refreshed with the latest updates and then returned.\n * Use this if you just made changes and need to see those changes right away.\n */\n public async hubSiteData(forceRefresh = false): Promise {\n return this.clone(Web, `hubSiteData(${forceRefresh})`).get().then(r => JSON.parse(r));\n }\n\n /**\n * Applies theme updates from the parent hub site collection.\n */\n public syncHubSiteTheme(): Promise {\n return this.clone(Web, `syncHubSiteTheme`).postCore();\n }\n\n /**\n * Retrieves a list of site design that have run on the current web\n * @param siteDesignId (Optional) the site design ID, if not provided will return all site design runs\n */\n public getSiteDesignRuns(siteDesignId?: string): Promise {\n return new SiteDesigns(this, \"\").getSiteDesignRun(undefined, siteDesignId);\n }\n\n /**\n * Gets the site script syntax (JSON) for a specific web\n * @param extractInfo configuration object to specify what to extract\n */\n public getSiteScript(extractInfo?: ISiteScriptSerializationInfo): Promise {\n return new SiteScripts(this, \"\").getSiteScriptFromWeb(undefined, extractInfo);\n }\n\n /**\n * Adds a site design task on the current web to be invoked asynchronously.\n * @param siteDesignId The ID of the site design to create a task for\n */\n public addSiteDesignTask(siteDesignId: string): Promise {\n return new SiteDesigns(this, \"\").addSiteDesignTaskToCurrentWeb(siteDesignId);\n }\n\n /**\n * Retrieves the status of a site design that has been run or is still running\n * @param runId the run ID\n */\n public getSiteDesignRunStatus(runId: string): Promise {\n return new SiteDesigns(this, \"\").getSiteDesignRunStatus(undefined, runId);\n }\n\n}\n\n/**\n * Result from adding a web\n *\n */\nexport interface WebAddResult {\n data: any;\n web: Web;\n}\n\n/**\n * Result from updating a web\n *\n */\nexport interface WebUpdateResult {\n data: any;\n web: Web;\n}\n\n/**\n * Result from retrieving a catalog\n *\n */\nexport interface GetCatalogResult {\n data: any;\n list: List;\n}\n\n/**\n * Result from ensuring a user\n *\n */\nexport interface WebEnsureUserResult {\n data: SiteUserProps;\n user: SiteUser;\n}\n\n\n\n// WEBPACK FOOTER //\n// ../../../../packages/sp/src/webs.ts","import { File } from \"./files\";\nimport { Item, ItemUpdateResult } from \"./items\";\nimport { TypedHash, extend, getGUID, jsS, hOP, stringIsNullOrEmpty, objectDefinedNotNull, combine, isUrlAbsolute } from \"@pnp/common\";\nimport { SharePointQueryable } from \"./sharepointqueryable\";\nimport { metadata } from \"./utils/metadata\";\nimport { List } from \"./lists\";\nimport { odataUrlFrom } from \"./odata\";\nimport { Web } from \"./webs\";\nimport { extractWebUrl } from \"./utils/extractweburl\";\nimport { Site } from \"./site\";\n\n/**\n * Page promotion state\n */\nexport const enum PromotedState {\n /**\n * Regular client side page\n */\n NotPromoted = 0,\n /**\n * Page that will be promoted as news article after publishing\n */\n PromoteOnPublish = 1,\n /**\n * Page that is promoted as news article\n */\n Promoted = 2,\n}\n\n/**\n * Type describing the available page layout types for client side \"modern\" pages\n */\nexport type ClientSidePageLayoutType = \"Article\" | \"Home\" | \"SingleWebPartAppPage\" | \"RepostPage\";\n\n/**\n * Column size factor. Max value is 12 (= one column), other options are 8,6,4 or 0\n */\nexport type CanvasColumnFactor = 0 | 2 | 4 | 6 | 8 | 12;\n\n/**\n * Gets the next order value 1 based for the provided collection\n * \n * @param collection Collection of orderable things\n */\nfunction getNextOrder(collection: { order: number }[]): number {\n\n if (collection.length < 1) {\n return 1;\n }\n\n return Math.max.apply(null, collection.map(i => i.order)) + 1;\n}\n\n/**\n * Normalizes the order value for all the sections, columns, and controls to be 1 based and stepped (1, 2, 3...)\n * \n * @param collection The collection to normalize\n */\nfunction reindex(collection: { order: number, columns?: { order: number }[], controls?: { order: number }[] }[]): void {\n\n for (let i = 0; i < collection.length; i++) {\n collection[i].order = i + 1;\n if (hOP(collection[i], \"columns\")) {\n reindex(collection[i].columns);\n } else if (hOP(collection[i], \"controls\")) {\n reindex(collection[i].controls);\n }\n }\n}\n\n/**\n * Represents the data and methods associated with client side \"modern\" pages\n */\nexport class ClientSidePage extends SharePointQueryable {\n\n private _pageSettings: IClientSidePageSettingsSlice;\n private _layoutPart: ILayoutPartsContent;\n private _bannerImageDirty: boolean;\n\n /**\n * PLEASE DON'T USE THIS CONSTRUCTOR DIRECTLY\n * \n */\n constructor(\n baseUrl: string | SharePointQueryable,\n path?: string,\n private json?: Partial,\n noInit = false,\n public sections: CanvasSection[] = [],\n public commentsDisabled = false) {\n\n super(baseUrl, path);\n\n this._bannerImageDirty = false;\n\n // ensure we have a good url to build on for the pages api\n if (typeof baseUrl === \"string\") {\n this._parentUrl = \"\";\n this._url = combine(extractWebUrl(baseUrl), path);\n } else {\n this.extend(ClientSidePage.initFrom(baseUrl, null), path);\n }\n\n // set a default page settings slice\n this._pageSettings = { controlType: 0, pageSettingsSlice: { isDefaultDescription: true, isDefaultThumbnail: true } };\n\n // set a default layout part\n this._layoutPart = ClientSidePage.getDefaultLayoutPart();\n\n if (typeof json !== \"undefined\" && !noInit) {\n this.fromJSON(json);\n }\n }\n\n /**\n * Creates a new blank page within the supplied library [does not work with batching]\n * \n * @param web Parent web in which we will create the page (we allow list here too matching the old api)\n * @param pageName Filename of the page, such as \"page\"\n * @param title The display title of the page\n * @param pageLayoutType Layout type of the page to use\n * @param promotedState Allows you to set the promoted state of a page when creating\n */\n public static async create(\n web: Web | List,\n pageName: string,\n title: string,\n pageLayoutType: ClientSidePageLayoutType = \"Article\",\n promotedState: PromotedState = 0): Promise {\n\n // patched because previously we used the full page name with the .aspx at the end\n // this allows folk's existing code to work after the re-write to the new API\n pageName = pageName.replace(/\\.aspx$/i, \"\");\n\n // this is the user data we will use to init the author field\n // const currentUserLogin = await ClientSidePage.getPoster(\"/_api/web/currentuser\").select(\"UserPrincipalName\").get<{ UserPrincipalName: string }>();\n\n // initialize the page, at this point a checked-out page with a junk filename will be created.\n const pageInitData = await ClientSidePage.initFrom(web, \"_api/sitepages/pages\").postCore({\n body: jsS(Object.assign(metadata(\"SP.Publishing.SitePage\"), {\n PageLayoutType: pageLayoutType,\n PromotedState: promotedState,\n })),\n });\n\n // now we can init our page with the save data\n const newPage = new ClientSidePage(web, \"\", pageInitData);\n // newPage.authors = [currentUserLogin.UserPrincipalName];\n newPage.title = pageName;\n await newPage.save(false);\n newPage.title = title;\n return newPage;\n }\n\n /**\n * Creates a new ClientSidePage instance from the provided html content string\n * \n * @param html HTML markup representing the page\n */\n public static fromFile(file: File): Promise {\n\n return file.getItem<{ Id: number }>().then(i => {\n const page = new ClientSidePage(extractWebUrl(file.toUrl()), \"\", { Id: i.Id }, true);\n return page.configureFrom(file).load();\n });\n }\n\n private static getDefaultLayoutPart(): ILayoutPartsContent {\n return {\n dataVersion: \"1.4\",\n description: \"Title Region Description\",\n id: \"cbe7b0a9-3504-44dd-a3a3-0e5cacd07788\",\n instanceId: \"cbe7b0a9-3504-44dd-a3a3-0e5cacd07788\",\n properties: {\n authors: [],\n layoutType: \"FullWidthImage\",\n showPublishDate: false,\n showTopicHeader: false,\n textAlignment: \"Left\",\n title: \"\",\n topicHeader: \"\",\n },\n serverProcessedContent: { htmlStrings: {}, searchablePlainTexts: {}, imageSources: {}, links: {} },\n title: \"Title area\",\n };\n }\n\n private static initFrom(o: SharePointQueryable, url: string): ClientSidePage {\n return (new ClientSidePage(extractWebUrl(o.toUrl()), url)).configureFrom(o);\n }\n\n public get pageLayout(): ClientSidePageLayoutType {\n return this.json.PageLayoutType;\n }\n\n public set pageLayout(value: ClientSidePageLayoutType) {\n this.json.PageLayoutType = value;\n }\n\n public get bannerImageUrl(): string {\n return this.json.BannerImageUrl;\n }\n\n public set bannerImageUrl(value: string) {\n this.json.BannerImageUrl = value;\n this._bannerImageDirty = true;\n }\n\n public get bannerImageSourceType(): number {\n return this._layoutPart.properties.imageSourceType;\n }\n\n public set bannerImageSourceType(value: number) {\n this._layoutPart.properties.imageSourceType = value;\n }\n\n public get topicHeader(): string {\n return objectDefinedNotNull(this.json.TopicHeader) ? this.json.TopicHeader : \"\";\n }\n\n public set topicHeader(value: string) {\n this.json.TopicHeader = value;\n this._layoutPart.properties.topicHeader = value;\n if (stringIsNullOrEmpty(value)) {\n this.showTopicHeader = false;\n }\n }\n\n // public get authors(): string[] {\n // return this._layoutPart.properties.authorByline;\n // }\n\n // public set authors(value: string[]) {\n // this.json.AuthorByline = value;\n // this._layoutPart.properties.authorByline = value;\n // this._layoutPart.properties.authors = null;\n // }\n\n public get title(): string {\n return this._layoutPart.properties.title;\n }\n\n public set title(value: string) {\n this.json.Title = value;\n this._layoutPart.properties.title = value;\n }\n\n public get layoutType(): LayoutType {\n return this._layoutPart.properties.layoutType;\n }\n\n public set layoutType(value: LayoutType) {\n this._layoutPart.properties.layoutType = value;\n }\n\n public get headerTextAlignment(): TextAlignment {\n return this._layoutPart.properties.textAlignment;\n }\n\n public set headerTextAlignment(value: TextAlignment) {\n this._layoutPart.properties.textAlignment = value;\n }\n\n public get showTopicHeader(): boolean {\n return this._layoutPart.properties.showTopicHeader;\n }\n\n public set showTopicHeader(value: boolean) {\n this._layoutPart.properties.showTopicHeader = value;\n }\n\n public get showPublishDate(): boolean {\n return this._layoutPart.properties.showPublishDate;\n }\n\n public set showPublishDate(value: boolean) {\n this._layoutPart.properties.showPublishDate = value;\n }\n\n public get hasVerticalSection(): boolean {\n return this.sections.findIndex(s => s.layoutIndex === 2) > -1;\n }\n\n public get verticalSection(): CanvasSection | null {\n if (this.hasVerticalSection) {\n return this.addVerticalSection();\n }\n return null;\n }\n\n /**\n * Add a section to this page\n */\n public addSection(): CanvasSection {\n const section = new CanvasSection(this, getNextOrder(this.sections), 1);\n this.sections.push(section);\n return section;\n }\n\n /**\n * Add a section to this page\n */\n public addVerticalSection(): CanvasSection {\n\n // we can only have one vertical section so we find it if it exists\n const sectionIndex = this.sections.findIndex(s => s.layoutIndex === 2);\n if (sectionIndex > -1) {\n return this.sections[sectionIndex];\n }\n\n const section = new CanvasSection(this, getNextOrder(this.sections), 2);\n this.sections.push(section);\n return section;\n }\n\n public fromJSON(pageData: Partial): this {\n\n this.json = pageData;\n\n const canvasControls: IClientSideControlBaseData[] = JSON.parse(pageData.CanvasContent1);\n\n const layouts = JSON.parse(pageData.LayoutWebpartsContent);\n if (layouts && layouts.length > 0) {\n this._layoutPart = layouts[0];\n }\n\n this.setControls(canvasControls);\n\n return this;\n }\n\n /**\n * Loads this page's content from the server\n */\n public load(): Promise {\n\n // load item id, then load page data from new pages api\n return this.getItem<{ Id: number, CommentsDisabled: boolean }>(\"Id\", \"CommentsDisabled\").then(item => {\n return (new SharePointQueryable(this, `_api/sitepages/pages(${item.Id})`)).get().then(pageData => {\n this.commentsDisabled = item.CommentsDisabled;\n return this.fromJSON(pageData);\n });\n });\n }\n\n /**\n * Persists the content changes (sections, columns, and controls) [does not work with batching]\n * \n * @param publish If true the page is published, if false the changes are persisted to SharePoint but not published\n */\n public save(publish = true): Promise {\n\n if (this.json.Id === null) {\n throw Error(\"The id for this page is null. If you want to create a new page, please use ClientSidePage.Create\");\n }\n\n // we will chain our work on this promise\n let promise = Promise.resolve({});\n\n if (this._bannerImageDirty) {\n\n // we have to do these gymnastics to set the banner image url\n promise = promise.then(_ => new Promise((resolve, reject) => {\n\n let origImgUrl = this.json.BannerImageUrl;\n\n if (isUrlAbsolute(origImgUrl)) {\n // do our best to make this a server relative url by removing the x.sharepoint.com part\n origImgUrl = origImgUrl.replace(/^https?:\\/\\/[a-z0-9\\.]*?\\.[a-z]{2,3}\\//i, \"/\");\n }\n\n const site = new Site(extractWebUrl(this.toUrl()));\n const web = new Web(extractWebUrl(this.toUrl()));\n const imgFile = web.getFileByServerRelativePath(origImgUrl);\n\n let siteId = \"\";\n let webId = \"\";\n let imgId = \"\";\n let listId = \"\";\n let webUrl = \"\";\n\n Promise.all([\n site.select(\"Id\", \"Url\").get().then(r => siteId = r.Id),\n web.select(\"Id\", \"Url\").get().then(r => { webId = r.Id; webUrl = r.Url; }),\n imgFile.listItemAllFields.select(\"UniqueId\", \"ParentList/Id\").expand(\"ParentList\").get().then(r => { imgId = r.UniqueId; listId = r.ParentList.Id; }),\n ]).then(() => {\n\n const f = new SharePointQueryable(webUrl, \"_layouts/15/getpreview.ashx\");\n f.query.set(\"guidSite\", `${siteId}`);\n f.query.set(\"guidWeb\", `${webId}`);\n f.query.set(\"guidFile\", `${imgId}`);\n this.bannerImageUrl = f.toUrlAndQuery();\n\n if (!objectDefinedNotNull(this._layoutPart.serverProcessedContent)) {\n this._layoutPart.serverProcessedContent = {};\n }\n\n this._layoutPart.serverProcessedContent.imageSources = { imageSource: origImgUrl };\n\n if (!objectDefinedNotNull(this._layoutPart.serverProcessedContent.customMetadata)) {\n this._layoutPart.serverProcessedContent.customMetadata = {};\n }\n\n this._layoutPart.serverProcessedContent.customMetadata.imageSource = {\n listId,\n siteId,\n uniqueId: imgId,\n webId,\n };\n this._layoutPart.properties.webId = webId;\n this._layoutPart.properties.siteId = siteId;\n this._layoutPart.properties.listId = listId;\n this._layoutPart.properties.uniqueId = imgId;\n resolve();\n }).catch(reject);\n }));\n }\n\n // we need to update our authors if they have changed\n // if (this._layoutPart.properties.authors === null && this._layoutPart.properties.authorByline.length > 0) {\n\n // promise = promise.then(_ => new Promise(resolve => {\n\n // const collector: any[] = [];\n // const userResolver = ClientSidePage.getPoster(\"/_api/SP.UI.ApplicationPages.ClientPeoplePickerWebServiceInterface.ClientPeoplePickerResolveUser\");\n\n // this._layoutPart.properties.authorByline.forEach(async author => {\n // const userData = await userResolver.postCore({\n // body: jsS({\n // queryParams: {\n // AllowEmailAddresses: false,\n // MaximumEntitySuggestions: 1,\n // PrincipalSource: 15,\n // PrincipalType: 1,\n // QueryString: author,\n // SharePointGroupID: 0,\n // },\n // }),\n // });\n\n // collector.push({\n // email: userData.EntityData.Email,\n // id: userData.Key,\n // name: userData.DisplayName,\n // role: \"\",\n // upn: userData.EntityData.Email,\n // });\n // });\n\n // this._layoutPart.properties.authors = collector;\n\n // resolve();\n // }));\n // }\n\n // we try and check out the page for the user\n if (!this.json.IsPageCheckedOutToCurrentUser) {\n promise = promise.then(_ => (ClientSidePage.initFrom(this, `_api/sitepages/pages(${this.json.Id})/checkoutpage`)).postCore());\n }\n\n promise = promise.then(_ => {\n\n const saveBody = Object.assign(metadata(\"SP.Publishing.SitePage\"), {\n AuthorByline: this.json.AuthorByline || [],\n BannerImageUrl: this.bannerImageUrl,\n CanvasContent1: this.getCanvasContent1(),\n LayoutWebpartsContent: this.getLayoutWebpartsContent(),\n Title: this.title,\n TopicHeader: this.topicHeader,\n });\n\n const updater = ClientSidePage.initFrom(this, `_api/sitepages/pages(${this.json.Id})/savepage`);\n updater.configure({\n headers: {\n \"if-match\": \"*\",\n },\n });\n return updater.postCore({ body: jsS(saveBody) });\n });\n\n if (publish) {\n promise = promise.then(_ => (ClientSidePage.initFrom(this, `_api/sitepages/pages(${this.json.Id})/publish`)).postCore()).then(r => {\n if (r) {\n this.json.IsPageCheckedOutToCurrentUser = false;\n }\n });\n }\n\n promise = promise.then(_ => {\n // these are post-save actions\n this._bannerImageDirty = false;\n });\n\n return promise;\n }\n\n public async discardPageCheckout(): Promise {\n\n if (this.json.Id === null) {\n throw Error(\"The id for this page is null. If you want to create a new page, please use ClientSidePage.Create\");\n }\n\n const d = await ClientSidePage.initFrom(this, `_api/sitepages/pages(${this.json.Id})/discardPage`).postCore({\n body: jsS(metadata(\"SP.Publishing.SitePage\")),\n });\n\n this.fromJSON(d);\n }\n\n public async promoteToNews(): Promise {\n return this.promoteNewsImpl(\"promoteToNews\");\n }\n\n // API is currently broken on server side\n // public async demoteFromNews(): Promise {\n // return this.promoteNewsImpl(\"demoteFromNews\");\n // }\n\n /**\n * Enables comments on this page\n */\n public enableComments(): Promise {\n return this.setCommentsOn(true).then(r => {\n this.commentsDisabled = false;\n return r;\n });\n }\n\n /**\n * Disables comments on this page\n */\n public disableComments(): Promise {\n return this.setCommentsOn(false).then(r => {\n this.commentsDisabled = true;\n return r;\n });\n }\n\n /**\n * Finds a control by the specified instance id\n *\n * @param id Instance id of the control to find\n */\n public findControlById = ColumnControl>(id: string): T {\n return this.findControl((c) => c.id === id);\n }\n\n /**\n * Finds a control within this page's control tree using the supplied predicate\n *\n * @param predicate Takes a control and returns true or false, if true that control is returned by findControl\n */\n public findControl = ColumnControl>(predicate: (c: ColumnControl) => boolean): T {\n // check all sections\n for (let i = 0; i < this.sections.length; i++) {\n // check all columns\n for (let j = 0; j < this.sections[i].columns.length; j++) {\n // check all controls\n for (let k = 0; k < this.sections[i].columns[j].controls.length; k++) {\n // check to see if the predicate likes this control\n if (predicate(this.sections[i].columns[j].controls[k])) {\n return this.sections[i].columns[j].controls[k];\n }\n }\n }\n }\n\n // we found nothing so give nothing back\n return null;\n }\n\n /**\n * Like the modern site page\n */\n public like(): Promise {\n return this.getItem().then(i => {\n return i.like();\n });\n }\n\n /**\n * Unlike the modern site page\n */\n public unlike(): Promise {\n return this.getItem().then(i => {\n return i.unlike();\n });\n }\n\n /**\n * Get the liked by information for a modern site page \n */\n public getLikedByInformation(): Promise {\n return this.getItem().then(i => {\n return i.getLikedByInformation();\n });\n }\n\n /**\n * Creates a copy of this page\n * \n * @param web The web where we will create the copy\n * @param pageName The file name of the new page\n * @param title The title of the new page\n * @param publish If true the page will be published\n * @param promotedState Allows you to set the promoted state of a page when making a copy\n */\n public async copyPage(web: Web | List, pageName: string, title: string, publish = true, promotedState: PromotedState = 0): Promise {\n\n const page = await ClientSidePage.create(web, pageName, title, this.pageLayout, promotedState);\n\n page.setControls(this.getControls());\n\n await page.save(publish);\n\n return page;\n }\n\n /**\n * Sets the modern page banner image\n * \n * @param url Url of the image to display\n * @param altText Alt text to describe the image\n * @param bannerProps Additional properties to control display of the banner\n */\n public setBannerImage(url: string, props?: {\n altText?: string;\n imageSourceType?: number;\n translateX?: number;\n translateY?: number;\n }): void {\n\n this.bannerImageUrl = url;\n this.bannerImageSourceType = 2; // this seems to always be true, so default?\n\n if (objectDefinedNotNull(props)) {\n if (hOP(props, \"translateX\")) {\n this._layoutPart.properties.translateX = props.translateX;\n }\n if (hOP(props, \"translateY\")) {\n this._layoutPart.properties.translateY = props.translateY;\n }\n if (hOP(props, \"imageSourceType\")) {\n this.bannerImageSourceType = props.imageSourceType;\n }\n if (hOP(props, \"altText\")) {\n this._layoutPart.properties.altText = props.altText;\n }\n }\n }\n\n protected getCanvasContent1(): string {\n return JSON.stringify(this.getControls());\n }\n\n protected getLayoutWebpartsContent(): string {\n if (this._layoutPart) {\n return JSON.stringify([this._layoutPart]);\n } else {\n return JSON.stringify(null);\n }\n }\n\n protected setControls(controls: IClientSideControlBaseData[]): void {\n\n if (controls && controls.length) {\n\n for (let i = 0; i < controls.length; i++) {\n\n // if no control type is present this is a column which we give type 0 to let us process it\n const controlType = hOP(controls[i], \"controlType\") ? controls[i].controlType : 0;\n\n switch (controlType) {\n\n case 0:\n // empty canvas column or page settings\n if (hOP(controls[i], \"pageSettingsSlice\")) {\n this._pageSettings = controls[i];\n } else {\n // we have an empty column\n this.mergeColumnToTree(new CanvasColumn(controls[i]));\n }\n break;\n case 3:\n const part = new ClientSideWebpart(controls[i]);\n this.mergePartToTree(part, part.data.position);\n break;\n case 4:\n const textData = controls[i];\n const text = new ClientSideText(textData.innerHTML, textData);\n this.mergePartToTree(text, text.data.position);\n break;\n }\n }\n\n reindex(this.sections);\n }\n }\n\n protected getControls(): IClientSideControlBaseData[] {\n\n // reindex things\n reindex(this.sections);\n\n // rollup the control changes\n const canvasData: any[] = [];\n\n this.sections.forEach(section => {\n section.columns.forEach(column => {\n if (column.controls.length < 1) {\n // empty column\n canvasData.push({\n displayMode: column.data.displayMode,\n emphasis: this.getEmphasisObj(section.emphasis),\n position: column.data.position,\n });\n } else {\n column.controls.forEach(control => {\n control.data.emphasis = this.getEmphasisObj(section.emphasis);\n canvasData.push(control.data);\n });\n }\n });\n });\n\n canvasData.push(this._pageSettings);\n\n return canvasData;\n }\n\n private getEmphasisObj(value: 0 | 1 | 2 | 3): IClientControlEmphasis {\n if (value < 1 || value > 3) {\n return {};\n }\n\n return { zoneEmphasis: value };\n }\n\n /**\n * Sets the comments flag for a page\n * \n * @param on If true comments are enabled, false they are disabled\n */\n private setCommentsOn(on: boolean): Promise {\n return this.getItem().then(i => {\n const updater = new Item(i, `SetCommentsDisabled(${!on})`);\n return updater.update({});\n });\n }\n\n private async promoteNewsImpl(method: string): Promise {\n\n // per bug #858 if we promote before we have ever published the last published date will\n // forever not be updated correctly in the modern news webpart. Because this will affect very\n // few folks we just go ahead and publish for them here as that is likely what they intended.\n if (stringIsNullOrEmpty(this.json.VersionInfo.LastVersionCreatedBy)) {\n const lastPubData = new Date(this.json.VersionInfo.LastVersionCreated);\n // no modern page should reasonable be published before the year 2000 :)\n if (lastPubData.getFullYear() < 2000) {\n await this.save(true);\n }\n }\n\n if (this.json.Id === null) {\n throw Error(\"The id for this page is null. If you want to create a new page, please use ClientSidePage.Create\");\n }\n\n const d = await ClientSidePage.initFrom(this, `_api/sitepages/pages(${this.json.Id})/${method}`).postCore({\n body: jsS(metadata(\"SP.Publishing.SitePage\")),\n });\n\n return d;\n }\n\n /**\n * Merges the control into the tree of sections and columns for this page\n * \n * @param control The control to merge\n */\n private mergePartToTree(control: any, positionData: IPosition): void {\n\n let column: CanvasColumn = null;\n let sectionFactor: CanvasColumnFactor = 12;\n let sectionIndex = 0;\n let zoneIndex = 0;\n let layoutIndex = 1;\n\n // handle case where we don't have position data (shouldn't happen?)\n if (positionData) {\n if (hOP(positionData, \"zoneIndex\")) {\n zoneIndex = positionData.zoneIndex;\n }\n if (hOP(positionData, \"sectionIndex\")) {\n sectionIndex = positionData.sectionIndex;\n }\n if (hOP(positionData, \"sectionFactor\")) {\n sectionFactor = positionData.sectionFactor;\n }\n if (hOP(positionData, \"layoutIndex\")) {\n layoutIndex = positionData.layoutIndex;\n }\n }\n\n const zoneEmphasis = (control.data && control.data.emphasis && control.data.emphasis.zoneEmphasis) ? control.data.emphasis.zoneEmphasis : 0;\n const section = this.getOrCreateSection(zoneIndex, layoutIndex, zoneEmphasis);\n\n const columns = section.columns.filter(c => c.order === sectionIndex);\n if (columns.length < 1) {\n column = section.addColumn(sectionFactor, layoutIndex);\n } else {\n column = columns[0];\n }\n\n control.column = column;\n column.addControl(control);\n }\n\n /**\n * Merges the supplied column into the tree\n * \n * @param column Column to merge\n * @param position The position data for the column\n */\n private mergeColumnToTree(column: CanvasColumn): void {\n\n const order = hOP(column.data, \"position\") && hOP(column.data.position, \"zoneIndex\") ? column.data.position.zoneIndex : 0;\n const layoutIndex = hOP(column.data, \"position\") && hOP(column.data.position, \"layoutIndex\") ? column.data.position.layoutIndex : 1;\n const section = this.getOrCreateSection(order, layoutIndex, column.data.emphasis.zoneEmphasis || 0);\n column.section = section;\n section.columns.push(column);\n }\n\n /**\n * Handle the logic to get or create a section based on the supplied order and layoutIndex\n * \n * @param order Section order\n * @param layoutIndex Layout Index (1 === normal, 2 === vertical section)\n * @param emphasis The section emphasis\n */\n private getOrCreateSection(order: number, layoutIndex: number, emphasis: 0 | 1 | 2 | 3): CanvasSection {\n\n let section: CanvasSection = null;\n const sections = this.sections.filter(s => s.order === order && s.layoutIndex === layoutIndex);\n\n if (sections.length < 1) {\n section = layoutIndex === 2 ? this.addVerticalSection() : this.addSection();\n section.order = order;\n section.emphasis = emphasis;\n } else {\n section = sections[0];\n }\n\n return section;\n }\n\n private getItem(...selects: string[]): Promise {\n\n const initer = ClientSidePage.initFrom(this, \"/_api/lists/EnsureClientRenderedSitePagesLibrary\").select(\"EnableModeration\", \"EnableMinorVersions\", \"Id\");\n return initer.postCore<{ Id: string, \"odata.id\": string }>().then(listData => {\n const item = (new List(listData[\"odata.id\"])).configureFrom(this).items.getById(this.json.Id);\n\n return item.select.apply(item, selects).get().then((d: T) => {\n return extend((new Item(odataUrlFrom(d))).configureFrom(this), d);\n });\n });\n }\n}\n\nexport class CanvasSection {\n\n /**\n * Used to track this object inside the collection at runtime\n */\n private _memId: string;\n\n private _order: number;\n private _layoutIndex: number;\n\n constructor(protected page: ClientSidePage, order: number, layoutIndex: number, public columns: CanvasColumn[] = [], private _emphasis: 0 | 1 | 2 | 3 = 0) {\n this._memId = getGUID();\n this._order = order;\n this._layoutIndex = layoutIndex;\n }\n\n public get order(): number {\n return this._order;\n }\n\n public set order(value: number) {\n this._order = value;\n for (let i = 0; i < this.columns.length; i++) {\n this.columns[i].data.position.zoneIndex = value;\n }\n }\n\n public get layoutIndex(): number {\n return this._layoutIndex;\n }\n\n public set layoutIndex(value: number) {\n this._layoutIndex = value;\n for (let i = 0; i < this.columns.length; i++) {\n this.columns[i].data.position.layoutIndex = value;\n }\n }\n\n /**\n * Default column (this.columns[0]) for this section\n */\n public get defaultColumn(): CanvasColumn {\n\n if (this.columns.length < 1) {\n this.addColumn(12);\n }\n\n return this.columns[0];\n }\n\n /**\n * Adds a new column to this section\n */\n public addColumn(factor: CanvasColumnFactor, layoutIndex = 1): CanvasColumn {\n const column = new CanvasColumn();\n column.section = this;\n column.data.position.zoneIndex = this.order;\n column.data.position.layoutIndex = layoutIndex;\n column.data.position.sectionFactor = factor;\n column.order = getNextOrder(this.columns);\n this.columns.push(column);\n return column;\n }\n\n /**\n * Adds a control to the default column for this section\n *\n * @param control Control to add to the default column\n */\n public addControl(control: ColumnControl): this {\n this.defaultColumn.addControl(control);\n return this;\n }\n\n public get emphasis(): 0 | 1 | 2 | 3 {\n return this._emphasis;\n }\n\n public set emphasis(value: 0 | 1 | 2 | 3) {\n this._emphasis = value;\n }\n\n /**\n * Removes this section and all contained columns and controls from the collection\n */\n public remove(): void {\n this.page.sections = this.page.sections.filter(section => section._memId !== this._memId);\n reindex(this.page.sections);\n }\n}\n\nexport class CanvasColumn {\n\n public static Default: IClientSidePageColumnData = {\n controlType: 0,\n displayMode: 2,\n emphasis: {},\n position: {\n layoutIndex: 1,\n sectionFactor: 12,\n sectionIndex: 1,\n zoneIndex: 1,\n },\n };\n\n private _section: CanvasSection | null;\n private _memId: string;\n\n constructor(protected json: IClientSidePageColumnData = JSON.parse(JSON.stringify(CanvasColumn.Default)), public controls: ColumnControl[] = []) {\n this._section = null;\n this._memId = getGUID();\n }\n\n public get data(): IClientSidePageColumnData {\n return this.json;\n }\n\n public get section(): CanvasSection {\n return this._section;\n }\n\n public set section(section: CanvasSection) {\n this._section = section;\n }\n\n public get order(): number {\n return this.data.position.sectionIndex;\n }\n\n public set order(value: number) {\n this.data.position.sectionIndex = value;\n for (let i = 0; i < this.controls.length; i++) {\n this.controls[i].data.position.zoneIndex = this.data.position.zoneIndex;\n this.controls[i].data.position.layoutIndex = this.data.position.layoutIndex;\n this.controls[i].data.position.sectionIndex = value;\n }\n }\n\n public get factor(): CanvasColumnFactor {\n return this.data.position.sectionFactor;\n }\n\n public set factor(value: CanvasColumnFactor) {\n this.data.position.sectionFactor = value;\n }\n\n public addControl(control: ColumnControl): this {\n control.column = this;\n this.controls.push(control);\n return this;\n }\n\n public getControl>(index: number): T {\n return this.controls[index];\n }\n\n public remove(): void {\n this.section.columns = this.section.columns.filter(column => column._memId !== this._memId);\n reindex(this.section.columns);\n }\n}\n\nexport abstract class ColumnControl {\n\n private _column: CanvasColumn | null;\n\n constructor(protected json: T) { }\n\n public abstract get order(): number;\n public abstract set order(value: number);\n\n public get id(): string {\n return this.json.id;\n }\n\n public get data(): T {\n return this.json;\n }\n\n public get column(): CanvasColumn | null {\n return this._column;\n }\n\n public set column(value: CanvasColumn) {\n this._column = value;\n this.onColumnChange(this._column);\n }\n\n public remove(): void {\n this.column.controls = this.column.controls.filter(control => control.id !== this.id);\n reindex(this.column.controls);\n }\n\n protected setData(data: T) {\n this.json = data;\n }\n\n protected abstract onColumnChange(col: CanvasColumn): void;\n}\n\nexport class ClientSideText extends ColumnControl {\n\n public static Default: IClientSideTextData = {\n addedFromPersistedData: false,\n anchorComponentId: \"\",\n controlType: 4,\n displayMode: 2,\n editorType: \"CKEditor\",\n emphasis: {},\n id: \"\",\n innerHTML: \"\",\n position: {\n controlIndex: 1,\n layoutIndex: 1,\n sectionFactor: 12,\n sectionIndex: 1,\n zoneIndex: 1,\n },\n };\n\n constructor(text: string, json: IClientSideTextData = JSON.parse(JSON.stringify(ClientSideText.Default))) {\n if (stringIsNullOrEmpty(json.id)) {\n json.id = getGUID();\n json.anchorComponentId = json.id;\n }\n super(json);\n\n this.text = text;\n }\n\n public get text(): string {\n return this.data.innerHTML;\n }\n\n public set text(value: string) {\n if (!value.startsWith(\"

\")) {\n value = `

${value}

`;\n }\n this.data.innerHTML = value;\n }\n\n public get order(): number {\n return this.data.position.controlIndex;\n }\n\n public set order(value: number) {\n this.data.position.controlIndex = value;\n }\n\n protected onColumnChange(col: CanvasColumn): void {\n this.data.position.sectionFactor = col.factor;\n this.data.position.controlIndex = getNextOrder(col.controls);\n this.data.position.zoneIndex = col.data.position.zoneIndex;\n this.data.position.sectionIndex = col.order;\n this.data.position.layoutIndex = col.data.position.layoutIndex;\n }\n}\n\nexport class ClientSideWebpart extends ColumnControl {\n\n public static Default: IClientSideWebPartData = {\n addedFromPersistedData: false,\n controlType: 3,\n displayMode: 2,\n emphasis: {},\n id: null,\n position: {\n controlIndex: 1,\n layoutIndex: 1,\n sectionFactor: 12,\n sectionIndex: 1,\n zoneIndex: 1,\n },\n reservedHeight: 500,\n reservedWidth: 500,\n webPartData: null,\n webPartId: null,\n };\n\n constructor(json: IClientSideWebPartData = JSON.parse(JSON.stringify(ClientSideWebpart.Default))) {\n super(json);\n }\n\n public static fromComponentDef(definition: ClientSidePageComponent): ClientSideWebpart {\n const part = new ClientSideWebpart();\n part.import(definition);\n return part;\n }\n\n public get title(): string {\n return this.data.webPartData.title;\n }\n\n public set title(value: string) {\n this.data.webPartData.title = value;\n }\n\n public get description(): string {\n return this.data.webPartData.description;\n }\n\n public set description(value: string) {\n this.data.webPartData.description = value;\n }\n\n public get order(): number {\n return this.data.position.controlIndex;\n }\n\n public set order(value: number) {\n this.data.position.controlIndex = value;\n }\n\n public get height(): number {\n return this.data.reservedHeight;\n }\n\n public set height(value: number) {\n this.data.reservedHeight = value;\n }\n\n public get width(): number {\n return this.data.reservedWidth;\n }\n\n public set width(value: number) {\n this.data.reservedWidth = value;\n }\n\n public get dataVersion(): string {\n return this.data.webPartData.dataVersion;\n }\n\n public set dataVersion(value: string) {\n this.data.webPartData.dataVersion = value;\n }\n\n public setProperties(properties: T): this {\n this.data.webPartData.properties = extend(this.data.webPartData.properties, properties);\n return this;\n }\n\n public getProperties(): T {\n return this.data.webPartData.properties;\n }\n\n protected onColumnChange(col: CanvasColumn): void {\n this.data.position = {\n controlIndex: getNextOrder(col.controls),\n layoutIndex: col.data.position.layoutIndex,\n sectionFactor: col.factor,\n sectionIndex: col.data.position.sectionIndex,\n zoneIndex: col.data.position.zoneIndex,\n };\n }\n\n protected import(component: ClientSidePageComponent): void {\n\n const id = getGUID();\n const componendId = component.Id.replace(/^\\{|\\}$/g, \"\").toLowerCase();\n const manifest: IClientSidePageComponentManifest = JSON.parse(component.Manifest);\n const preconfiguredEntries = manifest.preconfiguredEntries[0];\n\n this.setData(Object.assign({}, this.data, {\n id,\n webPartData: {\n dataVersion: \"1.0\",\n description: preconfiguredEntries.description.default,\n id: componendId,\n instanceId: id,\n properties: preconfiguredEntries.properties,\n title: preconfiguredEntries.title.default,\n },\n webPartId: componendId,\n }));\n }\n}\n\nexport interface IPageData {\n readonly \"odata.metadata\": string;\n readonly \"odata.type\": \"SP.Publishing.SitePage\";\n readonly \"odata.id\": string;\n readonly \"odata.editLink\": string;\n AbsoluteUrl: string;\n AuthorByline: string[] | null;\n BannerImageUrl: string;\n ContentTypeId: null | string;\n Description: string;\n DoesUserHaveEditPermission: boolean;\n FileName: string;\n readonly FirstPublished: string;\n readonly Id: number;\n IsPageCheckedOutToCurrentUser: boolean;\n IsWebWelcomePage: boolean;\n readonly Modified: string;\n PageLayoutType: ClientSidePageLayoutType;\n Path: {\n DecodedUrl: string;\n };\n PromotedState: number;\n Title: string;\n TopicHeader: null | string;\n readonly UniqueId: string;\n Url: string;\n readonly Version: string;\n readonly VersionInfo: {\n readonly LastVersionCreated: string;\n readonly LastVersionCreatedBy: string;\n };\n AlternativeUrlMap: string;\n CanvasContent1: string;\n LayoutWebpartsContent: string;\n}\n\n/**\n * Client side webpart object (retrieved via the _api/web/GetClientSideWebParts REST call)\n */\nexport interface ClientSidePageComponent {\n /**\n * Component type for client side webpart object\n */\n ComponentType: number;\n /**\n * Id for client side webpart object\n */\n Id: string;\n /**\n * Manifest for client side webpart object\n */\n Manifest: string;\n /**\n * Manifest type for client side webpart object\n */\n ManifestType: number;\n /**\n * Name for client side webpart object\n */\n Name: string;\n /**\n * Status for client side webpart object\n */\n Status: number;\n}\n\ninterface IClientSidePageComponentManifest {\n alias: string;\n componentType: \"WebPart\" | \"\" | null;\n disabledOnClassicSharepoint: boolean;\n hiddenFromToolbox: boolean;\n id: string;\n imageLinkPropertyNames: any;\n isInternal: boolean;\n linkPropertyNames: boolean;\n loaderConfig: any;\n manifestVersion: number;\n preconfiguredEntries: {\n description: { default: string };\n group: { default: string };\n groupId: string;\n iconImageUrl: string;\n officeFabricIconFontName: string;\n properties: TypedHash;\n title: { default: string };\n\n }[];\n preloadComponents: any | null;\n requiredCapabilities: any | null;\n searchablePropertyNames: any | null;\n supportsFullBleed: boolean;\n version: string;\n}\n\nexport interface IClientSideControlBaseData {\n controlType: number;\n}\n\nexport interface ICanvasControlBaseData extends IClientSideControlBaseData {\n id: string;\n emphasis: IClientControlEmphasis;\n displayMode: number;\n}\n\nexport interface IClientSidePageSettingsSlice extends IClientSideControlBaseData {\n pageSettingsSlice: {\n \"isDefaultDescription\": boolean;\n \"isDefaultThumbnail\": boolean;\n };\n}\n\nexport interface IClientSidePageColumnData extends IClientSideControlBaseData {\n controlType: 0;\n displayMode: number;\n emphasis: IClientControlEmphasis;\n position: IPosition;\n}\n\ninterface IPosition {\n zoneIndex: number;\n sectionIndex: number;\n controlIndex?: number;\n sectionFactor?: CanvasColumnFactor;\n layoutIndex: number;\n}\n\nexport interface IClientSideTextData extends ICanvasControlBaseData {\n controlType: 4;\n position: IPosition;\n anchorComponentId: string;\n editorType: \"CKEditor\";\n addedFromPersistedData: boolean;\n innerHTML: string;\n}\n\nexport interface IClientSideWebPartData extends ICanvasControlBaseData {\n controlType: 3;\n position: IPosition;\n webPartId: string;\n reservedHeight: number;\n reservedWidth: number;\n addedFromPersistedData: boolean;\n webPartData: {\n id: string;\n instanceId: string;\n title: string;\n description: string;\n serverProcessedContent?: {\n \"htmlStrings\": TypedHash;\n \"searchablePlainTexts\": TypedHash;\n \"imageSources\": TypedHash;\n \"links\": TypedHash;\n };\n dataVersion: string;\n properties: PropertiesType;\n };\n}\n\nexport interface IClientControlEmphasis {\n zoneEmphasis?: 0 | 1 | 2 | 3;\n}\n\nexport module ClientSideWebpartPropertyTypes {\n\n /**\n * Propereties for Embed (component id: 490d7c76-1824-45b2-9de3-676421c997fa)\n */\n export interface Embed {\n embedCode: string;\n cachedEmbedCode?: string;\n shouldScaleWidth?: boolean;\n tempState?: any;\n }\n\n /**\n * Properties for Bing Map (component id: e377ea37-9047-43b9-8cdb-a761be2f8e09)\n */\n export interface BingMap {\n center: {\n altitude?: number;\n altitudeReference?: number;\n latitude: number;\n longitude: number;\n };\n mapType: \"aerial\" | \"birdseye\" | \"road\" | \"streetside\";\n maxNumberOfPushPins?: number;\n pushPins?: {\n location: {\n latitude: number;\n longitude: number;\n altitude?: number;\n altitudeReference?: number;\n };\n address?: string;\n defaultAddress?: string;\n defaultTitle?: string;\n title?: string;\n }[];\n shouldShowPushPinTitle?: boolean;\n zoomLevel?: number;\n }\n}\n\nexport type LayoutType = \"FullWidthImage\" | \"NoImage\" | \"ColorBlock\" | \"CutInShape\";\nexport type TextAlignment = \"Left\" | \"Center\";\n\ninterface ILayoutPartsContent {\n id: string;\n instanceId: string;\n title: string;\n description: string;\n serverProcessedContent: {\n htmlStrings: TypedHash;\n searchablePlainTexts: TypedHash;\n imageSources: TypedHash;\n links: TypedHash;\n customMetadata?: {\n imageSource?: {\n siteId: string;\n webId: string;\n listId: string;\n uniqueId: string;\n },\n }\n };\n dataVersion: string;\n properties: {\n title: string;\n imageSourceType?: number;\n layoutType: LayoutType;\n textAlignment: TextAlignment;\n showTopicHeader: boolean;\n showPublishDate: boolean;\n topicHeader: string;\n authors: {\n id: string,\n email: string;\n upn: string;\n name: string;\n role: string;\n }[];\n webId?: string;\n siteId?: string;\n listId?: string;\n uniqueId?: string;\n translateX?: number;\n translateY?: number;\n altText?: string;\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ../../../../packages/sp/src/clientsidepages.ts","import { SharePointQueryableInstance, defaultPath } from \"./sharepointqueryable\";\nimport { extend, jsS, hOP, getHashCode, objectDefinedNotNull, isArray } from \"@pnp/common\";\nimport { metadata } from \"./utils/metadata\";\nimport { CachingOptions } from \"@pnp/odata\";\n\nexport interface ISearchQueryBuilder {\n query: any;\n readonly bypassResultTypes: this;\n readonly enableStemming: this;\n readonly enableInterleaving: this;\n readonly enableFql: this;\n readonly enableNicknames: this;\n readonly enablePhonetic: this;\n readonly trimDuplicates: this;\n readonly processBestBets: this;\n readonly enableQueryRules: this;\n readonly enableSorting: this;\n readonly generateBlockRankLog: this;\n readonly processPersonalFavorites: this;\n readonly enableOrderingHitHighlightedProperty: this;\n\n culture(culture: number): this;\n rowLimit(n: number): this;\n startRow(n: number): this;\n sourceId(id: string): this;\n text(queryText: string): this;\n template(template: string): this;\n trimDuplicatesIncludeId(n: number): this;\n rankingModelId(id: string): this;\n rowsPerPage(n: number): this;\n selectProperties(...properties: string[]): this;\n timeZoneId(id: number): this;\n refinementFilters(...filters: string[]): this;\n refiners(refiners: string): this;\n hiddenConstraints(constraints: string): this;\n sortList(...sorts: Sort[]): this;\n timeout(milliseconds: number): this;\n hithighlightedProperties(...properties: string[]): this;\n clientType(clientType: string): this;\n personalizationData(data: string): this;\n resultsURL(url: string): this;\n queryTag(tags: string): this;\n properties(...properties: SearchProperty[]): this;\n queryTemplatePropertiesUrl(url: string): this;\n reorderingRules(...rules: ReorderingRule[]): this;\n hitHighlightedMultivaluePropertyLimit(limit: number): this;\n collapseSpecification(spec: string): this;\n uiLanguage(lang: number): this;\n desiredSnippetLength(len: number): this;\n maxSnippetLength(len: number): this;\n summaryLength(len: number): this;\n\n /* included method */\n toSearchQuery(): SearchQuery;\n}\n\nconst funcs = new Map([\n [\"text\", \"Querytext\"],\n [\"template\", \"QueryTemplate\"],\n [\"sourceId\", \"SourceId\"],\n [\"trimDuplicatesIncludeId\", \"\"],\n [\"startRow\", \"\"],\n [\"rowLimit\", \"\"],\n [\"rankingModelId\", \"\"],\n [\"rowsPerPage\", \"\"],\n [\"selectProperties\", \"\"],\n [\"culture\", \"\"],\n [\"timeZoneId\", \"\"],\n [\"refinementFilters\", \"\"],\n [\"refiners\", \"\"],\n [\"hiddenConstraints\", \"\"],\n [\"sortList\", \"\"],\n [\"timeout\", \"\"],\n [\"hithighlightedProperties\", \"\"],\n [\"clientType\", \"\"],\n [\"personalizationData\", \"\"],\n [\"resultsURL\", \"\"],\n [\"queryTag\", \"\"],\n [\"properties\", \"\"],\n [\"queryTemplatePropertiesUrl\", \"\"],\n [\"reorderingRules\", \"\"],\n [\"hitHighlightedMultivaluePropertyLimit\", \"\"],\n [\"collapseSpecification\", \"\"],\n [\"uiLanguage\", \"\"],\n [\"desiredSnippetLength\", \"\"],\n [\"maxSnippetLength\", \"\"],\n [\"summaryLength\", \"\"],\n]);\n\nconst props = new Map([]);\n\nfunction toPropCase(str: string) {\n return str.replace(/^(.)/, ($1) => $1.toUpperCase());\n}\n\n/**\n * Creates a new instance of the SearchQueryBuilder\n * \n * @param queryText Initial query text\n * @param _query Any initial query configuration\n */\nexport function SearchQueryBuilder(queryText = \"\", _query = {}): ISearchQueryBuilder {\n\n return new Proxy({\n query: Object.assign({\n Querytext: queryText,\n }, _query),\n },\n {\n get(self, propertyKey, proxy) {\n\n const pk = propertyKey.toString();\n\n if (pk === \"toSearchQuery\") {\n return () => self.query;\n }\n\n if (funcs.has(pk)) {\n return (...value: any[]) => {\n const mappedPk = funcs.get(pk);\n self.query[mappedPk.length > 0 ? mappedPk : toPropCase(pk)] = value.length > 1 ? value : value[0];\n return proxy;\n };\n }\n const propKey = props.has(pk) ? props.get(pk) : toPropCase(pk);\n self.query[propKey] = true;\n return proxy;\n },\n });\n}\n\nexport type SearchQueryInit = string | SearchQuery | ISearchQueryBuilder;\n\n/**\n * Describes the search API\n *\n */\n@defaultPath(\"_api/search/postquery\")\nexport class Search extends SharePointQueryableInstance {\n\n /**\n * @returns Promise\n */\n public execute(queryInit: SearchQueryInit): Promise {\n\n const query = this.parseQuery(queryInit);\n\n const postBody = jsS({\n request: extend(\n metadata(\"Microsoft.Office.Server.Search.REST.SearchRequest\"),\n Object.assign(\n {},\n query,\n {\n HitHighlightedProperties: this.fixArrProp(query.HitHighlightedProperties),\n Properties: this.fixArrProp(query.Properties),\n RefinementFilters: this.fixArrProp(query.RefinementFilters),\n ReorderingRules: this.fixArrProp(query.ReorderingRules),\n SelectProperties: this.fixArrProp(query.SelectProperties),\n SortList: this.fixArrProp(query.SortList),\n })),\n });\n\n // if we are using caching with this search request, then we need to handle some work upfront to enable that\n if (this._useCaching) {\n\n // force use of the cache for this request if .usingCaching was called\n this._forceCaching = true;\n\n // because all the requests use the same url they would collide in the cache we use a special key\n const cacheKey = `PnPjs.SearchWithCaching(${getHashCode(postBody)})`;\n\n if (objectDefinedNotNull(this._cachingOptions)) {\n // if our key ends in the postquery url we overwrite it\n if (/\\/_api\\/search\\/postquery$/i.test(this._cachingOptions.key)) {\n this._cachingOptions.key = cacheKey;\n }\n } else {\n this._cachingOptions = new CachingOptions(cacheKey);\n }\n }\n\n return this.postCore({ body: postBody }).then((data) => new SearchResults(data, this.toUrl(), query));\n }\n\n /**\n * Fix array property\n *\n * @param prop property to fix for container struct\n */\n private fixArrProp(prop: any): { results: any[] } {\n if (typeof prop === \"undefined\") {\n return ({ results: [] });\n }\n prop = isArray(prop) ? prop : [prop];\n return hOP(prop, \"results\") ? prop : { results: prop };\n }\n\n /**\n * Translates one of the query initializers into a SearchQuery instance\n * \n * @param query \n */\n private parseQuery(query: SearchQueryInit): SearchQuery {\n\n let finalQuery: SearchQuery;\n\n if (typeof query === \"string\") {\n finalQuery = { Querytext: query };\n } else if ((query as ISearchQueryBuilder).toSearchQuery) {\n finalQuery = (query as ISearchQueryBuilder).toSearchQuery();\n } else {\n finalQuery = query;\n }\n\n return finalQuery;\n }\n}\n\n/**\n * Describes the SearchResults class, which returns the formatted and raw version of the query response\n */\nexport class SearchResults {\n\n /**\n * Creates a new instance of the SearchResult class\n *\n */\n constructor(rawResponse: any,\n private _url: string,\n private _query: SearchQuery,\n private _raw: SearchResponse = null,\n private _primary: SearchResult[] = null) {\n\n this._raw = rawResponse.postquery ? rawResponse.postquery : rawResponse;\n }\n\n public get ElapsedTime(): number {\n return this.RawSearchResults.ElapsedTime;\n }\n\n public get RowCount(): number {\n return this.RawSearchResults.PrimaryQueryResult.RelevantResults.RowCount;\n }\n\n public get TotalRows(): number {\n return this.RawSearchResults.PrimaryQueryResult.RelevantResults.TotalRows;\n }\n\n public get TotalRowsIncludingDuplicates(): number {\n return this.RawSearchResults.PrimaryQueryResult.RelevantResults.TotalRowsIncludingDuplicates;\n }\n\n public get RawSearchResults(): SearchResponse {\n return this._raw;\n }\n\n public get PrimarySearchResults(): SearchResult[] {\n if (this._primary === null) {\n this._primary = this.formatSearchResults(this._raw.PrimaryQueryResult.RelevantResults.Table.Rows);\n }\n return this._primary;\n }\n\n /**\n * Gets a page of results\n *\n * @param pageNumber Index of the page to return. Used to determine StartRow\n * @param pageSize Optional, items per page (default = 10)\n */\n public getPage(pageNumber: number, pageSize?: number): Promise {\n\n // if we got all the available rows we don't have another page\n if (this.TotalRows < this.RowCount) {\n return Promise.resolve(null);\n }\n\n // if pageSize is supplied, then we use that regardless of any previous values\n // otherwise get the previous RowLimit or default to 10\n const rows = pageSize !== undefined ? pageSize : hOP(this._query, \"RowLimit\") ? this._query.RowLimit : 10;\n\n const query: SearchQuery = extend(this._query, {\n RowLimit: rows,\n StartRow: rows * (pageNumber - 1),\n });\n\n // we have reached the end\n if (query.StartRow > this.TotalRows) {\n return Promise.resolve(null);\n }\n\n const search = new Search(this._url, null);\n return search.execute(query);\n }\n\n /**\n * Formats a search results array\n *\n * @param rawResults The array to process\n */\n protected formatSearchResults(rawResults: any): SearchResult[] {\n\n const results = new Array();\n const tempResults = rawResults.results ? rawResults.results : rawResults;\n\n for (const tempResult of tempResults) {\n\n const cells: { Key: string, Value: any }[] = tempResult.Cells.results ? tempResult.Cells.results : tempResult.Cells;\n\n results.push(cells.reduce((res, cell) => {\n\n Object.defineProperty(res, cell.Key,\n {\n configurable: false,\n enumerable: true,\n value: cell.Value,\n writable: false,\n });\n\n return res;\n\n }, {}));\n }\n\n return results;\n }\n}\n\n/**\n * Describes the SearchQuery interface\n */\nexport interface SearchQuery {\n\n /**\n * A string that contains the text for the search query.\n */\n Querytext?: string;\n\n /**\n * A string that contains the text that replaces the query text, as part of a query transform.\n */\n QueryTemplate?: string;\n\n /**\n * A Boolean value that specifies whether the result tables that are returned for\n * the result block are mixed with the result tables that are returned for the original query.\n */\n EnableInterleaving?: boolean;\n\n /**\n * A Boolean value that specifies whether stemming is enabled.\n */\n EnableStemming?: boolean;\n\n /**\n * A Boolean value that specifies whether duplicate items are removed from the results.\n */\n TrimDuplicates?: boolean;\n\n /**\n * A Boolean value that specifies whether the exact terms in the search query are used to find matches, or if nicknames are used also.\n */\n EnableNicknames?: boolean;\n\n /**\n * A Boolean value that specifies whether the query uses the FAST Query Language (FQL).\n */\n EnableFQL?: boolean;\n\n /**\n * A Boolean value that specifies whether the phonetic forms of the query terms are used to find matches.\n */\n EnablePhonetic?: boolean;\n\n /**\n * A Boolean value that specifies whether to perform result type processing for the query.\n */\n BypassResultTypes?: boolean;\n\n /**\n * A Boolean value that specifies whether to return best bet results for the query.\n * This parameter is used only when EnableQueryRules is set to true, otherwise it is ignored.\n */\n ProcessBestBets?: boolean;\n\n /**\n * A Boolean value that specifies whether to enable query rules for the query.\n */\n EnableQueryRules?: boolean;\n\n /**\n * A Boolean value that specifies whether to sort search results.\n */\n EnableSorting?: boolean;\n\n /**\n * Specifies whether to return block rank log information in the BlockRankLog property of the interleaved result table.\n * A block rank log contains the textual information on the block score and the documents that were de-duplicated.\n */\n GenerateBlockRankLog?: boolean;\n\n /**\n * The result source ID to use for executing the search query.\n */\n SourceId?: string;\n\n /**\n * The ID of the ranking model to use for the query.\n */\n RankingModelId?: string;\n\n /**\n * The first row that is included in the search results that are returned.\n * You use this parameter when you want to implement paging for search results.\n */\n StartRow?: number;\n\n /**\n * The maximum number of rows overall that are returned in the search results.\n * Compared to RowsPerPage, RowLimit is the maximum number of rows returned overall.\n */\n RowLimit?: number;\n\n /**\n * The maximum number of rows to return per page.\n * Compared to RowLimit, RowsPerPage refers to the maximum number of rows to return per page,\n * and is used primarily when you want to implement paging for search results.\n */\n RowsPerPage?: number;\n\n /**\n * The managed properties to return in the search results.\n */\n SelectProperties?: string[];\n\n /**\n * The locale ID (LCID) for the query.\n */\n Culture?: number;\n\n /**\n * The set of refinement filters used when issuing a refinement query (FQL)\n */\n RefinementFilters?: string[];\n\n /**\n * The set of refiners to return in a search result.\n */\n Refiners?: string;\n\n /**\n * The additional query terms to append to the query.\n */\n HiddenConstraints?: string;\n\n /**\n * The list of properties by which the search results are ordered.\n */\n SortList?: Sort[];\n\n /**\n * The amount of time in milliseconds before the query request times out.\n */\n Timeout?: number;\n\n /**\n * The properties to highlight in the search result summary when the property value matches the search terms entered by the user.\n */\n HitHighlightedProperties?: string[];\n\n /**\n * The type of the client that issued the query.\n */\n ClientType?: string;\n\n /**\n * The GUID for the user who submitted the search query.\n */\n PersonalizationData?: string;\n\n /**\n * The URL for the search results page.\n */\n ResultsUrl?: string;\n\n /**\n * Custom tags that identify the query. You can specify multiple query tags\n */\n QueryTag?: string;\n\n /**\n * Properties to be used to configure the search query\n */\n Properties?: SearchProperty[];\n\n /**\n * A Boolean value that specifies whether to return personal favorites with the search results.\n */\n ProcessPersonalFavorites?: boolean;\n\n /**\n * The location of the queryparametertemplate.xml file. This file is used to enable anonymous users to make Search REST queries.\n */\n QueryTemplatePropertiesUrl?: string;\n\n /**\n * Special rules for reordering search results.\n * These rules can specify that documents matching certain conditions are ranked higher or lower in the results.\n * This property applies only when search results are sorted based on rank.\n */\n ReorderingRules?: ReorderingRule[];\n\n /**\n * The number of properties to show hit highlighting for in the search results.\n */\n HitHighlightedMultivaluePropertyLimit?: number;\n\n /**\n * A Boolean value that specifies whether the hit highlighted properties can be ordered.\n */\n EnableOrderingHitHighlightedProperty?: boolean;\n\n /**\n * The managed properties that are used to determine how to collapse individual search results.\n * Results are collapsed into one or a specified number of results if they match any of the individual collapse specifications.\n * In a collapse specification, results are collapsed if their properties match all individual properties in the collapse specification.\n */\n CollapseSpecification?: string;\n\n /**\n * The locale identifier (LCID) of the user interface\n */\n UIlanguage?: number;\n\n /**\n * The preferred number of characters to display in the hit-highlighted summary generated for a search result.\n */\n DesiredSnippetLength?: number;\n\n /**\n * The maximum number of characters to display in the hit-highlighted summary generated for a search result.\n */\n MaxSnippetLength?: number;\n\n /**\n * The number of characters to display in the result summary for a search result.\n */\n SummaryLength?: number;\n\n}\n\n/**\n * Provides hints at the properties which may be available on the result object\n */\nexport interface SearchResult {\n\n Rank?: number;\n DocId?: number;\n WorkId?: number;\n Title?: string;\n Author?: string;\n Size?: number;\n Path?: string;\n Description?: string;\n Write?: Date;\n LastModifiedTime?: Date;\n CollapsingStatus?: number;\n HitHighlightedSummary?: string;\n HitHighlightedProperties?: string;\n contentclass?: string;\n PictureThumbnailURL?: string;\n ServerRedirectedURL?: string;\n ServerRedirectedEmbedURL?: string;\n ServerRedirectedPreviewURL?: string;\n FileExtension?: string;\n ContentTypeId?: string;\n ParentLink?: string;\n ViewsLifetime?: number;\n ViewsRecent?: number;\n SectionNames?: string;\n SectionIndexes?: string;\n SiteLogo?: string;\n SiteDescription?: string;\n importance?: number;\n SiteName?: string;\n IsDocument?: boolean;\n FileType?: string;\n IsContainer?: boolean;\n WebTemplate?: string;\n SPWebUrl?: string;\n UniqueId?: string;\n ProgId?: string;\n OriginalPath?: string;\n RenderTemplateId?: string;\n PartitionId?: string;\n UrlZone?: number;\n Culture?: string;\n}\n\nexport interface SearchResponse {\n ElapsedTime: number;\n Properties?: { Key: string, Value: any, ValueType: string }[];\n PrimaryQueryResult?: ResultTableCollection;\n SecondaryQueryResults?: ResultTableCollection[];\n SpellingSuggestion?: string;\n TriggeredRules?: any[];\n}\n\nexport interface ResultTableCollection {\n\n QueryErrors?: Map;\n QueryId?: string;\n QueryRuleId?: string;\n CustomResults?: ResultTable;\n RefinementResults?: ResultTable;\n RelevantResults?: ResultTable;\n SpecialTermResults?: ResultTable;\n}\n\nexport interface IRefiner {\n Name: string;\n Entries: { RefinementCount: string; RefinementName: string; RefinementToken: string; RefinementValue: string; }[];\n}\nexport interface ResultTable {\n GroupTemplateId?: string;\n ItemTemplateId?: string;\n Properties?: { Key: string, Value: any, ValueType: string }[];\n Table?: { Rows: { Cells: { Key: string, Value: any, ValueType: string }[] }[] };\n Refiners?: IRefiner[];\n ResultTitle?: string;\n ResultTitleUrl?: string;\n RowCount?: number;\n TableType?: string;\n TotalRows?: number;\n TotalRowsIncludingDuplicates?: number;\n}\n\n/**\n * Defines how search results are sorted.\n */\nexport interface Sort {\n\n /**\n * The name for a property by which the search results are ordered.\n */\n Property: string;\n\n /**\n * The direction in which search results are ordered.\n */\n Direction: SortDirection;\n}\n\n/**\n * Defines one search property\n */\nexport interface SearchProperty {\n Name: string;\n Value: SearchPropertyValue;\n}\n\n/**\n * Defines one search property value. Set only one of StrlVal/BoolVal/IntVal/StrArray.\n */\nexport interface SearchPropertyValue {\n StrVal?: string;\n BoolVal?: boolean;\n IntVal?: number;\n StrArray?: string[];\n QueryPropertyValueTypeIndex: QueryPropertyValueType;\n}\n\n/**\n * defines the SortDirection enum\n */\nexport enum SortDirection {\n Ascending = 0,\n Descending = 1,\n FQLFormula = 2,\n}\n\n/**\n * Defines how ReorderingRule interface, used for reordering results\n */\nexport interface ReorderingRule {\n\n /**\n * The value to match on\n */\n MatchValue: string;\n\n /**\n * The rank boosting\n */\n Boost: number;\n\n /**\n * The rank boosting\n */\n MatchType: ReorderingRuleMatchType;\n}\n\n/**\n * defines the ReorderingRuleMatchType enum\n */\nexport enum ReorderingRuleMatchType {\n ResultContainsKeyword = 0,\n TitleContainsKeyword = 1,\n TitleMatchesKeyword = 2,\n UrlStartsWith = 3,\n UrlExactlyMatches = 4,\n ContentTypeIs = 5,\n FileExtensionMatches = 6,\n ResultHasTag = 7,\n ManualCondition = 8,\n}\n\n/**\n * Specifies the type value for the property\n */\nexport enum QueryPropertyValueType {\n None = 0,\n StringType = 1,\n Int32Type = 2,\n BooleanType = 3,\n StringArrayType = 4,\n UnSupportedType = 5,\n}\n\nexport class SearchBuiltInSourceId {\n public static readonly Documents = \"e7ec8cee-ded8-43c9-beb5-436b54b31e84\";\n public static readonly ItemsMatchingContentType = \"5dc9f503-801e-4ced-8a2c-5d1237132419\";\n public static readonly ItemsMatchingTag = \"e1327b9c-2b8c-4b23-99c9-3730cb29c3f7\";\n public static readonly ItemsRelatedToCurrentUser = \"48fec42e-4a92-48ce-8363-c2703a40e67d\";\n public static readonly ItemsWithSameKeywordAsThisItem = \"5c069288-1d17-454a-8ac6-9c642a065f48\";\n public static readonly LocalPeopleResults = \"b09a7990-05ea-4af9-81ef-edfab16c4e31\";\n public static readonly LocalReportsAndDataResults = \"203fba36-2763-4060-9931-911ac8c0583b\";\n public static readonly LocalSharePointResults = \"8413cd39-2156-4e00-b54d-11efd9abdb89\";\n public static readonly LocalVideoResults = \"78b793ce-7956-4669-aa3b-451fc5defebf\";\n public static readonly Pages = \"5e34578e-4d08-4edc-8bf3-002acf3cdbcc\";\n public static readonly Pictures = \"38403c8c-3975-41a8-826e-717f2d41568a\";\n public static readonly Popular = \"97c71db1-58ce-4891-8b64-585bc2326c12\";\n public static readonly RecentlyChangedItems = \"ba63bbae-fa9c-42c0-b027-9a878f16557c\";\n public static readonly RecommendedItems = \"ec675252-14fa-4fbe-84dd-8d098ed74181\";\n public static readonly Wiki = \"9479bf85-e257-4318-b5a8-81a180f5faa1\";\n}\n\n\n\n// WEBPACK FOOTER //\n// ../../../../packages/sp/src/search.ts","import { SharePointQueryableInstance, defaultPath } from \"./sharepointqueryable\";\nimport { hOP } from \"@pnp/common\";\n\n/**\n * Defines a query execute against the search/suggest endpoint (see https://msdn.microsoft.com/en-us/library/office/dn194079.aspx)\n */\nexport interface SearchSuggestQuery {\n\n [key: string]: string | number | boolean;\n\n /**\n * A string that contains the text for the search query.\n */\n querytext: string;\n\n /**\n * The number of query suggestions to retrieve. Must be greater than zero (0). The default value is 5.\n */\n count?: number;\n\n /**\n * The number of personal results to retrieve. Must be greater than zero (0). The default value is 5.\n */\n personalCount?: number;\n\n /**\n * A Boolean value that specifies whether to retrieve pre-query or post-query suggestions. true to return pre-query suggestions; otherwise, false. The default value is false.\n */\n preQuery?: boolean;\n\n /**\n * A Boolean value that specifies whether to hit-highlight or format in bold the query suggestions. true to format in bold the terms in the returned query suggestions\n * that match terms in the specified query; otherwise, false. The default value is true.\n */\n hitHighlighting?: boolean;\n\n /**\n * A Boolean value that specifies whether to capitalize the first letter in each term in the returned query suggestions. true to capitalize the first letter in each term;\n * otherwise, false. The default value is false.\n */\n capitalize?: boolean;\n\n /**\n * The locale ID (LCID) for the query (see https://msdn.microsoft.com/en-us/library/cc233982.aspx).\n */\n culture?: string;\n\n /**\n * A Boolean value that specifies whether stemming is enabled. true to enable stemming; otherwise, false. The default value is true.\n */\n stemming?: boolean;\n\n /**\n * A Boolean value that specifies whether to include people names in the returned query suggestions. true to include people names in the returned query suggestions;\n * otherwise, false. The default value is true.\n */\n includePeople?: boolean;\n\n /**\n * A Boolean value that specifies whether to turn on query rules for this query. true to turn on query rules; otherwise, false. The default value is true.\n */\n queryRules?: boolean;\n\n /**\n * A Boolean value that specifies whether to return query suggestions for prefix matches. true to return query suggestions based on prefix matches, otherwise, false when\n * query suggestions should match the full query word.\n */\n prefixMatch?: boolean;\n}\n\n@defaultPath(\"_api/search/suggest\")\nexport class SearchSuggest extends SharePointQueryableInstance {\n\n public execute(query: SearchSuggestQuery): Promise {\n this.mapQueryToQueryString(query);\n return this.get().then(response => {\n const mapper = hOP(response, \"suggest\") ? (s: string) => response.suggest[s].results : (s: string) => response[s];\n return {\n PeopleNames: mapper(\"PeopleNames\"),\n PersonalResults: mapper(\"PersonalResults\"),\n Queries: mapper(\"Queries\"),\n };\n });\n }\n\n private mapQueryToQueryString(query: SearchSuggestQuery): void {\n\n const setProp = (q: SearchSuggestQuery) => (checkProp: string) => (sp: string) => {\n if (hOP(q, checkProp)) {\n this.query.set(sp, q[checkProp].toString());\n }\n };\n\n this.query.set(\"querytext\", `'${query.querytext}'`);\n\n const querySetter = setProp(query);\n\n querySetter(\"count\")(\"inumberofquerysuggestions\");\n querySetter(\"personalCount\")(\"inumberofresultsuggestions\");\n querySetter(\"preQuery\")(\"fprequerysuggestions\");\n querySetter(\"hitHighlighting\")(\"fhithighlighting\");\n querySetter(\"capitalize\")(\"fcapitalizefirstletters\");\n querySetter(\"culture\")(\"culture\");\n querySetter(\"stemming\")(\"enablestemming\");\n querySetter(\"includePeople\")(\"showpeoplenamesuggestions\");\n querySetter(\"queryRules\")(\"enablequeryrules\");\n querySetter(\"prefixMatch\")(\"fprefixmatchallterms\");\n }\n}\n\nexport interface SearchSuggestResult {\n readonly PeopleNames: string[];\n readonly PersonalResults: PersonalResultSuggestion[];\n readonly Queries: any[];\n}\n\nexport interface ESearchSuggestResult {\n readonly PeopleNames: string[];\n readonly PersonalResults: PersonalResultSuggestion[];\n readonly Queries: any[];\n}\n\nexport interface PersonalResultSuggestion {\n readonly HighlightedTitle?: string;\n readonly IsBestBet?: boolean;\n readonly Title?: string;\n readonly TypeId?: string;\n readonly Url?: string;\n}\n\n\n\n// WEBPACK FOOTER //\n// ../../../../packages/sp/src/searchsuggest.ts","import { SharePointQueryable, SharePointQueryableInstance, SharePointQueryableCollection, defaultPath } from \"./sharepointqueryable\";\nimport { ClientPeoplePickerQueryParameters, HashTagCollection, PeoplePickerEntity, UserProfile } from \"./types\";\nimport { extend, jsS } from \"@pnp/common\";\nimport { metadata } from \"./utils/metadata\";\n\nexport class UserProfileQuery extends SharePointQueryableInstance {\n\n private clientPeoplePickerQuery: ClientPeoplePickerQuery;\n private profileLoader: ProfileLoader;\n\n /**\n * Creates a new instance of the UserProfileQuery class\n *\n * @param baseUrl The url or SharePointQueryable which forms the parent of this user profile query\n */\n constructor(baseUrl: string | SharePointQueryable, path = \"_api/sp.userprofiles.peoplemanager\") {\n super(baseUrl, path);\n\n this.clientPeoplePickerQuery = (new ClientPeoplePickerQuery(baseUrl)).configureFrom(this);\n this.profileLoader = (new ProfileLoader(baseUrl)).configureFrom(this);\n }\n\n /**\n * The url of the edit profile page for the current user\n */\n public get editProfileLink(): Promise {\n return this.clone(UserProfileQuery, \"EditProfileLink\").get();\n }\n\n /**\n * A boolean value that indicates whether the current user's \"People I'm Following\" list is public\n */\n public get isMyPeopleListPublic(): Promise {\n return this.clone(UserProfileQuery, \"IsMyPeopleListPublic\").get();\n }\n\n /**\n * A boolean value that indicates whether the current user is being followed by the specified user\n *\n * @param loginName The account name of the user\n */\n public amIFollowedBy(loginName: string): Promise {\n const q = this.clone(UserProfileQuery, \"amifollowedby(@v)\");\n q.query.set(\"@v\", `'${encodeURIComponent(loginName)}'`);\n return q.get();\n }\n\n /**\n * A boolean value that indicates whether the current user is following the specified user\n *\n * @param loginName The account name of the user\n */\n public amIFollowing(loginName: string): Promise {\n const q = this.clone(UserProfileQuery, \"amifollowing(@v)\");\n q.query.set(\"@v\", `'${encodeURIComponent(loginName)}'`);\n return q.get();\n }\n\n /**\n * Gets tags that the current user is following\n *\n * @param maxCount The maximum number of tags to retrieve (default is 20)\n */\n public getFollowedTags(maxCount = 20): Promise {\n return this.clone(UserProfileQuery, `getfollowedtags(${maxCount})`).get();\n }\n\n /**\n * Gets the people who are following the specified user\n *\n * @param loginName The account name of the user\n */\n public getFollowersFor(loginName: string): Promise {\n const q = this.clone(UserProfileQuery, \"getfollowersfor(@v)\");\n q.query.set(\"@v\", `'${encodeURIComponent(loginName)}'`);\n return q.get();\n }\n\n /**\n * Gets the people who are following the current user\n *\n */\n public get myFollowers(): SharePointQueryableCollection {\n return new SharePointQueryableCollection(this, \"getmyfollowers\");\n }\n\n /**\n * Gets user properties for the current user\n *\n */\n public get myProperties(): SharePointQueryableInstance {\n return new UserProfileQuery(this, \"getmyproperties\");\n }\n\n /**\n * Gets the people who the specified user is following\n *\n * @param loginName The account name of the user.\n */\n public getPeopleFollowedBy(loginName: string): Promise {\n const q = this.clone(UserProfileQuery, \"getpeoplefollowedby(@v)\");\n q.query.set(\"@v\", `'${encodeURIComponent(loginName)}'`);\n return q.get();\n }\n\n /**\n * Gets user properties for the specified user.\n *\n * @param loginName The account name of the user.\n */\n public getPropertiesFor(loginName: string): Promise {\n const q = this.clone(UserProfileQuery, \"getpropertiesfor(@v)\");\n q.query.set(\"@v\", `'${encodeURIComponent(loginName)}'`);\n return q.get();\n }\n\n /**\n * Gets the 20 most popular hash tags over the past week, sorted so that the most popular tag appears first\n *\n */\n public get trendingTags(): Promise {\n const q = this.clone(UserProfileQuery, null);\n q.concat(\".gettrendingtags\");\n return q.get();\n }\n\n /**\n * Gets the specified user profile property for the specified user\n *\n * @param loginName The account name of the user\n * @param propertyName The case-sensitive name of the property to get\n */\n public getUserProfilePropertyFor(loginName: string, propertyName: string): Promise {\n const q = this.clone(UserProfileQuery, `getuserprofilepropertyfor(accountname=@v, propertyname='${propertyName}')`);\n q.query.set(\"@v\", `'${encodeURIComponent(loginName)}'`);\n return q.get();\n }\n\n /**\n * Removes the specified user from the user's list of suggested people to follow\n *\n * @param loginName The account name of the user\n */\n public hideSuggestion(loginName: string): Promise {\n const q = this.clone(UserProfileQuery, \"hidesuggestion(@v)\");\n q.query.set(\"@v\", `'${encodeURIComponent(loginName)}'`);\n return q.postCore();\n }\n\n /**\n * A boolean values that indicates whether the first user is following the second user\n *\n * @param follower The account name of the user who might be following the followee\n * @param followee The account name of the user who might be followed by the follower\n */\n public isFollowing(follower: string, followee: string): Promise {\n const q = this.clone(UserProfileQuery, null);\n q.concat(`.isfollowing(possiblefolloweraccountname=@v, possiblefolloweeaccountname=@y)`);\n q.query.set(\"@v\", `'${encodeURIComponent(follower)}'`);\n q.query.set(\"@y\", `'${encodeURIComponent(followee)}'`);\n return q.get();\n }\n\n /**\n * Uploads and sets the user profile picture (Users can upload a picture to their own profile only). Not supported for batching.\n *\n * @param profilePicSource Blob data representing the user's picture in BMP, JPEG, or PNG format of up to 4.76MB\n */\n public setMyProfilePic(profilePicSource: Blob): Promise {\n\n return new Promise((resolve, reject) => {\n\n let buffer: any = null;\n const reader = new FileReader();\n reader.onload = (e: any) => buffer = e.target.result;\n reader.readAsArrayBuffer(profilePicSource);\n const request = new UserProfileQuery(this, \"setmyprofilepicture\");\n request.postCore({\n body: String.fromCharCode.apply(null, new Uint16Array(buffer)),\n }).then(_ => resolve()).catch(e => reject(e));\n\n });\n }\n\n /**\n * Sets single value User Profile property\n *\n * @param accountName The account name of the user\n * @param propertyName Property name\n * @param propertyValue Property value\n */\n public setSingleValueProfileProperty(accountName: string, propertyName: string, propertyValue: string): Promise {\n const postBody: string = jsS({\n accountName: accountName,\n propertyName: propertyName,\n propertyValue: propertyValue,\n });\n\n return this.clone(UserProfileQuery, \"SetSingleValueProfileProperty\")\n .postCore({ body: postBody });\n }\n\n /**\n * Sets multi valued User Profile property\n *\n * @param accountName The account name of the user\n * @param propertyName Property name\n * @param propertyValues Property values\n */\n public setMultiValuedProfileProperty(accountName: string, propertyName: string, propertyValues: string[]): Promise {\n const postBody: string = jsS({\n accountName: accountName,\n propertyName: propertyName,\n propertyValues: propertyValues,\n });\n\n return this.clone(UserProfileQuery, \"SetMultiValuedProfileProperty\")\n .postCore({ body: postBody });\n }\n\n /**\n * Provisions one or more users' personal sites. (My Site administrator on SharePoint Online only)\n *\n * @param emails The email addresses of the users to provision sites for\n */\n public createPersonalSiteEnqueueBulk(...emails: string[]): Promise {\n return this.profileLoader.createPersonalSiteEnqueueBulk(emails);\n }\n\n /**\n * Gets the user profile of the site owner\n *\n */\n public get ownerUserProfile(): Promise {\n return this.profileLoader.ownerUserProfile;\n }\n\n /**\n * Gets the user profile for the current user\n */\n public get userProfile(): Promise {\n return this.profileLoader.userProfile;\n }\n\n /**\n * Enqueues creating a personal site for this user, which can be used to share documents, web pages, and other files\n *\n * @param interactiveRequest true if interactively (web) initiated request, or false (default) if non-interactively (client) initiated request\n */\n public createPersonalSite(interactiveRequest = false): Promise {\n return this.profileLoader.createPersonalSite(interactiveRequest);\n }\n\n /**\n * Sets the privacy settings for this profile\n *\n * @param share true to make all social data public; false to make all social data private\n */\n public shareAllSocialData(share: boolean): Promise {\n return this.profileLoader.shareAllSocialData(share);\n }\n\n /**\n * Resolves user or group using specified query parameters\n *\n * @param queryParams The query parameters used to perform resolve\n */\n public clientPeoplePickerResolveUser(queryParams: ClientPeoplePickerQueryParameters): Promise {\n return this.clientPeoplePickerQuery.clientPeoplePickerResolveUser(queryParams);\n }\n\n /**\n * Searches for users or groups using specified query parameters\n *\n * @param queryParams The query parameters used to perform search\n */\n public clientPeoplePickerSearchUser(queryParams: ClientPeoplePickerQueryParameters): Promise {\n return this.clientPeoplePickerQuery.clientPeoplePickerSearchUser(queryParams);\n }\n}\n\n@defaultPath(\"_api/sp.userprofiles.profileloader.getprofileloader\")\nclass ProfileLoader extends SharePointQueryable {\n\n /**\n * Provisions one or more users' personal sites. (My Site administrator on SharePoint Online only) Doesn't support batching\n *\n * @param emails The email addresses of the users to provision sites for\n */\n public createPersonalSiteEnqueueBulk(emails: string[]): Promise {\n\n return this.clone(ProfileLoader, \"createpersonalsiteenqueuebulk\", false).postCore({\n body: jsS({ \"emailIDs\": emails }),\n });\n }\n\n /**\n * Gets the user profile of the site owner.\n *\n */\n public get ownerUserProfile(): Promise {\n let q = this.getParent(ProfileLoader, this.parentUrl, \"_api/sp.userprofiles.profileloader.getowneruserprofile\");\n\n if (this.hasBatch) {\n q = q.inBatch(this.batch);\n }\n\n return q.postCore();\n }\n\n /**\n * Gets the user profile of the current user.\n *\n */\n public get userProfile(): Promise {\n return this.clone(ProfileLoader, \"getuserprofile\").postCore();\n }\n\n /**\n * Enqueues creating a personal site for this user, which can be used to share documents, web pages, and other files.\n *\n * @param interactiveRequest true if interactively (web) initiated request, or false (default) if non-interactively (client) initiated request\n */\n public createPersonalSite(interactiveRequest = false): Promise {\n return this.clone(ProfileLoader, `getuserprofile/createpersonalsiteenque(${interactiveRequest})`).postCore();\n }\n\n /**\n * Sets the privacy settings for this profile\n *\n * @param share true to make all social data public; false to make all social data private.\n */\n public shareAllSocialData(share: boolean): Promise {\n return this.clone(ProfileLoader, `getuserprofile/shareallsocialdata(${share})`).postCore();\n }\n}\n\n@defaultPath(\"_api/sp.ui.applicationpages.clientpeoplepickerwebserviceinterface\")\nclass ClientPeoplePickerQuery extends SharePointQueryable {\n\n /**\n * Resolves user or group using specified query parameters\n *\n * @param queryParams The query parameters used to perform resolve\n */\n public clientPeoplePickerResolveUser(queryParams: ClientPeoplePickerQueryParameters): Promise {\n const q = this.clone(ClientPeoplePickerQuery, null);\n q.concat(\".clientpeoplepickerresolveuser\");\n return q.postCore({\n body: this.createClientPeoplePickerQueryParametersRequestBody(queryParams),\n })\n .then(res => {\n if (typeof res === \"object\") {\n return res.ClientPeoplePickerResolveUser;\n }\n return res;\n })\n .then(JSON.parse);\n }\n\n /**\n * Searches for users or groups using specified query parameters\n *\n * @param queryParams The query parameters used to perform search\n */\n public clientPeoplePickerSearchUser(queryParams: ClientPeoplePickerQueryParameters): Promise {\n const q = this.clone(ClientPeoplePickerQuery, null);\n q.concat(\".clientpeoplepickersearchuser\");\n return q.postCore({\n body: this.createClientPeoplePickerQueryParametersRequestBody(queryParams),\n })\n .then(res => {\n if (typeof res === \"object\") {\n return res.ClientPeoplePickerSearchUser;\n }\n return res;\n })\n .then(JSON.parse);\n }\n\n /**\n * Creates ClientPeoplePickerQueryParameters request body\n *\n * @param queryParams The query parameters to create request body\n */\n private createClientPeoplePickerQueryParametersRequestBody(queryParams: ClientPeoplePickerQueryParameters): string {\n return jsS({\n \"queryParams\":\n extend(metadata(\"SP.UI.ApplicationPages.ClientPeoplePickerQueryParameters\"), queryParams),\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ../../../../packages/sp/src/userprofiles.ts","import {\n SharePointQueryableInstance,\n defaultPath,\n} from \"./sharepointqueryable\";\n\nimport { jsS, hOP } from \"@pnp/common\";\nimport { metadata } from \"./utils/metadata\";\n\nexport interface SocialMethods {\n my: MySocialQueryMethods;\n getFollowedSitesUri(): Promise;\n getFollowedDocumentsUri(): Promise;\n follow(actorInfo: SocialActorInfo): Promise;\n isFollowed(actorInfo: SocialActorInfo): Promise;\n stopFollowing(actorInfo: SocialActorInfo): Promise;\n}\n\n/**\n * Exposes social following methods\n */\n@defaultPath(\"_api/social.following\")\nexport class SocialQuery extends SharePointQueryableInstance implements SocialMethods {\n\n public get my(): MySocialQueryMethods {\n return new MySocialQuery(this);\n }\n\n /**\n * Gets a URI to a site that lists the current user's followed sites.\n */\n public getFollowedSitesUri(): Promise {\n return this.clone(SocialQuery, \"FollowedSitesUri\").get().then(r => {\n return r.FollowedSitesUri || r;\n });\n }\n\n /**\n * Gets a URI to a site that lists the current user's followed documents.\n */\n public getFollowedDocumentsUri(): Promise {\n return this.clone(SocialQuery, \"FollowedDocumentsUri\").get().then(r => {\n return r.FollowedDocumentsUri || r;\n });\n }\n\n /**\n * Makes the current user start following a user, document, site, or tag\n *\n * @param actorInfo The actor to start following\n */\n public follow(actorInfo: SocialActorInfo): Promise {\n return this.clone(SocialQuery, \"follow\").postCore({ body: this.createSocialActorInfoRequestBody(actorInfo) });\n }\n\n /**\n * Indicates whether the current user is following a specified user, document, site, or tag\n *\n * @param actorInfo The actor to find the following status for\n */\n public isFollowed(actorInfo: SocialActorInfo): Promise {\n return this.clone(SocialQuery, \"isfollowed\").postCore({ body: this.createSocialActorInfoRequestBody(actorInfo) });\n }\n\n /**\n * Makes the current user stop following a user, document, site, or tag\n *\n * @param actorInfo The actor to stop following\n */\n public stopFollowing(actorInfo: SocialActorInfo): Promise {\n return this.clone(SocialQuery, \"stopfollowing\").postCore({ body: this.createSocialActorInfoRequestBody(actorInfo) });\n }\n\n /**\n * Creates SocialActorInfo request body\n *\n * @param actorInfo The actor to create request body\n */\n private createSocialActorInfoRequestBody(actorInfo: SocialActorInfo): string {\n return jsS({\n \"actor\":\n Object.assign(metadata(\"SP.Social.SocialActorInfo\"), {\n Id: null,\n }, actorInfo),\n });\n }\n}\n\n/**\n * Defines the public methods exposed by the my endpoint\n */\nexport interface MySocialQueryMethods {\n /**\n * Gets this user's data\n */\n get(): Promise;\n /**\n * Gets users, documents, sites, and tags that the current user is following.\n * \n * @param types Bitwise set of SocialActorTypes to retrieve\n */\n followed(types: SocialActorTypes): Promise;\n /**\n * Gets the count of users, documents, sites, and tags that the current user is following.\n * \n * @param types Bitwise set of SocialActorTypes to retrieve\n */\n followedCount(types: SocialActorTypes): Promise;\n /**\n * Gets the users who are following the current user.\n */\n followers(): Promise;\n /**\n * Gets users who the current user might want to follow.\n */\n suggestions(): Promise;\n}\n\n@defaultPath(\"my\")\nexport class MySocialQuery extends SharePointQueryableInstance implements MySocialQueryMethods {\n\n /**\n * Gets users, documents, sites, and tags that the current user is following.\n * \n * @param types Bitwise set of SocialActorTypes to retrieve\n */\n public followed(types: SocialActorTypes): Promise {\n return this.clone(MySocialQuery, `followed(types=${types})`).get().then(r => {\n return hOP(r, \"Followed\") ? r.Followed.results : r;\n });\n }\n\n /**\n * Gets the count of users, documents, sites, and tags that the current user is following.\n * \n * @param types Bitwise set of SocialActorTypes to retrieve\n */\n public followedCount(types: SocialActorTypes): Promise {\n return this.clone(MySocialQuery, `followedcount(types=${types})`).get().then(r => {\n return r.FollowedCount || r;\n });\n }\n\n /**\n * Gets the users who are following the current user.\n */\n public followers(): Promise {\n return this.clone(MySocialQuery, \"followers\").get().then(r => {\n return hOP(r, \"Followers\") ? r.Followers.results : r;\n });\n }\n\n /**\n * Gets users who the current user might want to follow.\n */\n public suggestions(): Promise {\n return this.clone(MySocialQuery, \"suggestions\").get().then(r => {\n return hOP(r, \"Suggestions\") ? r.Suggestions.results : r;\n });\n }\n}\n\n/**\n * Social actor info\n *\n */\nexport interface SocialActorInfo {\n AccountName?: string;\n ActorType: SocialActorType;\n ContentUri?: string;\n Id?: string;\n TagGuid?: string;\n}\n\n/**\n * Social actor type\n *\n */\nexport const enum SocialActorType {\n User,\n Document,\n Site,\n Tag,\n}\n\n/**\n * Social actor type\n *\n */\n/* tslint:disable:no-bitwise */\nexport const enum SocialActorTypes {\n None = 0,\n User = 1 << SocialActorType.User,\n Document = 1 << SocialActorType.Document,\n Site = 1 << SocialActorType.Site,\n Tag = 1 << SocialActorType.Tag,\n /**\n * The set excludes documents and sites that do not have feeds.\n */\n ExcludeContentWithoutFeeds = 268435456,\n /**\n * The set includes group sites\n */\n IncludeGroupsSites = 536870912,\n /**\n * The set includes only items created within the last 24 hours\n */\n WithinLast24Hours = 1073741824,\n}\n/* tslint:enable */\n\n/**\n * Result from following\n *\n */\nexport const enum SocialFollowResult {\n Ok = 0,\n AlreadyFollowing = 1,\n LimitReached = 2,\n InternalError = 3,\n}\n\n/**\n * Specifies an exception or status code.\n */\nexport const enum SocialStatusCode {\n /**\n * The operation completed successfully\n */\n OK,\n /**\n * The request is invalid.\n */\n InvalidRequest,\n /**\n * The current user is not authorized to perform the operation.\n */\n AccessDenied,\n /**\n * The target of the operation was not found.\n */\n ItemNotFound,\n /**\n * The operation is invalid for the target's current state. \n */\n InvalidOperation,\n /**\n * The operation completed without modifying the target.\n */\n ItemNotModified,\n /**\n * The operation failed because an internal error occurred.\n */\n InternalError,\n /**\n * The operation failed because the server could not access the distributed cache.\n */\n CacheReadError,\n /**\n * The operation succeeded but the server could not update the distributed cache.\n */\n CacheUpdateError,\n /**\n * No personal site exists for the current user, and no further information is available.\n */\n PersonalSiteNotFound,\n /**\n * No personal site exists for the current user, and a previous attempt to create one failed.\n */\n FailedToCreatePersonalSite,\n /**\n * No personal site exists for the current user, and a previous attempt to create one was not authorized.\n */\n NotAuthorizedToCreatePersonalSite,\n /**\n * No personal site exists for the current user, and no attempt should be made to create one.\n */\n CannotCreatePersonalSite,\n /**\n * The operation was rejected because an internal limit had been reached.\n */\n LimitReached,\n /**\n * The operation failed because an error occurred during the processing of the specified attachment.\n */\n AttachmentError,\n /**\n * The operation succeeded with recoverable errors; the returned data is incomplete.\n */\n PartialData,\n /**\n * A required SharePoint feature is not enabled.\n */\n FeatureDisabled,\n /**\n * The site's storage quota has been exceeded.\n */\n StorageQuotaExceeded,\n /**\n * The operation failed because the server could not access the database.\n */\n DatabaseError,\n}\n\nexport interface SocialActor {\n /**\n * Gets the actor type.\n */\n ActorType: SocialActorType;\n /**\n * Gets the actor's unique identifier.\n */\n Id: string;\n /**\n * Gets the actor's canonical URI.\n */\n Uri: string;\n /**\n * Gets the actor's display name.\n */\n Name: string;\n /**\n * Returns true if the current user is following the actor, false otherwise.\n */\n IsFollowed: boolean;\n /**\n * Gets a code that indicates recoverable errors that occurred during actor retrieval\n */\n Status: SocialStatusCode;\n /**\n * Returns true if the Actor can potentially be followed, false otherwise.\n */\n CanFollow: boolean;\n /**\n * Gets the actor's image URI. Only valid when ActorType is User, Document, or Site\n */\n ImageUri: string;\n /**\n * Gets the actor's account name. Only valid when ActorType is User\n */\n AccountName: string;\n /**\n * Gets the actor's email address. Only valid when ActorType is User\n */\n EmailAddress: string;\n /**\n * Gets the actor's title. Only valid when ActorType is User\n */\n Title: string;\n /**\n * Gets the text of the actor's most recent post. Only valid when ActorType is User\n */\n StatusText: string;\n /**\n * Gets the URI of the actor's personal site. Only valid when ActorType is User\n */\n PersonalSiteUri: string;\n /**\n * Gets the URI of the actor's followed content folder. Only valid when this represents the current user\n */\n FollowedContentUri: string;\n /**\n * Gets the actor's content URI. Only valid when ActorType is Document, or Site\n */\n ContentUri: string;\n /**\n * Gets the actor's library URI. Only valid when ActorType is Document\n */\n LibraryUri: string;\n /**\n * Gets the actor's tag GUID. Only valid when ActorType is Tag\n */\n TagGuid: string;\n}\n\n/**\n * Defines the properties retrurned from the my endpoint\n */\nexport interface MySocialData {\n SocialActor: SocialActor;\n MyFollowedDocumentsUri: string;\n MyFollowedSitesUri: string;\n}\n\n\n\n// WEBPACK FOOTER //\n// ../../../../packages/sp/src/social.ts","import { SharePointQueryable } from \"./sharepointqueryable\";\nimport { extend, jsS, hOP } from \"@pnp/common\";\nimport { EmailProperties } from \"./types\";\nimport { SPBatch } from \"./batch\";\nimport { ICachingOptions } from \"@pnp/odata\";\nimport { File } from \"./files\";\nimport { odataUrlFrom } from \"./odata\";\nimport { PrincipalInfo, PrincipalType, PrincipalSource, WikiPageCreationInformation } from \"./types\";\nimport { metadata } from \"./utils/metadata\";\n\n/**\n * Public interface for the utility methods to limit SharePointQueryable method exposure\n */\nexport interface UtilityMethods {\n usingCaching(options?: ICachingOptions): this;\n inBatch(batch: SPBatch): this;\n sendEmail(props: EmailProperties): Promise;\n getCurrentUserEmailAddresses(): Promise;\n resolvePrincipal(email: string,\n scopes: PrincipalType,\n sources: PrincipalSource,\n inputIsEmailOnly: boolean,\n addToUserInfoList: boolean,\n matchUserInfoList?: boolean): Promise;\n searchPrincipals(input: string,\n scopes: PrincipalType,\n sources: PrincipalSource,\n groupName: string,\n maxCount: number): Promise;\n createEmailBodyForInvitation(pageAddress: string): Promise;\n expandGroupsToPrincipals(inputs: string[], maxCount?: number): Promise;\n createWikiPage(info: WikiPageCreationInformation): Promise;\n containsInvalidFileFolderChars(input: string, onPremise?: boolean): boolean;\n stripInvalidFileFolderChars(input: string, replacer?: string, onPremise?: boolean): string;\n}\n\n/**\n * Allows for calling of the static SP.Utilities.Utility methods by supplying the method name\n */\nexport class UtilityMethod extends SharePointQueryable implements UtilityMethods {\n private static readonly InvalidFileFolderNameCharsOnlineRegex = /[\"*:<>?/\\\\|\\x00-\\x1f\\x7f-\\x9f]/g;\n private static readonly InvalidFileFolderNameCharsOnPremiseRegex = /[\"#%*:<>?/\\\\|\\x00-\\x1f\\x7f-\\x9f]/g;\n\n /**\n * Creates a new instance of the Utility method class\n *\n * @param baseUrl The parent url provider\n * @param methodName The static method name to call on the utility class\n */\n constructor(baseUrl: string | SharePointQueryable, methodName: string) {\n\n super(UtilityMethod.getBaseUrl(baseUrl), `_api/SP.Utilities.Utility.${methodName}`);\n }\n\n private static getBaseUrl(candidate: string | SharePointQueryable) {\n\n if (typeof candidate === \"string\") {\n return candidate;\n }\n\n const c = candidate as SharePointQueryable;\n const url = c.toUrl();\n const index = url.indexOf(\"_api/\");\n if (index < 0) {\n return url;\n }\n\n return url.substr(0, index);\n }\n\n public excute(props: any): Promise {\n\n return this.postCore({\n body: jsS(props),\n });\n }\n\n /**\n * Sends an email based on the supplied properties\n *\n * @param props The properties of the email to send\n */\n public sendEmail(props: EmailProperties): Promise {\n\n const params = {\n properties: extend(metadata(\"SP.Utilities.EmailProperties\"), {\n Body: props.Body,\n From: props.From,\n Subject: props.Subject,\n }),\n };\n\n if (props.To && props.To.length > 0) {\n\n params.properties = extend(params.properties, {\n To: { results: props.To },\n });\n }\n\n if (props.CC && props.CC.length > 0) {\n\n params.properties = extend(params.properties, {\n CC: { results: props.CC },\n });\n }\n\n if (props.BCC && props.BCC.length > 0) {\n\n params.properties = extend(params.properties, {\n BCC: { results: props.BCC },\n });\n }\n\n if (props.AdditionalHeaders) {\n params.properties = extend(params.properties, {\n AdditionalHeaders: props.AdditionalHeaders,\n });\n }\n\n return this.clone(UtilityMethod, \"SendEmail\", true).excute(params);\n }\n\n public getCurrentUserEmailAddresses(): Promise {\n\n return this.clone(UtilityMethod, \"GetCurrentUserEmailAddresses\", true).excute({}).then(r => {\n return hOP(r, \"GetCurrentUserEmailAddresses\") ? (r).GetCurrentUserEmailAddresses : r;\n });\n }\n\n public resolvePrincipal(input: string,\n scopes: PrincipalType,\n sources: PrincipalSource,\n inputIsEmailOnly: boolean,\n addToUserInfoList: boolean,\n matchUserInfoList = false): Promise {\n\n const params = {\n addToUserInfoList: addToUserInfoList,\n input: input,\n inputIsEmailOnly: inputIsEmailOnly,\n matchUserInfoList: matchUserInfoList,\n scopes: scopes,\n sources: sources,\n };\n\n return this.clone(UtilityMethod, \"ResolvePrincipalInCurrentContext\", true).excute(params).then(r => {\n return hOP(r, \"ResolvePrincipalInCurrentContext\") ? (r).ResolvePrincipalInCurrentContext : r;\n });\n }\n\n public searchPrincipals(input: string,\n scopes: PrincipalType,\n sources: PrincipalSource,\n groupName: string,\n maxCount: number): Promise {\n\n const params = {\n groupName: groupName,\n input: input,\n maxCount: maxCount,\n scopes: scopes,\n sources: sources,\n };\n\n return this.clone(UtilityMethod, \"SearchPrincipalsUsingContextWeb\", true).excute(params).then(r => {\n return hOP(r, \"SearchPrincipalsUsingContextWeb\") ? (r).SearchPrincipalsUsingContextWeb : r;\n });\n }\n\n public createEmailBodyForInvitation(pageAddress: string): Promise {\n\n const params = {\n pageAddress: pageAddress,\n };\n\n return this.clone(UtilityMethod, \"CreateEmailBodyForInvitation\", true).excute(params).then(r => {\n return hOP(r, \"CreateEmailBodyForInvitation\") ? (r).CreateEmailBodyForInvitation : r;\n });\n }\n\n public expandGroupsToPrincipals(inputs: string[], maxCount = 30): Promise {\n\n const params = {\n inputs: inputs,\n maxCount: maxCount,\n };\n\n return this.clone(UtilityMethod, \"ExpandGroupsToPrincipals\", true).excute(params).then(r => {\n return hOP(r, \"ExpandGroupsToPrincipals\") ? (r).ExpandGroupsToPrincipals : r;\n });\n }\n\n public createWikiPage(info: WikiPageCreationInformation): Promise {\n\n return this.clone(UtilityMethod, \"CreateWikiPageInContextWeb\", true).excute({\n parameters: info,\n }).then(r => {\n return {\n data: hOP(r, \"CreateWikiPageInContextWeb\") ? (r).CreateWikiPageInContextWeb : r,\n file: new File(odataUrlFrom(r)),\n };\n });\n }\n\n /**\n * Checks if file or folder name contains invalid characters\n *\n * @param input File or folder name to check\n * @param onPremise Set to true for SharePoint On-Premise\n * @returns True if contains invalid chars, false otherwise\n */\n public containsInvalidFileFolderChars(input: string, onPremise = false): boolean {\n if (onPremise) {\n UtilityMethod.InvalidFileFolderNameCharsOnPremiseRegex.lastIndex = 0;\n return (UtilityMethod.InvalidFileFolderNameCharsOnPremiseRegex.test(input));\n } else {\n UtilityMethod.InvalidFileFolderNameCharsOnlineRegex.lastIndex = 0;\n return (UtilityMethod.InvalidFileFolderNameCharsOnlineRegex.test(input));\n }\n }\n\n /**\n * Removes invalid characters from file or folder name\n *\n * @param input File or folder name\n * @param replacer Value that will replace invalid characters\n * @param onPremise Set to true for SharePoint On-Premise\n * @returns File or folder name with replaced invalid characters\n */\n public stripInvalidFileFolderChars(input: string, replacer = \"\", onPremise = false): string {\n if (onPremise) {\n return input.replace(UtilityMethod.InvalidFileFolderNameCharsOnPremiseRegex, replacer);\n } else {\n return input.replace(UtilityMethod.InvalidFileFolderNameCharsOnlineRegex, replacer);\n }\n }\n}\n\nexport interface CreateWikiPageResult {\n data: any;\n file: File;\n}\n\n\n\n// WEBPACK FOOTER //\n// ../../../../packages/sp/src/utilities.ts","import { SharePointQueryableInstance, SharePointQueryableCollection, defaultPath } from \"./sharepointqueryable\";\nimport { HubSite as IHubSite } from \"./types\";\n\n/**\n * Describes a collection of Hub Sites\n *\n */\n@defaultPath(\"_api/hubsites\")\nexport class HubSites extends SharePointQueryableCollection {\n\n /**\t \n * Gets a Hub Site from the collection by id\t \n *\t \n * @param id The Id of the Hub Site\t \n */\n public getById(id: string): HubSite {\n return new HubSite(this, `GetById?hubSiteId='${id}'`);\n\n }\n\n}\n\nexport class HubSite extends SharePointQueryableInstance { }\n\n\n\n// WEBPACK FOOTER //\n// ../../../../packages/sp/src/hubsites.ts","import { Search, SearchResults, SearchQueryInit } from \"./search\";\nimport { SearchSuggest, SearchSuggestQuery, SearchSuggestResult } from \"./searchsuggest\";\nimport { Site } from \"./site\";\nimport { Web } from \"./webs\";\nimport { ConfigOptions } from \"@pnp/common\";\nimport { UserProfileQuery } from \"./userprofiles\";\nimport { INavigationService, NavigationService } from \"./navigation\";\nimport { SPBatch } from \"./batch\";\nimport { SocialQuery, SocialMethods } from \"./social\";\nimport { SiteScripts, SiteScriptUtilityMethods } from \"./sitescripts\";\nimport { SiteDesigns, SiteDesignsUtilityMethods } from \"./sitedesigns\";\nimport { UtilityMethod, UtilityMethods } from \"./utilities\";\nimport { SharePointQueryableConstructor, SharePointQueryable } from \"./sharepointqueryable\";\nimport {\n setup as _setup,\n SPConfiguration,\n} from \"./config/splibconfig\";\nimport { ICachingOptions } from \"@pnp/odata\";\nimport { HubSites } from \"./hubsites\";\n\n/**\n * Root of the SharePoint REST module\n */\nexport class SPRest {\n\n /** \n * Creates a new instance of the SPRest class\n * \n * @param options Additional options\n * @param baseUrl A string that should form the base part of the url\n */\n constructor(protected _options: ConfigOptions = {}, protected _baseUrl = \"\") { }\n\n /**\n * Configures instance with additional options and baseUrl.\n * Provided configuration used by other objects in a chain\n * \n * @param options Additional options\n * @param baseUrl A string that should form the base part of the url\n */\n public configure(options: ConfigOptions, baseUrl = \"\"): SPRest {\n return new SPRest(options, baseUrl);\n }\n\n /**\n * Global SharePoint configuration options\n * \n * @param config The SharePoint configuration to apply\n */\n public setup(config: SPConfiguration) {\n _setup(config);\n }\n\n /**\n * Executes a search against this web context\n *\n * @param query The SearchQuery definition\n */\n public searchSuggest(query: string | SearchSuggestQuery): Promise {\n\n let finalQuery: SearchSuggestQuery;\n\n if (typeof query === \"string\") {\n finalQuery = { querytext: query };\n } else {\n finalQuery = query;\n }\n\n return this.create(SearchSuggest).execute(finalQuery);\n }\n\n /**\n * Executes a search against this web context\n *\n * @param query The SearchQuery definition\n */\n public search(query: SearchQueryInit): Promise {\n return this.create(Search).execute(query);\n }\n\n /**\n * Executes the provided search query, caching the results\n * \n * @param query The SearchQuery definition\n * @param options The set of caching options used to store the results\n */\n public searchWithCaching(query: SearchQueryInit, options?: ICachingOptions): Promise {\n return this.create(Search).usingCaching(options).execute(query);\n }\n\n /**\n * Begins a site collection scoped REST request\n *\n */\n public get site(): Site {\n return this.create(Site);\n }\n\n /**\n * Begins a web scoped REST request\n *\n */\n public get web(): Web {\n return this.create(Web);\n }\n\n /**\n * Access to user profile methods\n *\n */\n public get profiles(): UserProfileQuery {\n return this.create(UserProfileQuery);\n }\n\n /**\n * Access to social methods\n */\n public get social(): SocialMethods {\n return this.create(SocialQuery);\n }\n\n /**\n * Access to the site collection level navigation service\n */\n public get navigation(): INavigationService {\n return this.create(NavigationService);\n }\n\n /**\n * Creates a new batch object for use with the SharePointQueryable.addToBatch method\n *\n */\n public createBatch(): SPBatch {\n return this.web.createBatch();\n }\n\n /**\n * Static utilities methods from SP.Utilities.Utility\n */\n public get utility(): UtilityMethods {\n return this.create(UtilityMethod, \"\");\n }\n\n /**\n * Access to sitescripts methods\n */\n public get siteScripts(): SiteScriptUtilityMethods {\n return this.create(SiteScripts, \"\");\n }\n\n /**\n * Access to sitedesigns methods\n */\n public get siteDesigns(): SiteDesignsUtilityMethods {\n return this.create(SiteDesigns, \"\");\n }\n\n /**\n * Access to Hub Site methods\n */\n public get hubSites(): HubSites {\n return this.create(HubSites);\n }\n\n /**\n * Gets the Web instance representing the tenant app catalog web\n */\n public getTenantAppCatalogWeb(): Promise {\n return this.create(Web, \"_api/SP_TenantSettings_Current\").get<{ CorporateCatalogUrl: string }>().then(r => {\n return (new Web(r.CorporateCatalogUrl)).configure(this._options);\n });\n }\n\n /**\n * Handles creating and configuring the objects returned from this class\n * \n * @param fm The factory method used to create the instance\n * @param path Optional additional path information to pass to the factory method\n */\n private create(fm: SharePointQueryableConstructor, path?: string): T {\n return new fm(this._baseUrl, path).configure(this._options);\n }\n}\n\nexport const sp = new SPRest();\n\n\n\n// WEBPACK FOOTER //\n// ../../../../packages/sp/src/rest.ts","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/global.js\n// module id = 1\n// module chunks = 0","// tslint:disable:max-line-length\r\n// tslint:disable:match-default-export-name\r\n// tslint:disable:typedef\r\n// tslint:disable:variable-name\r\n\r\nimport { override } from '@microsoft/decorators';\r\nimport { Log } from '@microsoft/sp-core-library';\r\nimport {\r\n BaseApplicationCustomizer,\r\n PlaceholderContent,\r\n PlaceholderName\r\n} from '@microsoft/sp-application-base';\r\n\r\nimport * as strings from 'MegaMenuApplicationCustomizerStrings';\r\nimport { TaxonomyNavigationService } from '../../services/TaxonomyNavigationService';\r\nimport { MegaMenuRenderer } from './MegaMenuRenderer';\r\nimport { IMenuItem } from '../../services/IMenuItem';\r\n\r\n// Import SCSS module\r\nimport './MegaMenu.module.scss';\r\n\r\nconst LOG_SOURCE: string = 'MegaMenuApplicationCustomizer';\r\nexport const UserCustomActionMegaMenuId: string = 'abc3361f-bb2d-491f-aba3-cd51c19a299b';\r\n\r\n/**\r\n * Properties for the MegaMenu Application Customizer\r\n */\r\nexport interface IMegaMenuApplicationCustomizerProperties {\r\n /**\r\n * The name of the termset to load menu items from\r\n */\r\n termSetName: string;\r\n\r\n /**\r\n * Optional URL to an external CSS file\r\n */\r\n cssUrl?: string;\r\n}\r\n\r\n/** A Custom Action which can be run during execution of a Client Side Application */\r\nexport default class MegaMenuApplicationCustomizer\r\n extends BaseApplicationCustomizer {\r\n\r\n private _topPlaceholder: PlaceholderContent | undefined;\r\n\r\n @override\r\n public onInit(): Promise {\r\n Log.info(LOG_SOURCE, `Initialized ${strings.Title}`);\r\n\r\n // Load external CSS if provided\r\n if (this.properties.cssUrl) {\r\n this._loadExternalCss(this.properties.cssUrl);\r\n }\r\n\r\n // Wait for the page to be ready\r\n this.context.placeholderProvider.changedEvent.add(this, this._renderPlaceHolders);\r\n\r\n // Initial render\r\n this._renderPlaceHolders();\r\n\r\n return Promise.resolve();\r\n }\r\n\r\n private _renderPlaceHolders(): void {\r\n console.log('Available placeholders: ',this.context.placeholderProvider.placeholderNames.map(name => PlaceholderName[name]).join(', '));\r\n\r\n // Handling the top placeholder\r\n if (!this._topPlaceholder) {\r\n this._topPlaceholder = this.context.placeholderProvider.tryCreateContent(\r\n PlaceholderName.Top,\r\n { onDispose: this._onDispose }\r\n );\r\n\r\n // The extension should not assume that the expected placeholder is available.\r\n if (!this._topPlaceholder) {\r\n console.error('The expected placeholder (Top) was not found.');\r\n return;\r\n }\r\n\r\n if (!this.properties.termSetName) {\r\n console.error('TermSetName property is required but not provided.');1\r\n return;\r\n }\r\n\r\n this._renderMegaMenu(this.properties.termSetName);\r\n }\r\n }\r\n\r\n private _updateCallback = (data: IMegaMenuApplicationCustomizerProperties) => {\r\n this._loadExternalCss(data.cssUrl);\r\n this._renderMegaMenu(data.termSetName);\r\n }\r\n\r\n private async _renderMegaMenu(termSetName: string): Promise {\r\n if (!this._topPlaceholder) {\r\n return;\r\n }\r\n\r\n try {\r\n \r\n // Create the taxonomy navigation service\r\n const taxonomyService: TaxonomyNavigationService = new TaxonomyNavigationService(\r\n this.context,\r\n termSetName\r\n );\r\n\r\n // Get menu items from the termset\r\n const menuItems: IMenuItem[] = await taxonomyService.getMenuItems();\r\n\r\n const renderer: MegaMenuRenderer = new MegaMenuRenderer(\r\n this.context,\r\n menuItems,\r\n this._updateCallback\r\n );\r\n\r\n const container = this._getOrCreateContainer('CustomHeader', this._topPlaceholder);\r\n\r\n if(container){\r\n renderer.render(container);\r\n }else{\r\n renderer.render(this._topPlaceholder.domElement);\r\n }\r\n \r\n\r\n Log.info(LOG_SOURCE, `MegaMenu rendered successfully with ${menuItems.length} top-level items`);\r\n\r\n } catch (error) {\r\n console.error('Error rendering MegaMenu:', error);\r\n }\r\n }\r\n\r\n private _getOrCreateContainer (id: string, placeholder: PlaceholderContent): HTMLElement {\r\n let container = document.getElementById(id);\r\n if (container) {\r\n const div = document.createElement('div');\r\n container.appendChild(div);\r\n return div;\r\n }else{\r\n return placeholder.domElement;\r\n }\r\n }\r\n\r\n private _loadExternalCss(cssUrl: string): void {\r\n const externalCssLinkId: string = 'mega-menu-additional-css-34FAB720';\r\n let link: HTMLLinkElement = document.getElementById(externalCssLinkId) as HTMLLinkElement;\r\n if (cssUrl && cssUrl.trim() !== '') {\r\n // update previous link, if present\r\n if (!link) {\r\n const head: HTMLHeadElement = document.getElementsByTagName('head')[0];\r\n link = document.createElement('link');\r\n link.rel = 'stylesheet';\r\n link.type = 'text/css';\r\n link.id = externalCssLinkId;\r\n link.onload = () => {\r\n Log.info(LOG_SOURCE, `External CSS loaded successfully from: ${cssUrl}`);\r\n };\r\n link.onerror = () => {\r\n console.warn(`Failed to load external CSS from: ${cssUrl}`);\r\n };\r\n head.appendChild(link);\r\n }\r\n link.href = cssUrl;\r\n } else if (link) {\r\n link.remove();\r\n }\r\n }\r\n\r\n private _onDispose(): void {\r\n console.log('[MegaMenuApplicationCustomizer._onDispose] Disposed custom top placeholder.');\r\n }\r\n}\n\n\n// WEBPACK FOOTER //\n// ../../../src/extensions/megaMenu/MegaMenuApplicationCustomizer.ts","import { TypedHash } from \"./collections\";\n\n/**\n * Gets a callback function which will maintain context across async calls.\n * Allows for the calling pattern getCtxCallback(thisobj, method, methodarg1, methodarg2, ...)\n *\n * @param context The object that will be the 'this' value in the callback\n * @param method The method to which we will apply the context and parameters\n * @param params Optional, additional arguments to supply to the wrapped method when it is invoked\n */\nexport function getCtxCallback(context: any, method: Function, ...params: any[]): Function {\n return function () {\n method.apply(context, params);\n };\n}\n\nexport type DateAddInterval = \"year\" | \"quarter\" | \"month\" | \"week\" | \"day\" | \"hour\" | \"minute\" | \"second\";\n\n/**\n * Adds a value to a date\n *\n * @param date The date to which we will add units, done in local time\n * @param interval The name of the interval to add, one of: ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second']\n * @param units The amount to add to date of the given interval\n *\n * http://stackoverflow.com/questions/1197928/how-to-add-30-minutes-to-a-javascript-date-object\n */\nexport function dateAdd(date: Date, interval: DateAddInterval, units: number): Date | undefined {\n let ret: Date | undefined = new Date(date); // don't change original date\n switch (interval.toLowerCase()) {\n case \"year\": ret.setFullYear(ret.getFullYear() + units); break;\n case \"quarter\": ret.setMonth(ret.getMonth() + 3 * units); break;\n case \"month\": ret.setMonth(ret.getMonth() + units); break;\n case \"week\": ret.setDate(ret.getDate() + 7 * units); break;\n case \"day\": ret.setDate(ret.getDate() + units); break;\n case \"hour\": ret.setTime(ret.getTime() + units * 3600000); break;\n case \"minute\": ret.setTime(ret.getTime() + units * 60000); break;\n case \"second\": ret.setTime(ret.getTime() + units * 1000); break;\n default: ret = undefined; break;\n }\n return ret;\n}\n\n/**\n * Combines an arbitrary set of paths ensuring and normalizes the slashes\n *\n * @param paths 0 to n path parts to combine\n */\nexport function combine(...paths: string[]): string {\n\n return paths\n .filter(path => !stringIsNullOrEmpty(path))\n .map(path => path.replace(/^[\\\\|\\/]/, \"\").replace(/[\\\\|\\/]$/, \"\"))\n .join(\"/\")\n .replace(/\\\\/g, \"/\");\n}\n\n/**\n * Gets a random string of chars length\n * \n * https://stackoverflow.com/questions/1349404/generate-random-string-characters-in-javascript\n *\n * @param chars The length of the random string to generate\n */\nexport function getRandomString(chars: number): string {\n const text = new Array(chars);\n const possible = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n for (let i = 0; i < chars; i++) {\n text[i] = possible.charAt(Math.floor(Math.random() * possible.length));\n }\n return text.join(\"\");\n}\n\n/**\n * Gets a random GUID value\n *\n * http://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript\n * https://stackoverflow.com/a/8809472 updated to prevent collisions.\n */\n/* tslint:disable no-bitwise */\nexport function getGUID(): string {\n let d = Date.now();\n if (typeof performance !== \"undefined\" && typeof performance.now === \"function\") {\n d += performance.now(); // use high-precision timer if available\n }\n const guid = \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, function (c) {\n const r = (d + Math.random() * 16) % 16 | 0;\n d = Math.floor(d / 16);\n return (c === \"x\" ? r : (r & 0x3 | 0x8)).toString(16);\n });\n return guid;\n}\n/* tslint:enable */\n\n/**\n * Determines if a given value is a function\n *\n * @param cf The thing to test for functionness\n */\nexport function isFunc(cf: any): boolean {\n return typeof cf === \"function\";\n}\n\n/**\n * Determines if an object is both defined and not null\n * @param obj Object to test\n */\nexport function objectDefinedNotNull(obj: any): boolean {\n return typeof obj !== \"undefined\" && obj !== null;\n}\n\n/**\n * @returns whether the provided parameter is a JavaScript Array or not.\n*/\nexport function isArray(array: any): boolean {\n\n if (Array.isArray) {\n return Array.isArray(array);\n }\n\n return array && typeof array.length === \"number\" && array.constructor === Array;\n}\n\n/**\n * Provides functionality to extend the given object by doing a shallow copy\n *\n * @param target The object to which properties will be copied\n * @param source The source object from which properties will be copied\n * @param noOverwrite If true existing properties on the target are not overwritten from the source\n * @param filter If provided allows additional filtering on what properties are copied (propName: string) => boolean\n *\n */\nexport function extend = any, S extends TypedHash = any>(target: T, source: S, noOverwrite = false,\n filter: (propName: string) => boolean = () => true): T & S {\n\n if (!objectDefinedNotNull(source)) {\n return target;\n }\n\n // ensure we don't overwrite things we don't want overwritten\n const check: (o: any, i: string) => Boolean = noOverwrite ? (o, i) => !(i in o) : () => true;\n\n // final filter we will use\n const f = (v: string) => check(target, v) && filter(v);\n\n return Object.getOwnPropertyNames(source)\n .filter(f)\n .reduce((t: any, v: string) => {\n t[v] = source[v];\n return t;\n }, target);\n}\n\n/**\n * Determines if a given url is absolute\n *\n * @param url The url to check to see if it is absolute\n */\nexport function isUrlAbsolute(url: string): boolean {\n return /^https?:\\/\\/|^\\/\\//i.test(url);\n}\n\n/**\n * Determines if a string is null or empty or undefined\n *\n * @param s The string to test\n */\nexport function stringIsNullOrEmpty(s: string): boolean {\n return s === undefined || s === null || s.length < 1;\n}\n\n/**\n * Gets an attribute value from an html/xml string block. NOTE: if the input attribute value has\n * RegEx special characters they will be escaped in the returned string\n * \n * @param html HTML to search\n * @param attrName The name of the attribute to find\n */\nexport function getAttrValueFromString(html: string, attrName: string): string | null {\n\n // make the input safe for regex\n html = html.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n const reg = new RegExp(`${attrName}\\\\s*?=\\\\s*?(\"|')([^\\\\1]*?)\\\\1`, \"i\");\n const match = reg.exec(html);\n return match !== null && match.length > 0 ? match[2] : null;\n}\n\n/**\n * Ensures guid values are represented consistently as \"ea123463-137d-4ae3-89b8-cf3fc578ca05\"\n * \n * @param guid The candidate guid\n */\nexport function sanitizeGuid(guid: string): string {\n\n if (stringIsNullOrEmpty(guid)) {\n return guid;\n }\n\n const matches = /([0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12})/i.exec(guid);\n\n return matches === null ? guid : matches[1];\n}\n\n/**\n * Shorthand for JSON.stringify\n * \n * @param o Any type of object\n */\nexport function jsS(o: any): string {\n return JSON.stringify(o);\n}\n\n/**\n * Shorthand for Object.hasOwnProperty\n * \n * @param o Object to check for\n * @param p Name of the property\n */\nexport function hOP(o: any, p: string): boolean {\n return Object.hasOwnProperty.call(o, p);\n}\n\n/**\n * Generates a ~unique hash code\n * \n * From: https://stackoverflow.com/questions/6122571/simple-non-secure-hash-function-for-javascript\n */\n// tslint:disable:no-bitwise\nexport function getHashCode(s: string): number {\n let hash = 0;\n if (s.length === 0) {\n return hash;\n }\n\n for (let i = 0; i < s.length; i++) {\n const chr = s.charCodeAt(i);\n hash = ((hash << 5) - hash) + chr;\n hash |= 0; // Convert to 32bit integer\n }\n return hash;\n}\n// tslint:enable:no-bitwise\n\n\n\n// WEBPACK FOOTER //\n// ../../../../packages/common/src/util.ts","import { extend, objectDefinedNotNull } from \"./util\";\n\ndeclare var global: { fetch(url: string, options: any): Promise };\n\nexport interface ConfigOptions {\n headers?: string[][] | { [key: string]: string } | Headers;\n mode?: \"navigate\" | \"same-origin\" | \"no-cors\" | \"cors\";\n credentials?: \"omit\" | \"same-origin\" | \"include\";\n cache?: \"default\" | \"no-store\" | \"reload\" | \"no-cache\" | \"force-cache\" | \"only-if-cached\";\n}\n\nexport interface FetchOptions extends ConfigOptions {\n method?: string;\n body?: any;\n}\n\nexport interface HttpClientImpl {\n fetch(url: string, options: FetchOptions): Promise;\n}\n\nexport interface RequestClient {\n fetch(url: string, options?: FetchOptions): Promise;\n fetchRaw(url: string, options?: FetchOptions): Promise;\n get(url: string, options?: FetchOptions): Promise;\n post(url: string, options?: FetchOptions): Promise;\n patch(url: string, options?: FetchOptions): Promise;\n delete(url: string, options?: FetchOptions): Promise;\n}\n\nexport function mergeHeaders(target: Headers, source: any): void {\n if (source !== undefined && source !== null) {\n const temp = new Request(\"\", { headers: source });\n temp.headers.forEach((value: string, name: string) => {\n target.append(name, value);\n });\n }\n}\n\nexport function mergeOptions(target: ConfigOptions, source: ConfigOptions): void {\n\n if (objectDefinedNotNull(source)) {\n const headers = extend(target.headers || {}, source.headers!);\n target = extend(target, source);\n target.headers = headers;\n }\n}\n\n/**\n * Makes requests using the global/window fetch API\n */\nexport class FetchClient implements HttpClientImpl {\n public fetch(url: string, options: FetchOptions): Promise {\n return global.fetch(url, options);\n }\n}\n\n/**\n * Makes requests using the fetch API adding the supplied token to the Authorization header\n */\nexport class BearerTokenFetchClient extends FetchClient {\n\n constructor(private _token: string | null) {\n super();\n }\n\n public get token() {\n return this._token || \"\";\n }\n\n public set token(token: string) {\n this._token = token;\n }\n\n public fetch(url: string, options: FetchOptions = {}): Promise {\n\n const headers = new Headers();\n\n mergeHeaders(headers, options.headers);\n\n headers.set(\"Authorization\", `Bearer ${this._token}`);\n\n options.headers = headers;\n\n return super.fetch(url, options);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ../../../../packages/common/src/netutil.ts","import { BearerTokenFetchClient, FetchOptions } from \"./netutil\";\nimport { ISPFXContext } from \"./spfxcontextinterface\";\nimport { isUrlAbsolute } from \"./util\";\n// @ts-ignore\nimport * as adal from \"adal-angular/dist/adal.min.js\";\n\n/**\n * Parses out the root of the request url to use as the resource when getting the token\n * \n * After: https://gist.github.com/jlong/2428561\n * @param url The url to parse\n */\nfunction getResource(url: string): string {\n const parser = document.createElement(\"a\");\n parser.href = url;\n return `${parser.protocol}//${parser.hostname}`;\n}\n\n/**\n * Azure AD Client for use in the browser\n */\nexport class AdalClient extends BearerTokenFetchClient {\n\n /**\n * Our auth context\n */\n private static _authContext: adal.AuthenticationContext | null = null;\n\n /**\n * Callback used by the adal auth system\n */\n private _displayCallback: ((url: string) => void) | null;\n\n /**\n * Promise used to ensure the user is logged in\n */\n private _loginPromise: Promise | null;\n\n /**\n * Creates a new instance of AdalClient\n * @param clientId Azure App Id\n * @param tenant Office 365 tenant (Ex: {tenant}.onmicrosoft.com)\n * @param redirectUri The redirect url used to authenticate the \n */\n constructor(public clientId: string, public tenant: string, public redirectUri: string) {\n super(null);\n this._displayCallback = null;\n this._loginPromise = null;\n }\n\n /**\n * Creates a new AdalClient using the values of the supplied SPFx context (requires SPFx >= 1.6)\n * \n * @param spfxContext Current SPFx context\n * @description Using this method requires that the features described in this article\n * https://docs.microsoft.com/en-us/sharepoint/dev/spfx/use-aadhttpclient are activated in the tenant.\n */\n public static fromSPFxContext(spfxContext: ISPFXContext | any): SPFxAdalClient {\n\n return new SPFxAdalClient(spfxContext);\n }\n\n /**\n * Conducts the fetch opertation against the AAD secured resource\n * \n * @param url Absolute URL for the request\n * @param options Any fetch options passed to the underlying fetch implementation\n */\n public fetch(url: string, options: FetchOptions): Promise {\n\n if (!isUrlAbsolute(url)) {\n throw Error(\"You must supply absolute urls to AdalClient.fetch.\");\n }\n\n // the url we are calling is the resource\n return this.getToken(getResource(url)).then(token => {\n this.token = token;\n return super.fetch(url, options);\n });\n }\n\n /**\n * Gets a token based on the current user\n * \n * @param resource The resource for which we are requesting a token\n */\n public getToken(resource: string): Promise {\n\n return new Promise((resolve, reject) => {\n\n this.ensureAuthContext().then(_ => this.login()).then(_ => {\n\n AdalClient._authContext.acquireToken(resource, (message: string, token: string) => {\n\n if (message) {\n return reject(Error(message));\n }\n\n resolve(token);\n });\n\n }).catch(reject);\n });\n }\n\n /**\n * Ensures we have created and setup the adal AuthenticationContext instance\n */\n private ensureAuthContext(): Promise {\n\n return new Promise(resolve => {\n\n if (AdalClient._authContext === null) {\n AdalClient._authContext = adal.inject({\n clientId: this.clientId,\n displayCall: (url: string) => {\n if (this._displayCallback) {\n this._displayCallback(url);\n }\n },\n navigateToLoginRequestUrl: false,\n redirectUri: this.redirectUri,\n tenant: this.tenant,\n });\n }\n\n resolve();\n });\n }\n\n /**\n * Ensures the current user is logged in\n */\n private login(): Promise {\n\n if (this._loginPromise) {\n return this._loginPromise;\n }\n\n this._loginPromise = new Promise((resolve, reject) => {\n\n if (AdalClient._authContext.getCachedUser()) {\n return resolve();\n }\n\n this._displayCallback = (url: string) => {\n\n const popupWindow = window.open(url, \"login\", \"width=483, height=600\");\n\n if (!popupWindow) {\n return reject(Error(\"Could not open pop-up window for auth. Likely pop-ups are blocked by the browser.\"));\n }\n\n if (popupWindow && popupWindow.focus) {\n popupWindow.focus();\n }\n\n const pollTimer = window.setInterval(() => {\n\n if (!popupWindow || popupWindow.closed || popupWindow.closed === undefined) {\n window.clearInterval(pollTimer);\n }\n\n try {\n if (popupWindow.document.URL.indexOf(this.redirectUri) !== -1) {\n window.clearInterval(pollTimer);\n AdalClient._authContext.handleWindowCallback(popupWindow.location.hash);\n popupWindow.close();\n resolve();\n }\n } catch (e) {\n reject(e);\n }\n }, 30);\n };\n\n // this triggers the login process\n this.ensureAuthContext().then(_ => {\n (AdalClient._authContext)._loginInProgress = false;\n AdalClient._authContext.login();\n this._displayCallback = null;\n });\n });\n\n return this._loginPromise;\n }\n}\n\n/**\n * Client wrapping the aadTokenProvider available from SPFx >= 1.6\n */\nexport class SPFxAdalClient extends BearerTokenFetchClient {\n\n /**\n * \n * @param context provide the appropriate SPFx Context object\n */\n constructor(private context: ISPFXContext) {\n super(null);\n }\n\n /**\n * Executes a fetch request using the supplied url and options\n * \n * @param url Absolute url of the request\n * @param options Any options\n */\n public fetch(url: string, options: FetchOptions): Promise {\n\n return this.getToken(getResource(url)).then(token => {\n this.token = token;\n return super.fetch(url, options);\n });\n }\n\n /**\n * Gets an AAD token for the provided resource using the SPFx AADTokenProvider\n * \n * @param resource Resource for which a token is to be requested (ex: https://graph.microsoft.com)\n */\n public getToken(resource: string): Promise {\n\n return this.context.aadTokenProviderFactory.getTokenProvider().then(provider => {\n\n return provider.getToken(resource);\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ../../../../packages/common/src/adalclient.ts","import { isFunc } from \"./util\";\n\ndeclare var Object: {\n entries?: any;\n keys(o: any): any;\n};\n\n/**\n * Interface defining an object with a known property type\n */\nexport interface TypedHash {\n [key: string]: T;\n}\n\n/**\n * Used to calculate the object properties, with polyfill if needed\n */\nconst objectEntries: any = isFunc(Object.entries) ? Object.entries : (o: any): [any, any][] => Object.keys(o).map((k: any) => [k, o[k]]);\n\n/**\n * Converts the supplied object to a map\n * \n * @param o The object to map\n */\nexport function objectToMap(o: any): Map {\n if (o !== undefined && o !== null) {\n return new Map(objectEntries(o));\n }\n return new Map();\n}\n\n/**\n * Merges to Map instances together, overwriting values in target with matching keys, last in wins\n * \n * @param target map into which the other maps are merged\n * @param maps One or more maps to merge into the target \n */\nexport function mergeMaps(target: Map, ...maps: Map[]): Map {\n for (let i = 0; i < maps.length; i++) {\n maps[i].forEach((v: V, k: K) => {\n target.set(k, v);\n });\n }\n\n return target;\n}\n\n\n\n// WEBPACK FOOTER //\n// ../../../../packages/common/src/collections.ts","import { TypedHash, mergeMaps, objectToMap } from \"./collections\";\nimport { ISPFXContext } from \"./spfxcontextinterface\";\n\nexport interface LibraryConfiguration {\n\n /**\n * Allows caching to be global disabled, default: false\n */\n globalCacheDisable?: boolean;\n\n /**\n * Defines the default store used by the usingCaching method, default: session\n */\n defaultCachingStore?: \"session\" | \"local\";\n\n /**\n * Defines the default timeout in seconds used by the usingCaching method, default 30\n */\n defaultCachingTimeoutSeconds?: number;\n\n /**\n * If true a timeout expired items will be removed from the cache in intervals determined by cacheTimeoutInterval\n */\n enableCacheExpiration?: boolean;\n\n /**\n * Determines the interval in milliseconds at which the cache is checked to see if items have expired (min: 100)\n */\n cacheExpirationIntervalMilliseconds?: number;\n\n /**\n * Used to supply the current context from an SPFx webpart to the library\n */\n spfxContext?: any;\n}\n\nexport function setup(config: LibraryConfiguration): void {\n RuntimeConfig.extend(config);\n}\n\n// lable mapping for known config values\nconst s = [\n \"defaultCachingStore\",\n \"defaultCachingTimeoutSeconds\",\n \"globalCacheDisable\",\n \"enableCacheExpiration\",\n \"cacheExpirationIntervalMilliseconds\",\n \"spfxContext\",\n];\n\nexport class RuntimeConfigImpl {\n\n constructor(private _v = new Map()) {\n\n // setup defaults\n this._v.set(s[0], \"session\");\n this._v.set(s[1], 60);\n this._v.set(s[2], false);\n this._v.set(s[3], false);\n this._v.set(s[4], 750);\n this._v.set(s[5], null);\n }\n\n /**\n * \n * @param config The set of properties to add to the globa configuration instance\n */\n public extend(config: TypedHash): void {\n this._v = mergeMaps(this._v, objectToMap(config));\n }\n\n public get(key: string): any {\n return this._v.get(key);\n }\n\n public get defaultCachingStore(): \"session\" | \"local\" {\n return this.get(s[0]);\n }\n\n public get defaultCachingTimeoutSeconds(): number {\n return this.get(s[1]);\n }\n\n public get globalCacheDisable(): boolean {\n return this.get(s[2]);\n }\n\n public get enableCacheExpiration(): boolean {\n return this.get(s[3]);\n }\n\n public get cacheExpirationIntervalMilliseconds(): number {\n return this.get(s[4]);\n }\n\n public get spfxContext(): ISPFXContext {\n return this.get(s[5]);\n }\n}\n\nconst _runtimeConfig = new RuntimeConfigImpl();\n\nexport let RuntimeConfig = _runtimeConfig;\n\n\n\n// WEBPACK FOOTER //\n// ../../../../packages/common/src/libconfig.ts","import { dateAdd, getCtxCallback, jsS, objectDefinedNotNull } from \"./util\";\nimport { RuntimeConfig } from \"./libconfig\";\n\n/**\n * A wrapper class to provide a consistent interface to browser based storage\n *\n */\nexport class PnPClientStorageWrapper implements PnPClientStore {\n\n /**\n * True if the wrapped storage is available; otherwise, false\n */\n public enabled: boolean;\n\n /**\n * Creates a new instance of the PnPClientStorageWrapper class\n *\n * @constructor\n */\n constructor(private store: Storage, public defaultTimeoutMinutes = -1) {\n this.enabled = this.test();\n // if the cache timeout is enabled call the handler\n // this will clear any expired items and set the timeout function\n if (RuntimeConfig.enableCacheExpiration) {\n this.cacheExpirationHandler();\n }\n }\n\n /**\n * Get a value from storage, or null if that value does not exist\n *\n * @param key The key whose value we want to retrieve\n */\n public get(key: string): T | null {\n\n if (!this.enabled) {\n return null;\n }\n\n const o = this.store.getItem(key);\n\n if (!objectDefinedNotNull(o)) {\n return null;\n }\n\n const persistable = JSON.parse(o!);\n\n if (new Date(persistable.expiration) <= new Date()) {\n this.delete(key);\n return null;\n\n } else {\n\n return persistable.value as T;\n }\n }\n\n /**\n * Adds a value to the underlying storage\n *\n * @param key The key to use when storing the provided value\n * @param o The value to store\n * @param expire Optional, if provided the expiration of the item, otherwise the default is used\n */\n public put(key: string, o: any, expire?: Date): void {\n if (this.enabled) {\n this.store.setItem(key, this.createPersistable(o, expire));\n }\n }\n\n /**\n * Deletes a value from the underlying storage\n *\n * @param key The key of the pair we want to remove from storage\n */\n public delete(key: string): void {\n if (this.enabled) {\n this.store.removeItem(key);\n }\n }\n\n /**\n * Gets an item from the underlying storage, or adds it if it does not exist using the supplied getter function\n *\n * @param key The key to use when storing the provided value\n * @param getter A function which will upon execution provide the desired value\n * @param expire Optional, if provided the expiration of the item, otherwise the default is used\n */\n public getOrPut(key: string, getter: () => Promise, expire?: Date): Promise {\n if (!this.enabled) {\n return getter();\n }\n\n const o = this.get(key);\n\n if (o === null) {\n return getter().then((d) => {\n this.put(key, d, expire);\n return d;\n });\n }\n\n return Promise.resolve(o);\n }\n\n /**\n * Deletes any expired items placed in the store by the pnp library, leaves other items untouched\n */\n public deleteExpired(): Promise {\n\n return new Promise((resolve, reject) => {\n\n if (!this.enabled) {\n resolve();\n }\n\n try {\n\n for (let i = 0; i < this.store.length; i++) {\n const key = this.store.key(i);\n if (key !== null) {\n // test the stored item to see if we stored it\n if (/[\"|']?pnp[\"|']? ?: ?1/i.test(this.store.getItem(key))) {\n // get those items as get will delete from cache if they are expired\n this.get(key);\n }\n }\n }\n\n resolve();\n\n } catch (e) { reject(e); }\n });\n }\n\n /**\n * Used to determine if the wrapped storage is available currently\n */\n private test(): boolean {\n const str = \"t\";\n try {\n this.store.setItem(str, str);\n this.store.removeItem(str);\n return true;\n } catch (e) {\n return false;\n }\n }\n\n /**\n * Creates the persistable to store\n */\n private createPersistable(o: any, expire?: Date): string {\n if (expire === undefined) {\n\n // ensure we are by default inline with the global library setting\n let defaultTimeout = RuntimeConfig.defaultCachingTimeoutSeconds;\n if (this.defaultTimeoutMinutes > 0) {\n defaultTimeout = this.defaultTimeoutMinutes * 60;\n }\n expire = dateAdd(new Date(), \"second\", defaultTimeout);\n }\n\n return jsS({ pnp: 1, expiration: expire, value: o });\n }\n\n /**\n * Deletes expired items added by this library in this.store and sets a timeout to call itself\n */\n private cacheExpirationHandler(): void {\n this.deleteExpired().then(_ => {\n\n // call ourself in the future\n setTimeout(getCtxCallback(this, this.cacheExpirationHandler), RuntimeConfig.cacheExpirationIntervalMilliseconds);\n }).catch(e => {\n console.error(e);\n });\n }\n}\n\n/**\n * Interface which defines the operations provided by a client storage object\n */\nexport interface PnPClientStore {\n /**\n * True if the wrapped storage is available; otherwise, false\n */\n enabled: boolean;\n\n /**\n * Get a value from storage, or null if that value does not exist\n *\n * @param key The key whose value we want to retrieve\n */\n get(key: string): any;\n\n /**\n * Adds a value to the underlying storage\n *\n * @param key The key to use when storing the provided value\n * @param o The value to store\n * @param expire Optional, if provided the expiration of the item, otherwise the default is used\n */\n put(key: string, o: any, expire?: Date): void;\n\n /**\n * Deletes a value from the underlying storage\n *\n * @param key The key of the pair we want to remove from storage\n */\n delete(key: string): void;\n\n /**\n * Gets an item from the underlying storage, or adds it if it does not exist using the supplied getter function\n *\n * @param key The key to use when storing the provided value\n * @param getter A function which will upon execution provide the desired value\n * @param expire Optional, if provided the expiration of the item, otherwise the default is used\n */\n getOrPut(key: string, getter: () => Promise, expire?: Date): Promise;\n\n /**\n * Removes any expired items placed in the store by the pnp library, leaves other items untouched\n */\n deleteExpired(): Promise;\n}\n\n/**\n * A thin implementation of in-memory storage for use in nodejs\n */\nclass MemoryStorage {\n\n constructor(private _store = new Map()) { }\n\n public get length(): number {\n return this._store.size;\n }\n\n public clear(): void {\n this._store.clear();\n }\n\n public getItem(key: string): any {\n return this._store.get(key);\n }\n\n public key(index: number): string {\n return Array.from(this._store)[index][0];\n }\n\n public removeItem(key: string): void {\n this._store.delete(key);\n }\n\n public setItem(key: string, data: string): void {\n this._store.set(key, data);\n }\n\n [key: string]: any;\n [index: number]: string;\n}\n\n/**\n * A class that will establish wrappers for both local and session storage\n */\nexport class PnPClientStorage {\n\n /**\n * Creates a new instance of the PnPClientStorage class\n *\n * @constructor\n */\n constructor(private _local: PnPClientStore | null = null, private _session: PnPClientStore | null = null) { }\n\n /**\n * Provides access to the local storage of the browser\n */\n public get local(): PnPClientStore {\n\n if (this._local === null) {\n this._local = this.getStore(\"local\");\n }\n\n return this._local;\n }\n\n /**\n * Provides access to the session storage of the browser\n */\n public get session(): PnPClientStore {\n\n if (this._session === null) {\n this._session = this.getStore(\"session\");\n }\n\n return this._session;\n }\n\n private getStore(name: string): PnPClientStorageWrapper {\n\n if (name === \"local\") {\n return new PnPClientStorageWrapper(typeof (localStorage) === \"undefined\" ? new MemoryStorage() : localStorage);\n }\n\n return new PnPClientStorageWrapper(typeof (sessionStorage) === \"undefined\" ? new MemoryStorage() : sessionStorage);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ../../../../packages/common/src/storage.ts","import { LogListener } from \"./listeners\";\nimport { LogEntry } from \"./logentry\";\nimport { LogLevel } from \"./loglevel\";\n\n/**\n * Class used to subscribe ILogListener and log messages throughout an application\n *\n */\nexport class Logger {\n\n private static _instance: LoggerImpl;\n\n /**\n * Gets or sets the active log level to apply for log filtering\n */\n public static get activeLogLevel(): LogLevel {\n return Logger.instance.activeLogLevel;\n }\n\n public static set activeLogLevel(value: LogLevel) {\n Logger.instance.activeLogLevel = value;\n }\n\n private static get instance(): LoggerImpl {\n if (Logger._instance === undefined || Logger._instance === null) {\n Logger._instance = new LoggerImpl();\n }\n return Logger._instance;\n }\n\n /**\n * Adds ILogListener instances to the set of subscribed listeners\n *\n * @param listeners One or more listeners to subscribe to this log\n */\n public static subscribe(...listeners: LogListener[]): void {\n listeners.map(listener => Logger.instance.subscribe(listener));\n }\n\n /**\n * Clears the subscribers collection, returning the collection before modifiction\n */\n public static clearSubscribers(): LogListener[] {\n return Logger.instance.clearSubscribers();\n }\n\n /**\n * Gets the current subscriber count\n */\n public static get count(): number {\n return Logger.instance.count;\n }\n\n /**\n * Writes the supplied string to the subscribed listeners\n *\n * @param message The message to write\n * @param level [Optional] if supplied will be used as the level of the entry (Default: LogLevel.Info)\n */\n public static write(message: string, level: LogLevel = LogLevel.Info) {\n Logger.instance.log({ level: level, message: message });\n }\n\n /**\n * Writes the supplied string to the subscribed listeners\n *\n * @param json The json object to stringify and write\n * @param level [Optional] if supplied will be used as the level of the entry (Default: LogLevel.Info)\n */\n public static writeJSON(json: any, level: LogLevel = LogLevel.Info) {\n this.write(JSON.stringify(json), level);\n }\n\n /**\n * Logs the supplied entry to the subscribed listeners\n *\n * @param entry The message to log\n */\n public static log(entry: LogEntry) {\n Logger.instance.log(entry);\n }\n\n /**\n * Logs an error object to the subscribed listeners\n * \n * @param err The error object\n */\n public static error(err: Error) {\n Logger.instance.log({ data: err, level: LogLevel.Error, message: err.message });\n }\n}\n\nclass LoggerImpl {\n\n constructor(public activeLogLevel: LogLevel = LogLevel.Warning, private subscribers: LogListener[] = []) { }\n\n public subscribe(listener: LogListener): void {\n this.subscribers.push(listener);\n }\n\n public clearSubscribers(): LogListener[] {\n const s = this.subscribers.slice(0);\n this.subscribers.length = 0;\n return s;\n }\n\n public get count(): number {\n return this.subscribers.length;\n }\n\n public write(message: string, level: LogLevel = LogLevel.Info) {\n this.log({ level: level, message: message });\n }\n\n public log(entry: LogEntry) {\n if (entry !== undefined && this.activeLogLevel <= entry.level) {\n this.subscribers.map(subscriber => subscriber.log(entry));\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ../../../../packages/logging/src/logger.ts","/**\n * A set of logging levels\n */\nexport const enum LogLevel {\n Verbose = 0,\n Info = 1,\n Warning = 2,\n Error = 3,\n Off = 99,\n}\n\n\n\n// WEBPACK FOOTER //\n// ../../../../packages/logging/src/loglevel.ts","import { LogEntry } from \"./logentry\";\nimport { LogLevel } from \"./loglevel\";\n\n/**\n * Interface that defines a log listner\n *\n */\nexport interface LogListener {\n /**\n * Any associated data that a given logging listener may choose to log or ignore\n *\n * @param entry The information to be logged\n */\n log(entry: LogEntry): void;\n}\n\n/**\n * Implementation of LogListener which logs to the console\n *\n */\nexport class ConsoleListener implements LogListener {\n\n /**\n * Any associated data that a given logging listener may choose to log or ignore\n *\n * @param entry The information to be logged\n */\n public log(entry: LogEntry): void {\n\n const msg = this.format(entry);\n\n switch (entry.level) {\n case LogLevel.Verbose:\n case LogLevel.Info:\n console.log(msg);\n break;\n case LogLevel.Warning:\n console.warn(msg);\n break;\n case LogLevel.Error:\n console.error(msg);\n break;\n }\n }\n\n /**\n * Formats the message\n *\n * @param entry The information to format into a string\n */\n private format(entry: LogEntry): string {\n const msg = [];\n msg.push(\"Message: \" + entry.message);\n if (entry.data !== undefined) {\n try {\n msg.push(\" Data: \" + JSON.stringify(entry.data));\n } catch (e) {\n msg.push(` Data: Error in stringify of supplied data ${e}`);\n }\n }\n\n return msg.join(\"\");\n }\n}\n\n/**\n * Implementation of LogListener which logs to the supplied function\n *\n */\nexport class FunctionListener implements LogListener {\n\n /**\n * Creates a new instance of the FunctionListener class\n *\n * @constructor\n * @param method The method to which any logging data will be passed\n */\n constructor(private method: (entry: LogEntry) => void) { }\n\n /**\n * Any associated data that a given logging listener may choose to log or ignore\n *\n * @param entry The information to be logged\n */\n public log(entry: LogEntry): void {\n this.method(entry);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ../../../../packages/logging/src/listeners.ts","export enum UserCustomActionScope {\r\n Web = 'web',\r\n Site = 'site',\r\n List = 'list'\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ../../../src/services/UserCustomActionService/UserCustomActionScope.ts","module.exports = __WEBPACK_EXTERNAL_MODULE_6__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"@microsoft/decorators\"\n// module id = 6\n// module chunks = 0","module.exports = __WEBPACK_EXTERNAL_MODULE_7__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"@microsoft/sp-core-library\"\n// module id = 7\n// module chunks = 0","module.exports = __WEBPACK_EXTERNAL_MODULE_8__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"@microsoft/sp-application-base\"\n// module id = 8\n// module chunks = 0","module.exports = __WEBPACK_EXTERNAL_MODULE_9__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"MegaMenuApplicationCustomizerStrings\"\n// module id = 9\n// module chunks = 0","import { ITaxonomyNavigationService } from './ITaxonomyNavigationService';\r\n// import { ITerm, ITermStore, taxonomy, ITermData, ITermSets, ITermSet, } from '@pnp/sp-taxonomy';\r\nimport { IMenuItem } from './IMenuItem';\r\nimport { sp } from '@pnp/sp';\r\nimport { MenuItem } from './MenuItem';\r\nimport { ApplicationCustomizerContext } from '@microsoft/sp-application-base';\r\nimport SPTermStorePickerService from './SPTermStorePickerService';\r\nimport { ITerm, ITermSet } from './ISPTermStorePickerService';\r\nimport { ItemDictionary } from './ItemDictionary';\r\n\r\nexport class TaxonomyNavigationService implements ITaxonomyNavigationService {\r\n private _taxonomyPickerService: SPTermStorePickerService;\r\n private _noTerm: ITerm = {\r\n _ObjectType_: '',\r\n _ObjectIdentity_: '',\r\n CustomSortOrderIndex: 0,\r\n Description: '',\r\n Id: '',\r\n IsAvailableForTagging: false,\r\n IsDeprecated: false,\r\n IsRoot: true,\r\n LocalCustomProperties: {\r\n _Sys_Nav_HoverText: 'Es wurden keine Terms gefunden. Bitte überprüfen Sie Ihre Einstellungen.',\r\n _Sys_Nav_ExcludedProviders: undefined,\r\n _Sys_Nav_SimpleLinkUrl: undefined\r\n },\r\n Name: 'Es wurden keine Terms gefunden. Bitte überprüfen Sie Ihre Einstellungen.',\r\n PathOfTerm: '',\r\n TermSet: undefined\r\n };\r\n\r\n constructor(private context: ApplicationCustomizerContext /*, private lcid: number*/, private termSetName: string) {\r\n sp.setup({\r\n spfxContext: context\r\n });\r\n this._taxonomyPickerService = new SPTermStorePickerService(\r\n {\r\n anchorId: '',\r\n termsetNameOrID: termSetName,\r\n useSessionStorage: true,\r\n hideDeprecatedTags: true,\r\n hideTagsNotAvailableForTagging: false\r\n },\r\n this.context\r\n );\r\n }\r\n\r\n // Implement the methods from ITaxonomyNavigationService interface here\r\n public async getMenuItems(): Promise {\r\n const siteCollectionUrl: string = this.context.pageContext.site.absoluteUrl;\r\n const termset: ITermSet = await this._taxonomyPickerService.getAllTerms(this.termSetName);\r\n const itemsDict: ItemDictionary = new ItemDictionary();\r\n const menuItems: IMenuItem[] = [];\r\n if (!termset || !termset.Terms) {\r\n console.warn('No terms found in the term set');\r\n return [new MenuItem(this._noTerm, 0, siteCollectionUrl)];\r\n }\r\n\r\n termset.Terms.forEach(async (term: ITerm) => {\r\n const menuItem: IMenuItem = new MenuItem(term, 0, siteCollectionUrl);\r\n itemsDict.Add(term.Id, menuItem);\r\n if (menuItem.pathDepth === 1) {\r\n menuItems.push(menuItem);\r\n } else {\r\n const parentItem: IMenuItem = itemsDict.Get(term.ParentId);\r\n if (parentItem) {\r\n parentItem.items.push(menuItem);\r\n } else {\r\n console.warn(`Item without parent: ${term.PathOfTerm}`);\r\n }\r\n }\r\n });\r\n return menuItems;\r\n }\r\n}\n\n\n// WEBPACK FOOTER //\n// ../../src/services/TaxonomyNavigationService.ts","/*! adal-angular v1.0.17 2018-02-27 */\r\nvar AuthenticationContext=function(){\"use strict\";return AuthenticationContext=function(a){if(this.REQUEST_TYPE={LOGIN:\"LOGIN\",RENEW_TOKEN:\"RENEW_TOKEN\",UNKNOWN:\"UNKNOWN\"},this.RESPONSE_TYPE={ID_TOKEN_TOKEN:\"id_token token\",TOKEN:\"token\"},this.CONSTANTS={ACCESS_TOKEN:\"access_token\",EXPIRES_IN:\"expires_in\",ID_TOKEN:\"id_token\",ERROR_DESCRIPTION:\"error_description\",SESSION_STATE:\"session_state\",ERROR:\"error\",STORAGE:{TOKEN_KEYS:\"adal.token.keys\",ACCESS_TOKEN_KEY:\"adal.access.token.key\",EXPIRATION_KEY:\"adal.expiration.key\",STATE_LOGIN:\"adal.state.login\",STATE_RENEW:\"adal.state.renew\",NONCE_IDTOKEN:\"adal.nonce.idtoken\",SESSION_STATE:\"adal.session.state\",USERNAME:\"adal.username\",IDTOKEN:\"adal.idtoken\",ERROR:\"adal.error\",ERROR_DESCRIPTION:\"adal.error.description\",LOGIN_REQUEST:\"adal.login.request\",LOGIN_ERROR:\"adal.login.error\",RENEW_STATUS:\"adal.token.renew.status\",ANGULAR_LOGIN_REQUEST:\"adal.angular.login.request\"},RESOURCE_DELIMETER:\"|\",CACHE_DELIMETER:\"||\",LOADFRAME_TIMEOUT:6e3,TOKEN_RENEW_STATUS_CANCELED:\"Canceled\",TOKEN_RENEW_STATUS_COMPLETED:\"Completed\",TOKEN_RENEW_STATUS_IN_PROGRESS:\"In Progress\",LOGGING_LEVEL:{ERROR:0,WARN:1,INFO:2,VERBOSE:3},LEVEL_STRING_MAP:{0:\"ERROR:\",1:\"WARNING:\",2:\"INFO:\",3:\"VERBOSE:\"},POPUP_WIDTH:483,POPUP_HEIGHT:600},AuthenticationContext.prototype._singletonInstance)return AuthenticationContext.prototype._singletonInstance;if(AuthenticationContext.prototype._singletonInstance=this,this.instance=\"https://login.microsoftonline.com/\",this.config={},this.callback=null,this.popUp=!1,this.isAngular=!1,this._user=null,this._activeRenewals={},this._loginInProgress=!1,this._acquireTokenInProgress=!1,this._renewStates=[],this._callBackMappedToRenewStates={},this._callBacksMappedToRenewStates={},this._openedWindows=[],this._requestType=this.REQUEST_TYPE.LOGIN,window._adalInstance=this,a.displayCall&&\"function\"!=typeof a.displayCall)throw new Error(\"displayCall is not a function\");if(!a.clientId)throw new Error(\"clientId is required\");this.config=this._cloneConfig(a),void 0===this.config.navigateToLoginRequestUrl&&(this.config.navigateToLoginRequestUrl=!0),this.config.popUp&&(this.popUp=!0),this.config.callback&&\"function\"==typeof this.config.callback&&(this.callback=this.config.callback),this.config.instance&&(this.instance=this.config.instance),this.config.loginResource||(this.config.loginResource=this.config.clientId),this.config.redirectUri||(this.config.redirectUri=window.location.href.split(\"?\")[0].split(\"#\")[0]),this.config.postLogoutRedirectUri||(this.config.postLogoutRedirectUri=window.location.href.split(\"?\")[0].split(\"#\")[0]),this.config.anonymousEndpoints||(this.config.anonymousEndpoints=[]),this.config.isAngular&&(this.isAngular=this.config.isAngular),this.config.loadFrameTimeout&&(this.CONSTANTS.LOADFRAME_TIMEOUT=this.config.loadFrameTimeout)},\"undefined\"!=typeof window&&(window.Logging={piiLoggingEnabled:!1,level:0,log:function(a){}}),AuthenticationContext.prototype.login=function(){if(this._loginInProgress)return void this.info(\"Login in progress\");this._loginInProgress=!0;var a=this._guid();this.config.state=a,this._idTokenNonce=this._guid();var b=this._getItem(this.CONSTANTS.STORAGE.ANGULAR_LOGIN_REQUEST);b&&\"\"!==b?this._saveItem(this.CONSTANTS.STORAGE.ANGULAR_LOGIN_REQUEST,\"\"):b=window.location.href,this.verbose(\"Expected state: \"+a+\" startPage:\"+b),this._saveItem(this.CONSTANTS.STORAGE.LOGIN_REQUEST,b),this._saveItem(this.CONSTANTS.STORAGE.LOGIN_ERROR,\"\"),this._saveItem(this.CONSTANTS.STORAGE.STATE_LOGIN,a,!0),this._saveItem(this.CONSTANTS.STORAGE.NONCE_IDTOKEN,this._idTokenNonce,!0),this._saveItem(this.CONSTANTS.STORAGE.ERROR,\"\"),this._saveItem(this.CONSTANTS.STORAGE.ERROR_DESCRIPTION,\"\");var c=this._getNavigateUrl(\"id_token\",null)+\"&nonce=\"+encodeURIComponent(this._idTokenNonce);this.config.displayCall?this.config.displayCall(c):this.popUp?(this._saveItem(this.CONSTANTS.STORAGE.STATE_LOGIN,\"\"),this._renewStates.push(a),this.registerCallback(a,this.config.clientId,this.callback),this._loginPopup(c)):this.promptUser(c)},AuthenticationContext.prototype._openPopup=function(a,b,c,d){try{var e=window.screenLeft?window.screenLeft:window.screenX,f=window.screenTop?window.screenTop:window.screenY,g=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth,h=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight,i=g/2-c/2+e,j=h/2-d/2+f,k=window.open(a,b,\"width=\"+c+\", height=\"+d+\", top=\"+j+\", left=\"+i);return k.focus&&k.focus(),k}catch(a){return this.warn(\"Error opening popup, \"+a.message),this._loginInProgress=!1,this._acquireTokenInProgress=!1,null}},AuthenticationContext.prototype._handlePopupError=function(a,b,c,d,e){this.warn(d),this._saveItem(this.CONSTANTS.STORAGE.ERROR,c),this._saveItem(this.CONSTANTS.STORAGE.ERROR_DESCRIPTION,d),this._saveItem(this.CONSTANTS.STORAGE.LOGIN_ERROR,e),b&&this._activeRenewals[b]&&(this._activeRenewals[b]=null),this._loginInProgress=!1,this._acquireTokenInProgress=!1,a&&a(d,null,c)},AuthenticationContext.prototype._loginPopup=function(a,b,c){var d=this._openPopup(a,\"login\",this.CONSTANTS.POPUP_WIDTH,this.CONSTANTS.POPUP_HEIGHT),e=c||this.callback;if(null==d){var f=\"Popup Window is null. This can happen if you are using IE\";return void this._handlePopupError(e,b,\"Error opening popup\",f,f)}if(this._openedWindows.push(d),-1!=this.config.redirectUri.indexOf(\"#\"))var g=this.config.redirectUri.split(\"#\")[0];else var g=this.config.redirectUri;var h=this,i=window.setInterval(function(){if(!d||d.closed||void 0===d.closed){var a=\"Popup Window closed\",c=\"Popup Window closed by UI action/ Popup Window handle destroyed due to cross zone navigation in IE/Edge\";return h.isAngular&&h._broadcast(\"adal:popUpClosed\",c+h.CONSTANTS.RESOURCE_DELIMETER+a),h._handlePopupError(e,b,a,c,c),void window.clearInterval(i)}try{var f=d.location;if(-1!=encodeURI(f.href).indexOf(encodeURI(g)))return h.isAngular?h._broadcast(\"adal:popUpHashChanged\",f.hash):h.handleWindowCallback(f.hash),window.clearInterval(i),h._loginInProgress=!1,h._acquireTokenInProgress=!1,h.info(\"Closing popup window\"),h._openedWindows=[],void d.close()}catch(a){}},1)},AuthenticationContext.prototype._broadcast=function(a,b){!function(){function a(a,b){b=b||{bubbles:!1,cancelable:!1,detail:void 0};var c=document.createEvent(\"CustomEvent\");return c.initCustomEvent(a,b.bubbles,b.cancelable,b.detail),c}if(\"function\"==typeof window.CustomEvent)return!1;a.prototype=window.Event.prototype,window.CustomEvent=a}();var c=new CustomEvent(a,{detail:b});window.dispatchEvent(c)},AuthenticationContext.prototype.loginInProgress=function(){return this._loginInProgress},AuthenticationContext.prototype._hasResource=function(a){var b=this._getItem(this.CONSTANTS.STORAGE.TOKEN_KEYS);return b&&!this._isEmpty(b)&&b.indexOf(a+this.CONSTANTS.RESOURCE_DELIMETER)>-1},AuthenticationContext.prototype.getCachedToken=function(a){if(!this._hasResource(a))return null;var b=this._getItem(this.CONSTANTS.STORAGE.ACCESS_TOKEN_KEY+a),c=this._getItem(this.CONSTANTS.STORAGE.EXPIRATION_KEY+a),d=this.config.expireOffsetSeconds||300;return c&&c>this._now()+d?b:(this._saveItem(this.CONSTANTS.STORAGE.ACCESS_TOKEN_KEY+a,\"\"),this._saveItem(this.CONSTANTS.STORAGE.EXPIRATION_KEY+a,0),null)},AuthenticationContext.prototype.getCachedUser=function(){if(this._user)return this._user;var a=this._getItem(this.CONSTANTS.STORAGE.IDTOKEN);return this._user=this._createUser(a),this._user},AuthenticationContext.prototype.registerCallback=function(a,b,c){this._activeRenewals[b]=a,this._callBacksMappedToRenewStates[a]||(this._callBacksMappedToRenewStates[a]=[]);var d=this;this._callBacksMappedToRenewStates[a].push(c),this._callBackMappedToRenewStates[a]||(this._callBackMappedToRenewStates[a]=function(c,e,f,g){d._activeRenewals[b]=null;for(var h=0;h-1)){var b=this._user.profile.upn.split(\"@\");a+=\"&domain_hint=\"+encodeURIComponent(b[b.length-1])}return a},AuthenticationContext.prototype._createUser=function(a){var b=null,c=this._extractIdToken(a);return c&&c.hasOwnProperty(\"aud\")&&(c.aud.toLowerCase()===this.config.clientId.toLowerCase()?(b={userName:\"\",profile:c},c.hasOwnProperty(\"upn\")?b.userName=c.upn:c.hasOwnProperty(\"email\")&&(b.userName=c.email)):this.warn(\"IdToken has invalid aud field\")),b},AuthenticationContext.prototype._getHash=function(a){return a.indexOf(\"#/\")>-1?a=a.substring(a.indexOf(\"#/\")+2):a.indexOf(\"#\")>-1&&(a=a.substring(1)),a},AuthenticationContext.prototype.isCallback=function(a){a=this._getHash(a);var b=this._deserialize(a);return b.hasOwnProperty(this.CONSTANTS.ERROR_DESCRIPTION)||b.hasOwnProperty(this.CONSTANTS.ACCESS_TOKEN)||b.hasOwnProperty(this.CONSTANTS.ID_TOKEN)},AuthenticationContext.prototype.getLoginError=function(){return this._getItem(this.CONSTANTS.STORAGE.LOGIN_ERROR)},AuthenticationContext.prototype.getRequestInfo=function(a){a=this._getHash(a);var b=this._deserialize(a),c={valid:!1,parameters:{},stateMatch:!1,stateResponse:\"\",requestType:this.REQUEST_TYPE.UNKNOWN};if(b&&(c.parameters=b,b.hasOwnProperty(this.CONSTANTS.ERROR_DESCRIPTION)||b.hasOwnProperty(this.CONSTANTS.ACCESS_TOKEN)||b.hasOwnProperty(this.CONSTANTS.ID_TOKEN))){c.valid=!0;var d=\"\";if(!b.hasOwnProperty(\"state\"))return this.warn(\"No state returned\"),c;if(this.verbose(\"State: \"+b.state),d=b.state,c.stateResponse=d,this._matchState(c))return c;if(!c.stateMatch&&window.parent){c.requestType=this._requestType;for(var e=this._renewStates,f=0;f-1&&b+1-1)return null;if(this.config&&this.config.endpoints)for(var c in this.config.endpoints)if(a.indexOf(c)>-1)return this.config.endpoints[c];return a.indexOf(\"http://\")>-1||a.indexOf(\"https://\")>-1?this._getHostFromUri(a)===this._getHostFromUri(this.config.redirectUri)?this.config.loginResource:null:this.config.loginResource},AuthenticationContext.prototype._getHostFromUri=function(a){var b=String(a).replace(/^(https?:)\\/\\//,\"\");return b=b.split(\"/\")[0]},AuthenticationContext.prototype.handleWindowCallback=function(a){if(null==a&&(a=window.location.hash),this.isCallback(a)){var b=null,c=!1;this._openedWindows.length>0&&this._openedWindows[this._openedWindows.length-1].opener&&this._openedWindows[this._openedWindows.length-1].opener._adalInstance?(b=this._openedWindows[this._openedWindows.length-1].opener._adalInstance,c=!0):window.parent&&window.parent._adalInstance&&(b=window.parent._adalInstance);var d,e,f=b.getRequestInfo(a),g=null;e=c||window.parent!==window?b._callBackMappedToRenewStates[f.stateResponse]:b.callback,b.info(\"Returned from redirect url\"),b.saveTokenFromHash(f),f.requestType===this.REQUEST_TYPE.RENEW_TOKEN&&window.parent?(window.parent!==window?b.verbose(\"Window is in iframe, acquiring token silently\"):b.verbose(\"acquiring token interactive in progress\"),d=f.parameters[b.CONSTANTS.ACCESS_TOKEN]||f.parameters[b.CONSTANTS.ID_TOKEN],g=b.CONSTANTS.ACCESS_TOKEN):f.requestType===this.REQUEST_TYPE.LOGIN&&(d=f.parameters[b.CONSTANTS.ID_TOKEN],g=b.CONSTANTS.ID_TOKEN);var h=f.parameters[b.CONSTANTS.ERROR_DESCRIPTION],i=f.parameters[b.CONSTANTS.ERROR];try{e&&e(h,d,i,g)}catch(a){b.error(\"Error occurred in user defined callback function: \"+a)}window.parent!==window||c||(b.config.navigateToLoginRequestUrl?window.location.href=b._getItem(b.CONSTANTS.STORAGE.LOGIN_REQUEST):window.location.hash=\"\")}},AuthenticationContext.prototype._getNavigateUrl=function(a,b){var c=\"common\";this.config.tenant&&(c=this.config.tenant);var d=this.instance+c+\"/oauth2/authorize\"+this._serialize(a,this.config,b)+this._addLibMetadata();return this.info(\"Navigate url:\"+d),d},AuthenticationContext.prototype._extractIdToken=function(a){var b=this._decodeJwt(a);if(!b)return null;try{var c=b.JWSPayload,d=this._base64DecodeStringUrlSafe(c);return d?JSON.parse(d):(this.info(\"The returned id_token could not be base64 url safe decoded.\"),null)}catch(a){this.error(\"The returned id_token could not be decoded\",a)}return null},AuthenticationContext.prototype._base64DecodeStringUrlSafe=function(a){return a=a.replace(/-/g,\"+\").replace(/_/g,\"/\"),window.atob?decodeURIComponent(escape(window.atob(a))):decodeURIComponent(escape(this._decode(a)))},AuthenticationContext.prototype._decode=function(a){var b=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";a=String(a).replace(/=+$/,\"\");var c=a.length;if(c%4==1)throw new Error(\"The token to be decoded is not correctly encoded.\");for(var d,e,f,g,h,i,j,k,l=\"\",m=0;m>16&255,j=h>>8&255,l+=String.fromCharCode(i,j);break}if(m+1===c-1){h=d<<18|e<<12,i=h>>16&255,l+=String.fromCharCode(i);break}h=d<<18|e<<12|f<<6|g,i=h>>16&255,j=h>>8&255,k=255&h,l+=String.fromCharCode(i,j,k)}return l},AuthenticationContext.prototype._decodeJwt=function(a){if(this._isEmpty(a))return null;var b=/^([^\\.\\s]*)\\.([^\\.\\s]+)\\.([^\\.\\s]*)$/,c=b.exec(a);return!c||c.length<4?(this.warn(\"The returned id_token is not parseable.\"),null):{header:c[1],JWSPayload:c[2],JWSSig:c[3]}},AuthenticationContext.prototype._convertUrlSafeToRegularBase64EncodedString=function(a){return a.replace(\"-\",\"+\").replace(\"_\",\"/\")},AuthenticationContext.prototype._serialize=function(a,b,c){var d=[];if(null!==b){d.push(\"?response_type=\"+a),d.push(\"client_id=\"+encodeURIComponent(b.clientId)),c&&d.push(\"resource=\"+encodeURIComponent(c)),d.push(\"redirect_uri=\"+encodeURIComponent(b.redirectUri)),d.push(\"state=\"+encodeURIComponent(b.state)),b.hasOwnProperty(\"slice\")&&d.push(\"slice=\"+encodeURIComponent(b.slice)),b.hasOwnProperty(\"extraQueryParameter\")&&d.push(b.extraQueryParameter);var e=b.correlationId?b.correlationId:this._guid();d.push(\"client-request-id=\"+encodeURIComponent(e))}return d.join(\"&\")},AuthenticationContext.prototype._deserialize=function(a){var b,c=/\\+/g,d=/([^&=]+)=([^&]*)/g,e=function(a){return decodeURIComponent(a.replace(c,\" \"))},f={};for(b=d.exec(a);b;)f[e(b[1])]=e(b[2]),b=d.exec(a);return f},AuthenticationContext.prototype._decimalToHex=function(a){for(var b=a.toString(16);b.length<2;)b=\"0\"+b;return b},AuthenticationContext.prototype._guid=function(){var a=window.crypto||window.msCrypto;if(a&&a.getRandomValues){var b=new Uint8Array(16);return a.getRandomValues(b),b[6]|=64,b[6]&=79,b[8]|=128,b[8]&=191,this._decimalToHex(b[0])+this._decimalToHex(b[1])+this._decimalToHex(b[2])+this._decimalToHex(b[3])+\"-\"+this._decimalToHex(b[4])+this._decimalToHex(b[5])+\"-\"+this._decimalToHex(b[6])+this._decimalToHex(b[7])+\"-\"+this._decimalToHex(b[8])+this._decimalToHex(b[9])+\"-\"+this._decimalToHex(b[10])+this._decimalToHex(b[11])+this._decimalToHex(b[12])+this._decimalToHex(b[13])+this._decimalToHex(b[14])+this._decimalToHex(b[15])}for(var c=\"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\",d=\"0123456789abcdef\",e=0,f=\"\",g=0;g<36;g++)\"-\"!==c[g]&&\"4\"!==c[g]&&(e=16*Math.random()|0),\"x\"===c[g]?f+=d[e]:\"y\"===c[g]?(e&=3,e|=8,f+=d[e]):f+=c[g];return f},AuthenticationContext.prototype._expiresIn=function(a){return a||(a=3599),this._now()+parseInt(a,10)},AuthenticationContext.prototype._now=function(){return Math.round((new Date).getTime()/1e3)},AuthenticationContext.prototype._addAdalFrame=function(a){if(void 0!==a){this.info(\"Add adal frame to document:\"+a);var b=document.getElementById(a);if(!b){if(document.createElement&&document.documentElement&&(window.opera||-1===window.navigator.userAgent.indexOf(\"MSIE 5.0\"))){var c=document.createElement(\"iframe\");c.setAttribute(\"id\",a),c.setAttribute(\"aria-hidden\",\"true\"),c.style.visibility=\"hidden\",c.style.position=\"absolute\",c.style.width=c.style.height=c.borderWidth=\"0px\",b=document.getElementsByTagName(\"body\")[0].appendChild(c)}else document.body&&document.body.insertAdjacentHTML&&document.body.insertAdjacentHTML(\"beforeEnd\",'');window.frames&&window.frames[a]&&(b=window.frames[a])}return b}},AuthenticationContext.prototype._saveItem=function(a,b,c){if(this.config&&this.config.cacheLocation&&\"localStorage\"===this.config.cacheLocation){if(!this._supportsLocalStorage())return this.info(\"Local storage is not supported\"),!1;if(c){var d=this._getItem(a)||\"\";localStorage.setItem(a,d+b+this.CONSTANTS.CACHE_DELIMETER)}else localStorage.setItem(a,b);return!0}return this._supportsSessionStorage()?(sessionStorage.setItem(a,b),!0):(this.info(\"Session storage is not supported\"),!1)},AuthenticationContext.prototype._getItem=function(a){return this.config&&this.config.cacheLocation&&\"localStorage\"===this.config.cacheLocation?this._supportsLocalStorage()?localStorage.getItem(a):(this.info(\"Local storage is not supported\"),null):this._supportsSessionStorage()?sessionStorage.getItem(a):(this.info(\"Session storage is not supported\"),null)},AuthenticationContext.prototype._supportsLocalStorage=function(){try{return!!window.localStorage&&(window.localStorage.setItem(\"storageTest\",\"A\"),\"A\"==window.localStorage.getItem(\"storageTest\")&&(window.localStorage.removeItem(\"storageTest\"),!window.localStorage.getItem(\"storageTest\")))}catch(a){return!1}},AuthenticationContext.prototype._supportsSessionStorage=function(){try{return!!window.sessionStorage&&(window.sessionStorage.setItem(\"storageTest\",\"A\"),\"A\"==window.sessionStorage.getItem(\"storageTest\")&&(window.sessionStorage.removeItem(\"storageTest\"),!window.sessionStorage.getItem(\"storageTest\")))}catch(a){return!1}},AuthenticationContext.prototype._cloneConfig=function(a){if(null===a||\"object\"!=typeof a)return a;var b={};for(var c in a)a.hasOwnProperty(c)&&(b[c]=a[c]);return b},AuthenticationContext.prototype._addLibMetadata=function(){return\"&x-client-SKU=Js&x-client-Ver=\"+this._libVersion()},AuthenticationContext.prototype.log=function(a,b,c,d){if(a<=Logging.level){if(!Logging.piiLoggingEnabled&&d)return;var e=(new Date).toUTCString(),f=\"\";f=this.config.correlationId?e+\":\"+this.config.correlationId+\"-\"+this._libVersion()+\"-\"+this.CONSTANTS.LEVEL_STRING_MAP[a]+\" \"+b:e+\":\"+this._libVersion()+\"-\"+this.CONSTANTS.LEVEL_STRING_MAP[a]+\" \"+b,c&&(f+=\"\\nstack:\\n\"+c.stack),Logging.log(f)}},AuthenticationContext.prototype.error=function(a,b){this.log(this.CONSTANTS.LOGGING_LEVEL.ERROR,a,b)},AuthenticationContext.prototype.warn=function(a){this.log(this.CONSTANTS.LOGGING_LEVEL.WARN,a,null)},AuthenticationContext.prototype.info=function(a){\r\nthis.log(this.CONSTANTS.LOGGING_LEVEL.INFO,a,null)},AuthenticationContext.prototype.verbose=function(a){this.log(this.CONSTANTS.LOGGING_LEVEL.VERBOSE,a,null)},AuthenticationContext.prototype.errorPii=function(a,b){this.log(this.CONSTANTS.LOGGING_LEVEL.ERROR,a,b,!0)},AuthenticationContext.prototype.warnPii=function(a){this.log(this.CONSTANTS.LOGGING_LEVEL.WARN,a,null,!0)},AuthenticationContext.prototype.infoPii=function(a){this.log(this.CONSTANTS.LOGGING_LEVEL.INFO,a,null,!0)},AuthenticationContext.prototype.verbosePii=function(a){this.log(this.CONSTANTS.LOGGING_LEVEL.VERBOSE,a,null,!0)},AuthenticationContext.prototype._libVersion=function(){return\"1.0.17\"},\"undefined\"!=typeof module&&module.exports&&(module.exports=AuthenticationContext,module.exports.inject=function(a){return new AuthenticationContext(a)}),AuthenticationContext}();\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@pnp/common/node_modules/adal-angular/dist/adal.min.js\n// module id = 11\n// module chunks = 0","import { ODataParser } from \"./parsers\";\nimport { RuntimeConfig, dateAdd, PnPClientStore, PnPClientStorage } from \"@pnp/common\";\n\nexport interface ICachingOptions {\n expiration?: Date;\n storeName?: \"session\" | \"local\";\n key: string;\n}\n\nexport class CachingOptions implements ICachingOptions {\n\n protected static storage = new PnPClientStorage();\n\n public expiration = dateAdd(new Date(), \"second\", RuntimeConfig.defaultCachingTimeoutSeconds);\n\n public storeName: \"session\" | \"local\" = RuntimeConfig.defaultCachingStore;\n\n constructor(public key: string) { }\n\n public get store(): PnPClientStore {\n if (this.storeName === \"local\") {\n return CachingOptions.storage.local;\n } else {\n return CachingOptions.storage.session;\n }\n }\n}\n\nexport class CachingParserWrapper implements ODataParser {\n\n constructor(\n public parser: ODataParser,\n public cacheOptions: CachingOptions) { }\n\n public parse(response: Response): Promise {\n return this.parser.parse(response).then(r => this.cacheData(r));\n }\n\n protected cacheData(data: any): any {\n if (this.cacheOptions.store !== null) {\n this.cacheOptions.store.put(this.cacheOptions.key, data, this.cacheOptions.expiration);\n }\n return data;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ../../../../packages/odata/src/caching.ts","import { isFunc, hOP } from \"@pnp/common\";\n\nexport interface ODataParser {\n hydrate?: (d: any) => T;\n parse(r: Response): Promise;\n}\n\nexport class HttpRequestError extends Error {\n\n public isHttpRequestError = true;\n\n constructor(message: string, public response: Response, public status = response.status, public statusText = response.statusText) {\n super(message);\n }\n\n public static init(r: Response): Promise {\n\n return r.clone().text().then(t => {\n return new HttpRequestError(`Error making HttpClient request in queryable [${r.status}] ${r.statusText} ::> ${t}`, r.clone());\n });\n }\n}\n\nexport abstract class ODataParserBase implements ODataParser {\n\n protected rawJson: any = {};\n\n public parse(r: Response): Promise {\n\n return new Promise((resolve, reject) => {\n if (this.handleError(r, reject)) {\n this.parseImpl(r, resolve, reject);\n }\n });\n }\n\n protected parseImpl(r: Response, resolve: (value?: T | PromiseLike) => void, reject: (reason?: Error) => void): void {\n if ((r.headers.has(\"Content-Length\") && parseFloat(r.headers.get(\"Content-Length\")!) === 0) || r.status === 204) {\n resolve({});\n } else {\n\n // patch to handle cases of 200 response with no or whitespace only bodies (#487 & #545)\n r.text()\n .then(txt => txt.replace(/\\s/ig, \"\").length > 0 ? JSON.parse(txt) : {})\n .then(json => resolve(this.parseODataJSON(json)))\n .catch(e => reject(e));\n }\n }\n\n /**\n * Handles a response with ok === false by parsing the body and creating a ProcessHttpClientResponseException\n * which is passed to the reject delegate. This method returns true if there is no error, otherwise false\n *\n * @param r Current response object\n * @param reject reject delegate for the surrounding promise\n */\n protected handleError(r: Response, reject: (err?: Error) => void): boolean {\n if (!r.ok) {\n HttpRequestError.init(r).then(reject);\n }\n\n return r.ok;\n }\n\n /**\n * Normalizes the json response by removing the various nested levels\n *\n * @param json json object to parse\n */\n protected parseODataJSON(json: any): U {\n this.rawJson = json;\n let result = json;\n if (hOP(json, \"d\")) {\n if (hOP(json.d, \"results\")) {\n result = json.d.results;\n } else {\n result = json.d;\n }\n } else if (hOP(json, \"value\")) {\n result = json.value;\n }\n return result;\n }\n}\n\nexport class ODataDefaultParser extends ODataParserBase {\n}\n\nexport class TextParser extends ODataParserBase {\n\n protected parseImpl(r: Response, resolve: (value: any) => void): void {\n r.text().then(resolve);\n }\n}\n\nexport class BlobParser extends ODataParserBase {\n\n protected parseImpl(r: Response, resolve: (value: any) => void): void {\n r.blob().then(resolve);\n }\n}\n\nexport class JSONParser extends ODataParserBase {\n\n protected parseImpl(r: Response, resolve: (value: any) => void): void {\n r.json().then(resolve);\n }\n}\n\nexport class BufferParser extends ODataParserBase {\n\n protected parseImpl(r: Response, resolve: (value: any) => void): void {\n\n if (isFunc(r.arrayBuffer)) {\n r.arrayBuffer().then(resolve);\n } else {\n (r).buffer().then(resolve);\n }\n }\n}\n\nexport class LambdaParser extends ODataParserBase {\n\n constructor(private parser: (r: Response) => Promise) {\n super();\n }\n\n protected parseImpl(r: Response, resolve: (value: any) => void): void {\n this.parser(r).then(resolve);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ../../../../packages/odata/src/parsers.ts","import { FetchOptions, RequestClient, extend, isFunc, hOP } from \"@pnp/common\";\nimport { LogLevel, Logger } from \"@pnp/logging\";\nimport { CachingOptions, CachingParserWrapper, ICachingOptions } from \"./caching\";\nimport { ODataBatch } from \"./odatabatch\";\nimport { ODataParser } from \"./parsers\";\n\nexport type PipelineMethod = (c: RequestContext) => Promise>;\n\n/**\n * Defines the context for a given request to be processed in the pipeline\n */\nexport interface RequestContext {\n batch: ODataBatch;\n batchDependency: () => void;\n cachingOptions: ICachingOptions;\n hasResult?: boolean;\n isBatched: boolean;\n isCached: boolean;\n options: FetchOptions;\n parser: ODataParser;\n pipeline: PipelineMethod[];\n requestAbsoluteUrl: string;\n requestId: string;\n result?: T;\n verb: string;\n clientFactory: () => RequestClient;\n}\n\n/**\n * Resolves the context's result value\n *\n * @param context The current context\n */\nfunction returnResult(context: RequestContext): Promise {\n\n Logger.log({\n data: Logger.activeLogLevel === LogLevel.Verbose ? context.result : {},\n level: LogLevel.Info,\n message: `[${context.requestId}] (${(new Date()).getTime()}) Returning result from pipeline. Set logging to verbose to see data.`,\n });\n\n return Promise.resolve(context.result!);\n}\n\n/**\n * Sets the result on the context\n */\nexport function setResult(context: RequestContext, value: any): Promise> {\n\n return new Promise>((resolve) => {\n\n context.result = value;\n context.hasResult = true;\n resolve(context);\n });\n}\n\n/**\n * Invokes the next method in the provided context's pipeline\n *\n * @param c The current request context\n */\nfunction next(c: RequestContext): Promise> {\n\n if (c.pipeline.length > 0) {\n return c.pipeline.shift()!(c);\n } else {\n return Promise.resolve(c);\n }\n}\n\n/**\n * Executes the current request context's pipeline\n *\n * @param context Current context\n */\nexport function pipe(context: RequestContext): Promise {\n\n if (context.pipeline.length < 1) {\n Logger.write(`[${context.requestId}] (${(new Date()).getTime()}) Request pipeline contains no methods!`, LogLevel.Warning);\n }\n\n const promise = next(context).then(ctx => returnResult(ctx)).catch((e: Error) => {\n Logger.error(e);\n throw e;\n });\n\n if (context.isBatched) {\n // this will block the batch's execute method from returning until the child requets have been resolved\n context.batch.addResolveBatchDependency(promise);\n }\n\n return promise;\n}\n\n/**\n * decorator factory applied to methods in the pipeline to control behavior\n */\nexport function requestPipelineMethod(alwaysRun = false) {\n\n return (target: any, propertyKey: string, descriptor: PropertyDescriptor) => {\n\n const method = descriptor.value;\n\n descriptor.value = function (...args: any[]) {\n\n // if we have a result already in the pipeline, pass it along and don't call the tagged method\n if (!alwaysRun && args.length > 0 && hOP(args[0], \"hasResult\") && args[0].hasResult) {\n Logger.write(`[${args[0].requestId}] (${(new Date()).getTime()}) Skipping request pipeline method ${propertyKey}, existing result in pipeline.`, LogLevel.Verbose);\n return Promise.resolve(args[0]);\n }\n\n // apply the tagged method\n Logger.write(`[${args[0].requestId}] (${(new Date()).getTime()}) Calling request pipeline method ${propertyKey}.`, LogLevel.Verbose);\n\n // then chain the next method in the context's pipeline - allows for dynamic pipeline\n return method.apply(target, args).then((ctx: RequestContext) => next(ctx));\n };\n };\n}\n\n/**\n * Contains the methods used within the request pipeline\n */\nexport class PipelineMethods {\n\n /**\n * Logs the start of the request\n */\n @requestPipelineMethod(true)\n public static logStart(context: RequestContext): Promise> {\n return new Promise>(resolve => {\n\n Logger.log({\n data: Logger.activeLogLevel === LogLevel.Info ? {} : context,\n level: LogLevel.Info,\n message: `[${context.requestId}] (${(new Date()).getTime()}) Beginning ${context.verb} request (${context.requestAbsoluteUrl})`,\n });\n\n resolve(context);\n });\n }\n\n /**\n * Handles caching of the request\n */\n @requestPipelineMethod()\n public static caching(context: RequestContext): Promise> {\n\n return new Promise>(resolve => {\n\n // handle caching, if applicable\n if (context.isCached) {\n\n Logger.write(`[${context.requestId}] (${(new Date()).getTime()}) Caching is enabled for request, checking cache...`, LogLevel.Info);\n\n let cacheOptions = new CachingOptions(context.requestAbsoluteUrl.toLowerCase());\n if (context.cachingOptions !== undefined) {\n cacheOptions = extend(cacheOptions, context.cachingOptions);\n }\n\n // we may not have a valid store\n if (cacheOptions.store !== null) {\n // check if we have the data in cache and if so resolve the promise and return\n let data = cacheOptions.store.get(cacheOptions.key);\n if (data !== null) {\n // ensure we clear any held batch dependency we are resolving from the cache\n Logger.log({\n data: Logger.activeLogLevel === LogLevel.Info ? {} : data,\n level: LogLevel.Info,\n message: `[${context.requestId}] (${(new Date()).getTime()}) Value returned from cache.`,\n });\n if (isFunc(context.batchDependency)) {\n context.batchDependency();\n }\n // handle the case where a parser needs to take special actions with a cached result\n if (hOP(context.parser, \"hydrate\")) {\n data = context.parser.hydrate(data);\n }\n return setResult(context, data).then(ctx => resolve(ctx));\n }\n }\n\n Logger.write(`[${context.requestId}] (${(new Date()).getTime()}) Value not found in cache.`, LogLevel.Info);\n\n // if we don't then wrap the supplied parser in the caching parser wrapper\n // and send things on their way\n context.parser = new CachingParserWrapper(context.parser, cacheOptions);\n }\n\n return resolve(context);\n });\n }\n\n /**\n * Sends the request\n */\n @requestPipelineMethod()\n public static send(context: RequestContext): Promise> {\n\n return new Promise>((resolve, reject) => {\n // send or batch the request\n if (context.isBatched) {\n\n // we are in a batch, so add to batch, remove dependency, and resolve with the batch's promise\n const p = context.batch.add(context.requestAbsoluteUrl, context.verb, context.options, context.parser, context.requestId);\n\n // we release the dependency here to ensure the batch does not execute until the request is added to the batch\n if (isFunc(context.batchDependency)) {\n context.batchDependency();\n }\n\n Logger.write(`[${context.requestId}] (${(new Date()).getTime()}) Batching request in batch ${context.batch.batchId}.`, LogLevel.Info);\n\n // we set the result as the promise which will be resolved by the batch's execution\n resolve(setResult(context, p));\n\n } else {\n\n Logger.write(`[${context.requestId}] (${(new Date()).getTime()}) Sending request.`, LogLevel.Info);\n\n // we are not part of a batch, so proceed as normal\n const client = context.clientFactory();\n const opts = extend(context.options || {}, { method: context.verb });\n client.fetch(context.requestAbsoluteUrl, opts)\n .then(response => context.parser.parse(response))\n .then(result => setResult(context, result))\n .then(ctx => resolve(ctx))\n .catch(e => reject(e));\n }\n });\n }\n\n /**\n * Logs the end of the request\n */\n @requestPipelineMethod(true)\n public static logEnd(context: RequestContext): Promise> {\n\n return new Promise>(resolve => {\n\n if (context.isBatched) {\n\n Logger.log({\n data: Logger.activeLogLevel === LogLevel.Info ? {} : context,\n level: LogLevel.Info,\n message: `[${context.requestId}] (${(new Date()).getTime()}) ${context.verb} request will complete in batch ${context.batch.batchId}.`,\n });\n\n } else {\n\n Logger.log({\n data: Logger.activeLogLevel === LogLevel.Info ? {} : context,\n level: LogLevel.Info,\n message: `[${context.requestId}] (${(new Date()).getTime()}) Completing ${context.verb} request.`,\n });\n }\n\n resolve(context);\n });\n }\n}\n\nexport function getDefaultPipeline() {\n return [\n PipelineMethods.logStart,\n PipelineMethods.caching,\n PipelineMethods.send,\n PipelineMethods.logEnd,\n ].slice(0);\n}\n\n\n\n// WEBPACK FOOTER //\n// ../../../../packages/odata/src/pipeline.ts","import {\n combine,\n RuntimeConfig,\n FetchOptions,\n ConfigOptions,\n mergeOptions,\n objectDefinedNotNull,\n isArray,\n} from \"@pnp/common\";\nimport { ODataParser, ODataDefaultParser, JSONParser } from \"./parsers\";\nimport { ICachingOptions } from \"./caching\";\nimport { ODataBatch } from \"./odatabatch\";\nimport {\n RequestContext,\n getDefaultPipeline,\n pipe,\n PipelineMethod,\n} from \"./pipeline\";\n\nexport abstract class Queryable {\n\n /**\n * Additional options to be set before sending actual http request\n */\n protected _options: ConfigOptions;\n\n /**\n * Tracks the query parts of the url\n */\n protected _query: Map;\n\n /**\n * Tracks the url as it is built\n */\n protected _url: string;\n\n /**\n * Stores the parent url used to create this instance, for recursing back up the tree if needed\n */\n protected _parentUrl: string;\n\n /**\n * Explicitly tracks if we are using caching for this request\n */\n protected _useCaching: boolean;\n\n /**\n * Any options that were supplied when caching was enabled\n */\n protected _cachingOptions: ICachingOptions | null;\n\n /**\n * Flag used to indicate if the object from which this was cloned's _usingCaching flag was true\n */\n protected _cloneParentWasCaching: boolean;\n\n /**\n * The cache options from the clone parent if it was caching\n */\n protected _cloneParentCacheOptions: ICachingOptions | null;\n\n /**\n * If a specific request pipeline is set, it will be used\n */\n protected _requestPipeline: PipelineMethod[] | null;\n\n constructor() {\n this._query = new Map();\n this._options = {};\n this._url = \"\";\n this._parentUrl = \"\";\n this._useCaching = false;\n this._cachingOptions = null;\n this._cloneParentWasCaching = false;\n this._cloneParentCacheOptions = null;\n this._requestPipeline = null;\n }\n\n /**\n * Gets the full url with query information\n *\n */\n public abstract toUrlAndQuery(): string;\n\n /**\n * Gets the currentl url\n *\n */\n public toUrl(): string {\n return this._url;\n }\n\n /**\n * Directly concatonates the supplied string to the current url, not normalizing \"/\" chars\n *\n * @param pathPart The string to concatonate to the url\n */\n public concat(pathPart: string): this {\n this._url += pathPart;\n return this;\n }\n\n /**\n * Provides access to the query builder for this url\n *\n */\n public get query(): Map {\n return this._query;\n }\n\n /**\n * Sets custom options for current object and all derived objects accessible via chaining\n * \n * @param options custom options\n */\n public configure(options: ConfigOptions): this {\n mergeOptions(this._options, options);\n return this;\n }\n\n /**\n * Configures this instance from the configure options of the supplied instance\n * \n * @param o Instance from which options should be taken\n */\n public configureFrom(o: Queryable): this {\n mergeOptions(this._options, o._options);\n return this;\n }\n\n /**\n * Enables caching for this request\n *\n * @param options Defines the options used when caching this request\n */\n public usingCaching(options?: ICachingOptions): this {\n if (!RuntimeConfig.globalCacheDisable) {\n this._useCaching = true;\n if (options !== undefined) {\n this._cachingOptions = options;\n }\n }\n return this;\n }\n\n /**\n * Allows you to set a request specific processing pipeline\n * \n * @param pipeline The set of methods, in order, to execute a given request\n */\n public withPipeline(pipeline: PipelineMethod[]): this {\n this._requestPipeline = pipeline.slice(0);\n return this;\n }\n\n protected getCore(parser: ODataParser = new JSONParser(), options: FetchOptions = {}): Promise {\n // Fix for #304 - when we clone objects we in some cases then execute a get request\n // in these cases the caching settings were getting dropped from the request\n // this tracks if the object from which this was cloned was caching and applies that to an immediate get request\n // does not affect objects cloned from this as we are using different fields to track the settings so it won't\n // be triggered\n if (this._cloneParentWasCaching) {\n this.usingCaching(this._cloneParentCacheOptions);\n }\n return this.reqImpl(\"GET\", options, parser);\n }\n\n protected postCore(options: FetchOptions = {}, parser: ODataParser = new JSONParser()): Promise {\n return this.reqImpl(\"POST\", options, parser);\n }\n\n protected patchCore(options: FetchOptions = {}, parser: ODataParser = new JSONParser()): Promise {\n return this.reqImpl(\"PATCH\", options, parser);\n }\n\n protected deleteCore(options: FetchOptions = {}, parser: ODataParser = new JSONParser()): Promise {\n return this.reqImpl(\"DELETE\", options, parser);\n }\n\n protected putCore(options: FetchOptions = {}, parser: ODataParser = new JSONParser()): Promise {\n return this.reqImpl(\"PUT\", options, parser);\n }\n\n protected reqImpl(method: string, options: FetchOptions = {}, parser: ODataParser): Promise {\n return this.getRequestPipeline(method, options, parser)\n .then(pipeline => this.toRequestContext(method, options, parser, pipeline))\n .then(context => pipe(context));\n }\n\n /**\n * Appends the given string and normalizes \"/\" chars\n *\n * @param pathPart The string to append\n */\n protected append(pathPart: string) {\n this._url = combine(this._url, pathPart);\n }\n\n /**\n * Gets the parent url used when creating this instance\n *\n */\n protected get parentUrl(): string {\n return this._parentUrl;\n }\n\n /**\n * Extends this queryable from the provided parent \n * \n * @param parent Parent queryable from which we will derive a base url\n * @param path Additional path\n */\n protected extend(parent: Queryable, path?: string) {\n this._parentUrl = parent._url;\n this._url = combine(this._parentUrl, path || \"\");\n this.configureFrom(parent);\n }\n\n /**\n * Configures a cloned object from this instance\n * \n * @param clone\n */\n protected _clone(clone: Queryable, _0: any): any {\n\n clone.configureFrom(this);\n\n if (this._useCaching) {\n clone._cloneParentWasCaching = true;\n clone._cloneParentCacheOptions = this._cachingOptions;\n }\n\n return clone;\n }\n\n /**\n * Handles getting the request pipeline to run for a given request\n */\n // @ts-ignore\n // justified because we want to show that all these arguments are passed to the method so folks inheriting and potentially overriding\n // clearly see how the method is invoked inside the class\n protected getRequestPipeline(method: string, options: FetchOptions = {}, parser: ODataParser): Promise[]> {\n\n return new Promise(resolve => {\n if (objectDefinedNotNull(this._requestPipeline) && isArray(this._requestPipeline)) {\n resolve(this._requestPipeline);\n } else {\n resolve(getDefaultPipeline());\n }\n });\n }\n\n /**\n * Converts the current instance to a request context\n *\n * @param verb The request verb\n * @param options The set of supplied request options\n * @param parser The supplied ODataParser instance\n * @param pipeline Optional request processing pipeline\n */\n protected abstract toRequestContext(\n verb: string,\n options: FetchOptions,\n parser: ODataParser,\n pipeline: Array<(c: RequestContext) => Promise>>): Promise>;\n}\n\nexport abstract class ODataQueryable extends Queryable {\n\n /**\n * Tracks the batch of which this query may be part\n */\n protected _batch: BatchType | null;\n\n /**\n * Allows us to properly block batch execution until everything is loaded\n */\n protected _batchDependency: () => void | null;\n\n constructor() {\n super();\n this._batch = null;\n this._batchDependency = null;\n }\n\n /**\n * Adds this query to the supplied batch\n *\n * @example\n * ```\n *\n * let b = pnp.sp.createBatch();\n * pnp.sp.web.inBatch(b).get().then(...);\n * b.execute().then(...)\n * ```\n */\n public inBatch(batch: BatchType): this {\n\n if (this.batch !== null) {\n throw Error(\"This query is already part of a batch.\");\n }\n\n if (objectDefinedNotNull(batch)) {\n this._batch = batch;\n }\n\n return this;\n }\n\n /**\n * Gets the currentl url\n *\n */\n public toUrl(): string {\n return this._url;\n }\n\n /**\n * Executes the currently built request\n *\n * @param parser Allows you to specify a parser to handle the result\n * @param getOptions The options used for this request\n */\n public get(parser: ODataParser = new ODataDefaultParser(), options: FetchOptions = {}): Promise {\n return this.getCore(parser, options);\n }\n\n protected getCore(parser: ODataParser = new ODataDefaultParser(), options: FetchOptions = {}): Promise {\n return super.getCore(parser, options);\n }\n\n protected postCore(options: FetchOptions = {}, parser: ODataParser = new ODataDefaultParser()): Promise {\n return super.postCore(options, parser);\n }\n\n protected patchCore(options: FetchOptions = {}, parser: ODataParser = new ODataDefaultParser()): Promise {\n return super.patchCore(options, parser);\n }\n\n protected deleteCore(options: FetchOptions = {}, parser: ODataParser = new ODataDefaultParser()): Promise {\n return super.deleteCore(options, parser);\n }\n\n protected putCore(options: FetchOptions = {}, parser: ODataParser = new ODataDefaultParser()): Promise {\n return super.putCore(options, parser);\n }\n\n protected reqImpl(method: string, options: FetchOptions = {}, parser: ODataParser): Promise {\n\n if (this.hasBatch) {\n this._batchDependency = this.addBatchDependency();\n }\n\n return super.reqImpl(method, options, parser);\n }\n\n /**\n * Blocks a batch call from occuring, MUST be cleared by calling the returned function\n */\n protected addBatchDependency(): () => void {\n if (this._batch !== null) {\n return this._batch.addDependency();\n }\n\n return () => null;\n }\n\n /**\n * Indicates if the current query has a batch associated\n *\n */\n protected get hasBatch(): boolean {\n return objectDefinedNotNull(this._batch);\n }\n\n /**\n * The batch currently associated with this query or null\n *\n */\n protected get batch(): BatchType | null {\n return this.hasBatch ? this._batch : null;\n }\n\n /**\n * Configures a cloned object from this instance\n * \n * @param clone \n */\n protected _clone(clone: ODataQueryable, cloneSettings: { includeBatch: boolean }): any {\n\n clone = super._clone(clone, cloneSettings);\n\n if (cloneSettings.includeBatch) {\n clone = clone.inBatch(this._batch);\n }\n\n return clone;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ../../../../packages/odata/src/queryable.ts","import { FetchOptions, getGUID } from \"@pnp/common\";\nimport { ODataParser } from \"./parsers\";\n\nexport interface ODataBatchRequestInfo {\n url: string;\n method: string;\n options: FetchOptions;\n parser: ODataParser;\n resolve: ((d: any) => void) | null;\n reject: ((error: any) => void) | null;\n id: string;\n}\n\nexport abstract class ODataBatch {\n\n protected _deps: Promise[];\n protected _reqs: ODataBatchRequestInfo[];\n protected _rDeps: Promise[];\n\n constructor(private _batchId = getGUID()) {\n this._reqs = [];\n this._deps = [];\n this._rDeps = [];\n }\n\n public get batchId(): string {\n return this._batchId;\n }\n\n /**\n * The requests contained in this batch\n */\n protected get requests(): ODataBatchRequestInfo[] {\n return this._reqs;\n }\n\n /**\n * \n * @param url Request url\n * @param method Request method (GET, POST, etc)\n * @param options Any request options\n * @param parser The parser used to handle the eventual return from the query\n * @param id An identifier used to track a request within a batch\n */\n public add(url: string, method: string, options: FetchOptions, parser: ODataParser, id: string): Promise {\n\n const info: ODataBatchRequestInfo = {\n id,\n method: method.toUpperCase(),\n options,\n parser,\n reject: null,\n resolve: null,\n url,\n };\n\n const p = new Promise((resolve, reject) => {\n info.resolve = resolve;\n info.reject = reject;\n });\n\n this._reqs.push(info);\n\n return p;\n }\n\n /**\n * Adds a dependency insuring that some set of actions will occur before a batch is processed.\n * MUST be cleared using the returned resolve delegate to allow batches to run\n */\n public addDependency(): () => void {\n\n let resolver: () => void = () => void (0);\n\n this._deps.push(new Promise((resolve) => {\n resolver = resolve;\n }));\n\n return resolver;\n }\n\n /**\n * The batch's execute method will not resolve util any promises added here resolve\n * \n * @param p The dependent promise\n */\n public addResolveBatchDependency(p: Promise): void {\n this._rDeps.push(p);\n }\n\n /**\n * Execute the current batch and resolve the associated promises\n *\n * @returns A promise which will be resolved once all of the batch's child promises have resolved\n */\n public execute(): Promise {\n\n // we need to check the dependencies twice due to how different engines handle things.\n // We can get a second set of promises added during the first set resolving\n return Promise.all(this._deps)\n .then(() => Promise.all(this._deps))\n .then(() => this.executeImpl())\n .then(() => Promise.all(this._rDeps))\n .then(() => void (0));\n }\n\n protected abstract executeImpl(): Promise;\n}\n\n\n\n// WEBPACK FOOTER //\n// ../../../../packages/odata/src/odatabatch.ts","// tslint:disable:no-any no-string-literal max-line-length\r\n\r\nimport { IMenuItem } from './IMenuItem';\r\nimport { ITerm } from './ISPTermStorePickerService';\r\n\r\nexport class MenuItem implements IMenuItem {\r\n public id: string;\r\n public label: string;\r\n public hoverText: string;\r\n public pathDepth: number;\r\n public url?: string;\r\n public items?: IMenuItem[];\r\n\r\n constructor(term: ITerm, public level: number, siteCollectionUrl?: string) {\r\n this.id = term.Id;\r\n this.label = term.Name;\r\n this.hoverText = term.LocalCustomProperties['_Sys_Nav_HoverText'];\r\n this.pathDepth = term.PathDepth;\r\n const rawUrl: string = term.LocalCustomProperties['_Sys_Nav_SimpleLinkUrl'] || term.LocalCustomProperties['_Sys_Nav_TargetUrl'];\r\n if (rawUrl) {\r\n this.url = siteCollectionUrl && rawUrl.indexOf('~sitecollection') === 0\r\n ? siteCollectionUrl + rawUrl.substring('~sitecollection'.length)\r\n : rawUrl;\r\n }\r\n this.items = [];\r\n }\r\n\r\n public hasChildren(): boolean {\r\n return this.items && this.items.length > 0;\r\n }\r\n\r\n public command(): void {\r\n if (this.url) {\r\n (window as any).location.href = this.url;\r\n }\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ../../src/services/MenuItem.ts","/* tslint:disable:no-null-keyword max-line-length typedef no-any no-string-literal variable-name */\r\n/**\r\n * This code is a copy from the library @pnp/sp-dev-fx-controls-react\r\n */\r\n\r\nimport { SPHttpClient, SPHttpClientResponse, ISPHttpClientOptions } from '@microsoft/sp-http';\r\nimport { ITermStore, ITerms, ITerm, IGroup, ITermSet, ISuggestTerm } from './ISPTermStorePickerService';\r\nimport { findIndex } from '@microsoft/sp-lodash-subset';\r\nimport { ISPTermStorePickerServiceProps } from './ISPTermStorePickerServiceProps';\r\nimport { IPickerTerm } from './IPickerTerm';\r\nimport { ApplicationCustomizerContext } from '@microsoft/sp-application-base';\r\n\r\nconst EmptyGuid: string = '00000000-0000-0000-0000-000000000000';\r\n\r\n/**\r\n * Service implementation to manage term stores in SharePoint\r\n */\r\nexport default class SPTermStorePickerService {\r\n private clientServiceUrl: string;\r\n private suggestionServiceUrl: string;\r\n\r\n /**\r\n * Service constructor\r\n */\r\n constructor(private props: ISPTermStorePickerServiceProps, private context: ApplicationCustomizerContext) {\r\n this.clientServiceUrl = this.context.pageContext.web.absoluteUrl + '/_vti_bin/client.svc/ProcessQuery';\r\n this.suggestionServiceUrl = this.context.pageContext.web.absoluteUrl + '/_vti_bin/TaxonomyInternalService.json/GetSuggestions';\r\n }\r\n\r\n public async getTermLabels(termId: string): Promise {\r\n let result: string[] = null;\r\n try {\r\n const data = `${termId}`;\r\n\r\n const reqHeaders = new Headers();\r\n reqHeaders.append('accept', 'application/json');\r\n reqHeaders.append('content-type', 'application/xml');\r\n\r\n const httpPostOptions: ISPHttpClientOptions = {\r\n headers: reqHeaders,\r\n body: data\r\n };\r\n\r\n const callResult = await this.context.spHttpClient.post(this.clientServiceUrl, SPHttpClient.configurations.v1, httpPostOptions);\r\n const jsonResult = await callResult.json();\r\n\r\n const node = jsonResult.find(x => x._ObjectType_ === 'SP.Taxonomy.Term');\r\n if (node && node.Labels && node.Labels._Child_Items_) {\r\n result = node.Labels._Child_Items_.map(termLabel => termLabel.Value);\r\n }\r\n } catch (error) {\r\n result = null;\r\n console.log(error.message);\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * Gets the collection of term stores in the current SharePoint env\r\n */\r\n public getTermStores(): Promise {\r\n // Retrieve the term store name, groups, and term sets\r\n const data = '';\r\n\r\n const reqHeaders = new Headers();\r\n reqHeaders.append('accept', 'application/json');\r\n reqHeaders.append('content-type', 'application/xml');\r\n\r\n const httpPostOptions: ISPHttpClientOptions = {\r\n headers: reqHeaders,\r\n body: data\r\n };\r\n\r\n return this.context.spHttpClient.post(this.clientServiceUrl, SPHttpClient.configurations.v1, httpPostOptions).then((serviceResponse: SPHttpClientResponse) => {\r\n return serviceResponse.json().then((serviceJSONResponse: any) => {\r\n // Construct results\r\n const termStoreResult: ITermStore[] = serviceJSONResponse.filter((r: { [x: string]: string; }) => r['_ObjectType_'] === 'SP.Taxonomy.TermStore');\r\n // Check if term store was retrieved\r\n if (termStoreResult.length > 0) {\r\n // Check if the termstore needs to be filtered or limited\r\n if (this.props.termsetNameOrID) {\r\n return termStoreResult.map(termstore => {\r\n let termGroups = termstore.Groups._Child_Items_;\r\n\r\n // Check if the groups have to be limited to a specific term set\r\n if (this.props.termsetNameOrID) {\r\n const termsetNameOrId = this.props.termsetNameOrID;\r\n termGroups = termGroups.map((group: IGroup) => {\r\n group.TermSets._Child_Items_ = group.TermSets._Child_Items_.filter((termSet: ITermSet) => termSet.Name === termsetNameOrId || this.cleanGuid(termSet.Id).toLowerCase() === this.cleanGuid(termsetNameOrId).toLowerCase());\r\n return group;\r\n });\r\n }\r\n\r\n // Filter out all systen groups\r\n termGroups = termGroups.filter(group => !group.IsSystemGroup);\r\n\r\n // Filter out empty groups\r\n termGroups = termGroups.filter((group: IGroup) => group.TermSets._Child_Items_.length > 0);\r\n\r\n // Map the new groups\r\n termstore.Groups._Child_Items_ = termGroups;\r\n return termstore;\r\n });\r\n }\r\n\r\n // Return the term store results\r\n return termStoreResult;\r\n }\r\n return [];\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Gets the current term set\r\n */\r\n public async getTermSet(): Promise {\r\n const termStore = await this.getTermStores();\r\n return this.getTermSetId(termStore, this.props.termsetNameOrID);\r\n }\r\n\r\n /**\r\n * Retrieve all terms for the given term set\r\n * @param termset\r\n */\r\n public async getAllTerms(termset: string, hideDeprecatedTags?: boolean, hideTagsNotAvailableForTagging?: boolean, useSessionStorage: boolean = true): Promise {\r\n let termsetId: string = termset;\r\n // Check if the provided term set property is a GUID or string\r\n if (!this.isGuid(termset)) {\r\n // Fetch the term store information\r\n const termStore = await this.getTermStores();\r\n // Get the ID of the provided term set name\r\n const crntTermSet = this.getTermSetId(termStore, termset);\r\n if (crntTermSet) {\r\n termsetId = this.cleanGuid(crntTermSet.Id);\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n const childTerms = this.getTermsById(termsetId, useSessionStorage);\r\n\r\n if (childTerms) {\r\n return childTerms;\r\n }\r\n\r\n // Request body to retrieve all terms for the given term set\r\n const data = `${termsetId}`;\r\n\r\n const reqHeaders = new Headers();\r\n reqHeaders.append('accept', 'application/json');\r\n reqHeaders.append('content-type', 'application/xml');\r\n\r\n const httpPostOptions: ISPHttpClientOptions = {\r\n headers: reqHeaders,\r\n body: data\r\n };\r\n\r\n return this.context.spHttpClient.post(this.clientServiceUrl, SPHttpClient.configurations.v1, httpPostOptions).then((serviceResponse: SPHttpClientResponse) => {\r\n return serviceResponse.json().then((serviceJSONResponse: any) => {\r\n const termStoreResultTermSets: ITermSet[] = serviceJSONResponse.filter((r: { [x: string]: string; }) => r['_ObjectType_'] === 'SP.Taxonomy.TermSet');\r\n\r\n if (termStoreResultTermSets.length > 0) {\r\n const termStoreResultTermSet = termStoreResultTermSets[0];\r\n termStoreResultTermSet.Terms = [];\r\n // Retrieve the term collection results\r\n const termStoreResultTerms: ITerms[] = serviceJSONResponse.filter((r: { [x: string]: string; }) => r['_ObjectType_'] === 'SP.Taxonomy.TermCollection');\r\n if (termStoreResultTerms.length > 0) {\r\n // Retrieve all terms\r\n let terms = termStoreResultTerms[0]._Child_Items_;\r\n\r\n if (hideDeprecatedTags === true) {\r\n terms = terms.filter(d => d.IsDeprecated === false);\r\n }\r\n\r\n if (hideTagsNotAvailableForTagging === true) {\r\n terms = terms.filter(d => d.IsAvailableForTagging === true);\r\n }\r\n\r\n // Clean the term ID and specify the path depth\r\n terms = terms.map(term => {\r\n if (term.IsRoot) {\r\n term.CustomSortOrderIndex = (termStoreResultTermSet.CustomSortOrder) ? termStoreResultTermSet.CustomSortOrder.split(':').indexOf(this.cleanGuid(term.Id)) : -1;\r\n } else {\r\n term.CustomSortOrderIndex = (term['Parent'].CustomSortOrder) ? term['Parent'].CustomSortOrder.split(':').indexOf(this.cleanGuid(term.Id)) : -1;\r\n }\r\n term.Id = this.cleanGuid(term.Id);\r\n term['PathDepth'] = term.PathOfTerm.split(';').length;\r\n term.TermSet = { Id: this.cleanGuid(termStoreResultTermSet.Id), Name: termStoreResultTermSet.Name };\r\n if (term['Parent']) {\r\n term.ParentId = this.cleanGuid(term['Parent'].Id);\r\n }\r\n return term;\r\n });\r\n // Check if the term set was not empty\r\n if (terms.length > 0) {\r\n // Sort the terms by PathOfTerm and their depth\r\n terms = this.sortTerms(terms);\r\n termStoreResultTermSet.Terms = terms;\r\n }\r\n }\r\n\r\n try {\r\n if (useSessionStorage && window.sessionStorage) {\r\n window.sessionStorage.setItem(termsetId, JSON.stringify(termStoreResultTermSet));\r\n }\r\n } catch (error) {\r\n // Do nothing, sometimes \"storage quota exceeded\" error if too many items\r\n }\r\n return termStoreResultTermSet;\r\n }\r\n return null;\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Retrieve all terms that starts with the searchText\r\n * @param searchText\r\n */\r\n public searchTermsByName(searchText: string): Promise {\r\n return this.searchTermsByTermSet(searchText);\r\n }\r\n\r\n public async searchTermsByTermId(searchText: string, termId: string): Promise {\r\n const { useSessionStorage } = this.props;\r\n const childTerms = this.getTermsById(termId, useSessionStorage);\r\n if (childTerms) {\r\n return this.searchTermsBySearchText(childTerms, searchText);\r\n } else {\r\n const {\r\n termsetNameOrID,\r\n hideDeprecatedTags,\r\n hideTagsNotAvailableForTagging\r\n } = this.props;\r\n\r\n const terms = await this.getAllTermsByAnchorId(\r\n termsetNameOrID,\r\n termId,\r\n hideDeprecatedTags,\r\n hideTagsNotAvailableForTagging,\r\n useSessionStorage);\r\n\r\n if (terms) {\r\n return this.searchTermsBySearchText(terms, searchText);\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Retrieve all terms for the given term set and anchorId\r\n */\r\n public async getAllTermsByAnchorId(termsetNameOrID: string, anchorId: string, hideDeprecatedTags?: boolean, hideTagsNotAvailableForTagging?: boolean, useSessionStorage: boolean = true): Promise {\r\n\r\n const returnTerms: IPickerTerm[] = [];\r\n\r\n const childTerms = this.getTermsById(anchorId, useSessionStorage);\r\n if (childTerms) {\r\n return childTerms;\r\n }\r\n\r\n const termSet = await this.getAllTerms(termsetNameOrID, hideDeprecatedTags, hideTagsNotAvailableForTagging);\r\n const terms = termSet.Terms;\r\n if (anchorId) {\r\n const anchorTerm = terms.filter(t => t.Id.toLowerCase() === anchorId.toLowerCase()).shift();\r\n if (anchorTerm) {\r\n // Append ';' separator, as a suffix to anchor term path.\r\n const anchorTermPath = `${anchorTerm.PathOfTerm};`;\r\n const anchorTerms: ITerm[] = terms.filter(t => t.PathOfTerm.substring(0, anchorTermPath.length) === anchorTermPath && t.Id !== anchorTerm.Id);\r\n\r\n anchorTerms.forEach(term => {\r\n returnTerms.push(this.convertTermToPickerTerm(term));\r\n });\r\n\r\n try {\r\n if (useSessionStorage && window.sessionStorage) {\r\n window.sessionStorage.setItem(anchorId, JSON.stringify(returnTerms));\r\n }\r\n } catch (error) {\r\n // Do nothing\r\n }\r\n }\r\n } else {\r\n terms.forEach(term => {\r\n returnTerms.push(this.convertTermToPickerTerm(term));\r\n });\r\n }\r\n\r\n return returnTerms;\r\n }\r\n\r\n /**\r\n * Clean the Guid from the Web Service response\r\n * @param guid\r\n */\r\n public cleanGuid(guid: string): string {\r\n if (guid !== undefined) {\r\n return guid.replace('/Guid(', '').replace('/', '').replace(')', '');\r\n } else {\r\n return '';\r\n }\r\n }\r\n\r\n /**\r\n * Get the term set ID by its name\r\n * @param termstore\r\n * @param termset\r\n */\r\n private getTermSetId(termstore: ITermStore[], termsetName: string): ITermSet {\r\n if (termstore && termstore.length > 0 && termsetName) {\r\n // Get the first term store\r\n const ts = termstore[0];\r\n // Check if the term store contains groups\r\n if (ts.Groups && ts.Groups._Child_Items_) {\r\n for (const group of ts.Groups._Child_Items_) {\r\n // Check if the group contains term sets\r\n if (group.TermSets && group.TermSets._Child_Items_) {\r\n for (const termSet of group.TermSets._Child_Items_) {\r\n // Check if the term set is found\r\n if (termSet.Name === termsetName) {\r\n return termSet;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private getTermsById(termId, useSessionStorage: boolean = true) {\r\n try {\r\n if (useSessionStorage && window.sessionStorage) {\r\n const terms = window.sessionStorage.getItem(termId);\r\n if (terms) {\r\n return JSON.parse(terms);\r\n } else {\r\n return null;\r\n }\r\n } else {\r\n return null;\r\n }\r\n } catch (error) {\r\n return null;\r\n }\r\n }\r\n\r\n private searchTermsBySearchText(terms, searchText) {\r\n if (terms) {\r\n return terms.filter((t) => { return t.name.toLowerCase().indexOf(searchText.toLowerCase()) > -1; });\r\n } else {\r\n return [];\r\n }\r\n }\r\n\r\n /**\r\n * Searches terms for the given term set\r\n * @param searchText\r\n * @param termsetId\r\n */\r\n private searchTermsByTermSet(searchText: string): Promise {\r\n return new Promise(resolve => {\r\n this.getTermStores().then(termStore => {\r\n let termSetId = this.props.termsetNameOrID;\r\n if (!this.isGuid(termSetId)) {\r\n // Get the ID of the provided term set name\r\n const crntTermSet = this.getTermSetId(termStore, termSetId);\r\n if (crntTermSet) {\r\n termSetId = this.cleanGuid(crntTermSet.Id);\r\n } else {\r\n resolve(null);\r\n return;\r\n }\r\n }\r\n if (termStore === undefined || termStore.length === 0) {\r\n resolve(null);\r\n return;\r\n }\r\n const loc: number = this.context.pageContext.cultureInfo.currentUICultureName === 'de-de' ? 1031 : 1033;\r\n const data: any = {\r\n start: searchText,\r\n lcid: loc !== 0 ? loc : this.context.pageContext.web.language,\r\n sspList: this.cleanGuid(termStore[0].Id),\r\n termSetList: termSetId,\r\n anchorId: this.props.anchorId ? this.props.anchorId : EmptyGuid,\r\n isSpanTermStores: false,\r\n isSpanTermSets: false,\r\n isIncludeUnavailable: this.props.hideTagsNotAvailableForTagging === true,\r\n isIncludeDeprecated: this.props.hideDeprecatedTags === true,\r\n isAddTerms: false,\r\n isIncludePathData: false,\r\n excludeKeyword: false,\r\n excludedTermset: EmptyGuid\r\n };\r\n\r\n const reqHeaders: Headers = new Headers();\r\n reqHeaders.append('accept', 'application/json');\r\n reqHeaders.append('content-type', 'application/json');\r\n\r\n const httpPostOptions: ISPHttpClientOptions = {\r\n headers: reqHeaders,\r\n body: JSON.stringify(data)\r\n };\r\n\r\n return this.context.spHttpClient.post(this.suggestionServiceUrl, SPHttpClient.configurations.v1, httpPostOptions).then((serviceResponse: SPHttpClientResponse) => {\r\n return serviceResponse.json().then((serviceJSONResponse: any) => {\r\n const groups = serviceJSONResponse.d.Groups;\r\n if (groups && groups.length > 0) {\r\n // Retrieve the term collection results\r\n const terms: ISuggestTerm[] = groups[0].Suggestions;\r\n if (terms.length > 0) {\r\n // Retrieve all terms\r\n\r\n const returnTerms: IPickerTerm[] = terms.map((term: ISuggestTerm) => this.convertSuggestTermToPickerTerm(term));\r\n resolve(returnTerms);\r\n return;\r\n }\r\n\r\n }\r\n\r\n resolve([]);\r\n });\r\n });\r\n });\r\n });\r\n }\r\n\r\n private isGuid(strGuid: string): boolean {\r\n return /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/.test(strGuid);\r\n }\r\n\r\n /**\r\n * Sorting terms based on their path and depth\r\n *\r\n * @param terms\r\n */\r\n private sortTerms(terms: ITerm[]) {\r\n // Start sorting by depth\r\n let newTermsOrder: ITerm[] = [];\r\n let itemsToSort: boolean = true;\r\n let pathLevel: number = 1;\r\n while (itemsToSort) {\r\n // Get terms for the current level\r\n let crntTerms = terms.filter(term => term.PathDepth === pathLevel);\r\n if (crntTerms && crntTerms.length > 0) {\r\n crntTerms = crntTerms.sort(this.sortTermByPath);\r\n\r\n if (pathLevel !== 1) {\r\n crntTerms = crntTerms.reverse();\r\n for (const crntTerm of crntTerms) {\r\n const pathElms: string[] = crntTerm.PathOfTerm.split(';');\r\n // Last item is not needed for parent path\r\n pathElms.pop();\r\n // Find the parent item and add the new item\r\n const idx: number = findIndex(newTermsOrder, term => term.PathOfTerm === pathElms.join(';'));\r\n if (idx !== -1) {\r\n newTermsOrder.splice(idx + 1, 0, crntTerm);\r\n } else {\r\n // Push the item at the end if the parent couldn't be found\r\n newTermsOrder.push(crntTerm);\r\n }\r\n }\r\n } else {\r\n newTermsOrder = crntTerms;\r\n }\r\n\r\n ++pathLevel;\r\n } else {\r\n itemsToSort = false;\r\n }\r\n }\r\n return newTermsOrder;\r\n }\r\n\r\n /**\r\n * Sort the terms by their path\r\n *\r\n * @param a term 2\r\n * @param b term 2\r\n */\r\n private sortTermByPath(a: ITerm, b: ITerm) {\r\n if (a.CustomSortOrderIndex === -1) {\r\n if (a.PathOfTerm.toLowerCase() < b.PathOfTerm.toLowerCase()) {\r\n return -1;\r\n }\r\n if (a.PathOfTerm.toLowerCase() > b.PathOfTerm.toLowerCase()) {\r\n return 1;\r\n }\r\n return 0;\r\n } else {\r\n if (a.CustomSortOrderIndex < b.CustomSortOrderIndex) {\r\n return -1;\r\n }\r\n if (a.CustomSortOrderIndex > b.CustomSortOrderIndex) {\r\n return 1;\r\n }\r\n return 0;\r\n }\r\n }\r\n\r\n private convertTermToPickerTerm(term: ITerm): IPickerTerm {\r\n return {\r\n key: this.cleanGuid(term.Id),\r\n name: term.Name,\r\n path: term.PathOfTerm,\r\n termSet: this.cleanGuid(term.TermSet.Id),\r\n termSetName: term.TermSet.Name\r\n };\r\n }\r\n\r\n private convertSuggestTermToPickerTerm(term: ISuggestTerm): IPickerTerm {\r\n let path: string = '';\r\n let termSetName: string = '';\r\n if (term.Paths && term.Paths.length > 0) {\r\n const fullPath: string = term.Paths[0].replace(/^\\[/, '').replace(/\\]$/, '');\r\n const fullPathParts: string[] = fullPath.split(':');\r\n path = fullPathParts.join(';') + ';' + term.DefaultLabel;\r\n termSetName = fullPathParts[0];\r\n }\r\n return {\r\n key: this.cleanGuid(term.Id),\r\n name: term.DefaultLabel,\r\n path: path,\r\n termSet: EmptyGuid, // TermSet Guid is not given with suggestion\r\n termSetName: termSetName\r\n };\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ../../src/services/SPTermStorePickerService.ts","module.exports = __WEBPACK_EXTERNAL_MODULE_15__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"@microsoft/sp-http\"\n// module id = 15\n// module chunks = 0","module.exports = __WEBPACK_EXTERNAL_MODULE_16__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"@microsoft/sp-lodash-subset\"\n// module id = 16\n// module chunks = 0","export class ItemDictionary {\r\n public Get(key: string): T {\r\n return this[key];\r\n }\r\n\r\n public Add(key: string, value: T): void {\r\n this[key] = value;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ../../src/services/ItemDictionary.ts","// tslint:disable:max-line-length\r\n// tslint:disable:match-default-export-name\r\n// tslint:disable:typedef\r\n// tslint:disable:variable-name\r\n\r\nimport { ApplicationCustomizerContext } from '@microsoft/sp-application-base';\r\nimport { SPPermission } from '@microsoft/sp-page-context';\r\nimport { IMenuItem } from '../../services/IMenuItem';\r\nimport { MegaMenuSettingsPanel } from './MegaMenuSettings';\r\nimport { IMegaMenuApplicationCustomizerProperties } from './MegaMenuApplicationCustomizer';\r\n\r\nimport styles from './MegaMenu.module.scss'; // tslint:disable-line:no-unused-variable\r\n\r\nexport class MegaMenuRenderer {\r\n private _settingsPanel?: MegaMenuSettingsPanel;\r\n constructor(private context: ApplicationCustomizerContext, private menuItems: IMenuItem[], private updateCallback: (data: IMegaMenuApplicationCustomizerProperties) => void) { }\r\n\r\n public render(container: HTMLElement) {\r\n // Clear any existing content\r\n container.innerHTML = '';\r\n container.id = 'CustomNavigation';\r\n \r\n // Create the main nav element\r\n const nav = document.createElement('nav');\r\n nav.id = 'Mega-Menu';\r\n nav.className = 'mega-menu-main';\r\n nav.setAttribute('role', 'navigation');\r\n nav.setAttribute('aria-label', 'Hauptnavigation');\r\n\r\n // Create the top-level menubar\r\n const topLevelUl = document.createElement('ul');\r\n topLevelUl.setAttribute('role', 'menubar');\r\n\r\n // Process each top-level menu item\r\n this.menuItems.forEach(topLevelItem => {\r\n const topLevelLi = this.createTopLevelItem(topLevelItem);\r\n topLevelUl.appendChild(topLevelLi);\r\n });\r\n\r\n // Only if current user has ManageWeb permissions in this website can they access the settings\r\n if (this.context.pageContext.web.permissions.hasPermission(SPPermission.manageWeb)) {\r\n topLevelUl.appendChild(this.createSettingsItem());\r\n }\r\n\r\n nav.appendChild(topLevelUl);\r\n container.appendChild(nav);\r\n\r\n // Attach accessibility event listeners after rendering\r\n this.attachEventListeners();\r\n this.createScreenReaderAnnouncer();\r\n }\r\n\r\n private createSettingsItem(): HTMLLIElement {\r\n const li = document.createElement('li');\r\n li.setAttribute('role', 'none');\r\n\r\n // Verwenden eines Links-ähnlichen Buttons damit Styling identisch zu Top-Level Items ist\r\n const btn = document.createElement('button');\r\n btn.type = 'button';\r\n btn.className = 'menu-item-link menu-item-settings'; // reuse same base styles\r\n btn.setAttribute('role', 'menuitem');\r\n btn.setAttribute('tabindex', '0');\r\n btn.setAttribute('aria-haspopup', 'false');\r\n btn.setAttribute('aria-label', 'Einstellungen');\r\n btn.title = 'Einstellungen';\r\n\r\n // Nur EIN Icon: Wenn Fabric Icons geladen sind, zeigt ms-Icon das Symbol. Fallback via aria-label für Screenreader\r\n const icon = document.createElement('span');\r\n icon.className = 'ms-Icon ms-Icon--Settings menu-item-settings__icon';\r\n icon.setAttribute('aria-hidden', 'true');\r\n btn.appendChild(icon);\r\n\r\n btn.addEventListener('click', () => this.openSettings());\r\n btn.addEventListener('keydown', (e: KeyboardEvent) => {\r\n if (e.key === 'Enter' || e.key === ' ') {\r\n e.preventDefault();\r\n this.openSettings();\r\n }\r\n });\r\n\r\n li.appendChild(btn);\r\n return li;\r\n }\r\n\r\n private openSettings(): void {\r\n if (!this._settingsPanel) {\r\n this._settingsPanel = new MegaMenuSettingsPanel(this.context, this.updateCallback);\r\n }\r\n this._settingsPanel.open();\r\n }\r\n\r\n // Panel logic moved to MegaMenuSettingsPanel\r\n\r\n private createTopLevelItem(item: IMenuItem): HTMLLIElement {\r\n const li = document.createElement('li');\r\n li.setAttribute('role', 'none');\r\n\r\n // Create the top-level element (link or span)\r\n const topElement = this.createTopLevelElement(item);\r\n li.appendChild(topElement);\r\n\r\n // If the item has children, create the mega menu\r\n if (item.hasChildren() && item.items && item.items.length > 0) {\r\n const megaMenu = this.createMegaMenu(item);\r\n li.appendChild(megaMenu);\r\n }\r\n\r\n return li;\r\n }\r\n\r\n private createTopLevelElement(item: IMenuItem): HTMLElement {\r\n let element: HTMLElement;\r\n\r\n if (item.url) {\r\n // Create as link\r\n element = document.createElement('a');\r\n (element as HTMLAnchorElement).href = item.url;\r\n element.className = 'menu-item-link';\r\n } else {\r\n // Create as span (no link)\r\n element = document.createElement('span');\r\n element.className = 'menu-item-text';\r\n element.setAttribute('tabindex', '0');\r\n }\r\n\r\n element.setAttribute('role', 'menuitem');\r\n element.setAttribute('aria-haspopup', 'true');\r\n element.setAttribute('aria-expanded', 'false');\r\n element.textContent = item.label;\r\n\r\n if (item.hoverText) {\r\n element.title = item.hoverText;\r\n }\r\n\r\n return element;\r\n }\r\n\r\n private createMegaMenu(parentItem: IMenuItem): HTMLDivElement {\r\n const megaMenuDiv = document.createElement('div');\r\n megaMenuDiv.className = 'mega-menu';\r\n megaMenuDiv.setAttribute('role', 'menu');\r\n megaMenuDiv.setAttribute('aria-label', `${parentItem.label} Unterkategorien`);\r\n\r\n const gridDiv = document.createElement('div');\r\n gridDiv.className = 'mega-menu-grid';\r\n\r\n // Process second-level items (categories)\r\n if (parentItem.items) {\r\n parentItem.items.forEach(secondLevelItem => {\r\n const categoryDiv = this.createCategorySection(secondLevelItem);\r\n gridDiv.appendChild(categoryDiv);\r\n });\r\n }\r\n\r\n megaMenuDiv.appendChild(gridDiv);\r\n return megaMenuDiv;\r\n }\r\n\r\n private createCategorySection(item: IMenuItem): HTMLDivElement {\r\n const categoryDiv = document.createElement('div');\r\n categoryDiv.className = 'mega-menu-category';\r\n\r\n // Create the category header (h3)\r\n const h3 = document.createElement('h3');\r\n\r\n if (item.url) {\r\n // Category header as link\r\n const link = document.createElement('a');\r\n link.href = item.url;\r\n link.textContent = item.label;\r\n if (item.hoverText) {\r\n link.title = item.hoverText;\r\n }\r\n h3.appendChild(link);\r\n } else {\r\n // Category header as span (no link)\r\n const span = document.createElement('span');\r\n span.textContent = item.label;\r\n if (item.hoverText) {\r\n span.title = item.hoverText;\r\n }\r\n h3.appendChild(span);\r\n }\r\n\r\n categoryDiv.appendChild(h3);\r\n\r\n // Create the third-level items list if they exist\r\n if (item.hasChildren() && item.items && item.items.length > 0) {\r\n const ul = document.createElement('ul');\r\n\r\n item.items.forEach(thirdLevelItem => {\r\n const li = document.createElement('li');\r\n const link = document.createElement('a');\r\n\r\n link.href = thirdLevelItem.url || '#';\r\n link.textContent = thirdLevelItem.label;\r\n\r\n if (thirdLevelItem.hoverText) {\r\n link.title = thirdLevelItem.hoverText;\r\n }\r\n\r\n li.appendChild(link);\r\n ul.appendChild(li);\r\n });\r\n\r\n categoryDiv.appendChild(ul);\r\n }\r\n\r\n return categoryDiv;\r\n }\r\n\r\n private attachEventListeners(): void {\r\n const headings = document.querySelectorAll('#Mega-Menu > ul > li > a, #Mega-Menu > ul > li > span[role=\"menuitem\"]');\r\n\r\n for (let i = 0; i < headings.length; i++) {\r\n const heading = headings[i] as HTMLElement;\r\n const megaMenu = heading.nextElementSibling as HTMLElement;\r\n\r\n if (megaMenu && megaMenu.classList.contains('mega-menu')) {\r\n this.attachKeyboardNavigation(heading, megaMenu);\r\n this.attachMouseEvents(heading, megaMenu);\r\n this.attachFocusManagement(heading, megaMenu);\r\n }\r\n }\r\n\r\n // Global keyboard navigation\r\n this.attachGlobalKeyboardNavigation();\r\n }\r\n\r\n private attachKeyboardNavigation(heading: HTMLElement, megaMenu: HTMLElement): void {\r\n heading.addEventListener('keydown', (e: KeyboardEvent) => {\r\n if (e.key === 'Enter') {\r\n // Enter: Navigation (nur bei Links ohne Mega-Menu-Override)\r\n if (heading.tagName === 'A') {\r\n // Lasse normale Link-Navigation zu (KEIN preventDefault!)\r\n return;\r\n } else {\r\n // Bei span: Toggle Menu\r\n e.preventDefault();\r\n this.toggleMegaMenu(heading, megaMenu);\r\n }\r\n } else if (e.key === ' ') {\r\n // Space: Toggle Dropdown (immer)\r\n e.preventDefault();\r\n this.toggleMegaMenu(heading, megaMenu);\r\n } else if (e.key === 'ArrowDown') {\r\n // Pfeil runter: Menü öffnen + erster Link\r\n e.preventDefault();\r\n this.openMegaMenu(heading, megaMenu);\r\n this.focusFirstLink(megaMenu);\r\n } else if (e.key === 'ArrowUp') {\r\n // Pfeil hoch: Menü schließen\r\n e.preventDefault();\r\n this.closeMegaMenu(heading, megaMenu);\r\n } else if (e.key === 'Escape') {\r\n // Escape: Menü schließen\r\n e.preventDefault();\r\n this.closeMegaMenu(heading, megaMenu);\r\n heading.focus();\r\n }\r\n });\r\n\r\n // Click Event für Top-Level Links - NORMALE Navigation erlauben\r\n if (heading.tagName === 'A') {\r\n heading.addEventListener('click', (e: MouseEvent) => {\r\n // Links sollen normal navigieren, nicht das Mega-Menu toglen\r\n // Wenn der User das Menu öffnen will, soll er Space oder Pfeil↓ nutzen\r\n console.log('Link geklickt:', (heading as HTMLAnchorElement).href);\r\n // KEIN preventDefault() - normale Link-Navigation\r\n });\r\n }\r\n\r\n // Focus Management - KEIN automatisches Öffnen oder Schließen\r\n heading.addEventListener('focus', () => {\r\n console.log('Focus auf:', heading.textContent);\r\n // Einfach nur fokussiert - keine automatischen Aktionen!\r\n });\r\n }\r\n\r\n private attachMouseEvents(heading: HTMLElement, megaMenu: HTMLElement): void {\r\n const parentLi = heading.parentElement as HTMLElement;\r\n\r\n parentLi.addEventListener('mouseenter', () => {\r\n this.openMegaMenu(heading, megaMenu);\r\n });\r\n\r\n parentLi.addEventListener('mouseleave', () => {\r\n this.closeMegaMenu(heading, megaMenu);\r\n });\r\n }\r\n\r\n private attachFocusManagement(heading: HTMLElement, megaMenu: HTMLElement): void {\r\n // Focus-Verlust-Behandlung - vereinfacht\r\n megaMenu.addEventListener('focusout', (e: FocusEvent) => {\r\n // Kurz warten, um zu prüfen ob Focus innerhalb des Mega-Menus bleibt\r\n setTimeout(() => {\r\n const focusedElement = document.activeElement as HTMLElement;\r\n const isInsideThisMenu = megaMenu.contains(focusedElement);\r\n const isOnThisTrigger = focusedElement === heading;\r\n const isInAnyMegaMenu = focusedElement.closest('.mega-menu');\r\n const isOnAnyTopLevel = focusedElement.closest('#Mega-Menu > ul > li > a, #Mega-Menu > ul > li > span');\r\n\r\n // Nur schließen wenn Focus komplett außerhalb der Navigation ist\r\n if (!isInsideThisMenu && !isOnThisTrigger && !isInAnyMegaMenu && !isOnAnyTopLevel) {\r\n console.log('Schließe Menu wegen Focus-Verlust');\r\n this.closeMegaMenu(heading, megaMenu);\r\n }\r\n }, 150);\r\n });\r\n }\r\n\r\n private attachGlobalKeyboardNavigation(): void {\r\n document.addEventListener('keydown', (e: KeyboardEvent) => {\r\n const activeElement = document.activeElement as HTMLElement;\r\n\r\n if (e.key === 'Escape') {\r\n const openMenu = document.querySelector('.mega-menu[aria-expanded=\"true\"]') as HTMLElement;\r\n if (openMenu) {\r\n const triggerLink = openMenu.previousElementSibling as HTMLElement;\r\n this.closeMegaMenu(triggerLink, openMenu);\r\n triggerLink.focus();\r\n }\r\n }\r\n\r\n // Tab-Navigation: Nur bei spezifischen Übergängen eingreifen\r\n if (e.key === 'Tab') {\r\n // Von Top-Level zum ersten Link im offenen Menu\r\n if (!e.shiftKey) {\r\n const currentTopLevel = activeElement.closest('#Mega-Menu > ul > li > a, #Mega-Menu > ul > li > span') as HTMLElement;\r\n if (currentTopLevel) {\r\n const parentLi = currentTopLevel.closest('li') as HTMLElement;\r\n const megaMenu = parentLi.querySelector('.mega-menu.js-open') as HTMLElement;\r\n if (megaMenu) {\r\n // Nur eingreifen wenn wir vom Trigger weg-tabben\r\n e.preventDefault();\r\n const firstLink = megaMenu.querySelector('a') as HTMLElement;\r\n if (firstLink) {\r\n firstLink.focus();\r\n }\r\n return;\r\n }\r\n }\r\n }\r\n\r\n // Shift+Tab: Vom ersten Link im Menu zurück zum Trigger\r\n if (e.shiftKey) {\r\n const megaMenu = activeElement.closest('.mega-menu') as HTMLElement;\r\n if (megaMenu && megaMenu.classList.contains('js-open')) {\r\n const allLinksInMenu = megaMenu.querySelectorAll('a');\r\n const firstLinkInMenu = allLinksInMenu[0] as HTMLElement;\r\n\r\n // Nur eingreifen wenn wir beim ersten Link sind\r\n if (activeElement === firstLinkInMenu) {\r\n e.preventDefault();\r\n const triggerElement = megaMenu.previousElementSibling as HTMLElement;\r\n triggerElement.focus();\r\n return;\r\n }\r\n }\r\n }\r\n\r\n // Ansonsten: Normale Tab-Navigation nicht unterbrechen!\r\n }\r\n });\r\n }\r\n\r\n private openMegaMenu(trigger: HTMLElement, menu: HTMLElement): void {\r\n trigger.setAttribute('aria-expanded', 'true');\r\n menu.setAttribute('aria-expanded', 'true');\r\n menu.classList.add('js-open');\r\n console.log('Menu geöffnet:', trigger.textContent);\r\n }\r\n\r\n private closeMegaMenu(trigger: HTMLElement, menu: HTMLElement): void {\r\n trigger.setAttribute('aria-expanded', 'false');\r\n menu.setAttribute('aria-expanded', 'false');\r\n menu.classList.remove('js-open');\r\n console.log('Menu geschlossen:', trigger.textContent);\r\n }\r\n\r\n private toggleMegaMenu(trigger: HTMLElement, menu: HTMLElement): void {\r\n const isOpen = trigger.getAttribute('aria-expanded') === 'true';\r\n if (isOpen) {\r\n this.closeMegaMenu(trigger, menu);\r\n } else {\r\n this.closeAllMegaMenus();\r\n this.openMegaMenu(trigger, menu);\r\n }\r\n }\r\n\r\n private closeAllMegaMenus(): void {\r\n const allTriggers = document.querySelectorAll('#Mega-Menu > ul > li > a[aria-expanded=\"true\"], #Mega-Menu > ul > li > span[aria-expanded=\"true\"]');\r\n for (let i = 0; i < allTriggers.length; i++) {\r\n const trigger = allTriggers[i] as HTMLElement;\r\n const menu = trigger.nextElementSibling as HTMLElement;\r\n if (menu) {\r\n this.closeMegaMenu(trigger, menu);\r\n }\r\n }\r\n }\r\n\r\n // removed unused closeOtherMegaMenus (was previously declared but not used)\r\n\r\n private focusFirstLink(megaMenu: HTMLElement): void {\r\n const firstLink = megaMenu.querySelector('a') as HTMLElement;\r\n if (firstLink) {\r\n firstLink.focus();\r\n }\r\n }\r\n\r\n private createScreenReaderAnnouncer(): void {\r\n // Screenreader-Ankündigungen\r\n const srAnnouncer = document.createElement('div');\r\n srAnnouncer.setAttribute('aria-live', 'polite');\r\n srAnnouncer.setAttribute('aria-atomic', 'true');\r\n srAnnouncer.className = 'sr-only';\r\n document.body.appendChild(srAnnouncer);\r\n\r\n console.log('Screenreader-Ankündigungen sind jetzt bereit');\r\n }\r\n}\n\n\n// WEBPACK FOOTER //\n// ../../../src/extensions/megaMenu/MegaMenuRenderer.ts","module.exports = __WEBPACK_EXTERNAL_MODULE_19__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"@microsoft/sp-page-context\"\n// module id = 19\n// module chunks = 0","// tslint:disable:max-line-length export-name\r\n\r\n/*\r\n Diese Klasse liest die aktuellen Properties des Application Customizers und zeigt sie an.\r\n Wenn man sie verändert, werden sie wieder in den Properties des Application Customizers persistiert.\r\n Außerdem wird die dataUpdated-Funktion aufgerufen, damit die aktuell aktive Komponente sich neu zeichnen kann.\r\n*/\r\n\r\nimport { ApplicationCustomizerContext } from '@microsoft/sp-application-base';\r\nimport { IMegaMenuApplicationCustomizerProperties, UserCustomActionMegaMenuId } from './MegaMenuApplicationCustomizer';\r\nimport { UserCustomActionService } from '../../services/UserCustomActionService/UserCustomActionService';\r\nimport { UserCustomActionScope } from '../../services/UserCustomActionService/UserCustomActionScope';\r\nimport { IUserCustomActionProps } from '../../services/UserCustomActionService/IUserCustomActionProps';\r\n\r\nexport class MegaMenuSettingsPanel {\r\n private _service: UserCustomActionService;\r\n private _ucaId: string;\r\n private _panelElement: HTMLElement | undefined = undefined;\r\n private _overlayElement: HTMLElement | undefined = undefined;\r\n\r\n constructor(private context: ApplicationCustomizerContext, private dataUpdated: (data: IMegaMenuApplicationCustomizerProperties) => void) {\r\n this._service = new UserCustomActionService(this.context);\r\n }\r\n\r\n public async open(): Promise {\r\n if (this._panelElement) {\r\n return;\r\n }\r\n const currentProps: IMegaMenuApplicationCustomizerProperties = await this.readApplicationCustomizerProps();\r\n this._createPanel(currentProps);\r\n }\r\n\r\n public close(): void {\r\n if (this._panelElement) {\r\n this._panelElement.remove();\r\n this._panelElement = undefined;\r\n }\r\n if (this._overlayElement) {\r\n this._overlayElement.remove();\r\n this._overlayElement = undefined;\r\n }\r\n // Fokus entfernen (kein sichtbarer Fokus-Rahmen nach Dialog-Schließung)\r\n document.body.focus();\r\n document.body.blur();\r\n }\r\n\r\n private async readApplicationCustomizerProps(): Promise {\r\n const ucas: IUserCustomActionProps[] = await this._service.getUserCustomActions(UserCustomActionScope.Site);\r\n const candidates: IUserCustomActionProps[] = ucas.filter(uca => uca.ClientSideComponentId === UserCustomActionMegaMenuId);\r\n if (candidates.length) {\r\n const uca: IUserCustomActionProps = candidates[0];\r\n this._ucaId = uca.Id;\r\n return JSON.parse(uca.ClientSideComponentProperties) as IMegaMenuApplicationCustomizerProperties;\r\n } else {\r\n console.error('UserCustomAction für das Megamenü nicht gefunden. Alles ist sinnlos.');\r\n return {\r\n termSetName: '',\r\n cssUrl: ''\r\n };\r\n }\r\n }\r\n\r\n private async saveApplicationCustomizerProps(componentProps: IMegaMenuApplicationCustomizerProperties): Promise {\r\n try {\r\n const newUserCustomActionsProperty: {} = {\r\n ClientSideComponentProperties: JSON.stringify(componentProps)\r\n };\r\n await this._service.updateUserCustomAction(UserCustomActionScope.Site, this._ucaId, newUserCustomActionsProperty);\r\n this.dataUpdated(componentProps);\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n private _createPanel(props: IMegaMenuApplicationCustomizerProperties): void {\r\n const overlay: HTMLElement = document.createElement('div');\r\n overlay.className = 'mm-settings-overlay';\r\n overlay.tabIndex = -1;\r\n overlay.onclick = () => this.close();\r\n this._overlayElement = overlay;\r\n\r\n const panel: HTMLElement = document.createElement('div');\r\n panel.className = 'mm-settings-panel';\r\n panel.setAttribute('role', 'dialog');\r\n panel.setAttribute('aria-modal', 'true');\r\n panel.setAttribute('aria-label', 'MegaMenu Einstellungen');\r\n panel.innerHTML = this._getMarkup(props.termSetName, props.cssUrl);\r\n this._panelElement = panel;\r\n\r\n document.body.appendChild(overlay);\r\n document.body.appendChild(panel);\r\n\r\n const closeBtn: HTMLButtonElement = panel.querySelector('.mm-settings-close') as HTMLButtonElement;\r\n const cancelBtn: HTMLButtonElement = panel.querySelector('.mm-settings-cancel') as HTMLButtonElement;\r\n const saveBtn: HTMLButtonElement = panel.querySelector('.mm-settings-save') as HTMLButtonElement;\r\n const firstInput: HTMLInputElement = panel.querySelector('#mm-setting-termset') as HTMLInputElement;\r\n\r\n if (closeBtn) { closeBtn.onclick = () => this.close(); }\r\n if (cancelBtn) { cancelBtn.onclick = () => this.close(); }\r\n if (saveBtn) { saveBtn.onclick = () => this._save(); }\r\n\r\n panel.addEventListener('keydown', (e: KeyboardEvent) => {\r\n if (e.key === 'Escape') { e.preventDefault(); this.close(); } else if (e.key === 'Tab') { this._trapFocus(e); }\r\n });\r\n\r\n setTimeout(() => { if (firstInput) { firstInput.focus(); } }, 0);\r\n }\r\n\r\n private _getMarkup(termSet: string, cssUrl: string): string {\r\n return `
\r\n

Einstellungen

\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n `;\r\n }\r\n\r\n private _save(): void {\r\n if (!this._panelElement) {\r\n return;\r\n }\r\n const termSetInput: HTMLInputElement = this._panelElement.querySelector('#mm-setting-termset') as HTMLInputElement;\r\n const cssInput: HTMLInputElement = this._panelElement.querySelector('#mm-setting-css') as HTMLInputElement;\r\n this.saveApplicationCustomizerProps({\r\n termSetName: termSetInput && termSetInput.value ? termSetInput.value : '',\r\n cssUrl: cssInput && cssInput.value ? cssInput.value : ''\r\n });\r\n this.close();\r\n }\r\n\r\n /**\r\n * Hält den Fokus innerhalb des Settings-Panels gefangen (Focus Trapping).\r\n * Wichtig für Accessibility: Verhindert, dass Tab-Navigation aus dem modalen Dialog herausführt.\r\n * Bei Tab am letzten Element → springt zum ersten, bei Shift+Tab am ersten → springt zum letzten.\r\n */\r\n private _trapFocus(e: KeyboardEvent): void {\r\n if (!this._panelElement) {\r\n return;\r\n }\r\n const focusable: NodeListOf = this._panelElement.querySelectorAll('button, input');\r\n if (!focusable || focusable.length === 0) {\r\n return;\r\n }\r\n const first: HTMLElement = focusable[0] as HTMLElement;\r\n const last: HTMLElement = focusable[focusable.length - 1] as HTMLElement;\r\n const active: HTMLElement = document.activeElement as HTMLElement;\r\n if (e.shiftKey && active === first) {\r\n e.preventDefault();\r\n last.focus();\r\n } else if (!e.shiftKey && active === last) {\r\n e.preventDefault();\r\n first.focus();\r\n }\r\n }\r\n\r\n private _escape(value: string): string {\r\n if (value) {\r\n return value.replace(/&/g, '&').replace(/\"/g, '"').replace(//g, '>');\r\n } else {\r\n return '';\r\n }\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ../../../src/extensions/megaMenu/MegaMenuSettings.ts","// tslint:disable:max-line-length\r\n// tslint:disable:export-name\r\nimport { UserCustomActionAddResult, UserCustomActions, UserCustomActionUpdateResult } from '@pnp/sp/src/usercustomactions';\r\nimport { IUserCustomActionService } from './IUserCustomActionService';\r\nimport { sp } from '@pnp/sp';\r\nimport { UserCustomActionScope } from './UserCustomActionScope';\r\nimport { IUserCustomActionProps } from './IUserCustomActionProps';\r\nimport { ApplicationCustomizerContext } from '@microsoft/sp-application-base';\r\n\r\nexport class UserCustomActionService implements IUserCustomActionService {\r\n constructor(context: ApplicationCustomizerContext) {\r\n sp.setup({\r\n spfxContext: context\r\n });\r\n }\r\n public async getUserCustomActions(scope: UserCustomActionScope, listId?: string): Promise {\r\n try {\r\n let actions: UserCustomActions | IUserCustomActionProps[];\r\n switch (scope) {\r\n case UserCustomActionScope.Web:\r\n actions = await sp.web.userCustomActions.get();\r\n break;\r\n case UserCustomActionScope.Site:\r\n actions = await sp.site.userCustomActions.get();\r\n break;\r\n case UserCustomActionScope.List:\r\n if (!listId) {\r\n throw new Error('List ID is required for List scope');\r\n }\r\n actions = await sp.web.lists.getById(listId).userCustomActions.get();\r\n break;\r\n default:\r\n throw new Error('Invalid scope');\r\n }\r\n return actions as IUserCustomActionProps[];\r\n } catch (error) {\r\n console.error('Error getting user custom actions: ', error);\r\n throw error;\r\n }\r\n }\r\n\r\n public async getUserCustomActionById(scope: UserCustomActionScope, id: string, listId?: string): Promise {\r\n try {\r\n switch (scope) {\r\n case UserCustomActionScope.Web:\r\n return sp.web.userCustomActions.getById(id) as {} as IUserCustomActionProps;\r\n case UserCustomActionScope.Site:\r\n return sp.site.userCustomActions.getById(id) as {} as IUserCustomActionProps;\r\n case UserCustomActionScope.List:\r\n if (!listId) {\r\n throw new Error('List ID is required for List scope');\r\n }\r\n return sp.web.lists.getById(listId).userCustomActions.getById(id) as {} as IUserCustomActionProps;\r\n default:\r\n throw new Error('Invalid scope');\r\n }\r\n } catch (error) {\r\n console.error('Error getting user custom action by ID: ', error);\r\n throw error;\r\n }\r\n }\r\n\r\n public async addUserCustomAction(scope: UserCustomActionScope, customAction: IUserCustomActionProps, listId?: string): Promise {\r\n try {\r\n switch (scope) {\r\n case UserCustomActionScope.Web:\r\n return sp.web.userCustomActions.add(customAction);\r\n case UserCustomActionScope.Site:\r\n return sp.site.userCustomActions.add(customAction);\r\n case UserCustomActionScope.List:\r\n if (!listId) {\r\n throw new Error('List ID is required for List scope');\r\n }\r\n return sp.web.lists.getById(listId).userCustomActions.add(customAction);\r\n default:\r\n throw new Error('Invalid scope');\r\n }\r\n } catch (error) {\r\n console.error('Error adding user custom action: ', error);\r\n throw error;\r\n }\r\n }\r\n\r\n public async updateUserCustomAction(scope: UserCustomActionScope, id: string, props: {}, listId?: string): Promise {\r\n try {\r\n let result: UserCustomActionUpdateResult;\r\n switch (scope) {\r\n case UserCustomActionScope.Web:\r\n result = await sp.web.userCustomActions.getById(id).update(props);\r\n break;\r\n case UserCustomActionScope.Site:\r\n result = await sp.site.userCustomActions.getById(id).update(props);\r\n break;\r\n case UserCustomActionScope.List:\r\n if (!listId) {\r\n throw new Error('List ID is required for List scope');\r\n }\r\n result = await sp.web.lists.getById(listId).userCustomActions.getById(id).update(props);\r\n break;\r\n default:\r\n throw new Error('Invalid scope');\r\n }\r\n return result;\r\n } catch (error) {\r\n console.error('Error updating user custom action: ', error);\r\n throw error;\r\n }\r\n }\r\n\r\n public async deleteUserCustomAction(scope: UserCustomActionScope, customAction: IUserCustomActionProps, listId?: string): Promise {\r\n try {\r\n switch (scope) {\r\n case UserCustomActionScope.Web:\r\n return sp.web.userCustomActions.getById(customAction.Id).delete();\r\n case UserCustomActionScope.Site:\r\n return sp.site.userCustomActions.getById(customAction.Id).delete();\r\n case UserCustomActionScope.List:\r\n if (!listId) {\r\n throw new Error('List ID is required for List scope');\r\n }\r\n return sp.web.lists.getById(listId).userCustomActions.getById(customAction.Id).delete();\r\n default:\r\n throw new Error('Invalid scope');\r\n }\r\n } catch (error) {\r\n console.error('Error deleting user custom action: ', error);\r\n throw error;\r\n }\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ../../../src/services/UserCustomActionService/UserCustomActionService.ts","/* tslint:disable */\r\nrequire('./MegaMenu.module.css');\r\nconst styles = {\r\n mmSlideIn: 'mmSlideIn_09a8e1a7',\r\n mmFadeIn: 'mmFadeIn_09a8e1a7',\r\n};\r\n\r\nexport default styles;\r\n/* tslint:enable */\n\n\n// WEBPACK FOOTER //\n// ../../../src/extensions/megaMenu/MegaMenu.module.scss.ts","var content = require(\"!!../../../node_modules/css-loader/index.js??ref--0-1!./MegaMenu.module.css\");\nvar loader = require(\"C:\\\\_Projects\\\\MegaMenu\\\\node_modules\\\\@microsoft\\\\load-themed-styles\\\\lib\\\\index.js\");\n\nif(typeof content === \"string\") content = [[module.id, content]];\n\n// add the styles to the DOM\nfor (var i = 0; i < content.length; i++) loader.loadStyles(content[i][1], true);\n\nif(content.locals) module.exports = content.locals;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/extensions/megaMenu/MegaMenu.module.css\n// module id = 23\n// module chunks = 0","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".skip-link{position:absolute;top:-40px;left:6px;background:\\\"[theme:error, default: #a80000]\\\";color:\\\"[theme:white, default: #ffffff]\\\";padding:8px;text-decoration:none;font-weight:700;border-radius:4px;z-index:10000;transition:top .2s}.skip-link:focus{top:6px}.mega-menu-main{background:\\\"[theme:themePrimary, default: #0078d7]\\\";width:100%;position:relative}.mega-menu-main>ul{margin:0;list-style:none;padding-inline-start:0;display:-ms-grid;display:grid;-ms-grid-columns:(minmax(120px,1fr)) [auto-fit];grid-template-columns:repeat(auto-fit,minmax(120px,1fr));width:100%}.mega-menu-main>ul>li{position:static}.mega-menu-main>ul>li>a,.mega-menu-main>ul>li>span[role=menuitem]{display:block;padding:15px 20px;transition:all .3s ease;outline:0;cursor:pointer}@media (max-width:900px){.mega-menu-main>ul>li>a,.mega-menu-main>ul>li>span[role=menuitem]{font-size:17px}}.mega-menu-main>ul>li:hover>a,.mega-menu-main>ul>li:hover>span[role=menuitem]{color:\\\"[theme:white, default: #ffffff]\\\";background:\\\"[theme:themeLighter, default: #deecf9]\\\"}.mega-menu-main>ul>li>a:focus,.mega-menu-main>ul>li>span[role=menuitem]:focus{color:\\\"[theme:white, default: #ffffff]\\\"}.mega-menu-main>ul>li>a:active,.mega-menu-main>ul>li>span[role=menuitem]:active{transform:translateY(0)}.mega-menu{position:absolute;left:0;right:0;top:100%;width:100%;background:\\\"[theme:white, default: #ffffff]\\\";box-shadow:0 4px 12px rgba(0,0,0,.15);display:none;padding:40px;max-height:calc(100vh - 60px);overflow-y:auto;z-index:1000;visibility:hidden;opacity:0;transition:visibility 0s,opacity .3s}.mega-menu-main>ul>li:hover .mega-menu{visibility:visible;opacity:1;display:block}.mega-menu.js-open{visibility:visible!important;opacity:1!important;display:block!important}.mega-menu-grid{max-width:none;margin:0 auto;display:-ms-grid;display:grid;-ms-grid-columns:(minmax(200px,1fr)) [auto-fit];grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:30px}.mega-menu-category{border-right:1px solid #d3d3d3}.mega-menu-category>h3{margin-bottom:12px;padding-bottom:8px}.mega-menu-category>h3>a,.mega-menu-category>h3>span{color:\\\"[theme:neutralPrimary, default: #333333]\\\";font-size:16px;font-weight:700;display:block}.mega-menu-category>h3>a{text-decoration:none;padding:0;border-radius:0;transition:color .2s ease;outline:0}.mega-menu-category>h3>a:hover{color:\\\"[theme:themePrimary, default: #0078d7]\\\"}.mega-menu-category>h3>a:focus{color:\\\"[theme:white, default: #ffffff]\\\";background:\\\"[theme:error, default: #a80000]\\\";text-decoration:none;padding:4px 0;margin:-4px -8px}.mega-menu-category ul{list-style:none;padding-inline-start:0}.mega-menu-category ul li{margin-bottom:4px}.mega-menu-category ul li a{color:\\\"[theme:neutralSecondary, default: #666666]\\\";text-decoration:none;font-size:14px;transition:all .2s ease;display:block;padding:4px 0;border-radius:4px;outline:0}.mega-menu-category ul li a:hover{padding-left:12px}.mega-menu-category ul li a:focus{color:\\\"[theme:white, default: #ffffff]\\\";padding-left:12px}.mega-menu-category ul li a{position:relative}@media (prefers-contrast:high){.mega-menu-main>ul>li>a:focus,.mega-menu-main>ul>li>span[role=menuitem]:focus{outline:4px solid;outline-offset:2px}.mega-menu-category>h3>a:focus,.mega-menu-category ul li a:focus{outline:3px solid;outline-offset:2px}}.content{padding:40px;max-width:1200px;margin:0 auto}.menu-item-link,.menu-item-text{display:block;padding:15px 20px;color:\\\"[theme:neutralPrimary, default: #333333]\\\";font-weight:600;transition:all .3s ease;border-bottom:3px solid transparent;outline:0;text-decoration:none}.menu-item-text{cursor:pointer}.menu-item-link:hover,.menu-item-text:hover{background-color:\\\"[theme:neutralLighter, default: #f4f4f4]\\\"}.menu-item-link:focus,.menu-item-text:focus{background-color:\\\"[theme:themeDarker, default: #004578]\\\";color:\\\"[theme:white, default: #ffffff]\\\"}.menu-item-settings{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;background:0 0;border:none;cursor:pointer;font:inherit;padding:15px 20px;color:\\\"[theme:neutralPrimary, default: #333333]\\\"}.menu-item-settings:hover{background-color:\\\"[theme:neutralLighter, default: #f4f4f4]\\\"}.menu-item-settings:focus{background-color:\\\"[theme:themeDarker, default: #004578]\\\";color:\\\"[theme:white, default: #ffffff]\\\"}.menu-item-settings__icon{font-size:18px;line-height:1;display:inline-block;transform:translateY(2px)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.mm-settings-overlay{position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:4000;animation:mmFadeIn .2s ease}.mm-settings-panel{position:fixed;top:0;right:0;height:100vh;width:480px;max-width:100%;background:\\\"[theme:white, default: #ffffff]\\\";box-shadow:-4px 0 12px rgba(0,0,0,.2);z-index:4001;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;font-size:17px;font-weight:300;font-family:Segoe UI,\\\"Segoe UI Web (West European)\\\",-apple-system,BlinkMacSystemFont,Roboto,Helvetica Neue,sans-serif;animation:mmSlideIn .25s ease}@media (max-width:600px){.mm-settings-panel{width:100%}}.mm-settings-header{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;padding:16px 20px;border-bottom:1px solid}.mm-settings-title{margin:0;font-size:18px;font-weight:600;font-size:17px;font-weight:300}.mm-settings-close{background:0 0;border:none;font-size:16px;line-height:1;cursor:pointer;padding:4px 8px;font-size:17px;font-weight:300}.mm-settings-close:focus{outline:3px solid;outline-offset:2px}.mm-settings-body{padding:20px;overflow-y:auto;-ms-flex:1;flex:1;font-size:14px;font-weight:400}.mm-settings-field{margin-bottom:16px}.mm-settings-field label{display:block;margin-bottom:4px;font-weight:600}.mm-settings-field input[type=text],.mm-settings-field label{color:\\\"[theme:neutralPrimary, default: #333333]\\\";font-size:14px;font-weight:400}.mm-settings-field input[type=text]{width:100%;padding:8px 12px;border:1px solid;border-radius:2px;box-sizing:border-box;background:\\\"[theme:white, default: #ffffff]\\\"}.mm-settings-field input[type=text]:focus{outline:3px solid;border-color:\\\"[theme:themePrimary, default: #0078d7]\\\"}.mm-settings-footer{padding:14px 20px;border-top:1px solid;display:-ms-flexbox;display:flex;gap:10px;-ms-flex-pack:end;justify-content:flex-end}.mm-settings-cancel,.mm-settings-save{cursor:pointer;border:none;border-radius:4px;padding:8px 16px;font-weight:600;font-size:14px;font-weight:400}.mm-settings-save{background:\\\"[theme:themePrimary, default: #0078d7]\\\";color:\\\"[theme:white, default: #ffffff]\\\"}.mm-settings-save:hover{background:\\\"[theme:themeSecondary, default: #2b88d8]\\\"}.mm-settings-cancel{background:\\\"[theme:neutralTertiaryAlt, default: #c8c8c8]\\\";color:\\\"[theme:neutralPrimary, default: #333333]\\\"}.mm-settings-cancel:hover{background:\\\"[theme:neutralTertiary, default: #a6a6a6]\\\"}.mm-settings-cancel:focus,.mm-settings-save:focus{outline:3px solid;outline-offset:2px}@keyframes mmSlideIn_09a8e1a7{0%{transform:translateX(40px);opacity:0}to{transform:translateX(0);opacity:1}}@keyframes mmFadeIn_09a8e1a7{0%{opacity:0}to{opacity:1}}\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader?{\"minimize\":true}!./lib/extensions/megaMenu/MegaMenu.module.css\n// module id = 24\n// module chunks = 0","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\nmodule.exports = function(useSourceMap) {\n\tvar list = [];\n\n\t// return the list of modules as css string\n\tlist.toString = function toString() {\n\t\treturn this.map(function (item) {\n\t\t\tvar content = cssWithMappingToString(item, useSourceMap);\n\t\t\tif(item[2]) {\n\t\t\t\treturn \"@media \" + item[2] + \"{\" + content + \"}\";\n\t\t\t} else {\n\t\t\t\treturn content;\n\t\t\t}\n\t\t}).join(\"\");\n\t};\n\n\t// import a list of modules into the list\n\tlist.i = function(modules, mediaQuery) {\n\t\tif(typeof modules === \"string\")\n\t\t\tmodules = [[null, modules, \"\"]];\n\t\tvar alreadyImportedModules = {};\n\t\tfor(var i = 0; i < this.length; i++) {\n\t\t\tvar id = this[i][0];\n\t\t\tif(typeof id === \"number\")\n\t\t\t\talreadyImportedModules[id] = true;\n\t\t}\n\t\tfor(i = 0; i < modules.length; i++) {\n\t\t\tvar item = modules[i];\n\t\t\t// skip already imported module\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\n\t\t\t// when a module is imported multiple times with different media queries.\n\t\t\t// I hope this will never occur (Hey this way we have smaller bundles)\n\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\n\t\t\t\tif(mediaQuery && !item[2]) {\n\t\t\t\t\titem[2] = mediaQuery;\n\t\t\t\t} else if(mediaQuery) {\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\n\t\t\t\t}\n\t\t\t\tlist.push(item);\n\t\t\t}\n\t\t}\n\t};\n\treturn list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n\tvar content = item[1] || '';\n\tvar cssMapping = item[3];\n\tif (!cssMapping) {\n\t\treturn content;\n\t}\n\n\tif (useSourceMap && typeof btoa === 'function') {\n\t\tvar sourceMapping = toComment(cssMapping);\n\t\tvar sourceURLs = cssMapping.sources.map(function (source) {\n\t\t\treturn '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */'\n\t\t});\n\n\t\treturn [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n\t}\n\n\treturn [content].join('\\n');\n}\n\n// Adapted from convert-source-map (MIT)\nfunction toComment(sourceMap) {\n\t// eslint-disable-next-line no-undef\n\tvar base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n\tvar data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;\n\n\treturn '/*# ' + data + ' */';\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader/lib/css-base.js\n// module id = 25\n// module chunks = 0","/**\r\n * An IThemingInstruction can specify a rawString to be preserved or a theme slot and a default value\r\n * to use if that slot is not specified by the theme.\r\n */\r\n\r\n// Declaring a global here in case that the execution environment is Node.js (without importing the\r\n// entire node.js d.ts for now)\r\ndeclare var global: any; // tslint:disable-line:no-any\r\n\r\nexport interface IThemingInstruction {\r\n theme?: string;\r\n defaultValue?: string;\r\n rawString?: string;\r\n}\r\n\r\nexport type ThemableArray = Array;\r\n\r\nexport interface ITheme {\r\n [key: string]: string;\r\n}\r\n\r\ninterface IStyleSheet {\r\n cssText: string;\r\n}\r\n\r\ninterface IExtendedHtmlStyleElement extends HTMLStyleElement {\r\n styleSheet: IStyleSheet;\r\n}\r\n\r\n/**\r\n * Performance Measurement of loading styles\r\n */\r\ninterface IMeasurement {\r\n /**\r\n * Count of style element injected, which is the slow operation in IE\r\n */\r\n count: number;\r\n /**\r\n * Total duration of all loadStyles exections\r\n */\r\n duration: number;\r\n}\r\n\r\ninterface IRunState {\r\n mode: Mode;\r\n buffer: ThemableArray[];\r\n flushTimer: number;\r\n}\r\n\r\ninterface IThemeState {\r\n theme: ITheme | undefined;\r\n lastStyleElement: IExtendedHtmlStyleElement;\r\n registeredStyles: IStyleRecord[]; // records of already registered non-themable styles\r\n registeredThemableStyles: IStyleRecord[]; // records of already registered themable styles\r\n loadStyles: ((processedStyles: string, rawStyles?: string | ThemableArray) => void) | undefined;\r\n perf: IMeasurement;\r\n runState: IRunState;\r\n}\r\n\r\ninterface IStyleRecord {\r\n styleElement: Element;\r\n themableStyle: ThemableArray;\r\n}\r\n\r\n/**\r\n * object returned from resolveThemableArray function\r\n * @styleString: this string is the processed styles in string\r\n * @themable: this boolean indicates if this style array is themable\r\n */\r\ninterface IThemableArrayResolveResult {\r\n styleString: string;\r\n themable: boolean;\r\n}\r\n\r\n/**\r\n * In sync mode, styles are registered as style elements synchronously with loadStyles() call.\r\n * In async mode, styles are buffered and registered as batch in async timer for performance purpose.\r\n */\r\nexport const enum Mode {\r\n sync,\r\n async\r\n}\r\n\r\n/**\r\n * Themable styles and non-themable styles are tracked separately\r\n * Specify ClearStyleOptions when calling clearStyles API to specify which group of registered styles should be cleared.\r\n * @onlyThemable: only themable styles will be cleared\r\n * @onlyNonThemable: only non-themable styles will be cleared\r\n * @all: both themable and non-themable styles will be cleared\r\n */\r\nexport const enum ClearStyleOptions {\r\n onlyThemable = 1,\r\n onlyNonThemable = 2,\r\n all = 3\r\n}\r\n\r\n// IE needs to inject styles using cssText. However, we need to evaluate this lazily, so this\r\n// value will initialize as undefined, and later will be set once on first loadStyles injection.\r\nlet _injectStylesWithCssText: boolean;\r\n\r\n// Store the theming state in __themeState__ global scope for reuse in the case of duplicate\r\n// load-themed-styles hosted on the page.\r\nconst _root: any = (typeof window === 'undefined') ? global : window; // tslint:disable-line:no-any\r\n\r\nconst _themeState: IThemeState = initializeThemeState();\r\n\r\n/**\r\n * Matches theming tokens. For example, \"[theme: themeSlotName, default: #FFF]\" (including the quotes).\r\n */\r\n// tslint:disable-next-line:max-line-length\r\nconst _themeTokenRegex: RegExp = /[\\'\\\"]\\[theme:\\s*(\\w+)\\s*(?:\\,\\s*default:\\s*([\\\\\"\\']?[\\.\\,\\(\\)\\#\\-\\s\\w]*[\\.\\,\\(\\)\\#\\-\\w][\\\"\\']?))?\\s*\\][\\'\\\"]/g;\r\n\r\n/** Maximum style text length, for supporting IE style restrictions. */\r\nconst MAX_STYLE_CONTENT_SIZE: number = 10000;\r\n\r\nconst now: () => number =\r\n () => (typeof performance !== 'undefined' && !!performance.now) ? performance.now() : Date.now();\r\n\r\nfunction measure(func: () => void): void {\r\n const start: number = now();\r\n func();\r\n const end: number = now();\r\n _themeState.perf.duration += end - start;\r\n}\r\n\r\n/**\r\n * initialize global state object\r\n */\r\nfunction initializeThemeState(): IThemeState {\r\n let state: IThemeState = _root.__themeState__ || {\r\n theme: undefined,\r\n lastStyleElement: undefined,\r\n registeredStyles: []\r\n };\r\n\r\n if (!state.runState) {\r\n state = {\r\n ...(state),\r\n perf: {\r\n count: 0,\r\n duration: 0\r\n },\r\n runState: {\r\n flushTimer: 0,\r\n mode: Mode.sync,\r\n buffer: []\r\n }\r\n };\r\n }\r\n if (!state.registeredThemableStyles) {\r\n state = {\r\n ...(state),\r\n registeredThemableStyles: []\r\n };\r\n }\r\n _root.__themeState__ = state;\r\n return state;\r\n}\r\n\r\n/**\r\n * Loads a set of style text. If it is registered too early, we will register it when the window.load\r\n * event is fired.\r\n * @param {string | ThemableArray} styles Themable style text to register.\r\n * @param {boolean} loadAsync When true, always load styles in async mode, irrespective of current sync mode.\r\n */\r\nexport function loadStyles(styles: string | ThemableArray, loadAsync: boolean = false): void {\r\n measure(() => {\r\n const styleParts: ThemableArray = Array.isArray(styles) ? styles : splitStyles(styles);\r\n if (_injectStylesWithCssText === undefined) {\r\n _injectStylesWithCssText = shouldUseCssText();\r\n }\r\n const {\r\n mode,\r\n buffer,\r\n flushTimer\r\n } = _themeState.runState;\r\n if (loadAsync || mode === Mode.async) {\r\n buffer.push(styleParts);\r\n if (!flushTimer) {\r\n _themeState.runState.flushTimer = asyncLoadStyles();\r\n }\r\n } else {\r\n applyThemableStyles(styleParts);\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Allows for customizable loadStyles logic. e.g. for server side rendering application\r\n * @param {(processedStyles: string, rawStyles?: string | ThemableArray) => void}\r\n * a loadStyles callback that gets called when styles are loaded or reloaded\r\n */\r\nexport function configureLoadStyles(\r\n loadStylesFn: ((processedStyles: string, rawStyles?: string | ThemableArray) => void) | undefined\r\n): void {\r\n _themeState.loadStyles = loadStylesFn;\r\n}\r\n\r\n/**\r\n * Configure run mode of load-themable-styles\r\n * @param mode load-themable-styles run mode, async or sync\r\n */\r\nexport function configureRunMode(mode: Mode): void {\r\n _themeState.runState.mode = mode;\r\n}\r\n\r\n/**\r\n * external code can call flush to synchronously force processing of currently buffered styles\r\n */\r\nexport function flush(): void {\r\n measure(() => {\r\n const styleArrays: ThemableArray[] = _themeState.runState.buffer.slice();\r\n _themeState.runState.buffer = [];\r\n const mergedStyleArray: ThemableArray = [].concat.apply([], styleArrays);\r\n if (mergedStyleArray.length > 0) {\r\n applyThemableStyles(mergedStyleArray);\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * register async loadStyles\r\n */\r\nfunction asyncLoadStyles(): number {\r\n return setTimeout(() => {\r\n _themeState.runState.flushTimer = 0;\r\n flush();\r\n }, 0);\r\n}\r\n\r\n/**\r\n * Loads a set of style text. If it is registered too early, we will register it when the window.load event\r\n * is fired.\r\n * @param {string} styleText Style to register.\r\n * @param {IStyleRecord} styleRecord Existing style record to re-apply.\r\n */\r\nfunction applyThemableStyles(stylesArray: ThemableArray, styleRecord?: IStyleRecord): void {\r\n if (_themeState.loadStyles) {\r\n _themeState.loadStyles(resolveThemableArray(stylesArray).styleString, stylesArray);\r\n } else {\r\n _injectStylesWithCssText ?\r\n registerStylesIE(stylesArray, styleRecord) :\r\n registerStyles(stylesArray);\r\n }\r\n}\r\n\r\n/**\r\n * Registers a set theme tokens to find and replace. If styles were already registered, they will be\r\n * replaced.\r\n * @param {theme} theme JSON object of theme tokens to values.\r\n */\r\nexport function loadTheme(theme: ITheme | undefined): void {\r\n _themeState.theme = theme;\r\n\r\n // reload styles.\r\n reloadStyles();\r\n}\r\n\r\n/**\r\n * Clear already registered style elements and style records in theme_State object\r\n * @option: specify which group of registered styles should be cleared.\r\n * Default to be both themable and non-themable styles will be cleared\r\n */\r\nexport function clearStyles(option: ClearStyleOptions = ClearStyleOptions.all): void {\r\n if (option === ClearStyleOptions.all || option === ClearStyleOptions.onlyNonThemable) {\r\n clearStylesInternal(_themeState.registeredStyles);\r\n _themeState.registeredStyles = [];\r\n }\r\n if (option === ClearStyleOptions.all || option === ClearStyleOptions.onlyThemable) {\r\n clearStylesInternal(_themeState.registeredThemableStyles);\r\n _themeState.registeredThemableStyles = [];\r\n }\r\n}\r\n\r\nfunction clearStylesInternal(records: IStyleRecord[]): void {\r\n records.forEach((styleRecord: IStyleRecord) => {\r\n const styleElement: HTMLStyleElement = styleRecord && styleRecord.styleElement as HTMLStyleElement;\r\n if (styleElement && styleElement.parentElement) {\r\n styleElement.parentElement.removeChild(styleElement);\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Reloads styles.\r\n */\r\nfunction reloadStyles(): void {\r\n if (_themeState.theme) {\r\n const themableStyles: ThemableArray[] = [];\r\n for (const styleRecord of _themeState.registeredThemableStyles) {\r\n themableStyles.push(styleRecord.themableStyle);\r\n }\r\n if (themableStyles.length > 0) {\r\n clearStyles(ClearStyleOptions.onlyThemable);\r\n applyThemableStyles([].concat.apply([], themableStyles));\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Find theme tokens and replaces them with provided theme values.\r\n * @param {string} styles Tokenized styles to fix.\r\n */\r\nexport function detokenize(styles: string | undefined): string | undefined {\r\n if (styles) {\r\n styles = resolveThemableArray(splitStyles(styles)).styleString;\r\n }\r\n\r\n return styles;\r\n}\r\n\r\n/**\r\n * Resolves ThemingInstruction objects in an array and joins the result into a string.\r\n * @param {ThemableArray} splitStyleArray ThemableArray to resolve and join.\r\n */\r\nfunction resolveThemableArray(splitStyleArray: ThemableArray): IThemableArrayResolveResult {\r\n const { theme }: IThemeState = _themeState;\r\n let themable: boolean = false;\r\n // Resolve the array of theming instructions to an array of strings.\r\n // Then join the array to produce the final CSS string.\r\n const resolvedArray: (string | undefined)[] = (splitStyleArray || []).map((currentValue: IThemingInstruction) => {\r\n const themeSlot: string | undefined = currentValue.theme;\r\n if (themeSlot) {\r\n themable = true;\r\n // A theming annotation. Resolve it.\r\n const themedValue: string | undefined = theme ? theme[themeSlot] : undefined;\r\n const defaultValue: string = currentValue.defaultValue || 'inherit';\r\n\r\n // Warn to console if we hit an unthemed value even when themes are provided, but only if \"DEBUG\" is true.\r\n // Allow the themedValue to be undefined to explicitly request the default value.\r\n if (theme && !themedValue && console && !(themeSlot in theme) && typeof DEBUG !== 'undefined' && DEBUG) {\r\n console.warn(`Theming value not provided for \"${themeSlot}\". Falling back to \"${defaultValue}\".`);\r\n }\r\n\r\n return themedValue || defaultValue;\r\n } else {\r\n // A non-themable string. Preserve it.\r\n return currentValue.rawString;\r\n }\r\n });\r\n\r\n return {\r\n styleString: resolvedArray.join(''),\r\n themable: themable\r\n };\r\n}\r\n\r\n/**\r\n * Split tokenized CSS into an array of strings and theme specification objects\r\n * @param {string} styles Tokenized styles to split.\r\n */\r\nexport function splitStyles(styles: string): ThemableArray {\r\n const result: ThemableArray = [];\r\n if (styles) {\r\n let pos: number = 0; // Current position in styles.\r\n let tokenMatch: RegExpExecArray | null; // tslint:disable-line:no-null-keyword\r\n while (tokenMatch = _themeTokenRegex.exec(styles)) {\r\n const matchIndex: number = tokenMatch.index;\r\n if (matchIndex > pos) {\r\n result.push({\r\n rawString: styles.substring(pos, matchIndex)\r\n });\r\n }\r\n\r\n result.push({\r\n theme: tokenMatch[1],\r\n defaultValue: tokenMatch[2] // May be undefined\r\n });\r\n\r\n // index of the first character after the current match\r\n pos = _themeTokenRegex.lastIndex;\r\n }\r\n\r\n // Push the rest of the string after the last match.\r\n result.push({\r\n rawString: styles.substring(pos)\r\n });\r\n }\r\n\r\n return result;\r\n}\r\n\r\n/**\r\n * Registers a set of style text. If it is registered too early, we will register it when the\r\n * window.load event is fired.\r\n * @param {ThemableArray} styleArray Array of IThemingInstruction objects to register.\r\n * @param {IStyleRecord} styleRecord May specify a style Element to update.\r\n */\r\nfunction registerStyles(styleArray: ThemableArray): void {\r\n const head: HTMLHeadElement = document.getElementsByTagName('head')[0];\r\n const styleElement: HTMLStyleElement = document.createElement('style');\r\n const {\r\n styleString,\r\n themable\r\n } = resolveThemableArray(styleArray);\r\n\r\n styleElement.type = 'text/css';\r\n styleElement.appendChild(document.createTextNode(styleString));\r\n _themeState.perf.count++;\r\n head.appendChild(styleElement);\r\n\r\n const record: IStyleRecord = {\r\n styleElement: styleElement,\r\n themableStyle: styleArray\r\n };\r\n\r\n if (themable) {\r\n _themeState.registeredThemableStyles.push(record);\r\n } else {\r\n _themeState.registeredStyles.push(record);\r\n }\r\n}\r\n\r\n/**\r\n * Registers a set of style text, for IE 9 and below, which has a ~30 style element limit so we need\r\n * to register slightly differently.\r\n * @param {ThemableArray} styleArray Array of IThemingInstruction objects to register.\r\n * @param {IStyleRecord} styleRecord May specify a style Element to update.\r\n */\r\nfunction registerStylesIE(styleArray: ThemableArray, styleRecord?: IStyleRecord): void {\r\n const head: HTMLHeadElement = document.getElementsByTagName('head')[0];\r\n const registeredStyles: IStyleRecord[] = _themeState.registeredStyles;\r\n let lastStyleElement: IExtendedHtmlStyleElement = _themeState.lastStyleElement;\r\n\r\n const stylesheet: IStyleSheet | undefined = lastStyleElement ? lastStyleElement.styleSheet : undefined;\r\n const lastStyleContent: string = stylesheet ? stylesheet.cssText : '';\r\n let lastRegisteredStyle: IStyleRecord = registeredStyles[registeredStyles.length - 1];\r\n const resolvedStyleText: string = resolveThemableArray(styleArray).styleString;\r\n\r\n if (!lastStyleElement || (lastStyleContent.length + resolvedStyleText.length) > MAX_STYLE_CONTENT_SIZE) {\r\n lastStyleElement = document.createElement('style') as IExtendedHtmlStyleElement;\r\n lastStyleElement.type = 'text/css';\r\n\r\n if (styleRecord) {\r\n head.replaceChild(lastStyleElement, styleRecord.styleElement);\r\n styleRecord.styleElement = lastStyleElement;\r\n } else {\r\n head.appendChild(lastStyleElement);\r\n }\r\n\r\n if (!styleRecord) {\r\n lastRegisteredStyle = {\r\n styleElement: lastStyleElement,\r\n themableStyle: styleArray\r\n };\r\n registeredStyles.push(lastRegisteredStyle);\r\n }\r\n }\r\n\r\n lastStyleElement.styleSheet.cssText += detokenize(resolvedStyleText);\r\n Array.prototype.push.apply(lastRegisteredStyle.themableStyle, styleArray); // concat in-place\r\n\r\n // Preserve the theme state.\r\n _themeState.lastStyleElement = lastStyleElement;\r\n}\r\n\r\n/**\r\n * Checks to see if styleSheet exists as a property off of a style element.\r\n * This will determine if style registration should be done via cssText (<= IE9) or not\r\n */\r\nfunction shouldUseCssText(): boolean {\r\n let useCSSText: boolean = false;\r\n\r\n if (typeof document !== 'undefined') {\r\n const emptyStyle: IExtendedHtmlStyleElement = document.createElement('style') as IExtendedHtmlStyleElement;\r\n\r\n emptyStyle.type = 'text/css';\r\n useCSSText = !!emptyStyle.styleSheet;\r\n }\r\n\r\n return useCSSText;\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ../src/index.ts"],"sourceRoot":""} \ No newline at end of file diff --git a/gulpfile.js b/gulpfile.js new file mode 100644 index 0000000..15d1ba2 --- /dev/null +++ b/gulpfile.js @@ -0,0 +1,7 @@ +'use strict'; + +const build = require('@microsoft/sp-build-web'); + +build.addSuppression(`Warning - [sass] The local CSS class 'ms-Grid' is not camelCase and will not be type-safe.`); + +build.initialize(require('gulp')); \ No newline at end of file diff --git a/lib/extensions/megaMenu/MegaMenu.module.css b/lib/extensions/megaMenu/MegaMenu.module.css new file mode 100644 index 0000000..1b32bae --- /dev/null +++ b/lib/extensions/megaMenu/MegaMenu.module.css @@ -0,0 +1 @@ +@charset "UTF-8";.skip-link{position:absolute;top:-40px;left:6px;background:"[theme:error, default: #a80000]";color:"[theme:white, default: #ffffff]";padding:8px;text-decoration:none;font-weight:700;border-radius:4px;z-index:10000;transition:top .2s}.skip-link:focus{top:6px}.mega-menu-main{background:"[theme:themePrimary, default: #0078d7]";width:100%;position:relative}.mega-menu-main>ul{margin:0;list-style:none;padding-inline-start:0;display:-ms-grid;display:grid;-ms-grid-columns:(minmax(120px,1fr)) [auto-fit];grid-template-columns:repeat(auto-fit,minmax(120px,1fr));width:100%}.mega-menu-main>ul>li{position:static}.mega-menu-main>ul>li>a,.mega-menu-main>ul>li>span[role=menuitem]{display:block;padding:15px 20px;transition:all .3s ease;outline:0;cursor:pointer}@media (max-width:900px){.mega-menu-main>ul>li>a,.mega-menu-main>ul>li>span[role=menuitem]{font-size:17px}}.mega-menu-main>ul>li:hover>a,.mega-menu-main>ul>li:hover>span[role=menuitem]{color:"[theme:white, default: #ffffff]";background:"[theme:themeLighter, default: #deecf9]"}.mega-menu-main>ul>li>a:focus,.mega-menu-main>ul>li>span[role=menuitem]:focus{color:"[theme:white, default: #ffffff]"}.mega-menu-main>ul>li>a:active,.mega-menu-main>ul>li>span[role=menuitem]:active{transform:translateY(0)}.mega-menu{position:absolute;left:0;right:0;top:100%;width:100%;background:"[theme:white, default: #ffffff]";box-shadow:0 4px 12px rgba(0,0,0,.15);display:none;padding:40px;max-height:calc(100vh - 60px);overflow-y:auto;z-index:1000}.mega-menu-main>ul>li:hover .mega-menu{display:block}.mega-menu{visibility:hidden;opacity:0;transition:visibility 0s,opacity .3s}.mega-menu-main>ul>li:hover .mega-menu{visibility:visible;opacity:1;display:block}.mega-menu.js-open{visibility:visible!important;opacity:1!important;display:block!important}.mega-menu-grid{max-width:none;margin:0 auto;display:-ms-grid;display:grid;-ms-grid-columns:(minmax(200px,1fr)) [auto-fit];grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:30px}.mega-menu-category{border-right:1px #d3d3d3 solid}.mega-menu-category>h3{margin-bottom:12px;padding-bottom:8px}.mega-menu-category>h3>span{color:"[theme:neutralPrimary, default: #333333]";font-size:16px;font-weight:700;display:block}.mega-menu-category>h3>a{color:"[theme:neutralPrimary, default: #333333]";font-size:16px;font-weight:700;text-decoration:none;display:block;padding:0;border-radius:0;transition:color .2s ease;outline:0}.mega-menu-category>h3>a:hover{color:"[theme:themePrimary, default: #0078d7]"}.mega-menu-category>h3>a:focus{color:"[theme:white, default: #ffffff]";background:"[theme:error, default: #a80000]";text-decoration:none;padding:4px 0;margin:-4px -8px}.mega-menu-category ul{list-style:none;padding-inline-start:0}.mega-menu-category ul li{margin-bottom:4px}.mega-menu-category ul li a{color:"[theme:neutralSecondary, default: #666666]";text-decoration:none;font-size:14px;transition:all .2s ease;display:block;padding:4px 0;border-radius:4px;outline:0}.mega-menu-category ul li a:hover{padding-left:12px}.mega-menu-category ul li a:focus{color:"[theme:white, default: #ffffff]";padding-left:12px}.mega-menu-category ul li a{position:relative}@media (prefers-contrast:high){.mega-menu-main>ul>li>a:focus,.mega-menu-main>ul>li>span[role=menuitem]:focus{outline:4px solid;outline-offset:2px}.mega-menu-category ul li a:focus,.mega-menu-category>h3>a:focus{outline:3px solid;outline-offset:2px}}.content{padding:40px;max-width:1200px;margin:0 auto}.menu-item-link,.menu-item-text{display:block;padding:15px 20px;color:"[theme:neutralPrimary, default: #333333]";font-weight:600;transition:all .3s ease;border-bottom:3px solid transparent;outline:0;text-decoration:none}.menu-item-text{cursor:pointer}.menu-item-link:hover,.menu-item-text:hover{background-color:"[theme:neutralLighter, default: #f4f4f4]"}.menu-item-link:focus,.menu-item-text:focus{background-color:"[theme:themeDarker, default: #004578]";color:"[theme:white, default: #ffffff]"}.menu-item-settings{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;background:0 0;border:none;cursor:pointer;font:inherit;padding:15px 20px;color:"[theme:neutralPrimary, default: #333333]"}.menu-item-settings:hover{background-color:"[theme:neutralLighter, default: #f4f4f4]"}.menu-item-settings:focus{background-color:"[theme:themeDarker, default: #004578]";color:"[theme:white, default: #ffffff]"}.menu-item-settings__icon{font-size:18px;line-height:1;display:inline-block;transform:translateY(2px)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.mm-settings-overlay{position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:4000;animation:mmFadeIn .2s ease}.mm-settings-panel{position:fixed;top:0;right:0;height:100vh;width:480px;max-width:100%;background:"[theme:white, default: #ffffff]";box-shadow:-4px 0 12px rgba(0,0,0,.2);z-index:4001;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;font-size:17px;font-weight:300;font-family:"Segoe UI","Segoe UI Web (West European)","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;animation:mmSlideIn .25s ease}@media (max-width:600px){.mm-settings-panel{width:100%}}.mm-settings-header{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;padding:16px 20px;border-bottom:1px solid "[theme:neutralQuaternaryAlt, default: #dadada]"}.mm-settings-title{margin:0;font-size:18px;font-weight:600;font-size:17px;font-weight:300}.mm-settings-close{background:0 0;border:none;font-size:16px;line-height:1;cursor:pointer;padding:4px 8px;font-size:17px;font-weight:300}.mm-settings-close:focus{outline:3px solid "[theme:warning, default: #767676]";outline-offset:2px}.mm-settings-body{padding:20px;overflow-y:auto;-ms-flex:1;flex:1;font-size:14px;font-weight:400}.mm-settings-field{margin-bottom:16px}.mm-settings-field label{display:block;margin-bottom:4px;font-size:14px;font-weight:600;color:"[theme:neutralPrimary, default: #333333]";font-size:14px;font-weight:400}.mm-settings-field input[type=text]{width:100%;padding:8px 12px;border:1px solid "[theme:neutralTertiaryAlt, default: #c8c8c8]";border-radius:2px;font-size:14px;font-size:14px;font-weight:400;color:"[theme:neutralPrimary, default: #333333]";box-sizing:border-box;background:"[theme:white, default: #ffffff]"}.mm-settings-field input[type=text]:focus{outline:3px solid "[theme:themePrimary, default: #0078d7]";border-color:"[theme:themePrimary, default: #0078d7]"}.mm-settings-footer{padding:14px 20px;border-top:1px solid "[theme:neutralQuaternaryAlt, default: #dadada]";display:-ms-flexbox;display:flex;gap:10px;-ms-flex-pack:end;justify-content:flex-end}.mm-settings-cancel,.mm-settings-save{cursor:pointer;border:none;border-radius:4px;padding:8px 16px;font-weight:600;font-size:14px;font-weight:400}.mm-settings-save{background:"[theme:themePrimary, default: #0078d7]";color:"[theme:white, default: #ffffff]"}.mm-settings-save:hover{background:"[theme:themeSecondary, default: #2b88d8]"}.mm-settings-cancel{background:"[theme:neutralTertiaryAlt, default: #c8c8c8]";color:"[theme:neutralPrimary, default: #333333]"}.mm-settings-cancel:hover{background:"[theme:neutralTertiary, default: #a6a6a6]"}.mm-settings-cancel:focus,.mm-settings-save:focus{outline:3px solid "[theme:warning, default: #767676]";outline-offset:2px}@keyframes mmSlideIn_09a8e1a7{from{transform:translateX(40px);opacity:0}to{transform:translateX(0);opacity:1}}@keyframes mmFadeIn_09a8e1a7{from{opacity:0}to{opacity:1}} \ No newline at end of file diff --git a/lib/extensions/megaMenu/MegaMenu.module.scss.d.ts b/lib/extensions/megaMenu/MegaMenu.module.scss.d.ts new file mode 100644 index 0000000..1dfa909 --- /dev/null +++ b/lib/extensions/megaMenu/MegaMenu.module.scss.d.ts @@ -0,0 +1,5 @@ +declare const styles: { + mmSlideIn: string; + mmFadeIn: string; +}; +export default styles; diff --git a/lib/extensions/megaMenu/MegaMenu.module.scss.js b/lib/extensions/megaMenu/MegaMenu.module.scss.js new file mode 100644 index 0000000..bbb6afd --- /dev/null +++ b/lib/extensions/megaMenu/MegaMenu.module.scss.js @@ -0,0 +1,10 @@ +/* tslint:disable */ +require('./MegaMenu.module.css'); +var styles = { + mmSlideIn: 'mmSlideIn_09a8e1a7', + mmFadeIn: 'mmFadeIn_09a8e1a7', +}; +export default styles; +/* tslint:enable */ + +//# sourceMappingURL=MegaMenu.module.scss.js.map diff --git a/lib/extensions/megaMenu/MegaMenu.module.scss.js.map b/lib/extensions/megaMenu/MegaMenu.module.scss.js.map new file mode 100644 index 0000000..9948cdd --- /dev/null +++ b/lib/extensions/megaMenu/MegaMenu.module.scss.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["extensions/megaMenu/MegaMenu.module.scss.ts"],"names":[],"mappings":"AAAA,oBAAoB;AACpB,OAAO,CAAC,uBAAuB,CAAC,CAAC;AACjC,IAAM,MAAM,GAAG;IACb,SAAS,EAAE,oBAAoB;IAC/B,QAAQ,EAAE,mBAAmB;CAC9B,CAAC;AAEF,eAAe,MAAM,CAAC;AACtB,mBAAmB","file":"extensions/megaMenu/MegaMenu.module.scss.js","sourcesContent":["/* tslint:disable */\r\nrequire('./MegaMenu.module.css');\r\nconst styles = {\r\n mmSlideIn: 'mmSlideIn_09a8e1a7',\r\n mmFadeIn: 'mmFadeIn_09a8e1a7',\r\n};\r\n\r\nexport default styles;\r\n/* tslint:enable */"],"sourceRoot":"..\\..\\..\\src"} \ No newline at end of file diff --git a/lib/extensions/megaMenu/MegaMenuApplicationCustomizer.d.ts b/lib/extensions/megaMenu/MegaMenuApplicationCustomizer.d.ts new file mode 100644 index 0000000..923dc45 --- /dev/null +++ b/lib/extensions/megaMenu/MegaMenuApplicationCustomizer.d.ts @@ -0,0 +1,27 @@ +import { BaseApplicationCustomizer } from '@microsoft/sp-application-base'; +import './MegaMenu.module.scss'; +export declare const UserCustomActionMegaMenuId: string; +/** + * Properties for the MegaMenu Application Customizer + */ +export interface IMegaMenuApplicationCustomizerProperties { + /** + * The name of the termset to load menu items from + */ + termSetName: string; + /** + * Optional URL to an external CSS file + */ + cssUrl?: string; +} +/** A Custom Action which can be run during execution of a Client Side Application */ +export default class MegaMenuApplicationCustomizer extends BaseApplicationCustomizer { + private _topPlaceholder; + onInit(): Promise; + private _renderPlaceHolders(); + private _updateCallback; + private _renderMegaMenu(termSetName); + private _getOrCreateContainer(id, placeholder); + private _loadExternalCss(cssUrl); + private _onDispose(); +} diff --git a/lib/extensions/megaMenu/MegaMenuApplicationCustomizer.js b/lib/extensions/megaMenu/MegaMenuApplicationCustomizer.js new file mode 100644 index 0000000..1f6aaae --- /dev/null +++ b/lib/extensions/megaMenu/MegaMenuApplicationCustomizer.js @@ -0,0 +1,188 @@ +// tslint:disable:max-line-length +// tslint:disable:match-default-export-name +// tslint:disable:typedef +// tslint:disable:variable-name +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + 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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = y[op[0] & 2 ? "return" : op[0] ? "throw" : "next"]) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [0, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +import { override } from '@microsoft/decorators'; +import { Log } from '@microsoft/sp-core-library'; +import { BaseApplicationCustomizer, PlaceholderName } from '@microsoft/sp-application-base'; +import * as strings from 'MegaMenuApplicationCustomizerStrings'; +import { TaxonomyNavigationService } from '../../services/TaxonomyNavigationService'; +import { MegaMenuRenderer } from './MegaMenuRenderer'; +// Import SCSS module +import './MegaMenu.module.scss'; +var LOG_SOURCE = 'MegaMenuApplicationCustomizer'; +export var UserCustomActionMegaMenuId = 'abc3361f-bb2d-491f-aba3-cd51c19a299b'; +/** A Custom Action which can be run during execution of a Client Side Application */ +var MegaMenuApplicationCustomizer = (function (_super) { + __extends(MegaMenuApplicationCustomizer, _super); + function MegaMenuApplicationCustomizer() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this._updateCallback = function (data) { + _this._loadExternalCss(data.cssUrl); + _this._renderMegaMenu(data.termSetName); + }; + return _this; + } + MegaMenuApplicationCustomizer.prototype.onInit = function () { + Log.info(LOG_SOURCE, "Initialized " + strings.Title); + // Load external CSS if provided + if (this.properties.cssUrl) { + this._loadExternalCss(this.properties.cssUrl); + } + // Wait for the page to be ready + this.context.placeholderProvider.changedEvent.add(this, this._renderPlaceHolders); + // Initial render + this._renderPlaceHolders(); + return Promise.resolve(); + }; + MegaMenuApplicationCustomizer.prototype._renderPlaceHolders = function () { + console.log('Available placeholders: ', this.context.placeholderProvider.placeholderNames.map(function (name) { return PlaceholderName[name]; }).join(', ')); + // Handling the top placeholder + if (!this._topPlaceholder) { + this._topPlaceholder = this.context.placeholderProvider.tryCreateContent(PlaceholderName.Top, { onDispose: this._onDispose }); + // The extension should not assume that the expected placeholder is available. + if (!this._topPlaceholder) { + console.error('The expected placeholder (Top) was not found.'); + return; + } + if (!this.properties.termSetName) { + console.error('TermSetName property is required but not provided.'); + 1; + return; + } + this._renderMegaMenu(this.properties.termSetName); + } + }; + MegaMenuApplicationCustomizer.prototype._renderMegaMenu = function (termSetName) { + return __awaiter(this, void 0, void 0, function () { + var taxonomyService, menuItems, renderer, container, error_1; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + if (!this._topPlaceholder) { + return [2 /*return*/]; + } + _a.label = 1; + case 1: + _a.trys.push([1, 3, , 4]); + taxonomyService = new TaxonomyNavigationService(this.context, termSetName); + return [4 /*yield*/, taxonomyService.getMenuItems()]; + case 2: + menuItems = _a.sent(); + renderer = new MegaMenuRenderer(this.context, menuItems, this._updateCallback); + container = this._getOrCreateContainer('CustomHeader', this._topPlaceholder); + if (container) { + renderer.render(container); + } + else { + renderer.render(this._topPlaceholder.domElement); + } + Log.info(LOG_SOURCE, "MegaMenu rendered successfully with " + menuItems.length + " top-level items"); + return [3 /*break*/, 4]; + case 3: + error_1 = _a.sent(); + console.error('Error rendering MegaMenu:', error_1); + return [3 /*break*/, 4]; + case 4: return [2 /*return*/]; + } + }); + }); + }; + MegaMenuApplicationCustomizer.prototype._getOrCreateContainer = function (id, placeholder) { + var container = document.getElementById(id); + if (container) { + var div = document.createElement('div'); + container.appendChild(div); + return div; + } + else { + return placeholder.domElement; + } + }; + MegaMenuApplicationCustomizer.prototype._loadExternalCss = function (cssUrl) { + var externalCssLinkId = 'mega-menu-additional-css-34FAB720'; + var link = document.getElementById(externalCssLinkId); + if (cssUrl && cssUrl.trim() !== '') { + // update previous link, if present + if (!link) { + var head = document.getElementsByTagName('head')[0]; + link = document.createElement('link'); + link.rel = 'stylesheet'; + link.type = 'text/css'; + link.id = externalCssLinkId; + link.onload = function () { + Log.info(LOG_SOURCE, "External CSS loaded successfully from: " + cssUrl); + }; + link.onerror = function () { + console.warn("Failed to load external CSS from: " + cssUrl); + }; + head.appendChild(link); + } + link.href = cssUrl; + } + else if (link) { + link.remove(); + } + }; + MegaMenuApplicationCustomizer.prototype._onDispose = function () { + console.log('[MegaMenuApplicationCustomizer._onDispose] Disposed custom top placeholder.'); + }; + __decorate([ + override + ], MegaMenuApplicationCustomizer.prototype, "onInit", null); + return MegaMenuApplicationCustomizer; +}(BaseApplicationCustomizer)); +export default MegaMenuApplicationCustomizer; + +//# sourceMappingURL=MegaMenuApplicationCustomizer.js.map diff --git a/lib/extensions/megaMenu/MegaMenuApplicationCustomizer.js.map b/lib/extensions/megaMenu/MegaMenuApplicationCustomizer.js.map new file mode 100644 index 0000000..d133322 --- /dev/null +++ b/lib/extensions/megaMenu/MegaMenuApplicationCustomizer.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["extensions/megaMenu/MegaMenuApplicationCustomizer.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,2CAA2C;AAC3C,yBAAyB;AACzB,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAE/B,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,GAAG,EAAE,MAAM,4BAA4B,CAAC;AACjD,OAAO,EACL,yBAAyB,EAEzB,eAAe,EAChB,MAAM,gCAAgC,CAAC;AAExC,OAAO,KAAK,OAAO,MAAM,sCAAsC,CAAC;AAChE,OAAO,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGtD,qBAAqB;AACrB,OAAO,wBAAwB,CAAC;AAEhC,IAAM,UAAU,GAAW,+BAA+B,CAAC;AAC3D,MAAM,CAAC,IAAM,0BAA0B,GAAW,sCAAsC,CAAC;AAiBzF,qFAAqF;AACrF;IACU,iDAAmE;IAD7E;QAAA,qEAkIC;QAlFS,qBAAe,GAAG,UAAC,IAA8C;YACvE,KAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACnC,KAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACzC,CAAC,CAAA;;IA+EH,CAAC;IA5HQ,8CAAM,GAAb;QACE,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,iBAAe,OAAO,CAAC,KAAO,CAAC,CAAC;QAErD,gCAAgC;QAChC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;YAC3B,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAChD,CAAC;QAED,gCAAgC;QAChC,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAElF,iBAAiB;QACjB,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE3B,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAEO,2DAAmB,GAA3B;QACE,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAA,IAAI,IAAI,OAAA,eAAe,CAAC,IAAI,CAAC,EAArB,CAAqB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAExI,+BAA+B;QAC/B,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;YAC1B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,gBAAgB,CACtE,eAAe,CAAC,GAAG,EACnB,EAAE,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,CAC/B,CAAC;YAEF,8EAA8E;YAC9E,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;gBAC1B,OAAO,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;gBAC/D,MAAM,CAAC;YACT,CAAC;YAED,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;gBACjC,OAAO,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;gBAAA,CAAC,CAAA;gBACrE,MAAM,CAAC;YACT,CAAC;YAED,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAOa,uDAAe,GAA7B,UAA8B,WAAmB;;;;;;wBAC/C,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;4BAC1B,MAAM,gBAAC;wBACT,CAAC;;;;wBAKO,eAAe,GAA8B,IAAI,yBAAyB,CAC9E,IAAI,CAAC,OAAO,EACZ,WAAW,CACZ,CAAC;wBAG6B,qBAAM,eAAe,CAAC,YAAY,EAAE,EAAA;;wBAA7D,SAAS,GAAgB,SAAoC;wBAE7D,QAAQ,GAAqB,IAAI,gBAAgB,CACrD,IAAI,CAAC,OAAO,EACZ,SAAS,EACT,IAAI,CAAC,eAAe,CACrB,CAAC;wBAEI,SAAS,GAAG,IAAI,CAAC,qBAAqB,CAAC,cAAc,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;wBAEnF,EAAE,CAAA,CAAC,SAAS,CAAC,CAAA,CAAC;4BACZ,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;wBAC7B,CAAC;wBAAA,IAAI,CAAA,CAAC;4BACJ,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;wBACnD,CAAC;wBAGD,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,yCAAuC,SAAS,CAAC,MAAM,qBAAkB,CAAC,CAAC;;;;wBAGhG,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,OAAK,CAAC,CAAC;;;;;;KAErD;IAEO,6DAAqB,GAA7B,UAA+B,EAAU,EAAE,WAA+B;QACxE,IAAI,SAAS,GAAG,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QAC5C,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;YACZ,IAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC1C,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YAC3B,MAAM,CAAC,GAAG,CAAC;QACf,CAAC;QAAA,IAAI,CAAA,CAAC;YACF,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC;QAClC,CAAC;IACH,CAAC;IAEO,wDAAgB,GAAxB,UAAyB,MAAc;QACrC,IAAM,iBAAiB,GAAW,mCAAmC,CAAC;QACtE,IAAI,IAAI,GAAoB,QAAQ,CAAC,cAAc,CAAC,iBAAiB,CAAoB,CAAC;QAC1F,EAAE,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;YACnC,mCAAmC;YACnC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;gBACV,IAAM,IAAI,GAAoB,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;gBACvE,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;gBACtC,IAAI,CAAC,GAAG,GAAG,YAAY,CAAC;gBACxB,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;gBACvB,IAAI,CAAC,EAAE,GAAG,iBAAiB,CAAC;gBAC5B,IAAI,CAAC,MAAM,GAAG;oBACZ,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,4CAA0C,MAAQ,CAAC,CAAC;gBAC3E,CAAC,CAAC;gBACF,IAAI,CAAC,OAAO,GAAG;oBACb,OAAO,CAAC,IAAI,CAAC,uCAAqC,MAAQ,CAAC,CAAC;gBAC9D,CAAC,CAAC;gBACF,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACzB,CAAC;YACD,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;QACrB,CAAC;QAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YAChB,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,CAAC;IACH,CAAC;IAEO,kDAAU,GAAlB;QACE,OAAO,CAAC,GAAG,CAAC,6EAA6E,CAAC,CAAC;IAC7F,CAAC;IA3HD;QADC,QAAQ;+DAgBR;IA6GH,oCAAC;CAlID,AAkIC,CAjIS,yBAAyB,GAiIlC;eAlIoB,6BAA6B","file":"extensions/megaMenu/MegaMenuApplicationCustomizer.js","sourcesContent":["// tslint:disable:max-line-length\r\n// tslint:disable:match-default-export-name\r\n// tslint:disable:typedef\r\n// tslint:disable:variable-name\r\n\r\nimport { override } from '@microsoft/decorators';\r\nimport { Log } from '@microsoft/sp-core-library';\r\nimport {\r\n BaseApplicationCustomizer,\r\n PlaceholderContent,\r\n PlaceholderName\r\n} from '@microsoft/sp-application-base';\r\n\r\nimport * as strings from 'MegaMenuApplicationCustomizerStrings';\r\nimport { TaxonomyNavigationService } from '../../services/TaxonomyNavigationService';\r\nimport { MegaMenuRenderer } from './MegaMenuRenderer';\r\nimport { IMenuItem } from '../../services/IMenuItem';\r\n\r\n// Import SCSS module\r\nimport './MegaMenu.module.scss';\r\n\r\nconst LOG_SOURCE: string = 'MegaMenuApplicationCustomizer';\r\nexport const UserCustomActionMegaMenuId: string = 'abc3361f-bb2d-491f-aba3-cd51c19a299b';\r\n\r\n/**\r\n * Properties for the MegaMenu Application Customizer\r\n */\r\nexport interface IMegaMenuApplicationCustomizerProperties {\r\n /**\r\n * The name of the termset to load menu items from\r\n */\r\n termSetName: string;\r\n\r\n /**\r\n * Optional URL to an external CSS file\r\n */\r\n cssUrl?: string;\r\n}\r\n\r\n/** A Custom Action which can be run during execution of a Client Side Application */\r\nexport default class MegaMenuApplicationCustomizer\r\n extends BaseApplicationCustomizer {\r\n\r\n private _topPlaceholder: PlaceholderContent | undefined;\r\n\r\n @override\r\n public onInit(): Promise {\r\n Log.info(LOG_SOURCE, `Initialized ${strings.Title}`);\r\n\r\n // Load external CSS if provided\r\n if (this.properties.cssUrl) {\r\n this._loadExternalCss(this.properties.cssUrl);\r\n }\r\n\r\n // Wait for the page to be ready\r\n this.context.placeholderProvider.changedEvent.add(this, this._renderPlaceHolders);\r\n\r\n // Initial render\r\n this._renderPlaceHolders();\r\n\r\n return Promise.resolve();\r\n }\r\n\r\n private _renderPlaceHolders(): void {\r\n console.log('Available placeholders: ',this.context.placeholderProvider.placeholderNames.map(name => PlaceholderName[name]).join(', '));\r\n\r\n // Handling the top placeholder\r\n if (!this._topPlaceholder) {\r\n this._topPlaceholder = this.context.placeholderProvider.tryCreateContent(\r\n PlaceholderName.Top,\r\n { onDispose: this._onDispose }\r\n );\r\n\r\n // The extension should not assume that the expected placeholder is available.\r\n if (!this._topPlaceholder) {\r\n console.error('The expected placeholder (Top) was not found.');\r\n return;\r\n }\r\n\r\n if (!this.properties.termSetName) {\r\n console.error('TermSetName property is required but not provided.');1\r\n return;\r\n }\r\n\r\n this._renderMegaMenu(this.properties.termSetName);\r\n }\r\n }\r\n\r\n private _updateCallback = (data: IMegaMenuApplicationCustomizerProperties) => {\r\n this._loadExternalCss(data.cssUrl);\r\n this._renderMegaMenu(data.termSetName);\r\n }\r\n\r\n private async _renderMegaMenu(termSetName: string): Promise {\r\n if (!this._topPlaceholder) {\r\n return;\r\n }\r\n\r\n try {\r\n \r\n // Create the taxonomy navigation service\r\n const taxonomyService: TaxonomyNavigationService = new TaxonomyNavigationService(\r\n this.context,\r\n termSetName\r\n );\r\n\r\n // Get menu items from the termset\r\n const menuItems: IMenuItem[] = await taxonomyService.getMenuItems();\r\n\r\n const renderer: MegaMenuRenderer = new MegaMenuRenderer(\r\n this.context,\r\n menuItems,\r\n this._updateCallback\r\n );\r\n\r\n const container = this._getOrCreateContainer('CustomHeader', this._topPlaceholder);\r\n\r\n if(container){\r\n renderer.render(container);\r\n }else{\r\n renderer.render(this._topPlaceholder.domElement);\r\n }\r\n \r\n\r\n Log.info(LOG_SOURCE, `MegaMenu rendered successfully with ${menuItems.length} top-level items`);\r\n\r\n } catch (error) {\r\n console.error('Error rendering MegaMenu:', error);\r\n }\r\n }\r\n\r\n private _getOrCreateContainer (id: string, placeholder: PlaceholderContent): HTMLElement {\r\n let container = document.getElementById(id);\r\n if (container) {\r\n const div = document.createElement('div');\r\n container.appendChild(div);\r\n return div;\r\n }else{\r\n return placeholder.domElement;\r\n }\r\n }\r\n\r\n private _loadExternalCss(cssUrl: string): void {\r\n const externalCssLinkId: string = 'mega-menu-additional-css-34FAB720';\r\n let link: HTMLLinkElement = document.getElementById(externalCssLinkId) as HTMLLinkElement;\r\n if (cssUrl && cssUrl.trim() !== '') {\r\n // update previous link, if present\r\n if (!link) {\r\n const head: HTMLHeadElement = document.getElementsByTagName('head')[0];\r\n link = document.createElement('link');\r\n link.rel = 'stylesheet';\r\n link.type = 'text/css';\r\n link.id = externalCssLinkId;\r\n link.onload = () => {\r\n Log.info(LOG_SOURCE, `External CSS loaded successfully from: ${cssUrl}`);\r\n };\r\n link.onerror = () => {\r\n console.warn(`Failed to load external CSS from: ${cssUrl}`);\r\n };\r\n head.appendChild(link);\r\n }\r\n link.href = cssUrl;\r\n } else if (link) {\r\n link.remove();\r\n }\r\n }\r\n\r\n private _onDispose(): void {\r\n console.log('[MegaMenuApplicationCustomizer._onDispose] Disposed custom top placeholder.');\r\n }\r\n}"],"sourceRoot":"..\\..\\..\\src"} \ No newline at end of file diff --git a/lib/extensions/megaMenu/MegaMenuApplicationCustomizer.manifest.json b/lib/extensions/megaMenu/MegaMenuApplicationCustomizer.manifest.json new file mode 100644 index 0000000..fd24ca2 --- /dev/null +++ b/lib/extensions/megaMenu/MegaMenuApplicationCustomizer.manifest.json @@ -0,0 +1,17 @@ +{ + "$schema": "https://developer.microsoft.com/json-schemas/spfx/client-side-extension-manifest.schema.json", + + "id": "abc3361f-bb2d-491f-aba3-cd51c19a299b", + "alias": "MegaMenuApplicationCustomizer", + "componentType": "Extension", + "extensionType": "ApplicationCustomizer", + + // The "*" signifies that the version should be taken from the package.json + "version": "*", + "manifestVersion": 2, + + // If true, the component can only be installed on sites where Custom Script is allowed. + // Components that allow authors to embed arbitrary script code should set this to true. + // https://support.office.com/en-us/article/Turn-scripting-capabilities-on-or-off-1f2c515f-5d7e-448a-9fd7-835da935584f + "requiresCustomScript": false +} diff --git a/lib/extensions/megaMenu/MegaMenuRenderer.d.ts b/lib/extensions/megaMenu/MegaMenuRenderer.d.ts new file mode 100644 index 0000000..776ee8c --- /dev/null +++ b/lib/extensions/megaMenu/MegaMenuRenderer.d.ts @@ -0,0 +1,28 @@ +import { ApplicationCustomizerContext } from '@microsoft/sp-application-base'; +import { IMenuItem } from '../../services/IMenuItem'; +import { IMegaMenuApplicationCustomizerProperties } from './MegaMenuApplicationCustomizer'; +export declare class MegaMenuRenderer { + private context; + private menuItems; + private updateCallback; + private _settingsPanel?; + constructor(context: ApplicationCustomizerContext, menuItems: IMenuItem[], updateCallback: (data: IMegaMenuApplicationCustomizerProperties) => void); + render(container: HTMLElement): void; + private createSettingsItem(); + private openSettings(); + private createTopLevelItem(item); + private createTopLevelElement(item); + private createMegaMenu(parentItem); + private createCategorySection(item); + private attachEventListeners(); + private attachKeyboardNavigation(heading, megaMenu); + private attachMouseEvents(heading, megaMenu); + private attachFocusManagement(heading, megaMenu); + private attachGlobalKeyboardNavigation(); + private openMegaMenu(trigger, menu); + private closeMegaMenu(trigger, menu); + private toggleMegaMenu(trigger, menu); + private closeAllMegaMenus(); + private focusFirstLink(megaMenu); + private createScreenReaderAnnouncer(); +} diff --git a/lib/extensions/megaMenu/MegaMenuRenderer.js b/lib/extensions/megaMenu/MegaMenuRenderer.js new file mode 100644 index 0000000..bc666c6 --- /dev/null +++ b/lib/extensions/megaMenu/MegaMenuRenderer.js @@ -0,0 +1,372 @@ +// tslint:disable:max-line-length +// tslint:disable:match-default-export-name +// tslint:disable:typedef +// tslint:disable:variable-name +import { SPPermission } from '@microsoft/sp-page-context'; +import { MegaMenuSettingsPanel } from './MegaMenuSettings'; +var MegaMenuRenderer = (function () { + function MegaMenuRenderer(context, menuItems, updateCallback) { + this.context = context; + this.menuItems = menuItems; + this.updateCallback = updateCallback; + } + MegaMenuRenderer.prototype.render = function (container) { + var _this = this; + // Clear any existing content + container.innerHTML = ''; + container.id = 'CustomNavigation'; + // Create the main nav element + var nav = document.createElement('nav'); + nav.id = 'Mega-Menu'; + nav.className = 'mega-menu-main'; + nav.setAttribute('role', 'navigation'); + nav.setAttribute('aria-label', 'Hauptnavigation'); + // Create the top-level menubar + var topLevelUl = document.createElement('ul'); + topLevelUl.setAttribute('role', 'menubar'); + // Process each top-level menu item + this.menuItems.forEach(function (topLevelItem) { + var topLevelLi = _this.createTopLevelItem(topLevelItem); + topLevelUl.appendChild(topLevelLi); + }); + // Only if current user has ManageWeb permissions in this website can they access the settings + if (this.context.pageContext.web.permissions.hasPermission(SPPermission.manageWeb)) { + topLevelUl.appendChild(this.createSettingsItem()); + } + nav.appendChild(topLevelUl); + container.appendChild(nav); + // Attach accessibility event listeners after rendering + this.attachEventListeners(); + this.createScreenReaderAnnouncer(); + }; + MegaMenuRenderer.prototype.createSettingsItem = function () { + var _this = this; + var li = document.createElement('li'); + li.setAttribute('role', 'none'); + // Verwenden eines Links-ähnlichen Buttons damit Styling identisch zu Top-Level Items ist + var btn = document.createElement('button'); + btn.type = 'button'; + btn.className = 'menu-item-link menu-item-settings'; // reuse same base styles + btn.setAttribute('role', 'menuitem'); + btn.setAttribute('tabindex', '0'); + btn.setAttribute('aria-haspopup', 'false'); + btn.setAttribute('aria-label', 'Einstellungen'); + btn.title = 'Einstellungen'; + // Nur EIN Icon: Wenn Fabric Icons geladen sind, zeigt ms-Icon das Symbol. Fallback via aria-label für Screenreader + var icon = document.createElement('span'); + icon.className = 'ms-Icon ms-Icon--Settings menu-item-settings__icon'; + icon.setAttribute('aria-hidden', 'true'); + btn.appendChild(icon); + btn.addEventListener('click', function () { return _this.openSettings(); }); + btn.addEventListener('keydown', function (e) { + if (e.key === 'Enter' || e.key === ' ') { + e.preventDefault(); + _this.openSettings(); + } + }); + li.appendChild(btn); + return li; + }; + MegaMenuRenderer.prototype.openSettings = function () { + if (!this._settingsPanel) { + this._settingsPanel = new MegaMenuSettingsPanel(this.context, this.updateCallback); + } + this._settingsPanel.open(); + }; + // Panel logic moved to MegaMenuSettingsPanel + MegaMenuRenderer.prototype.createTopLevelItem = function (item) { + var li = document.createElement('li'); + li.setAttribute('role', 'none'); + // Create the top-level element (link or span) + var topElement = this.createTopLevelElement(item); + li.appendChild(topElement); + // If the item has children, create the mega menu + if (item.hasChildren() && item.items && item.items.length > 0) { + var megaMenu = this.createMegaMenu(item); + li.appendChild(megaMenu); + } + return li; + }; + MegaMenuRenderer.prototype.createTopLevelElement = function (item) { + var element; + if (item.url) { + // Create as link + element = document.createElement('a'); + element.href = item.url; + element.className = 'menu-item-link'; + } + else { + // Create as span (no link) + element = document.createElement('span'); + element.className = 'menu-item-text'; + element.setAttribute('tabindex', '0'); + } + element.setAttribute('role', 'menuitem'); + element.setAttribute('aria-haspopup', 'true'); + element.setAttribute('aria-expanded', 'false'); + element.textContent = item.label; + if (item.hoverText) { + element.title = item.hoverText; + } + return element; + }; + MegaMenuRenderer.prototype.createMegaMenu = function (parentItem) { + var _this = this; + var megaMenuDiv = document.createElement('div'); + megaMenuDiv.className = 'mega-menu'; + megaMenuDiv.setAttribute('role', 'menu'); + megaMenuDiv.setAttribute('aria-label', parentItem.label + " Unterkategorien"); + var gridDiv = document.createElement('div'); + gridDiv.className = 'mega-menu-grid'; + // Process second-level items (categories) + if (parentItem.items) { + parentItem.items.forEach(function (secondLevelItem) { + var categoryDiv = _this.createCategorySection(secondLevelItem); + gridDiv.appendChild(categoryDiv); + }); + } + megaMenuDiv.appendChild(gridDiv); + return megaMenuDiv; + }; + MegaMenuRenderer.prototype.createCategorySection = function (item) { + var categoryDiv = document.createElement('div'); + categoryDiv.className = 'mega-menu-category'; + // Create the category header (h3) + var h3 = document.createElement('h3'); + if (item.url) { + // Category header as link + var link = document.createElement('a'); + link.href = item.url; + link.textContent = item.label; + if (item.hoverText) { + link.title = item.hoverText; + } + h3.appendChild(link); + } + else { + // Category header as span (no link) + var span = document.createElement('span'); + span.textContent = item.label; + if (item.hoverText) { + span.title = item.hoverText; + } + h3.appendChild(span); + } + categoryDiv.appendChild(h3); + // Create the third-level items list if they exist + if (item.hasChildren() && item.items && item.items.length > 0) { + var ul_1 = document.createElement('ul'); + item.items.forEach(function (thirdLevelItem) { + var li = document.createElement('li'); + var link = document.createElement('a'); + link.href = thirdLevelItem.url || '#'; + link.textContent = thirdLevelItem.label; + if (thirdLevelItem.hoverText) { + link.title = thirdLevelItem.hoverText; + } + li.appendChild(link); + ul_1.appendChild(li); + }); + categoryDiv.appendChild(ul_1); + } + return categoryDiv; + }; + MegaMenuRenderer.prototype.attachEventListeners = function () { + var headings = document.querySelectorAll('#Mega-Menu > ul > li > a, #Mega-Menu > ul > li > span[role="menuitem"]'); + for (var i = 0; i < headings.length; i++) { + var heading = headings[i]; + var megaMenu = heading.nextElementSibling; + if (megaMenu && megaMenu.classList.contains('mega-menu')) { + this.attachKeyboardNavigation(heading, megaMenu); + this.attachMouseEvents(heading, megaMenu); + this.attachFocusManagement(heading, megaMenu); + } + } + // Global keyboard navigation + this.attachGlobalKeyboardNavigation(); + }; + MegaMenuRenderer.prototype.attachKeyboardNavigation = function (heading, megaMenu) { + var _this = this; + heading.addEventListener('keydown', function (e) { + if (e.key === 'Enter') { + // Enter: Navigation (nur bei Links ohne Mega-Menu-Override) + if (heading.tagName === 'A') { + // Lasse normale Link-Navigation zu (KEIN preventDefault!) + return; + } + else { + // Bei span: Toggle Menu + e.preventDefault(); + _this.toggleMegaMenu(heading, megaMenu); + } + } + else if (e.key === ' ') { + // Space: Toggle Dropdown (immer) + e.preventDefault(); + _this.toggleMegaMenu(heading, megaMenu); + } + else if (e.key === 'ArrowDown') { + // Pfeil runter: Menü öffnen + erster Link + e.preventDefault(); + _this.openMegaMenu(heading, megaMenu); + _this.focusFirstLink(megaMenu); + } + else if (e.key === 'ArrowUp') { + // Pfeil hoch: Menü schließen + e.preventDefault(); + _this.closeMegaMenu(heading, megaMenu); + } + else if (e.key === 'Escape') { + // Escape: Menü schließen + e.preventDefault(); + _this.closeMegaMenu(heading, megaMenu); + heading.focus(); + } + }); + // Click Event für Top-Level Links - NORMALE Navigation erlauben + if (heading.tagName === 'A') { + heading.addEventListener('click', function (e) { + // Links sollen normal navigieren, nicht das Mega-Menu toglen + // Wenn der User das Menu öffnen will, soll er Space oder Pfeil↓ nutzen + console.log('Link geklickt:', heading.href); + // KEIN preventDefault() - normale Link-Navigation + }); + } + // Focus Management - KEIN automatisches Öffnen oder Schließen + heading.addEventListener('focus', function () { + console.log('Focus auf:', heading.textContent); + // Einfach nur fokussiert - keine automatischen Aktionen! + }); + }; + MegaMenuRenderer.prototype.attachMouseEvents = function (heading, megaMenu) { + var _this = this; + var parentLi = heading.parentElement; + parentLi.addEventListener('mouseenter', function () { + _this.openMegaMenu(heading, megaMenu); + }); + parentLi.addEventListener('mouseleave', function () { + _this.closeMegaMenu(heading, megaMenu); + }); + }; + MegaMenuRenderer.prototype.attachFocusManagement = function (heading, megaMenu) { + var _this = this; + // Focus-Verlust-Behandlung - vereinfacht + megaMenu.addEventListener('focusout', function (e) { + // Kurz warten, um zu prüfen ob Focus innerhalb des Mega-Menus bleibt + setTimeout(function () { + var focusedElement = document.activeElement; + var isInsideThisMenu = megaMenu.contains(focusedElement); + var isOnThisTrigger = focusedElement === heading; + var isInAnyMegaMenu = focusedElement.closest('.mega-menu'); + var isOnAnyTopLevel = focusedElement.closest('#Mega-Menu > ul > li > a, #Mega-Menu > ul > li > span'); + // Nur schließen wenn Focus komplett außerhalb der Navigation ist + if (!isInsideThisMenu && !isOnThisTrigger && !isInAnyMegaMenu && !isOnAnyTopLevel) { + console.log('Schließe Menu wegen Focus-Verlust'); + _this.closeMegaMenu(heading, megaMenu); + } + }, 150); + }); + }; + MegaMenuRenderer.prototype.attachGlobalKeyboardNavigation = function () { + var _this = this; + document.addEventListener('keydown', function (e) { + var activeElement = document.activeElement; + if (e.key === 'Escape') { + var openMenu = document.querySelector('.mega-menu[aria-expanded="true"]'); + if (openMenu) { + var triggerLink = openMenu.previousElementSibling; + _this.closeMegaMenu(triggerLink, openMenu); + triggerLink.focus(); + } + } + // Tab-Navigation: Nur bei spezifischen Übergängen eingreifen + if (e.key === 'Tab') { + // Von Top-Level zum ersten Link im offenen Menu + if (!e.shiftKey) { + var currentTopLevel = activeElement.closest('#Mega-Menu > ul > li > a, #Mega-Menu > ul > li > span'); + if (currentTopLevel) { + var parentLi = currentTopLevel.closest('li'); + var megaMenu = parentLi.querySelector('.mega-menu.js-open'); + if (megaMenu) { + // Nur eingreifen wenn wir vom Trigger weg-tabben + e.preventDefault(); + var firstLink = megaMenu.querySelector('a'); + if (firstLink) { + firstLink.focus(); + } + return; + } + } + } + // Shift+Tab: Vom ersten Link im Menu zurück zum Trigger + if (e.shiftKey) { + var megaMenu = activeElement.closest('.mega-menu'); + if (megaMenu && megaMenu.classList.contains('js-open')) { + var allLinksInMenu = megaMenu.querySelectorAll('a'); + var firstLinkInMenu = allLinksInMenu[0]; + // Nur eingreifen wenn wir beim ersten Link sind + if (activeElement === firstLinkInMenu) { + e.preventDefault(); + var triggerElement = megaMenu.previousElementSibling; + triggerElement.focus(); + return; + } + } + } + // Ansonsten: Normale Tab-Navigation nicht unterbrechen! + } + }); + }; + MegaMenuRenderer.prototype.openMegaMenu = function (trigger, menu) { + trigger.setAttribute('aria-expanded', 'true'); + menu.setAttribute('aria-expanded', 'true'); + menu.classList.add('js-open'); + console.log('Menu geöffnet:', trigger.textContent); + }; + MegaMenuRenderer.prototype.closeMegaMenu = function (trigger, menu) { + trigger.setAttribute('aria-expanded', 'false'); + menu.setAttribute('aria-expanded', 'false'); + menu.classList.remove('js-open'); + console.log('Menu geschlossen:', trigger.textContent); + }; + MegaMenuRenderer.prototype.toggleMegaMenu = function (trigger, menu) { + var isOpen = trigger.getAttribute('aria-expanded') === 'true'; + if (isOpen) { + this.closeMegaMenu(trigger, menu); + } + else { + this.closeAllMegaMenus(); + this.openMegaMenu(trigger, menu); + } + }; + MegaMenuRenderer.prototype.closeAllMegaMenus = function () { + var allTriggers = document.querySelectorAll('#Mega-Menu > ul > li > a[aria-expanded="true"], #Mega-Menu > ul > li > span[aria-expanded="true"]'); + for (var i = 0; i < allTriggers.length; i++) { + var trigger = allTriggers[i]; + var menu = trigger.nextElementSibling; + if (menu) { + this.closeMegaMenu(trigger, menu); + } + } + }; + // removed unused closeOtherMegaMenus (was previously declared but not used) + MegaMenuRenderer.prototype.focusFirstLink = function (megaMenu) { + var firstLink = megaMenu.querySelector('a'); + if (firstLink) { + firstLink.focus(); + } + }; + MegaMenuRenderer.prototype.createScreenReaderAnnouncer = function () { + // Screenreader-Ankündigungen + var srAnnouncer = document.createElement('div'); + srAnnouncer.setAttribute('aria-live', 'polite'); + srAnnouncer.setAttribute('aria-atomic', 'true'); + srAnnouncer.className = 'sr-only'; + document.body.appendChild(srAnnouncer); + console.log('Screenreader-Ankündigungen sind jetzt bereit'); + }; + return MegaMenuRenderer; +}()); +export { MegaMenuRenderer }; + +//# sourceMappingURL=MegaMenuRenderer.js.map diff --git a/lib/extensions/megaMenu/MegaMenuRenderer.js.map b/lib/extensions/megaMenu/MegaMenuRenderer.js.map new file mode 100644 index 0000000..e951c72 --- /dev/null +++ b/lib/extensions/megaMenu/MegaMenuRenderer.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["extensions/megaMenu/MegaMenuRenderer.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,2CAA2C;AAC3C,yBAAyB;AACzB,+BAA+B;AAG/B,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAK3D;IAEI,0BAAoB,OAAqC,EAAU,SAAsB,EAAU,cAAwE;QAAvJ,YAAO,GAAP,OAAO,CAA8B;QAAU,cAAS,GAAT,SAAS,CAAa;QAAU,mBAAc,GAAd,cAAc,CAA0D;IAAI,CAAC;IAEzK,iCAAM,GAAb,UAAc,SAAsB;QAApC,iBAiCC;QAhCG,6BAA6B;QAC7B,SAAS,CAAC,SAAS,GAAG,EAAE,CAAC;QACzB,SAAS,CAAC,EAAE,GAAG,kBAAkB,CAAC;QAElC,8BAA8B;QAC9B,IAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC1C,GAAG,CAAC,EAAE,GAAG,WAAW,CAAC;QACrB,GAAG,CAAC,SAAS,GAAG,gBAAgB,CAAC;QACjC,GAAG,CAAC,YAAY,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QACvC,GAAG,CAAC,YAAY,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC;QAElD,+BAA+B;QAC/B,IAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAChD,UAAU,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAE3C,mCAAmC;QACnC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAA,YAAY;YAC/B,IAAM,UAAU,GAAG,KAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;YACzD,UAAU,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QAEH,8FAA8F;QAC9F,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,aAAa,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YACjF,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;QACtD,CAAC;QAED,GAAG,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAC5B,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAE3B,uDAAuD;QACvD,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,2BAA2B,EAAE,CAAC;IACvC,CAAC;IAEO,6CAAkB,GAA1B;QAAA,iBA8BC;QA7BG,IAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QACxC,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAEhC,yFAAyF;QACzF,IAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC7C,GAAG,CAAC,IAAI,GAAG,QAAQ,CAAC;QACpB,GAAG,CAAC,SAAS,GAAG,mCAAmC,CAAC,CAAC,yBAAyB;QAC9E,GAAG,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QACrC,GAAG,CAAC,YAAY,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QAClC,GAAG,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;QAC3C,GAAG,CAAC,YAAY,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;QAChD,GAAG,CAAC,KAAK,GAAG,eAAe,CAAC;QAE5B,mHAAmH;QACnH,IAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC,SAAS,GAAG,oDAAoD,CAAC;QACtE,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QACzC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAEtB,GAAG,CAAC,gBAAgB,CAAC,OAAO,EAAE,cAAM,OAAA,KAAI,CAAC,YAAY,EAAE,EAAnB,CAAmB,CAAC,CAAC;QACzD,GAAG,CAAC,gBAAgB,CAAC,SAAS,EAAE,UAAC,CAAgB;YAC7C,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;gBACrC,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,KAAI,CAAC,YAAY,EAAE,CAAC;YACxB,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACpB,MAAM,CAAC,EAAE,CAAC;IACd,CAAC;IAEO,uCAAY,GAApB;QACI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;YACvB,IAAI,CAAC,cAAc,GAAG,IAAI,qBAAqB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QACvF,CAAC;QACD,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;IAC/B,CAAC;IAED,6CAA6C;IAErC,6CAAkB,GAA1B,UAA2B,IAAe;QACtC,IAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QACxC,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAEhC,8CAA8C;QAC9C,IAAM,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;QACpD,EAAE,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAE3B,iDAAiD;QACjD,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;YAC5D,IAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAC3C,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC7B,CAAC;QAED,MAAM,CAAC,EAAE,CAAC;IACd,CAAC;IAEO,gDAAqB,GAA7B,UAA8B,IAAe;QACzC,IAAI,OAAoB,CAAC;QAEzB,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YACX,iBAAiB;YACjB,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;YACrC,OAA6B,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC;YAC/C,OAAO,CAAC,SAAS,GAAG,gBAAgB,CAAC;QACzC,CAAC;QAAC,IAAI,CAAC,CAAC;YACJ,2BAA2B;YAC3B,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YACzC,OAAO,CAAC,SAAS,GAAG,gBAAgB,CAAC;YACrC,OAAO,CAAC,YAAY,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QAC1C,CAAC;QAED,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QACzC,OAAO,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;QAC9C,OAAO,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;QAC/C,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC;QAEjC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YACjB,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;QACnC,CAAC;QAED,MAAM,CAAC,OAAO,CAAC;IACnB,CAAC;IAEO,yCAAc,GAAtB,UAAuB,UAAqB;QAA5C,iBAmBC;QAlBG,IAAM,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAClD,WAAW,CAAC,SAAS,GAAG,WAAW,CAAC;QACpC,WAAW,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACzC,WAAW,CAAC,YAAY,CAAC,YAAY,EAAK,UAAU,CAAC,KAAK,qBAAkB,CAAC,CAAC;QAE9E,IAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC9C,OAAO,CAAC,SAAS,GAAG,gBAAgB,CAAC;QAErC,0CAA0C;QAC1C,EAAE,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;YACnB,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,UAAA,eAAe;gBACpC,IAAM,WAAW,GAAG,KAAI,CAAC,qBAAqB,CAAC,eAAe,CAAC,CAAC;gBAChE,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;YACrC,CAAC,CAAC,CAAC;QACP,CAAC;QAED,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACjC,MAAM,CAAC,WAAW,CAAC;IACvB,CAAC;IAEO,gDAAqB,GAA7B,UAA8B,IAAe;QACzC,IAAM,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAClD,WAAW,CAAC,SAAS,GAAG,oBAAoB,CAAC;QAE7C,kCAAkC;QAClC,IAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAExC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YACX,0BAA0B;YAC1B,IAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;YACzC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC;YACrB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC;YAC9B,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;gBACjB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;YAChC,CAAC;YACD,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;QAAC,IAAI,CAAC,CAAC;YACJ,oCAAoC;YACpC,IAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAC5C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC;YAC9B,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;gBACjB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;YAChC,CAAC;YACD,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;QAED,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAE5B,kDAAkD;QAClD,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;YAC5D,IAAM,IAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YAExC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAA,cAAc;gBAC7B,IAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;gBACxC,IAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;gBAEzC,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC,GAAG,IAAI,GAAG,CAAC;gBACtC,IAAI,CAAC,WAAW,GAAG,cAAc,CAAC,KAAK,CAAC;gBAExC,EAAE,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC;oBAC3B,IAAI,CAAC,KAAK,GAAG,cAAc,CAAC,SAAS,CAAC;gBAC1C,CAAC;gBAED,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBACrB,IAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;YACvB,CAAC,CAAC,CAAC;YAEH,WAAW,CAAC,WAAW,CAAC,IAAE,CAAC,CAAC;QAChC,CAAC;QAED,MAAM,CAAC,WAAW,CAAC;IACvB,CAAC;IAEO,+CAAoB,GAA5B;QACI,IAAM,QAAQ,GAAG,QAAQ,CAAC,gBAAgB,CAAC,wEAAwE,CAAC,CAAC;QAErH,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,IAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAgB,CAAC;YAC3C,IAAM,QAAQ,GAAG,OAAO,CAAC,kBAAiC,CAAC;YAE3D,EAAE,CAAC,CAAC,QAAQ,IAAI,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;gBACvD,IAAI,CAAC,wBAAwB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;gBACjD,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;gBAC1C,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAClD,CAAC;QACL,CAAC;QAED,6BAA6B;QAC7B,IAAI,CAAC,8BAA8B,EAAE,CAAC;IAC1C,CAAC;IAEO,mDAAwB,GAAhC,UAAiC,OAAoB,EAAE,QAAqB;QAA5E,iBAgDC;QA/CG,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,UAAC,CAAgB;YACjD,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC;gBACpB,4DAA4D;gBAC5D,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC;oBAC1B,0DAA0D;oBAC1D,MAAM,CAAC;gBACX,CAAC;gBAAC,IAAI,CAAC,CAAC;oBACJ,wBAAwB;oBACxB,CAAC,CAAC,cAAc,EAAE,CAAC;oBACnB,KAAI,CAAC,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;gBAC3C,CAAC;YACL,CAAC;YAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;gBACvB,iCAAiC;gBACjC,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,KAAI,CAAC,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAC3C,CAAC;YAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,WAAW,CAAC,CAAC,CAAC;gBAC/B,0CAA0C;gBAC1C,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,KAAI,CAAC,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;gBACrC,KAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YAClC,CAAC;YAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC;gBAC7B,6BAA6B;gBAC7B,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,KAAI,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAC1C,CAAC;YAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC;gBAC5B,yBAAyB;gBACzB,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,KAAI,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;gBACtC,OAAO,CAAC,KAAK,EAAE,CAAC;YACpB,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,gEAAgE;QAChE,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC;YAC1B,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,UAAC,CAAa;gBAC5C,6DAA6D;gBAC7D,uEAAuE;gBACvE,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAG,OAA6B,CAAC,IAAI,CAAC,CAAC;gBACnE,kDAAkD;YACtD,CAAC,CAAC,CAAC;QACP,CAAC;QAED,8DAA8D;QAC9D,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE;YAC9B,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;YAC/C,yDAAyD;QAC7D,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,4CAAiB,GAAzB,UAA0B,OAAoB,EAAE,QAAqB;QAArE,iBAUC;QATG,IAAM,QAAQ,GAAG,OAAO,CAAC,aAA4B,CAAC;QAEtD,QAAQ,CAAC,gBAAgB,CAAC,YAAY,EAAE;YACpC,KAAI,CAAC,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,gBAAgB,CAAC,YAAY,EAAE;YACpC,KAAI,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,gDAAqB,GAA7B,UAA8B,OAAoB,EAAE,QAAqB;QAAzE,iBAkBC;QAjBG,yCAAyC;QACzC,QAAQ,CAAC,gBAAgB,CAAC,UAAU,EAAE,UAAC,CAAa;YAChD,qEAAqE;YACrE,UAAU,CAAC;gBACP,IAAM,cAAc,GAAG,QAAQ,CAAC,aAA4B,CAAC;gBAC7D,IAAM,gBAAgB,GAAG,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;gBAC3D,IAAM,eAAe,GAAG,cAAc,KAAK,OAAO,CAAC;gBACnD,IAAM,eAAe,GAAG,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;gBAC7D,IAAM,eAAe,GAAG,cAAc,CAAC,OAAO,CAAC,uDAAuD,CAAC,CAAC;gBAExG,iEAAiE;gBACjE,EAAE,CAAC,CAAC,CAAC,gBAAgB,IAAI,CAAC,eAAe,IAAI,CAAC,eAAe,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;oBAChF,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;oBACjD,KAAI,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;gBAC1C,CAAC;YACL,CAAC,EAAE,GAAG,CAAC,CAAC;QACZ,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,yDAA8B,GAAtC;QAAA,iBAqDC;QApDG,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,UAAC,CAAgB;YAClD,IAAM,aAAa,GAAG,QAAQ,CAAC,aAA4B,CAAC;YAE5D,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACrB,IAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,kCAAkC,CAAgB,CAAC;gBAC3F,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;oBACX,IAAM,WAAW,GAAG,QAAQ,CAAC,sBAAqC,CAAC;oBACnE,KAAI,CAAC,aAAa,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;oBAC1C,WAAW,CAAC,KAAK,EAAE,CAAC;gBACxB,CAAC;YACL,CAAC;YAED,6DAA6D;YAC7D,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC;gBAClB,gDAAgD;gBAChD,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;oBACd,IAAM,eAAe,GAAG,aAAa,CAAC,OAAO,CAAC,uDAAuD,CAAgB,CAAC;oBACtH,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;wBAClB,IAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,IAAI,CAAgB,CAAC;wBAC9D,IAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,oBAAoB,CAAgB,CAAC;wBAC7E,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;4BACX,iDAAiD;4BACjD,CAAC,CAAC,cAAc,EAAE,CAAC;4BACnB,IAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAgB,CAAC;4BAC7D,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;gCACZ,SAAS,CAAC,KAAK,EAAE,CAAC;4BACtB,CAAC;4BACD,MAAM,CAAC;wBACX,CAAC;oBACL,CAAC;gBACL,CAAC;gBAED,wDAAwD;gBACxD,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;oBACb,IAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,YAAY,CAAgB,CAAC;oBACpE,EAAE,CAAC,CAAC,QAAQ,IAAI,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;wBACrD,IAAM,cAAc,GAAG,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;wBACtD,IAAM,eAAe,GAAG,cAAc,CAAC,CAAC,CAAgB,CAAC;wBAEzD,gDAAgD;wBAChD,EAAE,CAAC,CAAC,aAAa,KAAK,eAAe,CAAC,CAAC,CAAC;4BACpC,CAAC,CAAC,cAAc,EAAE,CAAC;4BACnB,IAAM,cAAc,GAAG,QAAQ,CAAC,sBAAqC,CAAC;4BACtE,cAAc,CAAC,KAAK,EAAE,CAAC;4BACvB,MAAM,CAAC;wBACX,CAAC;oBACL,CAAC;gBACL,CAAC;gBAED,wDAAwD;YAC5D,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,uCAAY,GAApB,UAAqB,OAAoB,EAAE,IAAiB;QACxD,OAAO,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;QAC9C,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;QAC3C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IACvD,CAAC;IAEO,wCAAa,GAArB,UAAsB,OAAoB,EAAE,IAAiB;QACzD,OAAO,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;QAC/C,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;QAC5C,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAC1D,CAAC;IAEO,yCAAc,GAAtB,UAAuB,OAAoB,EAAE,IAAiB;QAC1D,IAAM,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,eAAe,CAAC,KAAK,MAAM,CAAC;QAChE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;YACT,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACtC,CAAC;QAAC,IAAI,CAAC,CAAC;YACJ,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACrC,CAAC;IACL,CAAC;IAEO,4CAAiB,GAAzB;QACI,IAAM,WAAW,GAAG,QAAQ,CAAC,gBAAgB,CAAC,mGAAmG,CAAC,CAAC;QACnJ,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1C,IAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAgB,CAAC;YAC9C,IAAM,IAAI,GAAG,OAAO,CAAC,kBAAiC,CAAC;YACvD,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;gBACP,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YACtC,CAAC;QACL,CAAC;IACL,CAAC;IAED,4EAA4E;IAEpE,yCAAc,GAAtB,UAAuB,QAAqB;QACxC,IAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAgB,CAAC;QAC7D,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;YACZ,SAAS,CAAC,KAAK,EAAE,CAAC;QACtB,CAAC;IACL,CAAC;IAEO,sDAA2B,GAAnC;QACI,6BAA6B;QAC7B,IAAM,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAClD,WAAW,CAAC,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAChD,WAAW,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QAChD,WAAW,CAAC,SAAS,GAAG,SAAS,CAAC;QAClC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAEvC,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;IAChE,CAAC;IACL,uBAAC;AAAD,CAvZA,AAuZC,IAAA","file":"extensions/megaMenu/MegaMenuRenderer.js","sourcesContent":["// tslint:disable:max-line-length\r\n// tslint:disable:match-default-export-name\r\n// tslint:disable:typedef\r\n// tslint:disable:variable-name\r\n\r\nimport { ApplicationCustomizerContext } from '@microsoft/sp-application-base';\r\nimport { SPPermission } from '@microsoft/sp-page-context';\r\nimport { IMenuItem } from '../../services/IMenuItem';\r\nimport { MegaMenuSettingsPanel } from './MegaMenuSettings';\r\nimport { IMegaMenuApplicationCustomizerProperties } from './MegaMenuApplicationCustomizer';\r\n\r\nimport styles from './MegaMenu.module.scss'; // tslint:disable-line:no-unused-variable\r\n\r\nexport class MegaMenuRenderer {\r\n private _settingsPanel?: MegaMenuSettingsPanel;\r\n constructor(private context: ApplicationCustomizerContext, private menuItems: IMenuItem[], private updateCallback: (data: IMegaMenuApplicationCustomizerProperties) => void) { }\r\n\r\n public render(container: HTMLElement) {\r\n // Clear any existing content\r\n container.innerHTML = '';\r\n container.id = 'CustomNavigation';\r\n \r\n // Create the main nav element\r\n const nav = document.createElement('nav');\r\n nav.id = 'Mega-Menu';\r\n nav.className = 'mega-menu-main';\r\n nav.setAttribute('role', 'navigation');\r\n nav.setAttribute('aria-label', 'Hauptnavigation');\r\n\r\n // Create the top-level menubar\r\n const topLevelUl = document.createElement('ul');\r\n topLevelUl.setAttribute('role', 'menubar');\r\n\r\n // Process each top-level menu item\r\n this.menuItems.forEach(topLevelItem => {\r\n const topLevelLi = this.createTopLevelItem(topLevelItem);\r\n topLevelUl.appendChild(topLevelLi);\r\n });\r\n\r\n // Only if current user has ManageWeb permissions in this website can they access the settings\r\n if (this.context.pageContext.web.permissions.hasPermission(SPPermission.manageWeb)) {\r\n topLevelUl.appendChild(this.createSettingsItem());\r\n }\r\n\r\n nav.appendChild(topLevelUl);\r\n container.appendChild(nav);\r\n\r\n // Attach accessibility event listeners after rendering\r\n this.attachEventListeners();\r\n this.createScreenReaderAnnouncer();\r\n }\r\n\r\n private createSettingsItem(): HTMLLIElement {\r\n const li = document.createElement('li');\r\n li.setAttribute('role', 'none');\r\n\r\n // Verwenden eines Links-ähnlichen Buttons damit Styling identisch zu Top-Level Items ist\r\n const btn = document.createElement('button');\r\n btn.type = 'button';\r\n btn.className = 'menu-item-link menu-item-settings'; // reuse same base styles\r\n btn.setAttribute('role', 'menuitem');\r\n btn.setAttribute('tabindex', '0');\r\n btn.setAttribute('aria-haspopup', 'false');\r\n btn.setAttribute('aria-label', 'Einstellungen');\r\n btn.title = 'Einstellungen';\r\n\r\n // Nur EIN Icon: Wenn Fabric Icons geladen sind, zeigt ms-Icon das Symbol. Fallback via aria-label für Screenreader\r\n const icon = document.createElement('span');\r\n icon.className = 'ms-Icon ms-Icon--Settings menu-item-settings__icon';\r\n icon.setAttribute('aria-hidden', 'true');\r\n btn.appendChild(icon);\r\n\r\n btn.addEventListener('click', () => this.openSettings());\r\n btn.addEventListener('keydown', (e: KeyboardEvent) => {\r\n if (e.key === 'Enter' || e.key === ' ') {\r\n e.preventDefault();\r\n this.openSettings();\r\n }\r\n });\r\n\r\n li.appendChild(btn);\r\n return li;\r\n }\r\n\r\n private openSettings(): void {\r\n if (!this._settingsPanel) {\r\n this._settingsPanel = new MegaMenuSettingsPanel(this.context, this.updateCallback);\r\n }\r\n this._settingsPanel.open();\r\n }\r\n\r\n // Panel logic moved to MegaMenuSettingsPanel\r\n\r\n private createTopLevelItem(item: IMenuItem): HTMLLIElement {\r\n const li = document.createElement('li');\r\n li.setAttribute('role', 'none');\r\n\r\n // Create the top-level element (link or span)\r\n const topElement = this.createTopLevelElement(item);\r\n li.appendChild(topElement);\r\n\r\n // If the item has children, create the mega menu\r\n if (item.hasChildren() && item.items && item.items.length > 0) {\r\n const megaMenu = this.createMegaMenu(item);\r\n li.appendChild(megaMenu);\r\n }\r\n\r\n return li;\r\n }\r\n\r\n private createTopLevelElement(item: IMenuItem): HTMLElement {\r\n let element: HTMLElement;\r\n\r\n if (item.url) {\r\n // Create as link\r\n element = document.createElement('a');\r\n (element as HTMLAnchorElement).href = item.url;\r\n element.className = 'menu-item-link';\r\n } else {\r\n // Create as span (no link)\r\n element = document.createElement('span');\r\n element.className = 'menu-item-text';\r\n element.setAttribute('tabindex', '0');\r\n }\r\n\r\n element.setAttribute('role', 'menuitem');\r\n element.setAttribute('aria-haspopup', 'true');\r\n element.setAttribute('aria-expanded', 'false');\r\n element.textContent = item.label;\r\n\r\n if (item.hoverText) {\r\n element.title = item.hoverText;\r\n }\r\n\r\n return element;\r\n }\r\n\r\n private createMegaMenu(parentItem: IMenuItem): HTMLDivElement {\r\n const megaMenuDiv = document.createElement('div');\r\n megaMenuDiv.className = 'mega-menu';\r\n megaMenuDiv.setAttribute('role', 'menu');\r\n megaMenuDiv.setAttribute('aria-label', `${parentItem.label} Unterkategorien`);\r\n\r\n const gridDiv = document.createElement('div');\r\n gridDiv.className = 'mega-menu-grid';\r\n\r\n // Process second-level items (categories)\r\n if (parentItem.items) {\r\n parentItem.items.forEach(secondLevelItem => {\r\n const categoryDiv = this.createCategorySection(secondLevelItem);\r\n gridDiv.appendChild(categoryDiv);\r\n });\r\n }\r\n\r\n megaMenuDiv.appendChild(gridDiv);\r\n return megaMenuDiv;\r\n }\r\n\r\n private createCategorySection(item: IMenuItem): HTMLDivElement {\r\n const categoryDiv = document.createElement('div');\r\n categoryDiv.className = 'mega-menu-category';\r\n\r\n // Create the category header (h3)\r\n const h3 = document.createElement('h3');\r\n\r\n if (item.url) {\r\n // Category header as link\r\n const link = document.createElement('a');\r\n link.href = item.url;\r\n link.textContent = item.label;\r\n if (item.hoverText) {\r\n link.title = item.hoverText;\r\n }\r\n h3.appendChild(link);\r\n } else {\r\n // Category header as span (no link)\r\n const span = document.createElement('span');\r\n span.textContent = item.label;\r\n if (item.hoverText) {\r\n span.title = item.hoverText;\r\n }\r\n h3.appendChild(span);\r\n }\r\n\r\n categoryDiv.appendChild(h3);\r\n\r\n // Create the third-level items list if they exist\r\n if (item.hasChildren() && item.items && item.items.length > 0) {\r\n const ul = document.createElement('ul');\r\n\r\n item.items.forEach(thirdLevelItem => {\r\n const li = document.createElement('li');\r\n const link = document.createElement('a');\r\n\r\n link.href = thirdLevelItem.url || '#';\r\n link.textContent = thirdLevelItem.label;\r\n\r\n if (thirdLevelItem.hoverText) {\r\n link.title = thirdLevelItem.hoverText;\r\n }\r\n\r\n li.appendChild(link);\r\n ul.appendChild(li);\r\n });\r\n\r\n categoryDiv.appendChild(ul);\r\n }\r\n\r\n return categoryDiv;\r\n }\r\n\r\n private attachEventListeners(): void {\r\n const headings = document.querySelectorAll('#Mega-Menu > ul > li > a, #Mega-Menu > ul > li > span[role=\"menuitem\"]');\r\n\r\n for (let i = 0; i < headings.length; i++) {\r\n const heading = headings[i] as HTMLElement;\r\n const megaMenu = heading.nextElementSibling as HTMLElement;\r\n\r\n if (megaMenu && megaMenu.classList.contains('mega-menu')) {\r\n this.attachKeyboardNavigation(heading, megaMenu);\r\n this.attachMouseEvents(heading, megaMenu);\r\n this.attachFocusManagement(heading, megaMenu);\r\n }\r\n }\r\n\r\n // Global keyboard navigation\r\n this.attachGlobalKeyboardNavigation();\r\n }\r\n\r\n private attachKeyboardNavigation(heading: HTMLElement, megaMenu: HTMLElement): void {\r\n heading.addEventListener('keydown', (e: KeyboardEvent) => {\r\n if (e.key === 'Enter') {\r\n // Enter: Navigation (nur bei Links ohne Mega-Menu-Override)\r\n if (heading.tagName === 'A') {\r\n // Lasse normale Link-Navigation zu (KEIN preventDefault!)\r\n return;\r\n } else {\r\n // Bei span: Toggle Menu\r\n e.preventDefault();\r\n this.toggleMegaMenu(heading, megaMenu);\r\n }\r\n } else if (e.key === ' ') {\r\n // Space: Toggle Dropdown (immer)\r\n e.preventDefault();\r\n this.toggleMegaMenu(heading, megaMenu);\r\n } else if (e.key === 'ArrowDown') {\r\n // Pfeil runter: Menü öffnen + erster Link\r\n e.preventDefault();\r\n this.openMegaMenu(heading, megaMenu);\r\n this.focusFirstLink(megaMenu);\r\n } else if (e.key === 'ArrowUp') {\r\n // Pfeil hoch: Menü schließen\r\n e.preventDefault();\r\n this.closeMegaMenu(heading, megaMenu);\r\n } else if (e.key === 'Escape') {\r\n // Escape: Menü schließen\r\n e.preventDefault();\r\n this.closeMegaMenu(heading, megaMenu);\r\n heading.focus();\r\n }\r\n });\r\n\r\n // Click Event für Top-Level Links - NORMALE Navigation erlauben\r\n if (heading.tagName === 'A') {\r\n heading.addEventListener('click', (e: MouseEvent) => {\r\n // Links sollen normal navigieren, nicht das Mega-Menu toglen\r\n // Wenn der User das Menu öffnen will, soll er Space oder Pfeil↓ nutzen\r\n console.log('Link geklickt:', (heading as HTMLAnchorElement).href);\r\n // KEIN preventDefault() - normale Link-Navigation\r\n });\r\n }\r\n\r\n // Focus Management - KEIN automatisches Öffnen oder Schließen\r\n heading.addEventListener('focus', () => {\r\n console.log('Focus auf:', heading.textContent);\r\n // Einfach nur fokussiert - keine automatischen Aktionen!\r\n });\r\n }\r\n\r\n private attachMouseEvents(heading: HTMLElement, megaMenu: HTMLElement): void {\r\n const parentLi = heading.parentElement as HTMLElement;\r\n\r\n parentLi.addEventListener('mouseenter', () => {\r\n this.openMegaMenu(heading, megaMenu);\r\n });\r\n\r\n parentLi.addEventListener('mouseleave', () => {\r\n this.closeMegaMenu(heading, megaMenu);\r\n });\r\n }\r\n\r\n private attachFocusManagement(heading: HTMLElement, megaMenu: HTMLElement): void {\r\n // Focus-Verlust-Behandlung - vereinfacht\r\n megaMenu.addEventListener('focusout', (e: FocusEvent) => {\r\n // Kurz warten, um zu prüfen ob Focus innerhalb des Mega-Menus bleibt\r\n setTimeout(() => {\r\n const focusedElement = document.activeElement as HTMLElement;\r\n const isInsideThisMenu = megaMenu.contains(focusedElement);\r\n const isOnThisTrigger = focusedElement === heading;\r\n const isInAnyMegaMenu = focusedElement.closest('.mega-menu');\r\n const isOnAnyTopLevel = focusedElement.closest('#Mega-Menu > ul > li > a, #Mega-Menu > ul > li > span');\r\n\r\n // Nur schließen wenn Focus komplett außerhalb der Navigation ist\r\n if (!isInsideThisMenu && !isOnThisTrigger && !isInAnyMegaMenu && !isOnAnyTopLevel) {\r\n console.log('Schließe Menu wegen Focus-Verlust');\r\n this.closeMegaMenu(heading, megaMenu);\r\n }\r\n }, 150);\r\n });\r\n }\r\n\r\n private attachGlobalKeyboardNavigation(): void {\r\n document.addEventListener('keydown', (e: KeyboardEvent) => {\r\n const activeElement = document.activeElement as HTMLElement;\r\n\r\n if (e.key === 'Escape') {\r\n const openMenu = document.querySelector('.mega-menu[aria-expanded=\"true\"]') as HTMLElement;\r\n if (openMenu) {\r\n const triggerLink = openMenu.previousElementSibling as HTMLElement;\r\n this.closeMegaMenu(triggerLink, openMenu);\r\n triggerLink.focus();\r\n }\r\n }\r\n\r\n // Tab-Navigation: Nur bei spezifischen Übergängen eingreifen\r\n if (e.key === 'Tab') {\r\n // Von Top-Level zum ersten Link im offenen Menu\r\n if (!e.shiftKey) {\r\n const currentTopLevel = activeElement.closest('#Mega-Menu > ul > li > a, #Mega-Menu > ul > li > span') as HTMLElement;\r\n if (currentTopLevel) {\r\n const parentLi = currentTopLevel.closest('li') as HTMLElement;\r\n const megaMenu = parentLi.querySelector('.mega-menu.js-open') as HTMLElement;\r\n if (megaMenu) {\r\n // Nur eingreifen wenn wir vom Trigger weg-tabben\r\n e.preventDefault();\r\n const firstLink = megaMenu.querySelector('a') as HTMLElement;\r\n if (firstLink) {\r\n firstLink.focus();\r\n }\r\n return;\r\n }\r\n }\r\n }\r\n\r\n // Shift+Tab: Vom ersten Link im Menu zurück zum Trigger\r\n if (e.shiftKey) {\r\n const megaMenu = activeElement.closest('.mega-menu') as HTMLElement;\r\n if (megaMenu && megaMenu.classList.contains('js-open')) {\r\n const allLinksInMenu = megaMenu.querySelectorAll('a');\r\n const firstLinkInMenu = allLinksInMenu[0] as HTMLElement;\r\n\r\n // Nur eingreifen wenn wir beim ersten Link sind\r\n if (activeElement === firstLinkInMenu) {\r\n e.preventDefault();\r\n const triggerElement = megaMenu.previousElementSibling as HTMLElement;\r\n triggerElement.focus();\r\n return;\r\n }\r\n }\r\n }\r\n\r\n // Ansonsten: Normale Tab-Navigation nicht unterbrechen!\r\n }\r\n });\r\n }\r\n\r\n private openMegaMenu(trigger: HTMLElement, menu: HTMLElement): void {\r\n trigger.setAttribute('aria-expanded', 'true');\r\n menu.setAttribute('aria-expanded', 'true');\r\n menu.classList.add('js-open');\r\n console.log('Menu geöffnet:', trigger.textContent);\r\n }\r\n\r\n private closeMegaMenu(trigger: HTMLElement, menu: HTMLElement): void {\r\n trigger.setAttribute('aria-expanded', 'false');\r\n menu.setAttribute('aria-expanded', 'false');\r\n menu.classList.remove('js-open');\r\n console.log('Menu geschlossen:', trigger.textContent);\r\n }\r\n\r\n private toggleMegaMenu(trigger: HTMLElement, menu: HTMLElement): void {\r\n const isOpen = trigger.getAttribute('aria-expanded') === 'true';\r\n if (isOpen) {\r\n this.closeMegaMenu(trigger, menu);\r\n } else {\r\n this.closeAllMegaMenus();\r\n this.openMegaMenu(trigger, menu);\r\n }\r\n }\r\n\r\n private closeAllMegaMenus(): void {\r\n const allTriggers = document.querySelectorAll('#Mega-Menu > ul > li > a[aria-expanded=\"true\"], #Mega-Menu > ul > li > span[aria-expanded=\"true\"]');\r\n for (let i = 0; i < allTriggers.length; i++) {\r\n const trigger = allTriggers[i] as HTMLElement;\r\n const menu = trigger.nextElementSibling as HTMLElement;\r\n if (menu) {\r\n this.closeMegaMenu(trigger, menu);\r\n }\r\n }\r\n }\r\n\r\n // removed unused closeOtherMegaMenus (was previously declared but not used)\r\n\r\n private focusFirstLink(megaMenu: HTMLElement): void {\r\n const firstLink = megaMenu.querySelector('a') as HTMLElement;\r\n if (firstLink) {\r\n firstLink.focus();\r\n }\r\n }\r\n\r\n private createScreenReaderAnnouncer(): void {\r\n // Screenreader-Ankündigungen\r\n const srAnnouncer = document.createElement('div');\r\n srAnnouncer.setAttribute('aria-live', 'polite');\r\n srAnnouncer.setAttribute('aria-atomic', 'true');\r\n srAnnouncer.className = 'sr-only';\r\n document.body.appendChild(srAnnouncer);\r\n\r\n console.log('Screenreader-Ankündigungen sind jetzt bereit');\r\n }\r\n}"],"sourceRoot":"..\\..\\..\\src"} \ No newline at end of file diff --git a/lib/extensions/megaMenu/MegaMenuSettings.d.ts b/lib/extensions/megaMenu/MegaMenuSettings.d.ts new file mode 100644 index 0000000..8f4331a --- /dev/null +++ b/lib/extensions/megaMenu/MegaMenuSettings.d.ts @@ -0,0 +1,25 @@ +import { ApplicationCustomizerContext } from '@microsoft/sp-application-base'; +import { IMegaMenuApplicationCustomizerProperties } from './MegaMenuApplicationCustomizer'; +export declare class MegaMenuSettingsPanel { + private context; + private dataUpdated; + private _service; + private _ucaId; + private _panelElement; + private _overlayElement; + constructor(context: ApplicationCustomizerContext, dataUpdated: (data: IMegaMenuApplicationCustomizerProperties) => void); + open(): Promise; + close(): void; + private readApplicationCustomizerProps(); + private saveApplicationCustomizerProps(componentProps); + private _createPanel(props); + private _getMarkup(termSet, cssUrl); + private _save(); + /** + * Hält den Fokus innerhalb des Settings-Panels gefangen (Focus Trapping). + * Wichtig für Accessibility: Verhindert, dass Tab-Navigation aus dem modalen Dialog herausführt. + * Bei Tab am letzten Element → springt zum ersten, bei Shift+Tab am ersten → springt zum letzten. + */ + private _trapFocus(e); + private _escape(value); +} diff --git a/lib/extensions/megaMenu/MegaMenuSettings.js b/lib/extensions/megaMenu/MegaMenuSettings.js new file mode 100644 index 0000000..7f073c3 --- /dev/null +++ b/lib/extensions/megaMenu/MegaMenuSettings.js @@ -0,0 +1,223 @@ +// tslint:disable:max-line-length export-name +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + 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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = y[op[0] & 2 ? "return" : op[0] ? "throw" : "next"]) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [0, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +import { UserCustomActionMegaMenuId } from './MegaMenuApplicationCustomizer'; +import { UserCustomActionService } from '../../services/UserCustomActionService/UserCustomActionService'; +import { UserCustomActionScope } from '../../services/UserCustomActionService/UserCustomActionScope'; +var MegaMenuSettingsPanel = (function () { + function MegaMenuSettingsPanel(context, dataUpdated) { + this.context = context; + this.dataUpdated = dataUpdated; + this._panelElement = undefined; + this._overlayElement = undefined; + this._service = new UserCustomActionService(this.context); + } + MegaMenuSettingsPanel.prototype.open = function () { + return __awaiter(this, void 0, void 0, function () { + var currentProps; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + if (this._panelElement) { + return [2 /*return*/]; + } + return [4 /*yield*/, this.readApplicationCustomizerProps()]; + case 1: + currentProps = _a.sent(); + this._createPanel(currentProps); + return [2 /*return*/]; + } + }); + }); + }; + MegaMenuSettingsPanel.prototype.close = function () { + if (this._panelElement) { + this._panelElement.remove(); + this._panelElement = undefined; + } + if (this._overlayElement) { + this._overlayElement.remove(); + this._overlayElement = undefined; + } + // Fokus entfernen (kein sichtbarer Fokus-Rahmen nach Dialog-Schließung) + document.body.focus(); + document.body.blur(); + }; + MegaMenuSettingsPanel.prototype.readApplicationCustomizerProps = function () { + return __awaiter(this, void 0, void 0, function () { + var ucas, candidates, uca; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, this._service.getUserCustomActions(UserCustomActionScope.Site)]; + case 1: + ucas = _a.sent(); + candidates = ucas.filter(function (uca) { return uca.ClientSideComponentId === UserCustomActionMegaMenuId; }); + if (candidates.length) { + uca = candidates[0]; + this._ucaId = uca.Id; + return [2 /*return*/, JSON.parse(uca.ClientSideComponentProperties)]; + } + else { + console.error('UserCustomAction für das Megamenü nicht gefunden. Alles ist sinnlos.'); + return [2 /*return*/, { + termSetName: '', + cssUrl: '' + }]; + } + return [2 /*return*/]; + } + }); + }); + }; + MegaMenuSettingsPanel.prototype.saveApplicationCustomizerProps = function (componentProps) { + return __awaiter(this, void 0, void 0, function () { + var newUserCustomActionsProperty, e_1; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + _a.trys.push([0, 2, , 3]); + newUserCustomActionsProperty = { + ClientSideComponentProperties: JSON.stringify(componentProps) + }; + return [4 /*yield*/, this._service.updateUserCustomAction(UserCustomActionScope.Site, this._ucaId, newUserCustomActionsProperty)]; + case 1: + _a.sent(); + this.dataUpdated(componentProps); + return [3 /*break*/, 3]; + case 2: + e_1 = _a.sent(); + console.error(e_1); + return [3 /*break*/, 3]; + case 3: return [2 /*return*/]; + } + }); + }); + }; + MegaMenuSettingsPanel.prototype._createPanel = function (props) { + var _this = this; + var overlay = document.createElement('div'); + overlay.className = 'mm-settings-overlay'; + overlay.tabIndex = -1; + overlay.onclick = function () { return _this.close(); }; + this._overlayElement = overlay; + var panel = document.createElement('div'); + panel.className = 'mm-settings-panel'; + panel.setAttribute('role', 'dialog'); + panel.setAttribute('aria-modal', 'true'); + panel.setAttribute('aria-label', 'MegaMenu Einstellungen'); + panel.innerHTML = this._getMarkup(props.termSetName, props.cssUrl); + this._panelElement = panel; + document.body.appendChild(overlay); + document.body.appendChild(panel); + var closeBtn = panel.querySelector('.mm-settings-close'); + var cancelBtn = panel.querySelector('.mm-settings-cancel'); + var saveBtn = panel.querySelector('.mm-settings-save'); + var firstInput = panel.querySelector('#mm-setting-termset'); + if (closeBtn) { + closeBtn.onclick = function () { return _this.close(); }; + } + if (cancelBtn) { + cancelBtn.onclick = function () { return _this.close(); }; + } + if (saveBtn) { + saveBtn.onclick = function () { return _this._save(); }; + } + panel.addEventListener('keydown', function (e) { + if (e.key === 'Escape') { + e.preventDefault(); + _this.close(); + } + else if (e.key === 'Tab') { + _this._trapFocus(e); + } + }); + setTimeout(function () { if (firstInput) { + firstInput.focus(); + } }, 0); + }; + MegaMenuSettingsPanel.prototype._getMarkup = function (termSet, cssUrl) { + return "
\n

Einstellungen

\n \n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n "; + }; + MegaMenuSettingsPanel.prototype._save = function () { + if (!this._panelElement) { + return; + } + var termSetInput = this._panelElement.querySelector('#mm-setting-termset'); + var cssInput = this._panelElement.querySelector('#mm-setting-css'); + this.saveApplicationCustomizerProps({ + termSetName: termSetInput && termSetInput.value ? termSetInput.value : '', + cssUrl: cssInput && cssInput.value ? cssInput.value : '' + }); + this.close(); + }; + /** + * Hält den Fokus innerhalb des Settings-Panels gefangen (Focus Trapping). + * Wichtig für Accessibility: Verhindert, dass Tab-Navigation aus dem modalen Dialog herausführt. + * Bei Tab am letzten Element → springt zum ersten, bei Shift+Tab am ersten → springt zum letzten. + */ + MegaMenuSettingsPanel.prototype._trapFocus = function (e) { + if (!this._panelElement) { + return; + } + var focusable = this._panelElement.querySelectorAll('button, input'); + if (!focusable || focusable.length === 0) { + return; + } + var first = focusable[0]; + var last = focusable[focusable.length - 1]; + var active = document.activeElement; + if (e.shiftKey && active === first) { + e.preventDefault(); + last.focus(); + } + else if (!e.shiftKey && active === last) { + e.preventDefault(); + first.focus(); + } + }; + MegaMenuSettingsPanel.prototype._escape = function (value) { + if (value) { + return value.replace(/&/g, '&').replace(/"/g, '"').replace(//g, '>'); + } + else { + return ''; + } + }; + return MegaMenuSettingsPanel; +}()); +export { MegaMenuSettingsPanel }; + +//# sourceMappingURL=MegaMenuSettings.js.map diff --git a/lib/extensions/megaMenu/MegaMenuSettings.js.map b/lib/extensions/megaMenu/MegaMenuSettings.js.map new file mode 100644 index 0000000..cdd4006 --- /dev/null +++ b/lib/extensions/megaMenu/MegaMenuSettings.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["extensions/megaMenu/MegaMenuSettings.ts"],"names":[],"mappings":"AAAA,6CAA6C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAS7C,OAAO,EAA4C,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AACvH,OAAO,EAAE,uBAAuB,EAAE,MAAM,gEAAgE,CAAC;AACzG,OAAO,EAAE,qBAAqB,EAAE,MAAM,8DAA8D,CAAC;AAGrG;IAMI,+BAAoB,OAAqC,EAAU,WAAqE;QAApH,YAAO,GAAP,OAAO,CAA8B;QAAU,gBAAW,GAAX,WAAW,CAA0D;QAHhI,kBAAa,GAA4B,SAAS,CAAC;QACnD,oBAAe,GAA4B,SAAS,CAAC;QAGzD,IAAI,CAAC,QAAQ,GAAG,IAAI,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9D,CAAC;IAEY,oCAAI,GAAjB;;;;;;wBACI,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;4BACrB,MAAM,gBAAC;wBACX,CAAC;wBAC8D,qBAAM,IAAI,CAAC,8BAA8B,EAAE,EAAA;;wBAApG,YAAY,GAA6C,SAA2C;wBAC1G,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;;;;;KACnC;IAEM,qCAAK,GAAZ;QACI,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;YACrB,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;YAC5B,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;QACnC,CAAC;QACD,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;YACvB,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;YAC9B,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;QACrC,CAAC;QACD,wEAAwE;QACxE,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACtB,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IACzB,CAAC;IAEa,8DAA8B,GAA5C;;;;;4BAC2C,qBAAM,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAA;;wBAArG,IAAI,GAA6B,SAAoE;wBACrG,UAAU,GAA6B,IAAI,CAAC,MAAM,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,qBAAqB,KAAK,0BAA0B,EAAxD,CAAwD,CAAC,CAAC;wBAC1H,EAAE,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;4BACd,GAAG,GAA2B,UAAU,CAAC,CAAC,CAAC,CAAC;4BAClD,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC;4BACrB,MAAM,gBAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,6BAA6B,CAA6C,EAAC;wBACrG,CAAC;wBAAC,IAAI,CAAC,CAAC;4BACJ,OAAO,CAAC,KAAK,CAAC,sEAAsE,CAAC,CAAC;4BACtF,MAAM,gBAAC;oCACH,WAAW,EAAE,EAAE;oCACf,MAAM,EAAE,EAAE;iCACb,EAAC;wBACN,CAAC;;;;;KACJ;IAEa,8DAA8B,GAA5C,UAA6C,cAAwD;;;;;;;wBAEvF,4BAA4B,GAAO;4BACrC,6BAA6B,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC;yBAChE,CAAC;wBACF,qBAAM,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC,qBAAqB,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,4BAA4B,CAAC,EAAA;;wBAAjH,SAAiH,CAAC;wBAClH,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;;;;wBAEjC,OAAO,CAAC,KAAK,CAAC,GAAC,CAAC,CAAC;;;;;;KAExB;IAEO,4CAAY,GAApB,UAAqB,KAA+C;QAApE,iBAgCC;QA/BG,IAAM,OAAO,GAAgB,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC3D,OAAO,CAAC,SAAS,GAAG,qBAAqB,CAAC;QAC1C,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;QACtB,OAAO,CAAC,OAAO,GAAG,cAAM,OAAA,KAAI,CAAC,KAAK,EAAE,EAAZ,CAAY,CAAC;QACrC,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC;QAE/B,IAAM,KAAK,GAAgB,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACzD,KAAK,CAAC,SAAS,GAAG,mBAAmB,CAAC;QACtC,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACrC,KAAK,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QACzC,KAAK,CAAC,YAAY,CAAC,YAAY,EAAE,wBAAwB,CAAC,CAAC;QAC3D,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACnE,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAE3B,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACnC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAEjC,IAAM,QAAQ,GAAsB,KAAK,CAAC,aAAa,CAAC,oBAAoB,CAAsB,CAAC;QACnG,IAAM,SAAS,GAAsB,KAAK,CAAC,aAAa,CAAC,qBAAqB,CAAsB,CAAC;QACrG,IAAM,OAAO,GAAsB,KAAK,CAAC,aAAa,CAAC,mBAAmB,CAAsB,CAAC;QACjG,IAAM,UAAU,GAAqB,KAAK,CAAC,aAAa,CAAC,qBAAqB,CAAqB,CAAC;QAEpG,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;YAAC,QAAQ,CAAC,OAAO,GAAG,cAAM,OAAA,KAAI,CAAC,KAAK,EAAE,EAAZ,CAAY,CAAC;QAAC,CAAC;QACxD,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;YAAC,SAAS,CAAC,OAAO,GAAG,cAAM,OAAA,KAAI,CAAC,KAAK,EAAE,EAAZ,CAAY,CAAC;QAAC,CAAC;QAC1D,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;YAAC,OAAO,CAAC,OAAO,GAAG,cAAM,OAAA,KAAI,CAAC,KAAK,EAAE,EAAZ,CAAY,CAAC;QAAC,CAAC;QAEtD,KAAK,CAAC,gBAAgB,CAAC,SAAS,EAAE,UAAC,CAAgB;YAC/C,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC;gBAAC,CAAC,CAAC,cAAc,EAAE,CAAC;gBAAC,KAAI,CAAC,KAAK,EAAE,CAAC;YAAC,CAAC;YAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC;gBAAC,KAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAAC,CAAC;QACnH,CAAC,CAAC,CAAC;QAEH,UAAU,CAAC,cAAQ,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;YAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACrE,CAAC;IAEO,0CAAU,GAAlB,UAAmB,OAAe,EAAE,MAAc;QAC9C,MAAM,CAAC,sdAOqD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,0OAIzB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,0VAMjE,CAAC;IAChB,CAAC;IAEO,qCAAK,GAAb;QACI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;YACtB,MAAM,CAAC;QACX,CAAC;QACD,IAAM,YAAY,GAAqB,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,qBAAqB,CAAqB,CAAC;QACnH,IAAM,QAAQ,GAAqB,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,iBAAiB,CAAqB,CAAC;QAC3G,IAAI,CAAC,8BAA8B,CAAC;YAChC,WAAW,EAAE,YAAY,IAAI,YAAY,CAAC,KAAK,GAAG,YAAY,CAAC,KAAK,GAAG,EAAE;YACzE,MAAM,EAAE,QAAQ,IAAI,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,GAAG,EAAE;SAC3D,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,EAAE,CAAC;IACjB,CAAC;IAED;;;;OAIG;IACK,0CAAU,GAAlB,UAAmB,CAAgB;QAC/B,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;YACtB,MAAM,CAAC;QACX,CAAC;QACD,IAAM,SAAS,GAAwB,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC;QAC5F,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC;YACvC,MAAM,CAAC;QACX,CAAC;QACD,IAAM,KAAK,GAAgB,SAAS,CAAC,CAAC,CAAgB,CAAC;QACvD,IAAM,IAAI,GAAgB,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAgB,CAAC;QACzE,IAAM,MAAM,GAAgB,QAAQ,CAAC,aAA4B,CAAC;QAClE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC;YACjC,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,IAAI,CAAC,KAAK,EAAE,CAAC;QACjB,CAAC;QAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC;YACxC,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,KAAK,CAAC,KAAK,EAAE,CAAC;QAClB,CAAC;IACL,CAAC;IAEO,uCAAO,GAAf,UAAgB,KAAa;QACzB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YACR,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC5G,CAAC;QAAC,IAAI,CAAC,CAAC;YACJ,MAAM,CAAC,EAAE,CAAC;QACd,CAAC;IACL,CAAC;IACL,4BAAC;AAAD,CAhKA,AAgKC,IAAA","file":"extensions/megaMenu/MegaMenuSettings.js","sourcesContent":["// tslint:disable:max-line-length export-name\r\n\r\n/*\r\n Diese Klasse liest die aktuellen Properties des Application Customizers und zeigt sie an.\r\n Wenn man sie verändert, werden sie wieder in den Properties des Application Customizers persistiert.\r\n Außerdem wird die dataUpdated-Funktion aufgerufen, damit die aktuell aktive Komponente sich neu zeichnen kann.\r\n*/\r\n\r\nimport { ApplicationCustomizerContext } from '@microsoft/sp-application-base';\r\nimport { IMegaMenuApplicationCustomizerProperties, UserCustomActionMegaMenuId } from './MegaMenuApplicationCustomizer';\r\nimport { UserCustomActionService } from '../../services/UserCustomActionService/UserCustomActionService';\r\nimport { UserCustomActionScope } from '../../services/UserCustomActionService/UserCustomActionScope';\r\nimport { IUserCustomActionProps } from '../../services/UserCustomActionService/IUserCustomActionProps';\r\n\r\nexport class MegaMenuSettingsPanel {\r\n private _service: UserCustomActionService;\r\n private _ucaId: string;\r\n private _panelElement: HTMLElement | undefined = undefined;\r\n private _overlayElement: HTMLElement | undefined = undefined;\r\n\r\n constructor(private context: ApplicationCustomizerContext, private dataUpdated: (data: IMegaMenuApplicationCustomizerProperties) => void) {\r\n this._service = new UserCustomActionService(this.context);\r\n }\r\n\r\n public async open(): Promise {\r\n if (this._panelElement) {\r\n return;\r\n }\r\n const currentProps: IMegaMenuApplicationCustomizerProperties = await this.readApplicationCustomizerProps();\r\n this._createPanel(currentProps);\r\n }\r\n\r\n public close(): void {\r\n if (this._panelElement) {\r\n this._panelElement.remove();\r\n this._panelElement = undefined;\r\n }\r\n if (this._overlayElement) {\r\n this._overlayElement.remove();\r\n this._overlayElement = undefined;\r\n }\r\n // Fokus entfernen (kein sichtbarer Fokus-Rahmen nach Dialog-Schließung)\r\n document.body.focus();\r\n document.body.blur();\r\n }\r\n\r\n private async readApplicationCustomizerProps(): Promise {\r\n const ucas: IUserCustomActionProps[] = await this._service.getUserCustomActions(UserCustomActionScope.Site);\r\n const candidates: IUserCustomActionProps[] = ucas.filter(uca => uca.ClientSideComponentId === UserCustomActionMegaMenuId);\r\n if (candidates.length) {\r\n const uca: IUserCustomActionProps = candidates[0];\r\n this._ucaId = uca.Id;\r\n return JSON.parse(uca.ClientSideComponentProperties) as IMegaMenuApplicationCustomizerProperties;\r\n } else {\r\n console.error('UserCustomAction für das Megamenü nicht gefunden. Alles ist sinnlos.');\r\n return {\r\n termSetName: '',\r\n cssUrl: ''\r\n };\r\n }\r\n }\r\n\r\n private async saveApplicationCustomizerProps(componentProps: IMegaMenuApplicationCustomizerProperties): Promise {\r\n try {\r\n const newUserCustomActionsProperty: {} = {\r\n ClientSideComponentProperties: JSON.stringify(componentProps)\r\n };\r\n await this._service.updateUserCustomAction(UserCustomActionScope.Site, this._ucaId, newUserCustomActionsProperty);\r\n this.dataUpdated(componentProps);\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n private _createPanel(props: IMegaMenuApplicationCustomizerProperties): void {\r\n const overlay: HTMLElement = document.createElement('div');\r\n overlay.className = 'mm-settings-overlay';\r\n overlay.tabIndex = -1;\r\n overlay.onclick = () => this.close();\r\n this._overlayElement = overlay;\r\n\r\n const panel: HTMLElement = document.createElement('div');\r\n panel.className = 'mm-settings-panel';\r\n panel.setAttribute('role', 'dialog');\r\n panel.setAttribute('aria-modal', 'true');\r\n panel.setAttribute('aria-label', 'MegaMenu Einstellungen');\r\n panel.innerHTML = this._getMarkup(props.termSetName, props.cssUrl);\r\n this._panelElement = panel;\r\n\r\n document.body.appendChild(overlay);\r\n document.body.appendChild(panel);\r\n\r\n const closeBtn: HTMLButtonElement = panel.querySelector('.mm-settings-close') as HTMLButtonElement;\r\n const cancelBtn: HTMLButtonElement = panel.querySelector('.mm-settings-cancel') as HTMLButtonElement;\r\n const saveBtn: HTMLButtonElement = panel.querySelector('.mm-settings-save') as HTMLButtonElement;\r\n const firstInput: HTMLInputElement = panel.querySelector('#mm-setting-termset') as HTMLInputElement;\r\n\r\n if (closeBtn) { closeBtn.onclick = () => this.close(); }\r\n if (cancelBtn) { cancelBtn.onclick = () => this.close(); }\r\n if (saveBtn) { saveBtn.onclick = () => this._save(); }\r\n\r\n panel.addEventListener('keydown', (e: KeyboardEvent) => {\r\n if (e.key === 'Escape') { e.preventDefault(); this.close(); } else if (e.key === 'Tab') { this._trapFocus(e); }\r\n });\r\n\r\n setTimeout(() => { if (firstInput) { firstInput.focus(); } }, 0);\r\n }\r\n\r\n private _getMarkup(termSet: string, cssUrl: string): string {\r\n return `
\r\n

Einstellungen

\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n `;\r\n }\r\n\r\n private _save(): void {\r\n if (!this._panelElement) {\r\n return;\r\n }\r\n const termSetInput: HTMLInputElement = this._panelElement.querySelector('#mm-setting-termset') as HTMLInputElement;\r\n const cssInput: HTMLInputElement = this._panelElement.querySelector('#mm-setting-css') as HTMLInputElement;\r\n this.saveApplicationCustomizerProps({\r\n termSetName: termSetInput && termSetInput.value ? termSetInput.value : '',\r\n cssUrl: cssInput && cssInput.value ? cssInput.value : ''\r\n });\r\n this.close();\r\n }\r\n\r\n /**\r\n * Hält den Fokus innerhalb des Settings-Panels gefangen (Focus Trapping).\r\n * Wichtig für Accessibility: Verhindert, dass Tab-Navigation aus dem modalen Dialog herausführt.\r\n * Bei Tab am letzten Element → springt zum ersten, bei Shift+Tab am ersten → springt zum letzten.\r\n */\r\n private _trapFocus(e: KeyboardEvent): void {\r\n if (!this._panelElement) {\r\n return;\r\n }\r\n const focusable: NodeListOf = this._panelElement.querySelectorAll('button, input');\r\n if (!focusable || focusable.length === 0) {\r\n return;\r\n }\r\n const first: HTMLElement = focusable[0] as HTMLElement;\r\n const last: HTMLElement = focusable[focusable.length - 1] as HTMLElement;\r\n const active: HTMLElement = document.activeElement as HTMLElement;\r\n if (e.shiftKey && active === first) {\r\n e.preventDefault();\r\n last.focus();\r\n } else if (!e.shiftKey && active === last) {\r\n e.preventDefault();\r\n first.focus();\r\n }\r\n }\r\n\r\n private _escape(value: string): string {\r\n if (value) {\r\n return value.replace(/&/g, '&').replace(/\"/g, '"').replace(//g, '>');\r\n } else {\r\n return '';\r\n }\r\n }\r\n}\r\n"],"sourceRoot":"..\\..\\..\\src"} \ No newline at end of file diff --git a/lib/extensions/megaMenu/loc/en-us.js b/lib/extensions/megaMenu/loc/en-us.js new file mode 100644 index 0000000..c400e06 --- /dev/null +++ b/lib/extensions/megaMenu/loc/en-us.js @@ -0,0 +1,5 @@ +define([], function() { + return { + "Title": "MegaMenuApplicationCustomizer" + } +}); \ No newline at end of file diff --git a/lib/index.d.ts b/lib/index.d.ts new file mode 100644 index 0000000..a6cfcbc --- /dev/null +++ b/lib/index.d.ts @@ -0,0 +1,4 @@ +export { TaxonomyNavigationService } from './services/TaxonomyNavigationService'; +export { MegaMenuRenderer } from './extensions/megaMenu/MegaMenuRenderer'; +export { UserCustomActionService } from './services/UserCustomActionService/UserCustomActionService'; +export { UserCustomActionScope } from './services/UserCustomActionService/UserCustomActionScope'; diff --git a/lib/index.js b/lib/index.js new file mode 100644 index 0000000..06e20ec --- /dev/null +++ b/lib/index.js @@ -0,0 +1,17 @@ +// tslint:disable:max-line-length no-any +// A file is required to be in the root of the /src directory by the TypeScript compiler +// Export services for classic SharePoint usage +export { TaxonomyNavigationService } from './services/TaxonomyNavigationService'; +export { MegaMenuRenderer } from './extensions/megaMenu/MegaMenuRenderer'; +export { UserCustomActionService } from './services/UserCustomActionService/UserCustomActionService'; +export { UserCustomActionScope } from './services/UserCustomActionService/UserCustomActionScope'; +if (typeof window !== 'undefined') { + window.__megaMenuServices = { + TaxonomyNavigationService: require('./services/TaxonomyNavigationService').TaxonomyNavigationService, + MegaMenuRenderer: require('./extensions/megaMenu/MegaMenuRenderer').MegaMenuRenderer, + UserCustomActionService: require('./services/UserCustomActionService/UserCustomActionService').UserCustomActionService, + UserCustomActionScope: require('./services/UserCustomActionService/UserCustomActionScope').UserCustomActionScope + }; +} + +//# sourceMappingURL=index.js.map diff --git a/lib/index.js.map b/lib/index.js.map new file mode 100644 index 0000000..32989f3 --- /dev/null +++ b/lib/index.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["index.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,wFAAwF;AAExF,+CAA+C;AAC/C,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC1E,OAAO,EAAE,uBAAuB,EAAE,MAAM,4DAA4D,CAAC;AACrG,OAAO,EAAE,qBAAqB,EAAE,MAAM,0DAA0D,CAAC;AAKjG,EAAE,CAAC,CAAC,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC;IAChC,MAAM,CAAC,kBAAkB,GAAG;QACxB,yBAAyB,EAAE,OAAO,CAAC,sCAAsC,CAAC,CAAC,yBAAyB;QACpG,gBAAgB,EAAE,OAAO,CAAC,wCAAwC,CAAC,CAAC,gBAAgB;QACpF,uBAAuB,EAAE,OAAO,CAAC,4DAA4D,CAAC,CAAC,uBAAuB;QACtH,qBAAqB,EAAE,OAAO,CAAC,0DAA0D,CAAC,CAAC,qBAAqB;KACnH,CAAC;AACN,CAAC","file":"index.js","sourcesContent":["// tslint:disable:max-line-length no-any\r\n// A file is required to be in the root of the /src directory by the TypeScript compiler\r\n\r\n// Export services for classic SharePoint usage\r\nexport { TaxonomyNavigationService } from './services/TaxonomyNavigationService';\r\nexport { MegaMenuRenderer } from './extensions/megaMenu/MegaMenuRenderer';\r\nexport { UserCustomActionService } from './services/UserCustomActionService/UserCustomActionService';\r\nexport { UserCustomActionScope } from './services/UserCustomActionService/UserCustomActionScope';\r\n\r\n// Expose services globally for classic JavaScript consumption\r\ndeclare var window: any;\r\n\r\nif (typeof window !== 'undefined') {\r\n window.__megaMenuServices = {\r\n TaxonomyNavigationService: require('./services/TaxonomyNavigationService').TaxonomyNavigationService,\r\n MegaMenuRenderer: require('./extensions/megaMenu/MegaMenuRenderer').MegaMenuRenderer,\r\n UserCustomActionService: require('./services/UserCustomActionService/UserCustomActionService').UserCustomActionService,\r\n UserCustomActionScope: require('./services/UserCustomActionService/UserCustomActionScope').UserCustomActionScope\r\n };\r\n}\r\n"],"sourceRoot":"..\\src"} \ No newline at end of file diff --git a/lib/services/IMenuItem.d.ts b/lib/services/IMenuItem.d.ts new file mode 100644 index 0000000..b1286e2 --- /dev/null +++ b/lib/services/IMenuItem.d.ts @@ -0,0 +1,10 @@ +export interface IMenuItem { + id: string; + label: string; + icon?: string; + hoverText: string; + url?: string; + pathDepth: number; + items?: IMenuItem[]; + hasChildren: () => boolean; +} diff --git a/lib/services/IMenuItem.js b/lib/services/IMenuItem.js new file mode 100644 index 0000000..72175a2 --- /dev/null +++ b/lib/services/IMenuItem.js @@ -0,0 +1,3 @@ + + +//# sourceMappingURL=IMenuItem.js.map diff --git a/lib/services/IMenuItem.js.map b/lib/services/IMenuItem.js.map new file mode 100644 index 0000000..4c4249f --- /dev/null +++ b/lib/services/IMenuItem.js.map @@ -0,0 +1 @@ +{"version":3,"sources":[],"names":[],"mappings":"","file":"services/IMenuItem.js","sourcesContent":[],"sourceRoot":"..\\..\\src"} \ No newline at end of file diff --git a/lib/services/IPickerTerm.d.ts b/lib/services/IPickerTerm.d.ts new file mode 100644 index 0000000..5b36d08 --- /dev/null +++ b/lib/services/IPickerTerm.d.ts @@ -0,0 +1,9 @@ +export interface IPickerTerm { + name: string; + key: string; + path: string; + termSet: string; + termSetName?: string; +} +export interface IPickerTerms extends Array { +} diff --git a/lib/services/IPickerTerm.js b/lib/services/IPickerTerm.js new file mode 100644 index 0000000..371e10a --- /dev/null +++ b/lib/services/IPickerTerm.js @@ -0,0 +1,3 @@ + + +//# sourceMappingURL=IPickerTerm.js.map diff --git a/lib/services/IPickerTerm.js.map b/lib/services/IPickerTerm.js.map new file mode 100644 index 0000000..015bde0 --- /dev/null +++ b/lib/services/IPickerTerm.js.map @@ -0,0 +1 @@ +{"version":3,"sources":[],"names":[],"mappings":"","file":"services/IPickerTerm.js","sourcesContent":[],"sourceRoot":"..\\..\\src"} \ No newline at end of file diff --git a/lib/services/ISPTermStorePickerService.d.ts b/lib/services/ISPTermStorePickerService.d.ts new file mode 100644 index 0000000..1b3562b --- /dev/null +++ b/lib/services/ISPTermStorePickerService.d.ts @@ -0,0 +1,84 @@ +/** + * Interfaces for Term store, groups and term sets + * This code is a copy from the library @pnp/sp-dev-fx-controls-react + */ +export interface ITermStore { + _ObjectType_: string; + _ObjectIdentity_: string; + Id: string; + Name: string; + Groups: IGroups; +} +export interface IGroups { + _ObjectType_: string; + _Child_Items_: IGroup[]; +} +export interface IGroup { + _ObjectType_: string; + _ObjectIdentity_: string; + TermSets: ITermSets; + Id: string; + Name: string; + IsSystemGroup: boolean; +} +export interface ITermSets { + _ObjectType_: string; + _Child_Items_: ITermSet[]; +} +export interface ITermSet { + _ObjectType_: string; + _ObjectIdentity_: string; + Id: string; + CustomSortOrder?: string; + Name: string; + Description: string; + Names: ITermSetNames; + Terms?: ITerm[]; +} +export interface ITermSetMinimal { + _ObjectType_?: string; + _ObjectIdentity_?: string; + Id: string; + Name: string; +} +export interface ITermSetNames { + [locale: string]: string; +} +/** + * Interfaces for the terms + */ +export interface ITerms { + _ObjectType_: string; + _Child_Items_: ITerm[]; +} +/** + * Term + */ +export interface ITerm { + _ObjectType_: string; + _ObjectIdentity_: string; + Id: string; + Name: string; + Description: string; + IsDeprecated: boolean; + IsAvailableForTagging: boolean; + IsRoot: boolean; + PathOfTerm: string; + TermSet: ITermSetMinimal; + CustomSortOrderIndex?: number; + PathDepth?: number; + ParentId?: string; + TermsCount?: number; + LocalCustomProperties?: { + [property: string]: any; + }; +} +export interface ISuggestTerm { + Id: string; + DefaultLabel: string; + Description: string; + IsKeyword: boolean; + IsSynonym: boolean; + Paths: Array; + Synonyms: string; +} diff --git a/lib/services/ISPTermStorePickerService.js b/lib/services/ISPTermStorePickerService.js new file mode 100644 index 0000000..052262d --- /dev/null +++ b/lib/services/ISPTermStorePickerService.js @@ -0,0 +1,3 @@ + + +//# sourceMappingURL=ISPTermStorePickerService.js.map diff --git a/lib/services/ISPTermStorePickerService.js.map b/lib/services/ISPTermStorePickerService.js.map new file mode 100644 index 0000000..15a4900 --- /dev/null +++ b/lib/services/ISPTermStorePickerService.js.map @@ -0,0 +1 @@ +{"version":3,"sources":[],"names":[],"mappings":"","file":"services/ISPTermStorePickerService.js","sourcesContent":[],"sourceRoot":"..\\..\\src"} \ No newline at end of file diff --git a/lib/services/ISPTermStorePickerServiceProps.d.ts b/lib/services/ISPTermStorePickerServiceProps.d.ts new file mode 100644 index 0000000..835e7f1 --- /dev/null +++ b/lib/services/ISPTermStorePickerServiceProps.d.ts @@ -0,0 +1,7 @@ +export interface ISPTermStorePickerServiceProps { + termsetNameOrID: string; + useSessionStorage: boolean; + hideDeprecatedTags: boolean; + hideTagsNotAvailableForTagging: boolean; + anchorId: string; +} diff --git a/lib/services/ISPTermStorePickerServiceProps.js b/lib/services/ISPTermStorePickerServiceProps.js new file mode 100644 index 0000000..8fe77aa --- /dev/null +++ b/lib/services/ISPTermStorePickerServiceProps.js @@ -0,0 +1,3 @@ + + +//# sourceMappingURL=ISPTermStorePickerServiceProps.js.map diff --git a/lib/services/ISPTermStorePickerServiceProps.js.map b/lib/services/ISPTermStorePickerServiceProps.js.map new file mode 100644 index 0000000..1c37ea7 --- /dev/null +++ b/lib/services/ISPTermStorePickerServiceProps.js.map @@ -0,0 +1 @@ +{"version":3,"sources":[],"names":[],"mappings":"","file":"services/ISPTermStorePickerServiceProps.js","sourcesContent":[],"sourceRoot":"..\\..\\src"} \ No newline at end of file diff --git a/lib/services/ITaxonomyNavigationService.d.ts b/lib/services/ITaxonomyNavigationService.d.ts new file mode 100644 index 0000000..9ebdf44 --- /dev/null +++ b/lib/services/ITaxonomyNavigationService.d.ts @@ -0,0 +1,4 @@ +import { IMenuItem } from './IMenuItem'; +export interface ITaxonomyNavigationService { + getMenuItems(): Promise; +} diff --git a/lib/services/ITaxonomyNavigationService.js b/lib/services/ITaxonomyNavigationService.js new file mode 100644 index 0000000..2286e4c --- /dev/null +++ b/lib/services/ITaxonomyNavigationService.js @@ -0,0 +1,3 @@ + + +//# sourceMappingURL=ITaxonomyNavigationService.js.map diff --git a/lib/services/ITaxonomyNavigationService.js.map b/lib/services/ITaxonomyNavigationService.js.map new file mode 100644 index 0000000..978b812 --- /dev/null +++ b/lib/services/ITaxonomyNavigationService.js.map @@ -0,0 +1 @@ +{"version":3,"sources":[],"names":[],"mappings":"","file":"services/ITaxonomyNavigationService.js","sourcesContent":[],"sourceRoot":"..\\..\\src"} \ No newline at end of file diff --git a/lib/services/ItemDictionary.d.ts b/lib/services/ItemDictionary.d.ts new file mode 100644 index 0000000..a540201 --- /dev/null +++ b/lib/services/ItemDictionary.d.ts @@ -0,0 +1,4 @@ +export declare class ItemDictionary { + Get(key: string): T; + Add(key: string, value: T): void; +} diff --git a/lib/services/ItemDictionary.js b/lib/services/ItemDictionary.js new file mode 100644 index 0000000..2eafaf8 --- /dev/null +++ b/lib/services/ItemDictionary.js @@ -0,0 +1,14 @@ +var ItemDictionary = (function () { + function ItemDictionary() { + } + ItemDictionary.prototype.Get = function (key) { + return this[key]; + }; + ItemDictionary.prototype.Add = function (key, value) { + this[key] = value; + }; + return ItemDictionary; +}()); +export { ItemDictionary }; + +//# sourceMappingURL=ItemDictionary.js.map diff --git a/lib/services/ItemDictionary.js.map b/lib/services/ItemDictionary.js.map new file mode 100644 index 0000000..67066fe --- /dev/null +++ b/lib/services/ItemDictionary.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["services/ItemDictionary.ts"],"names":[],"mappings":"AAAA;IAAA;IAQA,CAAC;IAPU,4BAAG,GAAV,UAAW,GAAW;QAClB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;IAEM,4BAAG,GAAV,UAAW,GAAW,EAAE,KAAQ;QAC5B,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACtB,CAAC;IACL,qBAAC;AAAD,CARA,AAQC,IAAA","file":"services/ItemDictionary.js","sourcesContent":["export class ItemDictionary {\r\n public Get(key: string): T {\r\n return this[key];\r\n }\r\n\r\n public Add(key: string, value: T): void {\r\n this[key] = value;\r\n }\r\n}\r\n"],"sourceRoot":"..\\..\\src"} \ No newline at end of file diff --git a/lib/services/MenuItem.d.ts b/lib/services/MenuItem.d.ts new file mode 100644 index 0000000..f9cc91a --- /dev/null +++ b/lib/services/MenuItem.d.ts @@ -0,0 +1,14 @@ +import { IMenuItem } from './IMenuItem'; +import { ITerm } from './ISPTermStorePickerService'; +export declare class MenuItem implements IMenuItem { + level: number; + id: string; + label: string; + hoverText: string; + pathDepth: number; + url?: string; + items?: IMenuItem[]; + constructor(term: ITerm, level: number, siteCollectionUrl?: string); + hasChildren(): boolean; + command(): void; +} diff --git a/lib/services/MenuItem.js b/lib/services/MenuItem.js new file mode 100644 index 0000000..7df424d --- /dev/null +++ b/lib/services/MenuItem.js @@ -0,0 +1,29 @@ +// tslint:disable:no-any no-string-literal max-line-length +var MenuItem = (function () { + function MenuItem(term, level, siteCollectionUrl) { + this.level = level; + this.id = term.Id; + this.label = term.Name; + this.hoverText = term.LocalCustomProperties['_Sys_Nav_HoverText']; + this.pathDepth = term.PathDepth; + var rawUrl = term.LocalCustomProperties['_Sys_Nav_SimpleLinkUrl'] || term.LocalCustomProperties['_Sys_Nav_TargetUrl']; + if (rawUrl) { + this.url = siteCollectionUrl && rawUrl.indexOf('~sitecollection') === 0 + ? siteCollectionUrl + rawUrl.substring('~sitecollection'.length) + : rawUrl; + } + this.items = []; + } + MenuItem.prototype.hasChildren = function () { + return this.items && this.items.length > 0; + }; + MenuItem.prototype.command = function () { + if (this.url) { + window.location.href = this.url; + } + }; + return MenuItem; +}()); +export { MenuItem }; + +//# sourceMappingURL=MenuItem.js.map diff --git a/lib/services/MenuItem.js.map b/lib/services/MenuItem.js.map new file mode 100644 index 0000000..4b73e0e --- /dev/null +++ b/lib/services/MenuItem.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["services/MenuItem.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAK1D;IAQI,kBAAY,IAAW,EAAS,KAAa,EAAE,iBAA0B;QAAzC,UAAK,GAAL,KAAK,CAAQ;QACzC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QAClB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,qBAAqB,CAAC,oBAAoB,CAAC,CAAC;QAClE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAM,MAAM,GAAW,IAAI,CAAC,qBAAqB,CAAC,wBAAwB,CAAC,IAAI,IAAI,CAAC,qBAAqB,CAAC,oBAAoB,CAAC,CAAC;QAChI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;YACT,IAAI,CAAC,GAAG,GAAG,iBAAiB,IAAI,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC;kBACjE,iBAAiB,GAAG,MAAM,CAAC,SAAS,CAAC,iBAAiB,CAAC,MAAM,CAAC;kBAC9D,MAAM,CAAC;QACjB,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;IACpB,CAAC;IAEM,8BAAW,GAAlB;QACI,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IAC/C,CAAC;IAEM,0BAAO,GAAd;QACI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YACV,MAAc,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC;QAC7C,CAAC;IACL,CAAC;IACL,eAAC;AAAD,CA/BA,AA+BC,IAAA","file":"services/MenuItem.js","sourcesContent":["// tslint:disable:no-any no-string-literal max-line-length\r\n\r\nimport { IMenuItem } from './IMenuItem';\r\nimport { ITerm } from './ISPTermStorePickerService';\r\n\r\nexport class MenuItem implements IMenuItem {\r\n public id: string;\r\n public label: string;\r\n public hoverText: string;\r\n public pathDepth: number;\r\n public url?: string;\r\n public items?: IMenuItem[];\r\n\r\n constructor(term: ITerm, public level: number, siteCollectionUrl?: string) {\r\n this.id = term.Id;\r\n this.label = term.Name;\r\n this.hoverText = term.LocalCustomProperties['_Sys_Nav_HoverText'];\r\n this.pathDepth = term.PathDepth;\r\n const rawUrl: string = term.LocalCustomProperties['_Sys_Nav_SimpleLinkUrl'] || term.LocalCustomProperties['_Sys_Nav_TargetUrl'];\r\n if (rawUrl) {\r\n this.url = siteCollectionUrl && rawUrl.indexOf('~sitecollection') === 0\r\n ? siteCollectionUrl + rawUrl.substring('~sitecollection'.length)\r\n : rawUrl;\r\n }\r\n this.items = [];\r\n }\r\n\r\n public hasChildren(): boolean {\r\n return this.items && this.items.length > 0;\r\n }\r\n\r\n public command(): void {\r\n if (this.url) {\r\n (window as any).location.href = this.url;\r\n }\r\n }\r\n}\r\n"],"sourceRoot":"..\\..\\src"} \ No newline at end of file diff --git a/lib/services/MockTaxonomyNavigationService.d.ts b/lib/services/MockTaxonomyNavigationService.d.ts new file mode 100644 index 0000000..31ec3fb --- /dev/null +++ b/lib/services/MockTaxonomyNavigationService.d.ts @@ -0,0 +1,5 @@ +import { IMenuItem } from './IMenuItem'; +import { ITaxonomyNavigationService } from './ITaxonomyNavigationService'; +export default class MockTaxonomyNavigationService implements ITaxonomyNavigationService { + getMenuItems(): Promise; +} diff --git a/lib/services/MockTaxonomyNavigationService.js b/lib/services/MockTaxonomyNavigationService.js new file mode 100644 index 0000000..94e70d3 --- /dev/null +++ b/lib/services/MockTaxonomyNavigationService.js @@ -0,0 +1,109 @@ +import * as uuid from 'uuid'; +var MockTaxonomyNavigationService = (function () { + function MockTaxonomyNavigationService() { + } + MockTaxonomyNavigationService.prototype.getMenuItems = function () { + return new Promise(function (resolve) { + resolve([ + { + id: uuid.v4(), + label: 'Menu Item 1', + url: 'https://www.bing.com', + hoverText: 'Hover me!', + pathDepth: 1, + hasChildren: function () { return true; }, + items: [ + { + id: uuid.v4(), + label: 'Submenu Item 1', + hoverText: 'Huch!', + url: 'https://www.bing.com', + pathDepth: 2, + hasChildren: function () { return false; } + }, + { + id: uuid.v4(), + label: 'Submenu Item 2', + hoverText: 'Huch!', + url: 'https://www.bing.com', + pathDepth: 2, + hasChildren: function () { return false; } + } + ] + }, + { + id: uuid.v4(), + label: 'Menu Item 2', + hoverText: 'Huch!', + url: 'https://www.bing.com', + pathDepth: 1, + hasChildren: function () { return false; } + }, + { + id: uuid.v4(), + label: 'Menu Item 3', + hoverText: 'Huch!', + url: 'https://www.bing.com', + pathDepth: 1, + hasChildren: function () { return true; }, + items: [ + { + id: uuid.v4(), + label: 'Submenu Item 1', + hoverText: 'Huch!', + url: 'https://www.bing.com', + pathDepth: 2, + hasChildren: function () { return false; } + }, + { + id: uuid.v4(), + label: 'Submenu Item 2', + hoverText: 'Huch!', + url: 'https://www.bing.com', + pathDepth: 2, + hasChildren: function () { return true; }, + items: [ + { + id: uuid.v4(), + label: 'Submenu Item 1', + hoverText: 'Huch!', + url: 'https://www.bing.com', + pathDepth: 3, + hasChildren: function () { return false; } + }, + { + id: uuid.v4(), + label: 'Submenu Item 2', + hoverText: 'Huch!', + url: 'https://www.bing.com', + pathDepth: 3, + hasChildren: function () { return false; } + } + ] + }, + { + id: uuid.v4(), + label: 'Submenu Item 3', + hoverText: 'Huch!', + url: 'https://www.bing.com', + pathDepth: 2, + hasChildren: function () { return false; } + }, + { + id: uuid.v4(), + label: 'Submenu Item 4', + hoverText: 'Huch!', + url: 'https://www.bing.com', + pathDepth: 2, + hasChildren: function () { return false; } + } + ] + } + ]); + }); + }; + return MockTaxonomyNavigationService; +}()); +export default MockTaxonomyNavigationService; + +//# sourceMappingURL=MockTaxonomyNavigationService.js.map diff --git a/lib/services/MockTaxonomyNavigationService.js.map b/lib/services/MockTaxonomyNavigationService.js.map new file mode 100644 index 0000000..d9e946c --- /dev/null +++ b/lib/services/MockTaxonomyNavigationService.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["services/MockTaxonomyNavigationService.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B;IAAA;IAqGA,CAAC;IApGU,oDAAY,GAAnB;QACI,MAAM,CAAC,IAAI,OAAO,CAAc,UAAC,OAAO;YACpC,OAAO,CAAC;gBACJ;oBACI,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE;oBACb,KAAK,EAAE,aAAa;oBACpB,GAAG,EAAE,sBAAsB;oBAC3B,SAAS,EAAE,WAAW;oBACtB,SAAS,EAAE,CAAC;oBACZ,WAAW,EAAE,cAAM,OAAA,IAAI,EAAJ,CAAI;oBACvB,KAAK,EAAE;wBACH;4BACI,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE;4BACb,KAAK,EAAE,gBAAgB;4BACvB,SAAS,EAAE,OAAO;4BAClB,GAAG,EAAE,sBAAsB;4BAC3B,SAAS,EAAE,CAAC;4BACZ,WAAW,EAAE,cAAM,OAAA,KAAK,EAAL,CAAK;yBAC3B;wBACD;4BACI,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE;4BACb,KAAK,EAAE,gBAAgB;4BACvB,SAAS,EAAE,OAAO;4BAClB,GAAG,EAAE,sBAAsB;4BAC3B,SAAS,EAAE,CAAC;4BACZ,WAAW,EAAE,cAAM,OAAA,KAAK,EAAL,CAAK;yBAC3B;qBACJ;iBACJ;gBACD;oBACI,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE;oBACb,KAAK,EAAE,aAAa;oBACpB,SAAS,EAAE,OAAO;oBAClB,GAAG,EAAE,sBAAsB;oBAC3B,SAAS,EAAE,CAAC;oBACZ,WAAW,EAAE,cAAM,OAAA,KAAK,EAAL,CAAK;iBAC3B;gBACD;oBACI,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE;oBACb,KAAK,EAAE,aAAa;oBACpB,SAAS,EAAE,OAAO;oBAClB,GAAG,EAAE,sBAAsB;oBAC3B,SAAS,EAAE,CAAC;oBACZ,WAAW,EAAE,cAAM,OAAA,IAAI,EAAJ,CAAI;oBACvB,KAAK,EAAE;wBACH;4BACI,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE;4BACb,KAAK,EAAE,gBAAgB;4BACvB,SAAS,EAAE,OAAO;4BAClB,GAAG,EAAE,sBAAsB;4BAC3B,SAAS,EAAE,CAAC;4BACZ,WAAW,EAAE,cAAM,OAAA,KAAK,EAAL,CAAK;yBAC3B;wBACD;4BACI,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE;4BACb,KAAK,EAAE,gBAAgB;4BACvB,SAAS,EAAE,OAAO;4BAClB,GAAG,EAAE,sBAAsB;4BAC3B,SAAS,EAAE,CAAC;4BACZ,WAAW,EAAE,cAAM,OAAA,IAAI,EAAJ,CAAI;4BACvB,KAAK,EAAE;gCACH;oCACI,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE;oCACb,KAAK,EAAE,gBAAgB;oCACvB,SAAS,EAAE,OAAO;oCAClB,GAAG,EAAE,sBAAsB;oCAC3B,SAAS,EAAE,CAAC;oCACZ,WAAW,EAAE,cAAM,OAAA,KAAK,EAAL,CAAK;iCAC3B;gCACD;oCACI,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE;oCACb,KAAK,EAAE,gBAAgB;oCACvB,SAAS,EAAE,OAAO;oCAClB,GAAG,EAAE,sBAAsB;oCAC3B,SAAS,EAAE,CAAC;oCACZ,WAAW,EAAE,cAAM,OAAA,KAAK,EAAL,CAAK;iCAC3B;6BACJ;yBACJ;wBACD;4BACI,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE;4BACb,KAAK,EAAE,gBAAgB;4BACvB,SAAS,EAAE,OAAO;4BAClB,GAAG,EAAE,sBAAsB;4BAC3B,SAAS,EAAE,CAAC;4BACZ,WAAW,EAAE,cAAM,OAAA,KAAK,EAAL,CAAK;yBAC3B;wBACD;4BACI,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE;4BACb,KAAK,EAAE,gBAAgB;4BACvB,SAAS,EAAE,OAAO;4BAClB,GAAG,EAAE,sBAAsB;4BAC3B,SAAS,EAAE,CAAC;4BACZ,WAAW,EAAE,cAAM,OAAA,KAAK,EAAL,CAAK;yBAC3B;qBACJ;iBACJ;aACJ,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IACL,oCAAC;AAAD,CArGA,AAqGC,IAAA","file":"services/MockTaxonomyNavigationService.js","sourcesContent":["import { IMenuItem } from './IMenuItem';\r\nimport { ITaxonomyNavigationService } from './ITaxonomyNavigationService';\r\nimport * as uuid from 'uuid';\r\n\r\nexport default class MockTaxonomyNavigationService implements ITaxonomyNavigationService {\r\n public getMenuItems(): Promise {\r\n return new Promise((resolve) => {\r\n resolve([\r\n {\r\n id: uuid.v4(),\r\n label: 'Menu Item 1',\r\n url: 'https://www.bing.com',\r\n hoverText: 'Hover me!',\r\n pathDepth: 1,\r\n hasChildren: () => true,\r\n items: [\r\n {\r\n id: uuid.v4(),\r\n label: 'Submenu Item 1',\r\n hoverText: 'Huch!',\r\n url: 'https://www.bing.com',\r\n pathDepth: 2,\r\n hasChildren: () => false\r\n },\r\n {\r\n id: uuid.v4(),\r\n label: 'Submenu Item 2',\r\n hoverText: 'Huch!',\r\n url: 'https://www.bing.com',\r\n pathDepth: 2,\r\n hasChildren: () => false\r\n }\r\n ]\r\n },\r\n {\r\n id: uuid.v4(),\r\n label: 'Menu Item 2',\r\n hoverText: 'Huch!',\r\n url: 'https://www.bing.com',\r\n pathDepth: 1,\r\n hasChildren: () => false\r\n },\r\n {\r\n id: uuid.v4(),\r\n label: 'Menu Item 3',\r\n hoverText: 'Huch!',\r\n url: 'https://www.bing.com',\r\n pathDepth: 1,\r\n hasChildren: () => true,\r\n items: [\r\n {\r\n id: uuid.v4(),\r\n label: 'Submenu Item 1',\r\n hoverText: 'Huch!',\r\n url: 'https://www.bing.com',\r\n pathDepth: 2,\r\n hasChildren: () => false\r\n },\r\n {\r\n id: uuid.v4(),\r\n label: 'Submenu Item 2',\r\n hoverText: 'Huch!',\r\n url: 'https://www.bing.com',\r\n pathDepth: 2,\r\n hasChildren: () => true,\r\n items: [\r\n {\r\n id: uuid.v4(),\r\n label: 'Submenu Item 1',\r\n hoverText: 'Huch!',\r\n url: 'https://www.bing.com',\r\n pathDepth: 3,\r\n hasChildren: () => false\r\n },\r\n {\r\n id: uuid.v4(),\r\n label: 'Submenu Item 2',\r\n hoverText: 'Huch!',\r\n url: 'https://www.bing.com',\r\n pathDepth: 3,\r\n hasChildren: () => false\r\n }\r\n ]\r\n },\r\n {\r\n id: uuid.v4(),\r\n label: 'Submenu Item 3',\r\n hoverText: 'Huch!',\r\n url: 'https://www.bing.com',\r\n pathDepth: 2,\r\n hasChildren: () => false\r\n },\r\n {\r\n id: uuid.v4(),\r\n label: 'Submenu Item 4',\r\n hoverText: 'Huch!',\r\n url: 'https://www.bing.com',\r\n pathDepth: 2,\r\n hasChildren: () => false\r\n }\r\n ]\r\n }\r\n ]);\r\n });\r\n }\r\n}"],"sourceRoot":"..\\..\\src"} \ No newline at end of file diff --git a/lib/services/SPTermStorePickerService.d.ts b/lib/services/SPTermStorePickerService.d.ts new file mode 100644 index 0000000..9f4041e --- /dev/null +++ b/lib/services/SPTermStorePickerService.d.ts @@ -0,0 +1,76 @@ +import { ITermStore, ITermSet } from './ISPTermStorePickerService'; +import { ISPTermStorePickerServiceProps } from './ISPTermStorePickerServiceProps'; +import { IPickerTerm } from './IPickerTerm'; +import { ApplicationCustomizerContext } from '@microsoft/sp-application-base'; +/** + * Service implementation to manage term stores in SharePoint + */ +export default class SPTermStorePickerService { + private props; + private context; + private clientServiceUrl; + private suggestionServiceUrl; + /** + * Service constructor + */ + constructor(props: ISPTermStorePickerServiceProps, context: ApplicationCustomizerContext); + getTermLabels(termId: string): Promise; + /** + * Gets the collection of term stores in the current SharePoint env + */ + getTermStores(): Promise; + /** + * Gets the current term set + */ + getTermSet(): Promise; + /** + * Retrieve all terms for the given term set + * @param termset + */ + getAllTerms(termset: string, hideDeprecatedTags?: boolean, hideTagsNotAvailableForTagging?: boolean, useSessionStorage?: boolean): Promise; + /** + * Retrieve all terms that starts with the searchText + * @param searchText + */ + searchTermsByName(searchText: string): Promise; + searchTermsByTermId(searchText: string, termId: string): Promise; + /** + * Retrieve all terms for the given term set and anchorId + */ + getAllTermsByAnchorId(termsetNameOrID: string, anchorId: string, hideDeprecatedTags?: boolean, hideTagsNotAvailableForTagging?: boolean, useSessionStorage?: boolean): Promise; + /** + * Clean the Guid from the Web Service response + * @param guid + */ + cleanGuid(guid: string): string; + /** + * Get the term set ID by its name + * @param termstore + * @param termset + */ + private getTermSetId(termstore, termsetName); + private getTermsById(termId, useSessionStorage?); + private searchTermsBySearchText(terms, searchText); + /** + * Searches terms for the given term set + * @param searchText + * @param termsetId + */ + private searchTermsByTermSet(searchText); + private isGuid(strGuid); + /** + * Sorting terms based on their path and depth + * + * @param terms + */ + private sortTerms(terms); + /** + * Sort the terms by their path + * + * @param a term 2 + * @param b term 2 + */ + private sortTermByPath(a, b); + private convertTermToPickerTerm(term); + private convertSuggestTermToPickerTerm(term); +} diff --git a/lib/services/SPTermStorePickerService.js b/lib/services/SPTermStorePickerService.js new file mode 100644 index 0000000..31df830 --- /dev/null +++ b/lib/services/SPTermStorePickerService.js @@ -0,0 +1,574 @@ +/* tslint:disable:no-null-keyword max-line-length typedef no-any no-string-literal variable-name */ +/** + * This code is a copy from the library @pnp/sp-dev-fx-controls-react + */ +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + 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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = y[op[0] & 2 ? "return" : op[0] ? "throw" : "next"]) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [0, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +import { SPHttpClient } from '@microsoft/sp-http'; +import { findIndex } from '@microsoft/sp-lodash-subset'; +var EmptyGuid = '00000000-0000-0000-0000-000000000000'; +/** + * Service implementation to manage term stores in SharePoint + */ +var SPTermStorePickerService = (function () { + /** + * Service constructor + */ + function SPTermStorePickerService(props, context) { + this.props = props; + this.context = context; + this.clientServiceUrl = this.context.pageContext.web.absoluteUrl + '/_vti_bin/client.svc/ProcessQuery'; + this.suggestionServiceUrl = this.context.pageContext.web.absoluteUrl + '/_vti_bin/TaxonomyInternalService.json/GetSuggestions'; + } + SPTermStorePickerService.prototype.getTermLabels = function (termId) { + return __awaiter(this, void 0, void 0, function () { + var result, data, reqHeaders, httpPostOptions, callResult, jsonResult, node, error_1; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + result = null; + _a.label = 1; + case 1: + _a.trys.push([1, 4, , 5]); + data = "" + termId + ""; + reqHeaders = new Headers(); + reqHeaders.append('accept', 'application/json'); + reqHeaders.append('content-type', 'application/xml'); + httpPostOptions = { + headers: reqHeaders, + body: data + }; + return [4 /*yield*/, this.context.spHttpClient.post(this.clientServiceUrl, SPHttpClient.configurations.v1, httpPostOptions)]; + case 2: + callResult = _a.sent(); + return [4 /*yield*/, callResult.json()]; + case 3: + jsonResult = _a.sent(); + node = jsonResult.find(function (x) { return x._ObjectType_ === 'SP.Taxonomy.Term'; }); + if (node && node.Labels && node.Labels._Child_Items_) { + result = node.Labels._Child_Items_.map(function (termLabel) { return termLabel.Value; }); + } + return [3 /*break*/, 5]; + case 4: + error_1 = _a.sent(); + result = null; + console.log(error_1.message); + return [3 /*break*/, 5]; + case 5: return [2 /*return*/, result]; + } + }); + }); + }; + /** + * Gets the collection of term stores in the current SharePoint env + */ + SPTermStorePickerService.prototype.getTermStores = function () { + var _this = this; + // Retrieve the term store name, groups, and term sets + var data = ''; + var reqHeaders = new Headers(); + reqHeaders.append('accept', 'application/json'); + reqHeaders.append('content-type', 'application/xml'); + var httpPostOptions = { + headers: reqHeaders, + body: data + }; + return this.context.spHttpClient.post(this.clientServiceUrl, SPHttpClient.configurations.v1, httpPostOptions).then(function (serviceResponse) { + return serviceResponse.json().then(function (serviceJSONResponse) { + // Construct results + var termStoreResult = serviceJSONResponse.filter(function (r) { return r['_ObjectType_'] === 'SP.Taxonomy.TermStore'; }); + // Check if term store was retrieved + if (termStoreResult.length > 0) { + // Check if the termstore needs to be filtered or limited + if (_this.props.termsetNameOrID) { + return termStoreResult.map(function (termstore) { + var termGroups = termstore.Groups._Child_Items_; + // Check if the groups have to be limited to a specific term set + if (_this.props.termsetNameOrID) { + var termsetNameOrId_1 = _this.props.termsetNameOrID; + termGroups = termGroups.map(function (group) { + group.TermSets._Child_Items_ = group.TermSets._Child_Items_.filter(function (termSet) { return termSet.Name === termsetNameOrId_1 || _this.cleanGuid(termSet.Id).toLowerCase() === _this.cleanGuid(termsetNameOrId_1).toLowerCase(); }); + return group; + }); + } + // Filter out all systen groups + termGroups = termGroups.filter(function (group) { return !group.IsSystemGroup; }); + // Filter out empty groups + termGroups = termGroups.filter(function (group) { return group.TermSets._Child_Items_.length > 0; }); + // Map the new groups + termstore.Groups._Child_Items_ = termGroups; + return termstore; + }); + } + // Return the term store results + return termStoreResult; + } + return []; + }); + }); + }; + /** + * Gets the current term set + */ + SPTermStorePickerService.prototype.getTermSet = function () { + return __awaiter(this, void 0, void 0, function () { + var termStore; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, this.getTermStores()]; + case 1: + termStore = _a.sent(); + return [2 /*return*/, this.getTermSetId(termStore, this.props.termsetNameOrID)]; + } + }); + }); + }; + /** + * Retrieve all terms for the given term set + * @param termset + */ + SPTermStorePickerService.prototype.getAllTerms = function (termset, hideDeprecatedTags, hideTagsNotAvailableForTagging, useSessionStorage) { + if (useSessionStorage === void 0) { useSessionStorage = true; } + return __awaiter(this, void 0, void 0, function () { + var _this = this; + var termsetId, termStore, crntTermSet, childTerms, data, reqHeaders, httpPostOptions; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + termsetId = termset; + if (!!this.isGuid(termset)) return [3 /*break*/, 2]; + return [4 /*yield*/, this.getTermStores()]; + case 1: + termStore = _a.sent(); + crntTermSet = this.getTermSetId(termStore, termset); + if (crntTermSet) { + termsetId = this.cleanGuid(crntTermSet.Id); + } + else { + return [2 /*return*/, null]; + } + _a.label = 2; + case 2: + childTerms = this.getTermsById(termsetId, useSessionStorage); + if (childTerms) { + return [2 /*return*/, childTerms]; + } + data = "" + termsetId + ""; + reqHeaders = new Headers(); + reqHeaders.append('accept', 'application/json'); + reqHeaders.append('content-type', 'application/xml'); + httpPostOptions = { + headers: reqHeaders, + body: data + }; + return [2 /*return*/, this.context.spHttpClient.post(this.clientServiceUrl, SPHttpClient.configurations.v1, httpPostOptions).then(function (serviceResponse) { + return serviceResponse.json().then(function (serviceJSONResponse) { + var termStoreResultTermSets = serviceJSONResponse.filter(function (r) { return r['_ObjectType_'] === 'SP.Taxonomy.TermSet'; }); + if (termStoreResultTermSets.length > 0) { + var termStoreResultTermSet_1 = termStoreResultTermSets[0]; + termStoreResultTermSet_1.Terms = []; + // Retrieve the term collection results + var termStoreResultTerms = serviceJSONResponse.filter(function (r) { return r['_ObjectType_'] === 'SP.Taxonomy.TermCollection'; }); + if (termStoreResultTerms.length > 0) { + // Retrieve all terms + var terms = termStoreResultTerms[0]._Child_Items_; + if (hideDeprecatedTags === true) { + terms = terms.filter(function (d) { return d.IsDeprecated === false; }); + } + if (hideTagsNotAvailableForTagging === true) { + terms = terms.filter(function (d) { return d.IsAvailableForTagging === true; }); + } + // Clean the term ID and specify the path depth + terms = terms.map(function (term) { + if (term.IsRoot) { + term.CustomSortOrderIndex = (termStoreResultTermSet_1.CustomSortOrder) ? termStoreResultTermSet_1.CustomSortOrder.split(':').indexOf(_this.cleanGuid(term.Id)) : -1; + } + else { + term.CustomSortOrderIndex = (term['Parent'].CustomSortOrder) ? term['Parent'].CustomSortOrder.split(':').indexOf(_this.cleanGuid(term.Id)) : -1; + } + term.Id = _this.cleanGuid(term.Id); + term['PathDepth'] = term.PathOfTerm.split(';').length; + term.TermSet = { Id: _this.cleanGuid(termStoreResultTermSet_1.Id), Name: termStoreResultTermSet_1.Name }; + if (term['Parent']) { + term.ParentId = _this.cleanGuid(term['Parent'].Id); + } + return term; + }); + // Check if the term set was not empty + if (terms.length > 0) { + // Sort the terms by PathOfTerm and their depth + terms = _this.sortTerms(terms); + termStoreResultTermSet_1.Terms = terms; + } + } + try { + if (useSessionStorage && window.sessionStorage) { + window.sessionStorage.setItem(termsetId, JSON.stringify(termStoreResultTermSet_1)); + } + } + catch (error) { + // Do nothing, sometimes "storage quota exceeded" error if too many items + } + return termStoreResultTermSet_1; + } + return null; + }); + })]; + } + }); + }); + }; + /** + * Retrieve all terms that starts with the searchText + * @param searchText + */ + SPTermStorePickerService.prototype.searchTermsByName = function (searchText) { + return this.searchTermsByTermSet(searchText); + }; + SPTermStorePickerService.prototype.searchTermsByTermId = function (searchText, termId) { + return __awaiter(this, void 0, void 0, function () { + var useSessionStorage, childTerms, _a, termsetNameOrID, hideDeprecatedTags, hideTagsNotAvailableForTagging, terms; + return __generator(this, function (_b) { + switch (_b.label) { + case 0: + useSessionStorage = this.props.useSessionStorage; + childTerms = this.getTermsById(termId, useSessionStorage); + if (!childTerms) return [3 /*break*/, 1]; + return [2 /*return*/, this.searchTermsBySearchText(childTerms, searchText)]; + case 1: + _a = this.props, termsetNameOrID = _a.termsetNameOrID, hideDeprecatedTags = _a.hideDeprecatedTags, hideTagsNotAvailableForTagging = _a.hideTagsNotAvailableForTagging; + return [4 /*yield*/, this.getAllTermsByAnchorId(termsetNameOrID, termId, hideDeprecatedTags, hideTagsNotAvailableForTagging, useSessionStorage)]; + case 2: + terms = _b.sent(); + if (terms) { + return [2 /*return*/, this.searchTermsBySearchText(terms, searchText)]; + } + _b.label = 3; + case 3: return [2 /*return*/, null]; + } + }); + }); + }; + /** + * Retrieve all terms for the given term set and anchorId + */ + SPTermStorePickerService.prototype.getAllTermsByAnchorId = function (termsetNameOrID, anchorId, hideDeprecatedTags, hideTagsNotAvailableForTagging, useSessionStorage) { + if (useSessionStorage === void 0) { useSessionStorage = true; } + return __awaiter(this, void 0, void 0, function () { + var _this = this; + var returnTerms, childTerms, termSet, terms, anchorTerm_1, anchorTermPath_1, anchorTerms; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + returnTerms = []; + childTerms = this.getTermsById(anchorId, useSessionStorage); + if (childTerms) { + return [2 /*return*/, childTerms]; + } + return [4 /*yield*/, this.getAllTerms(termsetNameOrID, hideDeprecatedTags, hideTagsNotAvailableForTagging)]; + case 1: + termSet = _a.sent(); + terms = termSet.Terms; + if (anchorId) { + anchorTerm_1 = terms.filter(function (t) { return t.Id.toLowerCase() === anchorId.toLowerCase(); }).shift(); + if (anchorTerm_1) { + anchorTermPath_1 = anchorTerm_1.PathOfTerm + ";"; + anchorTerms = terms.filter(function (t) { return t.PathOfTerm.substring(0, anchorTermPath_1.length) === anchorTermPath_1 && t.Id !== anchorTerm_1.Id; }); + anchorTerms.forEach(function (term) { + returnTerms.push(_this.convertTermToPickerTerm(term)); + }); + try { + if (useSessionStorage && window.sessionStorage) { + window.sessionStorage.setItem(anchorId, JSON.stringify(returnTerms)); + } + } + catch (error) { + // Do nothing + } + } + } + else { + terms.forEach(function (term) { + returnTerms.push(_this.convertTermToPickerTerm(term)); + }); + } + return [2 /*return*/, returnTerms]; + } + }); + }); + }; + /** + * Clean the Guid from the Web Service response + * @param guid + */ + SPTermStorePickerService.prototype.cleanGuid = function (guid) { + if (guid !== undefined) { + return guid.replace('/Guid(', '').replace('/', '').replace(')', ''); + } + else { + return ''; + } + }; + /** + * Get the term set ID by its name + * @param termstore + * @param termset + */ + SPTermStorePickerService.prototype.getTermSetId = function (termstore, termsetName) { + if (termstore && termstore.length > 0 && termsetName) { + // Get the first term store + var ts = termstore[0]; + // Check if the term store contains groups + if (ts.Groups && ts.Groups._Child_Items_) { + for (var _i = 0, _a = ts.Groups._Child_Items_; _i < _a.length; _i++) { + var group = _a[_i]; + // Check if the group contains term sets + if (group.TermSets && group.TermSets._Child_Items_) { + for (var _b = 0, _c = group.TermSets._Child_Items_; _b < _c.length; _b++) { + var termSet = _c[_b]; + // Check if the term set is found + if (termSet.Name === termsetName) { + return termSet; + } + } + } + } + } + } + return null; + }; + SPTermStorePickerService.prototype.getTermsById = function (termId, useSessionStorage) { + if (useSessionStorage === void 0) { useSessionStorage = true; } + try { + if (useSessionStorage && window.sessionStorage) { + var terms = window.sessionStorage.getItem(termId); + if (terms) { + return JSON.parse(terms); + } + else { + return null; + } + } + else { + return null; + } + } + catch (error) { + return null; + } + }; + SPTermStorePickerService.prototype.searchTermsBySearchText = function (terms, searchText) { + if (terms) { + return terms.filter(function (t) { return t.name.toLowerCase().indexOf(searchText.toLowerCase()) > -1; }); + } + else { + return []; + } + }; + /** + * Searches terms for the given term set + * @param searchText + * @param termsetId + */ + SPTermStorePickerService.prototype.searchTermsByTermSet = function (searchText) { + var _this = this; + return new Promise(function (resolve) { + _this.getTermStores().then(function (termStore) { + var termSetId = _this.props.termsetNameOrID; + if (!_this.isGuid(termSetId)) { + // Get the ID of the provided term set name + var crntTermSet = _this.getTermSetId(termStore, termSetId); + if (crntTermSet) { + termSetId = _this.cleanGuid(crntTermSet.Id); + } + else { + resolve(null); + return; + } + } + if (termStore === undefined || termStore.length === 0) { + resolve(null); + return; + } + var loc = _this.context.pageContext.cultureInfo.currentUICultureName === 'de-de' ? 1031 : 1033; + var data = { + start: searchText, + lcid: loc !== 0 ? loc : _this.context.pageContext.web.language, + sspList: _this.cleanGuid(termStore[0].Id), + termSetList: termSetId, + anchorId: _this.props.anchorId ? _this.props.anchorId : EmptyGuid, + isSpanTermStores: false, + isSpanTermSets: false, + isIncludeUnavailable: _this.props.hideTagsNotAvailableForTagging === true, + isIncludeDeprecated: _this.props.hideDeprecatedTags === true, + isAddTerms: false, + isIncludePathData: false, + excludeKeyword: false, + excludedTermset: EmptyGuid + }; + var reqHeaders = new Headers(); + reqHeaders.append('accept', 'application/json'); + reqHeaders.append('content-type', 'application/json'); + var httpPostOptions = { + headers: reqHeaders, + body: JSON.stringify(data) + }; + return _this.context.spHttpClient.post(_this.suggestionServiceUrl, SPHttpClient.configurations.v1, httpPostOptions).then(function (serviceResponse) { + return serviceResponse.json().then(function (serviceJSONResponse) { + var groups = serviceJSONResponse.d.Groups; + if (groups && groups.length > 0) { + // Retrieve the term collection results + var terms = groups[0].Suggestions; + if (terms.length > 0) { + // Retrieve all terms + var returnTerms = terms.map(function (term) { return _this.convertSuggestTermToPickerTerm(term); }); + resolve(returnTerms); + return; + } + } + resolve([]); + }); + }); + }); + }); + }; + SPTermStorePickerService.prototype.isGuid = function (strGuid) { + return /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/.test(strGuid); + }; + /** + * Sorting terms based on their path and depth + * + * @param terms + */ + SPTermStorePickerService.prototype.sortTerms = function (terms) { + // Start sorting by depth + var newTermsOrder = []; + var itemsToSort = true; + var pathLevel = 1; + while (itemsToSort) { + // Get terms for the current level + var crntTerms = terms.filter(function (term) { return term.PathDepth === pathLevel; }); + if (crntTerms && crntTerms.length > 0) { + crntTerms = crntTerms.sort(this.sortTermByPath); + if (pathLevel !== 1) { + crntTerms = crntTerms.reverse(); + var _loop_1 = function (crntTerm) { + var pathElms = crntTerm.PathOfTerm.split(';'); + // Last item is not needed for parent path + pathElms.pop(); + // Find the parent item and add the new item + var idx = findIndex(newTermsOrder, function (term) { return term.PathOfTerm === pathElms.join(';'); }); + if (idx !== -1) { + newTermsOrder.splice(idx + 1, 0, crntTerm); + } + else { + // Push the item at the end if the parent couldn't be found + newTermsOrder.push(crntTerm); + } + }; + for (var _i = 0, crntTerms_1 = crntTerms; _i < crntTerms_1.length; _i++) { + var crntTerm = crntTerms_1[_i]; + _loop_1(crntTerm); + } + } + else { + newTermsOrder = crntTerms; + } + ++pathLevel; + } + else { + itemsToSort = false; + } + } + return newTermsOrder; + }; + /** + * Sort the terms by their path + * + * @param a term 2 + * @param b term 2 + */ + SPTermStorePickerService.prototype.sortTermByPath = function (a, b) { + if (a.CustomSortOrderIndex === -1) { + if (a.PathOfTerm.toLowerCase() < b.PathOfTerm.toLowerCase()) { + return -1; + } + if (a.PathOfTerm.toLowerCase() > b.PathOfTerm.toLowerCase()) { + return 1; + } + return 0; + } + else { + if (a.CustomSortOrderIndex < b.CustomSortOrderIndex) { + return -1; + } + if (a.CustomSortOrderIndex > b.CustomSortOrderIndex) { + return 1; + } + return 0; + } + }; + SPTermStorePickerService.prototype.convertTermToPickerTerm = function (term) { + return { + key: this.cleanGuid(term.Id), + name: term.Name, + path: term.PathOfTerm, + termSet: this.cleanGuid(term.TermSet.Id), + termSetName: term.TermSet.Name + }; + }; + SPTermStorePickerService.prototype.convertSuggestTermToPickerTerm = function (term) { + var path = ''; + var termSetName = ''; + if (term.Paths && term.Paths.length > 0) { + var fullPath = term.Paths[0].replace(/^\[/, '').replace(/\]$/, ''); + var fullPathParts = fullPath.split(':'); + path = fullPathParts.join(';') + ';' + term.DefaultLabel; + termSetName = fullPathParts[0]; + } + return { + key: this.cleanGuid(term.Id), + name: term.DefaultLabel, + path: path, + termSet: EmptyGuid, + termSetName: termSetName + }; + }; + return SPTermStorePickerService; +}()); +export default SPTermStorePickerService; + +//# sourceMappingURL=SPTermStorePickerService.js.map diff --git a/lib/services/SPTermStorePickerService.js.map b/lib/services/SPTermStorePickerService.js.map new file mode 100644 index 0000000..cfdc7fc --- /dev/null +++ b/lib/services/SPTermStorePickerService.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["services/SPTermStorePickerService.ts"],"names":[],"mappings":"AAAA,mGAAmG;AACnG;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,OAAO,EAAE,YAAY,EAA8C,MAAM,oBAAoB,CAAC;AAE9F,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAKxD,IAAM,SAAS,GAAW,sCAAsC,CAAC;AAEjE;;GAEG;AACH;IAII;;OAEG;IACH,kCAAoB,KAAqC,EAAU,OAAqC;QAApF,UAAK,GAAL,KAAK,CAAgC;QAAU,YAAO,GAAP,OAAO,CAA8B;QACpG,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,GAAG,mCAAmC,CAAC;QACvG,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,GAAG,uDAAuD,CAAC;IACnI,CAAC;IAEY,gDAAa,GAA1B,UAA2B,MAAc;;;;;;wBACjC,MAAM,GAAa,IAAI,CAAC;;;;wBAElB,IAAI,GAAG,w/BAAo7B,MAAM,+DAA4D,CAAC;wBAE9/B,UAAU,GAAG,IAAI,OAAO,EAAE,CAAC;wBACjC,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;wBAChD,UAAU,CAAC,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC;wBAE/C,eAAe,GAAyB;4BAC1C,OAAO,EAAE,UAAU;4BACnB,IAAI,EAAE,IAAI;yBACb,CAAC;wBAEiB,qBAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,YAAY,CAAC,cAAc,CAAC,EAAE,EAAE,eAAe,CAAC,EAAA;;wBAAzH,UAAU,GAAG,SAA4G;wBAC5G,qBAAM,UAAU,CAAC,IAAI,EAAE,EAAA;;wBAApC,UAAU,GAAG,SAAuB;wBAEpC,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,YAAY,KAAK,kBAAkB,EAArC,CAAqC,CAAC,CAAC;wBACzE,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;4BACnD,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,UAAA,SAAS,IAAI,OAAA,SAAS,CAAC,KAAK,EAAf,CAAe,CAAC,CAAC;wBACzE,CAAC;;;;wBAED,MAAM,GAAG,IAAI,CAAC;wBACd,OAAO,CAAC,GAAG,CAAC,OAAK,CAAC,OAAO,CAAC,CAAC;;4BAE/B,sBAAO,MAAM,EAAC;;;;KACjB;IAED;;OAEG;IACI,gDAAa,GAApB;QAAA,iBAmDC;QAlDG,sDAAsD;QACtD,IAAM,IAAI,GAAG,m8CAAm8C,CAAC;QAEj9C,IAAM,UAAU,GAAG,IAAI,OAAO,EAAE,CAAC;QACjC,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;QAChD,UAAU,CAAC,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC;QAErD,IAAM,eAAe,GAAyB;YAC1C,OAAO,EAAE,UAAU;YACnB,IAAI,EAAE,IAAI;SACb,CAAC;QAEF,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,YAAY,CAAC,cAAc,CAAC,EAAE,EAAE,eAAe,CAAC,CAAC,IAAI,CAAC,UAAC,eAAqC;YACrJ,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,UAAC,mBAAwB;gBACxD,oBAAoB;gBACpB,IAAM,eAAe,GAAiB,mBAAmB,CAAC,MAAM,CAAC,UAAC,CAA2B,IAAK,OAAA,CAAC,CAAC,cAAc,CAAC,KAAK,uBAAuB,EAA7C,CAA6C,CAAC,CAAC;gBACjJ,oCAAoC;gBACpC,EAAE,CAAC,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;oBAC7B,yDAAyD;oBACzD,EAAE,CAAC,CAAC,KAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;wBAC7B,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,UAAA,SAAS;4BAChC,IAAI,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC;4BAEhD,gEAAgE;4BAChE,EAAE,CAAC,CAAC,KAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;gCAC7B,IAAM,iBAAe,GAAG,KAAI,CAAC,KAAK,CAAC,eAAe,CAAC;gCACnD,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,UAAC,KAAa;oCACtC,KAAK,CAAC,QAAQ,CAAC,aAAa,GAAG,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,UAAC,OAAiB,IAAK,OAAA,OAAO,CAAC,IAAI,KAAK,iBAAe,IAAI,KAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,KAAK,KAAI,CAAC,SAAS,CAAC,iBAAe,CAAC,CAAC,WAAW,EAAE,EAA9H,CAA8H,CAAC,CAAC;oCAC1N,MAAM,CAAC,KAAK,CAAC;gCACjB,CAAC,CAAC,CAAC;4BACP,CAAC;4BAED,+BAA+B;4BAC/B,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,UAAA,KAAK,IAAI,OAAA,CAAC,KAAK,CAAC,aAAa,EAApB,CAAoB,CAAC,CAAC;4BAE9D,0BAA0B;4BAC1B,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,UAAC,KAAa,IAAK,OAAA,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAvC,CAAuC,CAAC,CAAC;4BAE3F,qBAAqB;4BACrB,SAAS,CAAC,MAAM,CAAC,aAAa,GAAG,UAAU,CAAC;4BAC5C,MAAM,CAAC,SAAS,CAAC;wBACrB,CAAC,CAAC,CAAC;oBACP,CAAC;oBAED,gCAAgC;oBAChC,MAAM,CAAC,eAAe,CAAC;gBAC3B,CAAC;gBACD,MAAM,CAAC,EAAE,CAAC;YACd,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACU,6CAAU,GAAvB;;;;;4BACsB,qBAAM,IAAI,CAAC,aAAa,EAAE,EAAA;;wBAAtC,SAAS,GAAG,SAA0B;wBAC5C,sBAAO,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,EAAC;;;;KACnE;IAED;;;OAGG;IACU,8CAAW,GAAxB,UAAyB,OAAe,EAAE,kBAA4B,EAAE,8BAAwC,EAAE,iBAAiC;QAAjC,kCAAA,EAAA,wBAAiC;;;;;;;wBAC3I,SAAS,GAAW,OAAO,CAAC;6BAE5B,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAArB,wBAAqB;wBAEH,qBAAM,IAAI,CAAC,aAAa,EAAE,EAAA;;wBAAtC,SAAS,GAAG,SAA0B;wBAEtC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;wBAC1D,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;4BACd,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;wBAC/C,CAAC;wBAAC,IAAI,CAAC,CAAC;4BACJ,MAAM,gBAAC,IAAI,EAAC;wBAChB,CAAC;;;wBAGC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;wBAEnE,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;4BACb,MAAM,gBAAC,UAAU,EAAC;wBACtB,CAAC;wBAGK,IAAI,GAAG,2nDAAugD,SAAS,sHAA6G,CAAC;wBAEroD,UAAU,GAAG,IAAI,OAAO,EAAE,CAAC;wBACjC,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;wBAChD,UAAU,CAAC,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC;wBAE/C,eAAe,GAAyB;4BAC1C,OAAO,EAAE,UAAU;4BACnB,IAAI,EAAE,IAAI;yBACb,CAAC;wBAEF,sBAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,YAAY,CAAC,cAAc,CAAC,EAAE,EAAE,eAAe,CAAC,CAAC,IAAI,CAAC,UAAC,eAAqC;gCACrJ,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,UAAC,mBAAwB;oCACxD,IAAM,uBAAuB,GAAe,mBAAmB,CAAC,MAAM,CAAC,UAAC,CAA2B,IAAK,OAAA,CAAC,CAAC,cAAc,CAAC,KAAK,qBAAqB,EAA3C,CAA2C,CAAC,CAAC;oCAErJ,EAAE,CAAC,CAAC,uBAAuB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;wCACrC,IAAM,wBAAsB,GAAG,uBAAuB,CAAC,CAAC,CAAC,CAAC;wCAC1D,wBAAsB,CAAC,KAAK,GAAG,EAAE,CAAC;wCAClC,uCAAuC;wCACvC,IAAM,oBAAoB,GAAa,mBAAmB,CAAC,MAAM,CAAC,UAAC,CAA2B,IAAK,OAAA,CAAC,CAAC,cAAc,CAAC,KAAK,4BAA4B,EAAlD,CAAkD,CAAC,CAAC;wCACvJ,EAAE,CAAC,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;4CAClC,qBAAqB;4CACrB,IAAI,KAAK,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;4CAElD,EAAE,CAAC,CAAC,kBAAkB,KAAK,IAAI,CAAC,CAAC,CAAC;gDAC9B,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,YAAY,KAAK,KAAK,EAAxB,CAAwB,CAAC,CAAC;4CACxD,CAAC;4CAED,EAAE,CAAC,CAAC,8BAA8B,KAAK,IAAI,CAAC,CAAC,CAAC;gDAC1C,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,qBAAqB,KAAK,IAAI,EAAhC,CAAgC,CAAC,CAAC;4CAChE,CAAC;4CAED,+CAA+C;4CAC/C,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,UAAA,IAAI;gDAClB,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;oDACd,IAAI,CAAC,oBAAoB,GAAG,CAAC,wBAAsB,CAAC,eAAe,CAAC,GAAG,wBAAsB,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,KAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gDACnK,CAAC;gDAAC,IAAI,CAAC,CAAC;oDACJ,IAAI,CAAC,oBAAoB,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,KAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gDACnJ,CAAC;gDACD,IAAI,CAAC,EAAE,GAAG,KAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gDAClC,IAAI,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;gDACtD,IAAI,CAAC,OAAO,GAAG,EAAE,EAAE,EAAE,KAAI,CAAC,SAAS,CAAC,wBAAsB,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,wBAAsB,CAAC,IAAI,EAAE,CAAC;gDACpG,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;oDACjB,IAAI,CAAC,QAAQ,GAAG,KAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;gDACtD,CAAC;gDACD,MAAM,CAAC,IAAI,CAAC;4CAChB,CAAC,CAAC,CAAC;4CACH,sCAAsC;4CACtC,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;gDACnB,+CAA+C;gDAC/C,KAAK,GAAG,KAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gDAC9B,wBAAsB,CAAC,KAAK,GAAG,KAAK,CAAC;4CACzC,CAAC;wCACL,CAAC;wCAED,IAAI,CAAC;4CACD,EAAE,CAAC,CAAC,iBAAiB,IAAI,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC;gDAC7C,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,wBAAsB,CAAC,CAAC,CAAC;4CACrF,CAAC;wCACL,CAAC;wCAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;4CACb,yEAAyE;wCAC7E,CAAC;wCACD,MAAM,CAAC,wBAAsB,CAAC;oCAClC,CAAC;oCACD,MAAM,CAAC,IAAI,CAAC;gCAChB,CAAC,CAAC,CAAC;4BACP,CAAC,CAAC,EAAC;;;;KACN;IAED;;;OAGG;IACI,oDAAiB,GAAxB,UAAyB,UAAkB;QACvC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;IACjD,CAAC;IAEY,sDAAmB,GAAhC,UAAiC,UAAkB,EAAE,MAAc;;;;;;wBACvD,iBAAiB,GAAK,IAAI,CAAC,KAAK,kBAAf,CAAgB;wBACnC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;6BAC5D,UAAU,EAAV,wBAAU;wBACV,sBAAO,IAAI,CAAC,uBAAuB,CAAC,UAAU,EAAE,UAAU,CAAC,EAAC;;wBAEtD,KAIF,IAAI,CAAC,KAAK,EAHV,eAAe,qBAAA,EACf,kBAAkB,wBAAA,EAClB,8BAA8B,oCAAA,CACnB;wBAED,qBAAM,IAAI,CAAC,qBAAqB,CAC1C,eAAe,EACf,MAAM,EACN,kBAAkB,EAClB,8BAA8B,EAC9B,iBAAiB,CAAC,EAAA;;wBALhB,KAAK,GAAG,SAKQ;wBAEtB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;4BACR,MAAM,gBAAC,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,UAAU,CAAC,EAAC;wBAC3D,CAAC;;4BAGL,sBAAO,IAAI,EAAC;;;;KACf;IAED;;OAEG;IACU,wDAAqB,GAAlC,UAAmC,eAAuB,EAAE,QAAgB,EAAE,kBAA4B,EAAE,8BAAwC,EAAE,iBAAiC;QAAjC,kCAAA,EAAA,wBAAiC;;;;;;;wBAE7K,WAAW,GAAkB,EAAE,CAAC;wBAEhC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;wBAClE,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;4BACb,MAAM,gBAAC,UAAU,EAAC;wBACtB,CAAC;wBAEe,qBAAM,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,kBAAkB,EAAE,8BAA8B,CAAC,EAAA;;wBAArG,OAAO,GAAG,SAA2F;wBACrG,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;wBAC5B,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;4BACL,eAAa,KAAK,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,WAAW,EAAE,EAA7C,CAA6C,CAAC,CAAC,KAAK,EAAE,CAAC;4BAC5F,EAAE,CAAC,CAAC,YAAU,CAAC,CAAC,CAAC;gCAEP,mBAAoB,YAAU,CAAC,UAAU,MAAG,CAAC;gCAC7C,WAAW,GAAY,KAAK,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,gBAAc,CAAC,MAAM,CAAC,KAAK,gBAAc,IAAI,CAAC,CAAC,EAAE,KAAK,YAAU,CAAC,EAAE,EAA7F,CAA6F,CAAC,CAAC;gCAE9I,WAAW,CAAC,OAAO,CAAC,UAAA,IAAI;oCACpB,WAAW,CAAC,IAAI,CAAC,KAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC;gCACzD,CAAC,CAAC,CAAC;gCAEH,IAAI,CAAC;oCACD,EAAE,CAAC,CAAC,iBAAiB,IAAI,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC;wCAC7C,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;oCACzE,CAAC;gCACL,CAAC;gCAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;oCACb,aAAa;gCACjB,CAAC;4BACL,CAAC;wBACL,CAAC;wBAAC,IAAI,CAAC,CAAC;4BACJ,KAAK,CAAC,OAAO,CAAC,UAAA,IAAI;gCACd,WAAW,CAAC,IAAI,CAAC,KAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC;4BACzD,CAAC,CAAC,CAAC;wBACP,CAAC;wBAED,sBAAO,WAAW,EAAC;;;;KACtB;IAED;;;OAGG;IACI,4CAAS,GAAhB,UAAiB,IAAY;QACzB,EAAE,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC;YACrB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACxE,CAAC;QAAC,IAAI,CAAC,CAAC;YACJ,MAAM,CAAC,EAAE,CAAC;QACd,CAAC;IACL,CAAC;IAED;;;;QAII;IACI,+CAAY,GAApB,UAAqB,SAAuB,EAAE,WAAmB;QAC7D,EAAE,CAAC,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC;YACnD,2BAA2B;YAC3B,IAAM,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YACxB,0CAA0C;YAC1C,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;gBACvC,GAAG,CAAC,CAAgB,UAAuB,EAAvB,KAAA,EAAE,CAAC,MAAM,CAAC,aAAa,EAAvB,cAAuB,EAAvB,IAAuB;oBAAtC,IAAM,KAAK,SAAA;oBACZ,wCAAwC;oBACxC,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;wBACjD,GAAG,CAAC,CAAkB,UAA4B,EAA5B,KAAA,KAAK,CAAC,QAAQ,CAAC,aAAa,EAA5B,cAA4B,EAA5B,IAA4B;4BAA7C,IAAM,OAAO,SAAA;4BACd,iCAAiC;4BACjC,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC;gCAC/B,MAAM,CAAC,OAAO,CAAC;4BACnB,CAAC;yBACJ;oBACL,CAAC;iBACJ;YACL,CAAC;QACL,CAAC;QAED,MAAM,CAAC,IAAI,CAAC;IAChB,CAAC;IAEO,+CAAY,GAApB,UAAqB,MAAM,EAAE,iBAAiC;QAAjC,kCAAA,EAAA,wBAAiC;QAC1D,IAAI,CAAC;YACD,EAAE,CAAC,CAAC,iBAAiB,IAAI,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC;gBAC7C,IAAM,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBACpD,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;oBACR,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAC7B,CAAC;gBAAC,IAAI,CAAC,CAAC;oBACJ,MAAM,CAAC,IAAI,CAAC;gBAChB,CAAC;YACL,CAAC;YAAC,IAAI,CAAC,CAAC;gBACJ,MAAM,CAAC,IAAI,CAAC;YAChB,CAAC;QACL,CAAC;QAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YACb,MAAM,CAAC,IAAI,CAAC;QAChB,CAAC;IACL,CAAC;IAEO,0DAAuB,GAA/B,UAAgC,KAAK,EAAE,UAAU;QAC7C,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YACR,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,UAAC,CAAC,IAAO,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxG,CAAC;QAAC,IAAI,CAAC,CAAC;YACJ,MAAM,CAAC,EAAE,CAAC;QACd,CAAC;IACL,CAAC;IAED;;;;SAIK;IACG,uDAAoB,GAA5B,UAA6B,UAAkB;QAA/C,iBAiEC;QAhEG,MAAM,CAAC,IAAI,OAAO,CAAgB,UAAA,OAAO;YACrC,KAAI,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,UAAA,SAAS;gBAC/B,IAAI,SAAS,GAAG,KAAI,CAAC,KAAK,CAAC,eAAe,CAAC;gBAC3C,EAAE,CAAC,CAAC,CAAC,KAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;oBAC1B,2CAA2C;oBAC3C,IAAM,WAAW,GAAG,KAAI,CAAC,YAAY,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;oBAC5D,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;wBACd,SAAS,GAAG,KAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;oBAC/C,CAAC;oBAAC,IAAI,CAAC,CAAC;wBACJ,OAAO,CAAC,IAAI,CAAC,CAAC;wBACd,MAAM,CAAC;oBACX,CAAC;gBACL,CAAC;gBACD,EAAE,CAAC,CAAC,SAAS,KAAK,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC;oBACpD,OAAO,CAAC,IAAI,CAAC,CAAC;oBACd,MAAM,CAAC;gBACX,CAAC;gBACD,IAAM,GAAG,GAAW,KAAI,CAAC,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,oBAAoB,KAAK,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC;gBACxG,IAAM,IAAI,GAAQ;oBACd,KAAK,EAAE,UAAU;oBACjB,IAAI,EAAE,GAAG,KAAK,CAAC,GAAG,GAAG,GAAG,KAAI,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ;oBAC7D,OAAO,EAAE,KAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBACxC,WAAW,EAAE,SAAS;oBACtB,QAAQ,EAAE,KAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,KAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,SAAS;oBAC/D,gBAAgB,EAAE,KAAK;oBACvB,cAAc,EAAE,KAAK;oBACrB,oBAAoB,EAAE,KAAI,CAAC,KAAK,CAAC,8BAA8B,KAAK,IAAI;oBACxE,mBAAmB,EAAE,KAAI,CAAC,KAAK,CAAC,kBAAkB,KAAK,IAAI;oBAC3D,UAAU,EAAE,KAAK;oBACjB,iBAAiB,EAAE,KAAK;oBACxB,cAAc,EAAE,KAAK;oBACrB,eAAe,EAAE,SAAS;iBAC7B,CAAC;gBAEF,IAAM,UAAU,GAAY,IAAI,OAAO,EAAE,CAAC;gBAC1C,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;gBAChD,UAAU,CAAC,MAAM,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;gBAEtD,IAAM,eAAe,GAAyB;oBAC1C,OAAO,EAAE,UAAU;oBACnB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;iBAC7B,CAAC;gBAEF,MAAM,CAAC,KAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,KAAI,CAAC,oBAAoB,EAAE,YAAY,CAAC,cAAc,CAAC,EAAE,EAAE,eAAe,CAAC,CAAC,IAAI,CAAC,UAAC,eAAqC;oBACzJ,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,UAAC,mBAAwB;wBACxD,IAAM,MAAM,GAAG,mBAAmB,CAAC,CAAC,CAAC,MAAM,CAAC;wBAC5C,EAAE,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;4BAC9B,uCAAuC;4BACvC,IAAM,KAAK,GAAmB,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;4BACpD,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;gCACnB,qBAAqB;gCAErB,IAAM,WAAW,GAAkB,KAAK,CAAC,GAAG,CAAC,UAAC,IAAkB,IAAK,OAAA,KAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,EAAzC,CAAyC,CAAC,CAAC;gCAChH,OAAO,CAAC,WAAW,CAAC,CAAC;gCACrB,MAAM,CAAC;4BACX,CAAC;wBAEL,CAAC;wBAED,OAAO,CAAC,EAAE,CAAC,CAAC;oBAChB,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,yCAAM,GAAd,UAAe,OAAe;QAC1B,MAAM,CAAC,+EAA+E,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACzG,CAAC;IAED;;;;OAIG;IACK,4CAAS,GAAjB,UAAkB,KAAc;QAC5B,yBAAyB;QACzB,IAAI,aAAa,GAAY,EAAE,CAAC;QAChC,IAAI,WAAW,GAAY,IAAI,CAAC;QAChC,IAAI,SAAS,GAAW,CAAC,CAAC;QAC1B,OAAO,WAAW,EAAE,CAAC;YACjB,kCAAkC;YAClC,IAAI,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,SAAS,KAAK,SAAS,EAA5B,CAA4B,CAAC,CAAC;YACnE,EAAE,CAAC,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;gBACpC,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBAEhD,EAAE,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC;oBAClB,SAAS,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC;4CACrB,QAAQ;wBACf,IAAM,QAAQ,GAAa,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;wBAC1D,0CAA0C;wBAC1C,QAAQ,CAAC,GAAG,EAAE,CAAC;wBACf,4CAA4C;wBAC5C,IAAM,GAAG,GAAW,SAAS,CAAC,aAAa,EAAE,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,UAAU,KAAK,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAtC,CAAsC,CAAC,CAAC;wBAC7F,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;4BACb,aAAa,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;wBAC/C,CAAC;wBAAC,IAAI,CAAC,CAAC;4BACJ,2DAA2D;4BAC3D,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;wBACjC,CAAC;oBACL,CAAC;oBAZD,GAAG,CAAC,CAAmB,UAAS,EAAT,uBAAS,EAAT,uBAAS,EAAT,IAAS;wBAA3B,IAAM,QAAQ,kBAAA;gCAAR,QAAQ;qBAYlB;gBACL,CAAC;gBAAC,IAAI,CAAC,CAAC;oBACJ,aAAa,GAAG,SAAS,CAAC;gBAC9B,CAAC;gBAED,EAAE,SAAS,CAAC;YAChB,CAAC;YAAC,IAAI,CAAC,CAAC;gBACJ,WAAW,GAAG,KAAK,CAAC;YACxB,CAAC;QACL,CAAC;QACD,MAAM,CAAC,aAAa,CAAC;IACzB,CAAC;IAED;;;;;OAKG;IACK,iDAAc,GAAtB,UAAuB,CAAQ,EAAE,CAAQ;QACrC,EAAE,CAAC,CAAC,CAAC,CAAC,oBAAoB,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAChC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;gBAC1D,MAAM,CAAC,CAAC,CAAC,CAAC;YACd,CAAC;YACD,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;gBAC1D,MAAM,CAAC,CAAC,CAAC;YACb,CAAC;YACD,MAAM,CAAC,CAAC,CAAC;QACb,CAAC;QAAC,IAAI,CAAC,CAAC;YACJ,EAAE,CAAC,CAAC,CAAC,CAAC,oBAAoB,GAAG,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC;gBAClD,MAAM,CAAC,CAAC,CAAC,CAAC;YACd,CAAC;YACD,EAAE,CAAC,CAAC,CAAC,CAAC,oBAAoB,GAAG,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC;gBAClD,MAAM,CAAC,CAAC,CAAC;YACb,CAAC;YACD,MAAM,CAAC,CAAC,CAAC;QACb,CAAC;IACL,CAAC;IAEO,0DAAuB,GAA/B,UAAgC,IAAW;QACvC,MAAM,CAAC;YACH,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,UAAU;YACrB,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACxC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;SACjC,CAAC;IACN,CAAC;IAEO,iEAA8B,GAAtC,UAAuC,IAAkB;QACrD,IAAI,IAAI,GAAW,EAAE,CAAC;QACtB,IAAI,WAAW,GAAW,EAAE,CAAC;QAC7B,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;YACtC,IAAM,QAAQ,GAAW,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAC7E,IAAM,aAAa,GAAa,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACpD,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC;YACzD,WAAW,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QACnC,CAAC;QACD,MAAM,CAAC;YACH,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,IAAI,EAAE,IAAI,CAAC,YAAY;YACvB,IAAI,EAAE,IAAI;YACV,OAAO,EAAE,SAAS;YAClB,WAAW,EAAE,WAAW;SAC3B,CAAC;IACN,CAAC;IACL,+BAAC;AAAD,CAjgBA,AAigBC,IAAA","file":"services/SPTermStorePickerService.js","sourcesContent":["/* tslint:disable:no-null-keyword max-line-length typedef no-any no-string-literal variable-name */\r\n/**\r\n * This code is a copy from the library @pnp/sp-dev-fx-controls-react\r\n */\r\n\r\nimport { SPHttpClient, SPHttpClientResponse, ISPHttpClientOptions } from '@microsoft/sp-http';\r\nimport { ITermStore, ITerms, ITerm, IGroup, ITermSet, ISuggestTerm } from './ISPTermStorePickerService';\r\nimport { findIndex } from '@microsoft/sp-lodash-subset';\r\nimport { ISPTermStorePickerServiceProps } from './ISPTermStorePickerServiceProps';\r\nimport { IPickerTerm } from './IPickerTerm';\r\nimport { ApplicationCustomizerContext } from '@microsoft/sp-application-base';\r\n\r\nconst EmptyGuid: string = '00000000-0000-0000-0000-000000000000';\r\n\r\n/**\r\n * Service implementation to manage term stores in SharePoint\r\n */\r\nexport default class SPTermStorePickerService {\r\n private clientServiceUrl: string;\r\n private suggestionServiceUrl: string;\r\n\r\n /**\r\n * Service constructor\r\n */\r\n constructor(private props: ISPTermStorePickerServiceProps, private context: ApplicationCustomizerContext) {\r\n this.clientServiceUrl = this.context.pageContext.web.absoluteUrl + '/_vti_bin/client.svc/ProcessQuery';\r\n this.suggestionServiceUrl = this.context.pageContext.web.absoluteUrl + '/_vti_bin/TaxonomyInternalService.json/GetSuggestions';\r\n }\r\n\r\n public async getTermLabels(termId: string): Promise {\r\n let result: string[] = null;\r\n try {\r\n const data = `${termId}`;\r\n\r\n const reqHeaders = new Headers();\r\n reqHeaders.append('accept', 'application/json');\r\n reqHeaders.append('content-type', 'application/xml');\r\n\r\n const httpPostOptions: ISPHttpClientOptions = {\r\n headers: reqHeaders,\r\n body: data\r\n };\r\n\r\n const callResult = await this.context.spHttpClient.post(this.clientServiceUrl, SPHttpClient.configurations.v1, httpPostOptions);\r\n const jsonResult = await callResult.json();\r\n\r\n const node = jsonResult.find(x => x._ObjectType_ === 'SP.Taxonomy.Term');\r\n if (node && node.Labels && node.Labels._Child_Items_) {\r\n result = node.Labels._Child_Items_.map(termLabel => termLabel.Value);\r\n }\r\n } catch (error) {\r\n result = null;\r\n console.log(error.message);\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * Gets the collection of term stores in the current SharePoint env\r\n */\r\n public getTermStores(): Promise {\r\n // Retrieve the term store name, groups, and term sets\r\n const data = '';\r\n\r\n const reqHeaders = new Headers();\r\n reqHeaders.append('accept', 'application/json');\r\n reqHeaders.append('content-type', 'application/xml');\r\n\r\n const httpPostOptions: ISPHttpClientOptions = {\r\n headers: reqHeaders,\r\n body: data\r\n };\r\n\r\n return this.context.spHttpClient.post(this.clientServiceUrl, SPHttpClient.configurations.v1, httpPostOptions).then((serviceResponse: SPHttpClientResponse) => {\r\n return serviceResponse.json().then((serviceJSONResponse: any) => {\r\n // Construct results\r\n const termStoreResult: ITermStore[] = serviceJSONResponse.filter((r: { [x: string]: string; }) => r['_ObjectType_'] === 'SP.Taxonomy.TermStore');\r\n // Check if term store was retrieved\r\n if (termStoreResult.length > 0) {\r\n // Check if the termstore needs to be filtered or limited\r\n if (this.props.termsetNameOrID) {\r\n return termStoreResult.map(termstore => {\r\n let termGroups = termstore.Groups._Child_Items_;\r\n\r\n // Check if the groups have to be limited to a specific term set\r\n if (this.props.termsetNameOrID) {\r\n const termsetNameOrId = this.props.termsetNameOrID;\r\n termGroups = termGroups.map((group: IGroup) => {\r\n group.TermSets._Child_Items_ = group.TermSets._Child_Items_.filter((termSet: ITermSet) => termSet.Name === termsetNameOrId || this.cleanGuid(termSet.Id).toLowerCase() === this.cleanGuid(termsetNameOrId).toLowerCase());\r\n return group;\r\n });\r\n }\r\n\r\n // Filter out all systen groups\r\n termGroups = termGroups.filter(group => !group.IsSystemGroup);\r\n\r\n // Filter out empty groups\r\n termGroups = termGroups.filter((group: IGroup) => group.TermSets._Child_Items_.length > 0);\r\n\r\n // Map the new groups\r\n termstore.Groups._Child_Items_ = termGroups;\r\n return termstore;\r\n });\r\n }\r\n\r\n // Return the term store results\r\n return termStoreResult;\r\n }\r\n return [];\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Gets the current term set\r\n */\r\n public async getTermSet(): Promise {\r\n const termStore = await this.getTermStores();\r\n return this.getTermSetId(termStore, this.props.termsetNameOrID);\r\n }\r\n\r\n /**\r\n * Retrieve all terms for the given term set\r\n * @param termset\r\n */\r\n public async getAllTerms(termset: string, hideDeprecatedTags?: boolean, hideTagsNotAvailableForTagging?: boolean, useSessionStorage: boolean = true): Promise {\r\n let termsetId: string = termset;\r\n // Check if the provided term set property is a GUID or string\r\n if (!this.isGuid(termset)) {\r\n // Fetch the term store information\r\n const termStore = await this.getTermStores();\r\n // Get the ID of the provided term set name\r\n const crntTermSet = this.getTermSetId(termStore, termset);\r\n if (crntTermSet) {\r\n termsetId = this.cleanGuid(crntTermSet.Id);\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n const childTerms = this.getTermsById(termsetId, useSessionStorage);\r\n\r\n if (childTerms) {\r\n return childTerms;\r\n }\r\n\r\n // Request body to retrieve all terms for the given term set\r\n const data = `${termsetId}`;\r\n\r\n const reqHeaders = new Headers();\r\n reqHeaders.append('accept', 'application/json');\r\n reqHeaders.append('content-type', 'application/xml');\r\n\r\n const httpPostOptions: ISPHttpClientOptions = {\r\n headers: reqHeaders,\r\n body: data\r\n };\r\n\r\n return this.context.spHttpClient.post(this.clientServiceUrl, SPHttpClient.configurations.v1, httpPostOptions).then((serviceResponse: SPHttpClientResponse) => {\r\n return serviceResponse.json().then((serviceJSONResponse: any) => {\r\n const termStoreResultTermSets: ITermSet[] = serviceJSONResponse.filter((r: { [x: string]: string; }) => r['_ObjectType_'] === 'SP.Taxonomy.TermSet');\r\n\r\n if (termStoreResultTermSets.length > 0) {\r\n const termStoreResultTermSet = termStoreResultTermSets[0];\r\n termStoreResultTermSet.Terms = [];\r\n // Retrieve the term collection results\r\n const termStoreResultTerms: ITerms[] = serviceJSONResponse.filter((r: { [x: string]: string; }) => r['_ObjectType_'] === 'SP.Taxonomy.TermCollection');\r\n if (termStoreResultTerms.length > 0) {\r\n // Retrieve all terms\r\n let terms = termStoreResultTerms[0]._Child_Items_;\r\n\r\n if (hideDeprecatedTags === true) {\r\n terms = terms.filter(d => d.IsDeprecated === false);\r\n }\r\n\r\n if (hideTagsNotAvailableForTagging === true) {\r\n terms = terms.filter(d => d.IsAvailableForTagging === true);\r\n }\r\n\r\n // Clean the term ID and specify the path depth\r\n terms = terms.map(term => {\r\n if (term.IsRoot) {\r\n term.CustomSortOrderIndex = (termStoreResultTermSet.CustomSortOrder) ? termStoreResultTermSet.CustomSortOrder.split(':').indexOf(this.cleanGuid(term.Id)) : -1;\r\n } else {\r\n term.CustomSortOrderIndex = (term['Parent'].CustomSortOrder) ? term['Parent'].CustomSortOrder.split(':').indexOf(this.cleanGuid(term.Id)) : -1;\r\n }\r\n term.Id = this.cleanGuid(term.Id);\r\n term['PathDepth'] = term.PathOfTerm.split(';').length;\r\n term.TermSet = { Id: this.cleanGuid(termStoreResultTermSet.Id), Name: termStoreResultTermSet.Name };\r\n if (term['Parent']) {\r\n term.ParentId = this.cleanGuid(term['Parent'].Id);\r\n }\r\n return term;\r\n });\r\n // Check if the term set was not empty\r\n if (terms.length > 0) {\r\n // Sort the terms by PathOfTerm and their depth\r\n terms = this.sortTerms(terms);\r\n termStoreResultTermSet.Terms = terms;\r\n }\r\n }\r\n\r\n try {\r\n if (useSessionStorage && window.sessionStorage) {\r\n window.sessionStorage.setItem(termsetId, JSON.stringify(termStoreResultTermSet));\r\n }\r\n } catch (error) {\r\n // Do nothing, sometimes \"storage quota exceeded\" error if too many items\r\n }\r\n return termStoreResultTermSet;\r\n }\r\n return null;\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Retrieve all terms that starts with the searchText\r\n * @param searchText\r\n */\r\n public searchTermsByName(searchText: string): Promise {\r\n return this.searchTermsByTermSet(searchText);\r\n }\r\n\r\n public async searchTermsByTermId(searchText: string, termId: string): Promise {\r\n const { useSessionStorage } = this.props;\r\n const childTerms = this.getTermsById(termId, useSessionStorage);\r\n if (childTerms) {\r\n return this.searchTermsBySearchText(childTerms, searchText);\r\n } else {\r\n const {\r\n termsetNameOrID,\r\n hideDeprecatedTags,\r\n hideTagsNotAvailableForTagging\r\n } = this.props;\r\n\r\n const terms = await this.getAllTermsByAnchorId(\r\n termsetNameOrID,\r\n termId,\r\n hideDeprecatedTags,\r\n hideTagsNotAvailableForTagging,\r\n useSessionStorage);\r\n\r\n if (terms) {\r\n return this.searchTermsBySearchText(terms, searchText);\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Retrieve all terms for the given term set and anchorId\r\n */\r\n public async getAllTermsByAnchorId(termsetNameOrID: string, anchorId: string, hideDeprecatedTags?: boolean, hideTagsNotAvailableForTagging?: boolean, useSessionStorage: boolean = true): Promise {\r\n\r\n const returnTerms: IPickerTerm[] = [];\r\n\r\n const childTerms = this.getTermsById(anchorId, useSessionStorage);\r\n if (childTerms) {\r\n return childTerms;\r\n }\r\n\r\n const termSet = await this.getAllTerms(termsetNameOrID, hideDeprecatedTags, hideTagsNotAvailableForTagging);\r\n const terms = termSet.Terms;\r\n if (anchorId) {\r\n const anchorTerm = terms.filter(t => t.Id.toLowerCase() === anchorId.toLowerCase()).shift();\r\n if (anchorTerm) {\r\n // Append ';' separator, as a suffix to anchor term path.\r\n const anchorTermPath = `${anchorTerm.PathOfTerm};`;\r\n const anchorTerms: ITerm[] = terms.filter(t => t.PathOfTerm.substring(0, anchorTermPath.length) === anchorTermPath && t.Id !== anchorTerm.Id);\r\n\r\n anchorTerms.forEach(term => {\r\n returnTerms.push(this.convertTermToPickerTerm(term));\r\n });\r\n\r\n try {\r\n if (useSessionStorage && window.sessionStorage) {\r\n window.sessionStorage.setItem(anchorId, JSON.stringify(returnTerms));\r\n }\r\n } catch (error) {\r\n // Do nothing\r\n }\r\n }\r\n } else {\r\n terms.forEach(term => {\r\n returnTerms.push(this.convertTermToPickerTerm(term));\r\n });\r\n }\r\n\r\n return returnTerms;\r\n }\r\n\r\n /**\r\n * Clean the Guid from the Web Service response\r\n * @param guid\r\n */\r\n public cleanGuid(guid: string): string {\r\n if (guid !== undefined) {\r\n return guid.replace('/Guid(', '').replace('/', '').replace(')', '');\r\n } else {\r\n return '';\r\n }\r\n }\r\n\r\n /**\r\n * Get the term set ID by its name\r\n * @param termstore\r\n * @param termset\r\n */\r\n private getTermSetId(termstore: ITermStore[], termsetName: string): ITermSet {\r\n if (termstore && termstore.length > 0 && termsetName) {\r\n // Get the first term store\r\n const ts = termstore[0];\r\n // Check if the term store contains groups\r\n if (ts.Groups && ts.Groups._Child_Items_) {\r\n for (const group of ts.Groups._Child_Items_) {\r\n // Check if the group contains term sets\r\n if (group.TermSets && group.TermSets._Child_Items_) {\r\n for (const termSet of group.TermSets._Child_Items_) {\r\n // Check if the term set is found\r\n if (termSet.Name === termsetName) {\r\n return termSet;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private getTermsById(termId, useSessionStorage: boolean = true) {\r\n try {\r\n if (useSessionStorage && window.sessionStorage) {\r\n const terms = window.sessionStorage.getItem(termId);\r\n if (terms) {\r\n return JSON.parse(terms);\r\n } else {\r\n return null;\r\n }\r\n } else {\r\n return null;\r\n }\r\n } catch (error) {\r\n return null;\r\n }\r\n }\r\n\r\n private searchTermsBySearchText(terms, searchText) {\r\n if (terms) {\r\n return terms.filter((t) => { return t.name.toLowerCase().indexOf(searchText.toLowerCase()) > -1; });\r\n } else {\r\n return [];\r\n }\r\n }\r\n\r\n /**\r\n * Searches terms for the given term set\r\n * @param searchText\r\n * @param termsetId\r\n */\r\n private searchTermsByTermSet(searchText: string): Promise {\r\n return new Promise(resolve => {\r\n this.getTermStores().then(termStore => {\r\n let termSetId = this.props.termsetNameOrID;\r\n if (!this.isGuid(termSetId)) {\r\n // Get the ID of the provided term set name\r\n const crntTermSet = this.getTermSetId(termStore, termSetId);\r\n if (crntTermSet) {\r\n termSetId = this.cleanGuid(crntTermSet.Id);\r\n } else {\r\n resolve(null);\r\n return;\r\n }\r\n }\r\n if (termStore === undefined || termStore.length === 0) {\r\n resolve(null);\r\n return;\r\n }\r\n const loc: number = this.context.pageContext.cultureInfo.currentUICultureName === 'de-de' ? 1031 : 1033;\r\n const data: any = {\r\n start: searchText,\r\n lcid: loc !== 0 ? loc : this.context.pageContext.web.language,\r\n sspList: this.cleanGuid(termStore[0].Id),\r\n termSetList: termSetId,\r\n anchorId: this.props.anchorId ? this.props.anchorId : EmptyGuid,\r\n isSpanTermStores: false,\r\n isSpanTermSets: false,\r\n isIncludeUnavailable: this.props.hideTagsNotAvailableForTagging === true,\r\n isIncludeDeprecated: this.props.hideDeprecatedTags === true,\r\n isAddTerms: false,\r\n isIncludePathData: false,\r\n excludeKeyword: false,\r\n excludedTermset: EmptyGuid\r\n };\r\n\r\n const reqHeaders: Headers = new Headers();\r\n reqHeaders.append('accept', 'application/json');\r\n reqHeaders.append('content-type', 'application/json');\r\n\r\n const httpPostOptions: ISPHttpClientOptions = {\r\n headers: reqHeaders,\r\n body: JSON.stringify(data)\r\n };\r\n\r\n return this.context.spHttpClient.post(this.suggestionServiceUrl, SPHttpClient.configurations.v1, httpPostOptions).then((serviceResponse: SPHttpClientResponse) => {\r\n return serviceResponse.json().then((serviceJSONResponse: any) => {\r\n const groups = serviceJSONResponse.d.Groups;\r\n if (groups && groups.length > 0) {\r\n // Retrieve the term collection results\r\n const terms: ISuggestTerm[] = groups[0].Suggestions;\r\n if (terms.length > 0) {\r\n // Retrieve all terms\r\n\r\n const returnTerms: IPickerTerm[] = terms.map((term: ISuggestTerm) => this.convertSuggestTermToPickerTerm(term));\r\n resolve(returnTerms);\r\n return;\r\n }\r\n\r\n }\r\n\r\n resolve([]);\r\n });\r\n });\r\n });\r\n });\r\n }\r\n\r\n private isGuid(strGuid: string): boolean {\r\n return /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/.test(strGuid);\r\n }\r\n\r\n /**\r\n * Sorting terms based on their path and depth\r\n *\r\n * @param terms\r\n */\r\n private sortTerms(terms: ITerm[]) {\r\n // Start sorting by depth\r\n let newTermsOrder: ITerm[] = [];\r\n let itemsToSort: boolean = true;\r\n let pathLevel: number = 1;\r\n while (itemsToSort) {\r\n // Get terms for the current level\r\n let crntTerms = terms.filter(term => term.PathDepth === pathLevel);\r\n if (crntTerms && crntTerms.length > 0) {\r\n crntTerms = crntTerms.sort(this.sortTermByPath);\r\n\r\n if (pathLevel !== 1) {\r\n crntTerms = crntTerms.reverse();\r\n for (const crntTerm of crntTerms) {\r\n const pathElms: string[] = crntTerm.PathOfTerm.split(';');\r\n // Last item is not needed for parent path\r\n pathElms.pop();\r\n // Find the parent item and add the new item\r\n const idx: number = findIndex(newTermsOrder, term => term.PathOfTerm === pathElms.join(';'));\r\n if (idx !== -1) {\r\n newTermsOrder.splice(idx + 1, 0, crntTerm);\r\n } else {\r\n // Push the item at the end if the parent couldn't be found\r\n newTermsOrder.push(crntTerm);\r\n }\r\n }\r\n } else {\r\n newTermsOrder = crntTerms;\r\n }\r\n\r\n ++pathLevel;\r\n } else {\r\n itemsToSort = false;\r\n }\r\n }\r\n return newTermsOrder;\r\n }\r\n\r\n /**\r\n * Sort the terms by their path\r\n *\r\n * @param a term 2\r\n * @param b term 2\r\n */\r\n private sortTermByPath(a: ITerm, b: ITerm) {\r\n if (a.CustomSortOrderIndex === -1) {\r\n if (a.PathOfTerm.toLowerCase() < b.PathOfTerm.toLowerCase()) {\r\n return -1;\r\n }\r\n if (a.PathOfTerm.toLowerCase() > b.PathOfTerm.toLowerCase()) {\r\n return 1;\r\n }\r\n return 0;\r\n } else {\r\n if (a.CustomSortOrderIndex < b.CustomSortOrderIndex) {\r\n return -1;\r\n }\r\n if (a.CustomSortOrderIndex > b.CustomSortOrderIndex) {\r\n return 1;\r\n }\r\n return 0;\r\n }\r\n }\r\n\r\n private convertTermToPickerTerm(term: ITerm): IPickerTerm {\r\n return {\r\n key: this.cleanGuid(term.Id),\r\n name: term.Name,\r\n path: term.PathOfTerm,\r\n termSet: this.cleanGuid(term.TermSet.Id),\r\n termSetName: term.TermSet.Name\r\n };\r\n }\r\n\r\n private convertSuggestTermToPickerTerm(term: ISuggestTerm): IPickerTerm {\r\n let path: string = '';\r\n let termSetName: string = '';\r\n if (term.Paths && term.Paths.length > 0) {\r\n const fullPath: string = term.Paths[0].replace(/^\\[/, '').replace(/\\]$/, '');\r\n const fullPathParts: string[] = fullPath.split(':');\r\n path = fullPathParts.join(';') + ';' + term.DefaultLabel;\r\n termSetName = fullPathParts[0];\r\n }\r\n return {\r\n key: this.cleanGuid(term.Id),\r\n name: term.DefaultLabel,\r\n path: path,\r\n termSet: EmptyGuid, // TermSet Guid is not given with suggestion\r\n termSetName: termSetName\r\n };\r\n }\r\n}\r\n"],"sourceRoot":"..\\..\\src"} \ No newline at end of file diff --git a/lib/services/TaxonomyNavigationService.d.ts b/lib/services/TaxonomyNavigationService.d.ts new file mode 100644 index 0000000..b1e6bf2 --- /dev/null +++ b/lib/services/TaxonomyNavigationService.d.ts @@ -0,0 +1,11 @@ +import { ITaxonomyNavigationService } from './ITaxonomyNavigationService'; +import { IMenuItem } from './IMenuItem'; +import { ApplicationCustomizerContext } from '@microsoft/sp-application-base'; +export declare class TaxonomyNavigationService implements ITaxonomyNavigationService { + private context; + private termSetName; + private _taxonomyPickerService; + private _noTerm; + constructor(context: ApplicationCustomizerContext, termSetName: string); + getMenuItems(): Promise; +} diff --git a/lib/services/TaxonomyNavigationService.js b/lib/services/TaxonomyNavigationService.js new file mode 100644 index 0000000..18abcac --- /dev/null +++ b/lib/services/TaxonomyNavigationService.js @@ -0,0 +1,120 @@ +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + 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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = y[op[0] & 2 ? "return" : op[0] ? "throw" : "next"]) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [0, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +import { sp } from '@pnp/sp'; +import { MenuItem } from './MenuItem'; +import SPTermStorePickerService from './SPTermStorePickerService'; +import { ItemDictionary } from './ItemDictionary'; +var TaxonomyNavigationService = (function () { + function TaxonomyNavigationService(context /*, private lcid: number*/, termSetName) { + this.context = context; /*, private lcid: number*/ + this.termSetName = termSetName; + this._noTerm = { + _ObjectType_: '', + _ObjectIdentity_: '', + CustomSortOrderIndex: 0, + Description: '', + Id: '', + IsAvailableForTagging: false, + IsDeprecated: false, + IsRoot: true, + LocalCustomProperties: { + _Sys_Nav_HoverText: 'Es wurden keine Terms gefunden. Bitte überprüfen Sie Ihre Einstellungen.', + _Sys_Nav_ExcludedProviders: undefined, + _Sys_Nav_SimpleLinkUrl: undefined + }, + Name: 'Es wurden keine Terms gefunden. Bitte überprüfen Sie Ihre Einstellungen.', + PathOfTerm: '', + TermSet: undefined + }; + sp.setup({ + spfxContext: context + }); + this._taxonomyPickerService = new SPTermStorePickerService({ + anchorId: '', + termsetNameOrID: termSetName, + useSessionStorage: true, + hideDeprecatedTags: true, + hideTagsNotAvailableForTagging: false + }, this.context); + } + // Implement the methods from ITaxonomyNavigationService interface here + TaxonomyNavigationService.prototype.getMenuItems = function () { + return __awaiter(this, void 0, void 0, function () { + var _this = this; + var siteCollectionUrl, termset, itemsDict, menuItems; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + siteCollectionUrl = this.context.pageContext.site.absoluteUrl; + return [4 /*yield*/, this._taxonomyPickerService.getAllTerms(this.termSetName)]; + case 1: + termset = _a.sent(); + itemsDict = new ItemDictionary(); + menuItems = []; + if (!termset || !termset.Terms) { + console.warn('No terms found in the term set'); + return [2 /*return*/, [new MenuItem(this._noTerm, 0, siteCollectionUrl)]]; + } + termset.Terms.forEach(function (term) { return __awaiter(_this, void 0, void 0, function () { + var menuItem, parentItem; + return __generator(this, function (_a) { + menuItem = new MenuItem(term, 0, siteCollectionUrl); + itemsDict.Add(term.Id, menuItem); + if (menuItem.pathDepth === 1) { + menuItems.push(menuItem); + } + else { + parentItem = itemsDict.Get(term.ParentId); + if (parentItem) { + parentItem.items.push(menuItem); + } + else { + console.warn("Item without parent: " + term.PathOfTerm); + } + } + return [2 /*return*/]; + }); + }); }); + return [2 /*return*/, menuItems]; + } + }); + }); + }; + return TaxonomyNavigationService; +}()); +export { TaxonomyNavigationService }; + +//# sourceMappingURL=TaxonomyNavigationService.js.map diff --git a/lib/services/TaxonomyNavigationService.js.map b/lib/services/TaxonomyNavigationService.js.map new file mode 100644 index 0000000..7283a61 --- /dev/null +++ b/lib/services/TaxonomyNavigationService.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["services/TaxonomyNavigationService.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,wBAAwB,MAAM,4BAA4B,CAAC;AAElE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD;IAqBI,mCAAoB,OAAqC,CAAC,0BAA0B,EAAU,WAAmB;QAA7F,YAAO,GAAP,OAAO,CAA8B,CAAC,0BAA0B;QAAU,gBAAW,GAAX,WAAW,CAAQ;QAnBzG,YAAO,GAAU;YACrB,YAAY,EAAE,EAAE;YAChB,gBAAgB,EAAE,EAAE;YACpB,oBAAoB,EAAE,CAAC;YACvB,WAAW,EAAE,EAAE;YACf,EAAE,EAAE,EAAE;YACN,qBAAqB,EAAE,KAAK;YAC5B,YAAY,EAAE,KAAK;YACnB,MAAM,EAAE,IAAI;YACZ,qBAAqB,EAAE;gBACnB,kBAAkB,EAAE,0EAA0E;gBAC9F,0BAA0B,EAAE,SAAS;gBACrC,sBAAsB,EAAE,SAAS;aACpC;YACD,IAAI,EAAE,0EAA0E;YAChF,UAAU,EAAE,EAAE;YACd,OAAO,EAAE,SAAS;SACrB,CAAC;QAGE,EAAE,CAAC,KAAK,CAAC;YACL,WAAW,EAAE,OAAO;SACvB,CAAC,CAAC;QACH,IAAI,CAAC,sBAAsB,GAAG,IAAI,wBAAwB,CACtD;YACI,QAAQ,EAAE,EAAE;YACZ,eAAe,EAAE,WAAW;YAC5B,iBAAiB,EAAE,IAAI;YACvB,kBAAkB,EAAE,IAAI;YACxB,8BAA8B,EAAE,KAAK;SACxC,EACD,IAAI,CAAC,OAAO,CACf,CAAC;IACN,CAAC;IAED,uEAAuE;IAC1D,gDAAY,GAAzB;;;;;;;wBACU,iBAAiB,GAAW,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC;wBAClD,qBAAM,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,EAAA;;wBAAnF,OAAO,GAAa,SAA+D;wBACnF,SAAS,GAA8B,IAAI,cAAc,EAAa,CAAC;wBACvE,SAAS,GAAgB,EAAE,CAAC;wBAClC,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;4BAC7B,OAAO,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;4BAC/C,MAAM,gBAAC,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,iBAAiB,CAAC,CAAC,EAAC;wBAC9D,CAAC;wBAED,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,UAAO,IAAW;;;gCAC9B,QAAQ,GAAc,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,iBAAiB,CAAC,CAAC;gCACrE,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;gCACjC,EAAE,CAAC,CAAC,QAAQ,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC;oCAC3B,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gCAC7B,CAAC;gCAAC,IAAI,CAAC,CAAC;oCACE,UAAU,GAAc,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oCAC3D,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;wCACb,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oCACpC,CAAC;oCAAC,IAAI,CAAC,CAAC;wCACJ,OAAO,CAAC,IAAI,CAAC,0BAAwB,IAAI,CAAC,UAAY,CAAC,CAAC;oCAC5D,CAAC;gCACL,CAAC;;;6BACJ,CAAC,CAAC;wBACH,sBAAO,SAAS,EAAC;;;;KACpB;IACL,gCAAC;AAAD,CAhEA,AAgEC,IAAA","file":"services/TaxonomyNavigationService.js","sourcesContent":["import { ITaxonomyNavigationService } from './ITaxonomyNavigationService';\r\n// import { ITerm, ITermStore, taxonomy, ITermData, ITermSets, ITermSet, } from '@pnp/sp-taxonomy';\r\nimport { IMenuItem } from './IMenuItem';\r\nimport { sp } from '@pnp/sp';\r\nimport { MenuItem } from './MenuItem';\r\nimport { ApplicationCustomizerContext } from '@microsoft/sp-application-base';\r\nimport SPTermStorePickerService from './SPTermStorePickerService';\r\nimport { ITerm, ITermSet } from './ISPTermStorePickerService';\r\nimport { ItemDictionary } from './ItemDictionary';\r\n\r\nexport class TaxonomyNavigationService implements ITaxonomyNavigationService {\r\n private _taxonomyPickerService: SPTermStorePickerService;\r\n private _noTerm: ITerm = {\r\n _ObjectType_: '',\r\n _ObjectIdentity_: '',\r\n CustomSortOrderIndex: 0,\r\n Description: '',\r\n Id: '',\r\n IsAvailableForTagging: false,\r\n IsDeprecated: false,\r\n IsRoot: true,\r\n LocalCustomProperties: {\r\n _Sys_Nav_HoverText: 'Es wurden keine Terms gefunden. Bitte überprüfen Sie Ihre Einstellungen.',\r\n _Sys_Nav_ExcludedProviders: undefined,\r\n _Sys_Nav_SimpleLinkUrl: undefined\r\n },\r\n Name: 'Es wurden keine Terms gefunden. Bitte überprüfen Sie Ihre Einstellungen.',\r\n PathOfTerm: '',\r\n TermSet: undefined\r\n };\r\n\r\n constructor(private context: ApplicationCustomizerContext /*, private lcid: number*/, private termSetName: string) {\r\n sp.setup({\r\n spfxContext: context\r\n });\r\n this._taxonomyPickerService = new SPTermStorePickerService(\r\n {\r\n anchorId: '',\r\n termsetNameOrID: termSetName,\r\n useSessionStorage: true,\r\n hideDeprecatedTags: true,\r\n hideTagsNotAvailableForTagging: false\r\n },\r\n this.context\r\n );\r\n }\r\n\r\n // Implement the methods from ITaxonomyNavigationService interface here\r\n public async getMenuItems(): Promise {\r\n const siteCollectionUrl: string = this.context.pageContext.site.absoluteUrl;\r\n const termset: ITermSet = await this._taxonomyPickerService.getAllTerms(this.termSetName);\r\n const itemsDict: ItemDictionary = new ItemDictionary();\r\n const menuItems: IMenuItem[] = [];\r\n if (!termset || !termset.Terms) {\r\n console.warn('No terms found in the term set');\r\n return [new MenuItem(this._noTerm, 0, siteCollectionUrl)];\r\n }\r\n\r\n termset.Terms.forEach(async (term: ITerm) => {\r\n const menuItem: IMenuItem = new MenuItem(term, 0, siteCollectionUrl);\r\n itemsDict.Add(term.Id, menuItem);\r\n if (menuItem.pathDepth === 1) {\r\n menuItems.push(menuItem);\r\n } else {\r\n const parentItem: IMenuItem = itemsDict.Get(term.ParentId);\r\n if (parentItem) {\r\n parentItem.items.push(menuItem);\r\n } else {\r\n console.warn(`Item without parent: ${term.PathOfTerm}`);\r\n }\r\n }\r\n });\r\n return menuItems;\r\n }\r\n}"],"sourceRoot":"..\\..\\src"} \ No newline at end of file diff --git a/lib/services/UserCustomActionService/IUserCustomActionProps.d.ts b/lib/services/UserCustomActionService/IUserCustomActionProps.d.ts new file mode 100644 index 0000000..270ea94 --- /dev/null +++ b/lib/services/UserCustomActionService/IUserCustomActionProps.d.ts @@ -0,0 +1,20 @@ +export interface IUserCustomActionProps { + Id?: string; + Title: string; + Name?: string; + Description?: string; + Location: string; + ScriptSrc?: string; + ScriptBlock?: string; + Url?: string; + Sequence?: number; + Group?: string; + ImageUrl?: string; + CommandUIExtension?: string; + RegistrationType?: number; + RegistrationId?: string; + Rights?: {}; + Scope?: number; + ClientSideComponentId?: string; + ClientSideComponentProperties?: string; +} diff --git a/lib/services/UserCustomActionService/IUserCustomActionProps.js b/lib/services/UserCustomActionService/IUserCustomActionProps.js new file mode 100644 index 0000000..940fd91 --- /dev/null +++ b/lib/services/UserCustomActionService/IUserCustomActionProps.js @@ -0,0 +1,3 @@ + + +//# sourceMappingURL=IUserCustomActionProps.js.map diff --git a/lib/services/UserCustomActionService/IUserCustomActionProps.js.map b/lib/services/UserCustomActionService/IUserCustomActionProps.js.map new file mode 100644 index 0000000..81ff26b --- /dev/null +++ b/lib/services/UserCustomActionService/IUserCustomActionProps.js.map @@ -0,0 +1 @@ +{"version":3,"sources":[],"names":[],"mappings":"","file":"services/UserCustomActionService/IUserCustomActionProps.js","sourcesContent":[],"sourceRoot":"..\\..\\..\\src"} \ No newline at end of file diff --git a/lib/services/UserCustomActionService/IUserCustomActionService.d.ts b/lib/services/UserCustomActionService/IUserCustomActionService.d.ts new file mode 100644 index 0000000..8ab0bc8 --- /dev/null +++ b/lib/services/UserCustomActionService/IUserCustomActionService.d.ts @@ -0,0 +1,10 @@ +import { UserCustomActionScope } from './UserCustomActionScope'; +import { IUserCustomActionProps } from './IUserCustomActionProps'; +import { UserCustomActionAddResult, UserCustomActionUpdateResult } from '@pnp/sp'; +export interface IUserCustomActionService { + getUserCustomActions(scope: UserCustomActionScope, listId?: string): Promise; + getUserCustomActionById(scope: UserCustomActionScope, id: string, listId?: string): Promise; + addUserCustomAction(scope: UserCustomActionScope, customAction: IUserCustomActionProps, listId?: string): Promise; + updateUserCustomAction(scope: UserCustomActionScope, id: string, props: {}, listId?: string): Promise; + deleteUserCustomAction(scope: UserCustomActionScope, customAction: IUserCustomActionProps, listId?: string): Promise; +} diff --git a/lib/services/UserCustomActionService/IUserCustomActionService.js b/lib/services/UserCustomActionService/IUserCustomActionService.js new file mode 100644 index 0000000..eba33c3 --- /dev/null +++ b/lib/services/UserCustomActionService/IUserCustomActionService.js @@ -0,0 +1,3 @@ + + +//# sourceMappingURL=IUserCustomActionService.js.map diff --git a/lib/services/UserCustomActionService/IUserCustomActionService.js.map b/lib/services/UserCustomActionService/IUserCustomActionService.js.map new file mode 100644 index 0000000..116b1a7 --- /dev/null +++ b/lib/services/UserCustomActionService/IUserCustomActionService.js.map @@ -0,0 +1 @@ +{"version":3,"sources":[],"names":[],"mappings":"","file":"services/UserCustomActionService/IUserCustomActionService.js","sourcesContent":[],"sourceRoot":"..\\..\\..\\src"} \ No newline at end of file diff --git a/lib/services/UserCustomActionService/UserCustomActionScope.d.ts b/lib/services/UserCustomActionService/UserCustomActionScope.d.ts new file mode 100644 index 0000000..84a68b8 --- /dev/null +++ b/lib/services/UserCustomActionService/UserCustomActionScope.d.ts @@ -0,0 +1,5 @@ +export declare enum UserCustomActionScope { + Web = "web", + Site = "site", + List = "list", +} diff --git a/lib/services/UserCustomActionService/UserCustomActionScope.js b/lib/services/UserCustomActionService/UserCustomActionScope.js new file mode 100644 index 0000000..99092b3 --- /dev/null +++ b/lib/services/UserCustomActionService/UserCustomActionScope.js @@ -0,0 +1,8 @@ +export var UserCustomActionScope; +(function (UserCustomActionScope) { + UserCustomActionScope["Web"] = "web"; + UserCustomActionScope["Site"] = "site"; + UserCustomActionScope["List"] = "list"; +})(UserCustomActionScope = UserCustomActionScope || (UserCustomActionScope = {})); + +//# sourceMappingURL=UserCustomActionScope.js.map diff --git a/lib/services/UserCustomActionService/UserCustomActionScope.js.map b/lib/services/UserCustomActionService/UserCustomActionScope.js.map new file mode 100644 index 0000000..3b68ff2 --- /dev/null +++ b/lib/services/UserCustomActionService/UserCustomActionScope.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["services/UserCustomActionService/UserCustomActionScope.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,qBAIX;AAJD,WAAY,qBAAqB;IAC7B,oCAAW,CAAA;IACX,sCAAa,CAAA;IACb,sCAAa,CAAA;AACjB,CAAC,EAJW,qBAAqB,GAArB,qBAAqB,KAArB,qBAAqB,QAIhC","file":"services/UserCustomActionService/UserCustomActionScope.js","sourcesContent":["export enum UserCustomActionScope {\r\n Web = 'web',\r\n Site = 'site',\r\n List = 'list'\r\n}\r\n"],"sourceRoot":"..\\..\\..\\src"} \ No newline at end of file diff --git a/lib/services/UserCustomActionService/UserCustomActionService.d.ts b/lib/services/UserCustomActionService/UserCustomActionService.d.ts new file mode 100644 index 0000000..c5f1cd4 --- /dev/null +++ b/lib/services/UserCustomActionService/UserCustomActionService.d.ts @@ -0,0 +1,13 @@ +import { UserCustomActionAddResult, UserCustomActionUpdateResult } from '@pnp/sp/src/usercustomactions'; +import { IUserCustomActionService } from './IUserCustomActionService'; +import { UserCustomActionScope } from './UserCustomActionScope'; +import { IUserCustomActionProps } from './IUserCustomActionProps'; +import { ApplicationCustomizerContext } from '@microsoft/sp-application-base'; +export declare class UserCustomActionService implements IUserCustomActionService { + constructor(context: ApplicationCustomizerContext); + getUserCustomActions(scope: UserCustomActionScope, listId?: string): Promise; + getUserCustomActionById(scope: UserCustomActionScope, id: string, listId?: string): Promise; + addUserCustomAction(scope: UserCustomActionScope, customAction: IUserCustomActionProps, listId?: string): Promise; + updateUserCustomAction(scope: UserCustomActionScope, id: string, props: {}, listId?: string): Promise; + deleteUserCustomAction(scope: UserCustomActionScope, customAction: IUserCustomActionProps, listId?: string): Promise; +} diff --git a/lib/services/UserCustomActionService/UserCustomActionService.js b/lib/services/UserCustomActionService/UserCustomActionService.js new file mode 100644 index 0000000..881f38f --- /dev/null +++ b/lib/services/UserCustomActionService/UserCustomActionService.js @@ -0,0 +1,210 @@ +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + 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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = y[op[0] & 2 ? "return" : op[0] ? "throw" : "next"]) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [0, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +import { sp } from '@pnp/sp'; +import { UserCustomActionScope } from './UserCustomActionScope'; +var UserCustomActionService = (function () { + function UserCustomActionService(context) { + sp.setup({ + spfxContext: context + }); + } + UserCustomActionService.prototype.getUserCustomActions = function (scope, listId) { + return __awaiter(this, void 0, void 0, function () { + var actions, _a, error_1; + return __generator(this, function (_b) { + switch (_b.label) { + case 0: + _b.trys.push([0, 9, , 10]); + actions = void 0; + _a = scope; + switch (_a) { + case UserCustomActionScope.Web: return [3 /*break*/, 1]; + case UserCustomActionScope.Site: return [3 /*break*/, 3]; + case UserCustomActionScope.List: return [3 /*break*/, 5]; + } + return [3 /*break*/, 7]; + case 1: return [4 /*yield*/, sp.web.userCustomActions.get()]; + case 2: + actions = _b.sent(); + return [3 /*break*/, 8]; + case 3: return [4 /*yield*/, sp.site.userCustomActions.get()]; + case 4: + actions = _b.sent(); + return [3 /*break*/, 8]; + case 5: + if (!listId) { + throw new Error('List ID is required for List scope'); + } + return [4 /*yield*/, sp.web.lists.getById(listId).userCustomActions.get()]; + case 6: + actions = _b.sent(); + return [3 /*break*/, 8]; + case 7: throw new Error('Invalid scope'); + case 8: return [2 /*return*/, actions]; + case 9: + error_1 = _b.sent(); + console.error('Error getting user custom actions: ', error_1); + throw error_1; + case 10: return [2 /*return*/]; + } + }); + }); + }; + UserCustomActionService.prototype.getUserCustomActionById = function (scope, id, listId) { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + try { + switch (scope) { + case UserCustomActionScope.Web: + return [2 /*return*/, sp.web.userCustomActions.getById(id)]; + case UserCustomActionScope.Site: + return [2 /*return*/, sp.site.userCustomActions.getById(id)]; + case UserCustomActionScope.List: + if (!listId) { + throw new Error('List ID is required for List scope'); + } + return [2 /*return*/, sp.web.lists.getById(listId).userCustomActions.getById(id)]; + default: + throw new Error('Invalid scope'); + } + } + catch (error) { + console.error('Error getting user custom action by ID: ', error); + throw error; + } + return [2 /*return*/]; + }); + }); + }; + UserCustomActionService.prototype.addUserCustomAction = function (scope, customAction, listId) { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + try { + switch (scope) { + case UserCustomActionScope.Web: + return [2 /*return*/, sp.web.userCustomActions.add(customAction)]; + case UserCustomActionScope.Site: + return [2 /*return*/, sp.site.userCustomActions.add(customAction)]; + case UserCustomActionScope.List: + if (!listId) { + throw new Error('List ID is required for List scope'); + } + return [2 /*return*/, sp.web.lists.getById(listId).userCustomActions.add(customAction)]; + default: + throw new Error('Invalid scope'); + } + } + catch (error) { + console.error('Error adding user custom action: ', error); + throw error; + } + return [2 /*return*/]; + }); + }); + }; + UserCustomActionService.prototype.updateUserCustomAction = function (scope, id, props, listId) { + return __awaiter(this, void 0, void 0, function () { + var result, _a, error_2; + return __generator(this, function (_b) { + switch (_b.label) { + case 0: + _b.trys.push([0, 9, , 10]); + result = void 0; + _a = scope; + switch (_a) { + case UserCustomActionScope.Web: return [3 /*break*/, 1]; + case UserCustomActionScope.Site: return [3 /*break*/, 3]; + case UserCustomActionScope.List: return [3 /*break*/, 5]; + } + return [3 /*break*/, 7]; + case 1: return [4 /*yield*/, sp.web.userCustomActions.getById(id).update(props)]; + case 2: + result = _b.sent(); + return [3 /*break*/, 8]; + case 3: return [4 /*yield*/, sp.site.userCustomActions.getById(id).update(props)]; + case 4: + result = _b.sent(); + return [3 /*break*/, 8]; + case 5: + if (!listId) { + throw new Error('List ID is required for List scope'); + } + return [4 /*yield*/, sp.web.lists.getById(listId).userCustomActions.getById(id).update(props)]; + case 6: + result = _b.sent(); + return [3 /*break*/, 8]; + case 7: throw new Error('Invalid scope'); + case 8: return [2 /*return*/, result]; + case 9: + error_2 = _b.sent(); + console.error('Error updating user custom action: ', error_2); + throw error_2; + case 10: return [2 /*return*/]; + } + }); + }); + }; + UserCustomActionService.prototype.deleteUserCustomAction = function (scope, customAction, listId) { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + try { + switch (scope) { + case UserCustomActionScope.Web: + return [2 /*return*/, sp.web.userCustomActions.getById(customAction.Id).delete()]; + case UserCustomActionScope.Site: + return [2 /*return*/, sp.site.userCustomActions.getById(customAction.Id).delete()]; + case UserCustomActionScope.List: + if (!listId) { + throw new Error('List ID is required for List scope'); + } + return [2 /*return*/, sp.web.lists.getById(listId).userCustomActions.getById(customAction.Id).delete()]; + default: + throw new Error('Invalid scope'); + } + } + catch (error) { + console.error('Error deleting user custom action: ', error); + throw error; + } + return [2 /*return*/]; + }); + }); + }; + return UserCustomActionService; +}()); +export { UserCustomActionService }; + +//# sourceMappingURL=UserCustomActionService.js.map diff --git a/lib/services/UserCustomActionService/UserCustomActionService.js.map b/lib/services/UserCustomActionService/UserCustomActionService.js.map new file mode 100644 index 0000000..72acf2b --- /dev/null +++ b/lib/services/UserCustomActionService/UserCustomActionService.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["services/UserCustomActionService/UserCustomActionService.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAIhE;IACI,iCAAY,OAAqC;QAC7C,EAAE,CAAC,KAAK,CAAC;YACL,WAAW,EAAE,OAAO;SACvB,CAAC,CAAC;IACN,CAAC;IACW,sDAAoB,GAAjC,UAAkC,KAA4B,EAAE,MAAe;;;;;;;wBAEnE,OAAO,SAA8C,CAAC;wBAClD,KAAA,KAAK,CAAA;;iCACJ,qBAAqB,CAAC,GAAG,EAAzB,MAAM,kBAAmB;iCAGzB,qBAAqB,CAAC,IAAI,EAA1B,MAAM,kBAAoB;iCAG1B,qBAAqB,CAAC,IAAI,EAA1B,MAAM,kBAAoB;;;4BALjB,qBAAM,EAAE,CAAC,GAAG,CAAC,iBAAiB,CAAC,GAAG,EAAE,EAAA;;wBAA9C,OAAO,GAAG,SAAoC,CAAC;wBAC/C,wBAAM;4BAEI,qBAAM,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,EAAA;;wBAA/C,OAAO,GAAG,SAAqC,CAAC;wBAChD,wBAAM;;wBAEN,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;4BACV,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;wBAC1D,CAAC;wBACS,qBAAM,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,GAAG,EAAE,EAAA;;wBAApE,OAAO,GAAG,SAA0D,CAAC;wBACrE,wBAAM;4BAEN,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;4BAEzC,sBAAO,OAAmC,EAAC;;;wBAE3C,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,OAAK,CAAC,CAAC;wBAC5D,MAAM,OAAK,CAAC;;;;;KAEnB;IAEY,yDAAuB,GAApC,UAAqC,KAA4B,EAAE,EAAU,EAAE,MAAe;;;gBAC1F,IAAI,CAAC;oBACD,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;wBACZ,KAAK,qBAAqB,CAAC,GAAG;4BAC1B,MAAM,gBAAC,EAAE,CAAC,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAiC,EAAC;wBAChF,KAAK,qBAAqB,CAAC,IAAI;4BAC3B,MAAM,gBAAC,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAiC,EAAC;wBACjF,KAAK,qBAAqB,CAAC,IAAI;4BAC3B,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;gCACV,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;4BAC1D,CAAC;4BACD,MAAM,gBAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAiC,EAAC;wBACtG;4BACI,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;oBACzC,CAAC;gBACL,CAAC;gBAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;oBACb,OAAO,CAAC,KAAK,CAAC,0CAA0C,EAAE,KAAK,CAAC,CAAC;oBACjE,MAAM,KAAK,CAAC;gBAChB,CAAC;;;;KACJ;IAEY,qDAAmB,GAAhC,UAAiC,KAA4B,EAAE,YAAoC,EAAE,MAAe;;;gBAChH,IAAI,CAAC;oBACD,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;wBACZ,KAAK,qBAAqB,CAAC,GAAG;4BAC1B,MAAM,gBAAC,EAAE,CAAC,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,YAAY,CAAC,EAAC;wBACtD,KAAK,qBAAqB,CAAC,IAAI;4BAC3B,MAAM,gBAAC,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,YAAY,CAAC,EAAC;wBACvD,KAAK,qBAAqB,CAAC,IAAI;4BAC3B,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;gCACV,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;4BAC1D,CAAC;4BACD,MAAM,gBAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,YAAY,CAAC,EAAC;wBAC5E;4BACI,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;oBACzC,CAAC;gBACL,CAAC;gBAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;oBACb,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC;oBAC1D,MAAM,KAAK,CAAC;gBAChB,CAAC;;;;KACJ;IAEY,wDAAsB,GAAnC,UAAoC,KAA4B,EAAE,EAAU,EAAE,KAAS,EAAE,MAAe;;;;;;;wBAE5F,MAAM,SAA8B,CAAC;wBACjC,KAAA,KAAK,CAAA;;iCACJ,qBAAqB,CAAC,GAAG,EAAzB,MAAM,kBAAmB;iCAGzB,qBAAqB,CAAC,IAAI,EAA1B,MAAM,kBAAoB;iCAG1B,qBAAqB,CAAC,IAAI,EAA1B,MAAM,kBAAoB;;;4BALlB,qBAAM,EAAE,CAAC,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAA;;wBAAjE,MAAM,GAAG,SAAwD,CAAC;wBAClE,wBAAM;4BAEG,qBAAM,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAA;;wBAAlE,MAAM,GAAG,SAAyD,CAAC;wBACnE,wBAAM;;wBAEN,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;4BACV,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;wBAC1D,CAAC;wBACQ,qBAAM,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAA;;wBAAvF,MAAM,GAAG,SAA8E,CAAC;wBACxF,wBAAM;4BAEN,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;4BAEzC,sBAAO,MAAM,EAAC;;;wBAEd,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,OAAK,CAAC,CAAC;wBAC5D,MAAM,OAAK,CAAC;;;;;KAEnB;IAEY,wDAAsB,GAAnC,UAAoC,KAA4B,EAAE,YAAoC,EAAE,MAAe;;;gBACnH,IAAI,CAAC;oBACD,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;wBACZ,KAAK,qBAAqB,CAAC,GAAG;4BAC1B,MAAM,gBAAC,EAAE,CAAC,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,EAAC;wBACtE,KAAK,qBAAqB,CAAC,IAAI;4BAC3B,MAAM,gBAAC,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,EAAC;wBACvE,KAAK,qBAAqB,CAAC,IAAI;4BAC3B,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;gCACV,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;4BAC1D,CAAC;4BACD,MAAM,gBAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,EAAC;wBAC5F;4BACI,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;oBACzC,CAAC;gBACL,CAAC;gBAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;oBACb,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,KAAK,CAAC,CAAC;oBAC5D,MAAM,KAAK,CAAC;gBAChB,CAAC;;;;KACJ;IACL,8BAAC;AAAD,CAxHA,AAwHC,IAAA","file":"services/UserCustomActionService/UserCustomActionService.js","sourcesContent":["// tslint:disable:max-line-length\r\n// tslint:disable:export-name\r\nimport { UserCustomActionAddResult, UserCustomActions, UserCustomActionUpdateResult } from '@pnp/sp/src/usercustomactions';\r\nimport { IUserCustomActionService } from './IUserCustomActionService';\r\nimport { sp } from '@pnp/sp';\r\nimport { UserCustomActionScope } from './UserCustomActionScope';\r\nimport { IUserCustomActionProps } from './IUserCustomActionProps';\r\nimport { ApplicationCustomizerContext } from '@microsoft/sp-application-base';\r\n\r\nexport class UserCustomActionService implements IUserCustomActionService {\r\n constructor(context: ApplicationCustomizerContext) {\r\n sp.setup({\r\n spfxContext: context\r\n });\r\n }\r\n public async getUserCustomActions(scope: UserCustomActionScope, listId?: string): Promise {\r\n try {\r\n let actions: UserCustomActions | IUserCustomActionProps[];\r\n switch (scope) {\r\n case UserCustomActionScope.Web:\r\n actions = await sp.web.userCustomActions.get();\r\n break;\r\n case UserCustomActionScope.Site:\r\n actions = await sp.site.userCustomActions.get();\r\n break;\r\n case UserCustomActionScope.List:\r\n if (!listId) {\r\n throw new Error('List ID is required for List scope');\r\n }\r\n actions = await sp.web.lists.getById(listId).userCustomActions.get();\r\n break;\r\n default:\r\n throw new Error('Invalid scope');\r\n }\r\n return actions as IUserCustomActionProps[];\r\n } catch (error) {\r\n console.error('Error getting user custom actions: ', error);\r\n throw error;\r\n }\r\n }\r\n\r\n public async getUserCustomActionById(scope: UserCustomActionScope, id: string, listId?: string): Promise {\r\n try {\r\n switch (scope) {\r\n case UserCustomActionScope.Web:\r\n return sp.web.userCustomActions.getById(id) as {} as IUserCustomActionProps;\r\n case UserCustomActionScope.Site:\r\n return sp.site.userCustomActions.getById(id) as {} as IUserCustomActionProps;\r\n case UserCustomActionScope.List:\r\n if (!listId) {\r\n throw new Error('List ID is required for List scope');\r\n }\r\n return sp.web.lists.getById(listId).userCustomActions.getById(id) as {} as IUserCustomActionProps;\r\n default:\r\n throw new Error('Invalid scope');\r\n }\r\n } catch (error) {\r\n console.error('Error getting user custom action by ID: ', error);\r\n throw error;\r\n }\r\n }\r\n\r\n public async addUserCustomAction(scope: UserCustomActionScope, customAction: IUserCustomActionProps, listId?: string): Promise {\r\n try {\r\n switch (scope) {\r\n case UserCustomActionScope.Web:\r\n return sp.web.userCustomActions.add(customAction);\r\n case UserCustomActionScope.Site:\r\n return sp.site.userCustomActions.add(customAction);\r\n case UserCustomActionScope.List:\r\n if (!listId) {\r\n throw new Error('List ID is required for List scope');\r\n }\r\n return sp.web.lists.getById(listId).userCustomActions.add(customAction);\r\n default:\r\n throw new Error('Invalid scope');\r\n }\r\n } catch (error) {\r\n console.error('Error adding user custom action: ', error);\r\n throw error;\r\n }\r\n }\r\n\r\n public async updateUserCustomAction(scope: UserCustomActionScope, id: string, props: {}, listId?: string): Promise {\r\n try {\r\n let result: UserCustomActionUpdateResult;\r\n switch (scope) {\r\n case UserCustomActionScope.Web:\r\n result = await sp.web.userCustomActions.getById(id).update(props);\r\n break;\r\n case UserCustomActionScope.Site:\r\n result = await sp.site.userCustomActions.getById(id).update(props);\r\n break;\r\n case UserCustomActionScope.List:\r\n if (!listId) {\r\n throw new Error('List ID is required for List scope');\r\n }\r\n result = await sp.web.lists.getById(listId).userCustomActions.getById(id).update(props);\r\n break;\r\n default:\r\n throw new Error('Invalid scope');\r\n }\r\n return result;\r\n } catch (error) {\r\n console.error('Error updating user custom action: ', error);\r\n throw error;\r\n }\r\n }\r\n\r\n public async deleteUserCustomAction(scope: UserCustomActionScope, customAction: IUserCustomActionProps, listId?: string): Promise {\r\n try {\r\n switch (scope) {\r\n case UserCustomActionScope.Web:\r\n return sp.web.userCustomActions.getById(customAction.Id).delete();\r\n case UserCustomActionScope.Site:\r\n return sp.site.userCustomActions.getById(customAction.Id).delete();\r\n case UserCustomActionScope.List:\r\n if (!listId) {\r\n throw new Error('List ID is required for List scope');\r\n }\r\n return sp.web.lists.getById(listId).userCustomActions.getById(customAction.Id).delete();\r\n default:\r\n throw new Error('Invalid scope');\r\n }\r\n } catch (error) {\r\n console.error('Error deleting user custom action: ', error);\r\n throw error;\r\n }\r\n }\r\n}\r\n"],"sourceRoot":"..\\..\\..\\src"} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..9701de9 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,17602 @@ +{ + "name": "mega-menu", + "version": "1.0.4", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@microsoft/api-extractor": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-4.2.6.tgz", + "integrity": "sha512-COu/BlosgwDgedk3qupB+9a8zpLiPOMvrIEakoDKsFcAwG18kwevEMyyLSGdxbCDVD12IIa9RUJ19rLD0HRB+A==", + "dev": true, + "requires": { + "@microsoft/node-core-library": "0.3.16", + "@microsoft/ts-command-line": "2.2.4", + "@types/fs-extra": "0.0.37", + "@types/node": "6.0.88", + "@types/z-schema": "3.16.31", + "colors": "~1.1.2", + "fs-extra": "~0.26.7", + "jju": "~1.3.0", + "lodash": "~4.15.0", + "typescript": "~2.4.1", + "z-schema": "~3.18.3" + }, + "dependencies": { + "@types/node": { + "version": "6.0.88", + "resolved": "https://registry.npmjs.org/@types/node/-/node-6.0.88.tgz", + "integrity": "sha512-bYDPZTX0/s1aihdjLuAgogUAT5M+TpoWChEMea2p0yOcfn5bu3k6cJb9cp6nw268XeSNIGGr+4+/8V5K6BGzLQ==", + "dev": true + }, + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha512-ENwblkFQpqqia6b++zLD/KUWafYlVY/UNnAp7oz7LY7E924wmpye416wBOmvv/HMWzl8gL1kJlfvId/1Dg176w==", + "dev": true + }, + "lodash": { + "version": "4.15.0", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.15.0.tgz", + "integrity": "sha512-/XM2P+O3xDTOR/CrI4ZqqzgC3tFOLfn2sUIIKN9CYI3YmZnZ9QcElpYh0MHiHXMNJLWwbVxkCaO6zFGS97Xj0g==", + "dev": true + } + } + }, + "@microsoft/decorators": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@microsoft/decorators/-/decorators-1.4.1.tgz", + "integrity": "sha512-tBUBN/DNdNBX9m5H9iUnutmoM31Z+X5FSb3Kn3wc72QQ9U/NQW8QqA7KyZmzjBtQwag4hR6pF1Nce1gWvJcpKg==", + "requires": { + "tslib": "~1.8.0" + } + }, + "@microsoft/gulp-core-build": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/@microsoft/gulp-core-build/-/gulp-core-build-3.2.7.tgz", + "integrity": "sha512-sqqIfNitIStMCQrYEyM/x7mmPC/zY8rhHkiQLdOF2yRVwKOHr3sABs1A4213o33r41vHey/q1nd/kJj1koin5Q==", + "dev": true, + "requires": { + "@microsoft/node-core-library": "0.3.16", + "@types/assertion-error": "1.0.30", + "@types/chai": "3.4.34", + "@types/chalk": "0.4.31", + "@types/gulp": "3.8.32", + "@types/gulp-util": "3.0.30", + "@types/mocha": "2.2.38", + "@types/node": "6.0.88", + "@types/node-notifier": "0.0.28", + "@types/orchestrator": "0.0.30", + "@types/q": "0.0.32", + "@types/rimraf": "0.0.28", + "@types/semver": "5.3.33", + "@types/through2": "2.0.32", + "@types/vinyl": "1.2.30", + "@types/yargs": "0.0.34", + "del": "^2.2.2", + "end-of-stream": "~1.1.0", + "fs-extra": "~0.26.7", + "glob-escape": "~0.0.1", + "globby": "~5.0.0", + "gulp": "~3.9.1", + "gulp-flatten": "~0.2.0", + "gulp-if": "^2.0.1", + "gulp-util": "~3.0.7", + "jest": "~20.0.4", + "jest-cli": "~20.0.4", + "jju": "~1.3.0", + "lodash.merge": "~4.3.2", + "merge2": "~1.0.2", + "node-notifier": "~5.0.2", + "object-assign": "~4.1.0", + "orchestrator": "~0.3.8", + "pretty-hrtime": "~1.0.2", + "rimraf": "~2.5.4", + "semver": "~5.3.0", + "through2": "~2.0.1", + "yargs": "~4.6.0", + "z-schema": "~3.18.3" + }, + "dependencies": { + "@types/node": { + "version": "6.0.88", + "resolved": "https://registry.npmjs.org/@types/node/-/node-6.0.88.tgz", + "integrity": "sha512-bYDPZTX0/s1aihdjLuAgogUAT5M+TpoWChEMea2p0yOcfn5bu3k6cJb9cp6nw268XeSNIGGr+4+/8V5K6BGzLQ==", + "dev": true + }, + "jest": { + "version": "20.0.4", + "resolved": "https://registry.npmjs.org/jest/-/jest-20.0.4.tgz", + "integrity": "sha512-MU1kGBtzhDHwasL1BbuFmlIlwseDXy18p/M3hB7ehifac8FCbj6nJf8ihGtBA594tlUcktotHHd8z42V47ZB1g==", + "dev": true, + "requires": { + "jest-cli": "^20.0.4" + } + } + } + }, + "@microsoft/gulp-core-build-karma": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/@microsoft/gulp-core-build-karma/-/gulp-core-build-karma-4.3.6.tgz", + "integrity": "sha512-DJaQOuDTE+pKyY19AsK/+QzCXc38LHGEqIlNTDcd4qMvjBZtCsMohwX1k2sSk/unLP1mJYT9bQLpNXuQAIiduQ==", + "dev": true, + "requires": { + "@microsoft/gulp-core-build": "3.2.7", + "chai": "~3.5.0", + "gulp": "~3.9.1", + "gulp-karma": "~0.0.5", + "istanbul-instrumenter-loader": "~3.0.0", + "karma": "~0.13.9", + "karma-coverage": "~0.5.5", + "karma-mocha": "~0.2.2", + "karma-mocha-clean-reporter": "~0.0.1", + "karma-phantomjs-launcher": "~1.0.0", + "karma-sinon-chai": "~1.2.0", + "karma-webpack": "~2.0.4", + "lolex": "~1.4.0", + "mocha": "~3.4.2", + "phantomjs-polyfill": "~0.0.2", + "phantomjs-prebuilt": "~2.1.6", + "sinon": "~1.17.3", + "sinon-chai": "~2.8.0", + "webpack": "~3.6.0" + } + }, + "@microsoft/gulp-core-build-sass": { + "version": "4.1.14", + "resolved": "https://registry.npmjs.org/@microsoft/gulp-core-build-sass/-/gulp-core-build-sass-4.1.14.tgz", + "integrity": "sha512-CmxhxzWWjVItZhcR/NlXzbHnANY+CB0bljWZlUNvDbgrZaP0sMAtmjPyZvW4wVfg8jnrDWGbbcRv0xjpGuvTEA==", + "dev": true, + "requires": { + "@microsoft/gulp-core-build": "3.2.7", + "@microsoft/load-themed-styles": "1.7.9", + "@types/node": "6.0.88", + "autoprefixer": "6.3.7", + "gulp": "~3.9.1", + "gulp-clean-css": "~3.0.4", + "gulp-clip-empty-files": "~0.1.2", + "gulp-clone": "~1.0.0", + "gulp-postcss": "~6.3.0", + "gulp-sass": "~3.1.0", + "gulp-texttojs": "~1.0.3", + "merge2": "~1.0.2", + "postcss-modules": "~0.6.4" + }, + "dependencies": { + "@types/node": { + "version": "6.0.88", + "resolved": "https://registry.npmjs.org/@types/node/-/node-6.0.88.tgz", + "integrity": "sha512-bYDPZTX0/s1aihdjLuAgogUAT5M+TpoWChEMea2p0yOcfn5bu3k6cJb9cp6nw268XeSNIGGr+4+/8V5K6BGzLQ==", + "dev": true + } + } + }, + "@microsoft/gulp-core-build-serve": { + "version": "3.1.14", + "resolved": "https://registry.npmjs.org/@microsoft/gulp-core-build-serve/-/gulp-core-build-serve-3.1.14.tgz", + "integrity": "sha512-s0bi3qyj9fqc+zEyiGaPWaqHEL4WFmJ+eySGrad1Mr3ydOB5hi9QYa6c0hBV+LH2dh594kp1hKNBl+Rf+YSnLA==", + "dev": true, + "requires": { + "@microsoft/gulp-core-build": "3.2.7", + "@types/node": "6.0.88", + "deasync": "~0.1.7", + "express": "~4.14.0", + "gulp": "~3.9.1", + "gulp-connect": "~5.0.0", + "gulp-open": "~2.0.0", + "gulp-util": "~3.0.7", + "node-forge": "~0.7.1", + "sudo": "~1.0.3" + }, + "dependencies": { + "@types/node": { + "version": "6.0.88", + "resolved": "https://registry.npmjs.org/@types/node/-/node-6.0.88.tgz", + "integrity": "sha512-bYDPZTX0/s1aihdjLuAgogUAT5M+TpoWChEMea2p0yOcfn5bu3k6cJb9cp6nw268XeSNIGGr+4+/8V5K6BGzLQ==", + "dev": true + } + } + }, + "@microsoft/gulp-core-build-typescript": { + "version": "4.2.14", + "resolved": "https://registry.npmjs.org/@microsoft/gulp-core-build-typescript/-/gulp-core-build-typescript-4.2.14.tgz", + "integrity": "sha512-0DyOAR/9MSxdyTOtNxpDHgwfJE6qQtjihCbnb/jx+F29ojbHi3WRyMsX6ezZpv79PD5vzdCQ8PEvo1oVijG3uw==", + "dev": true, + "requires": { + "@microsoft/api-extractor": "4.2.6", + "@microsoft/gulp-core-build": "3.2.7", + "@microsoft/node-core-library": "0.3.16", + "@types/fs-extra": "0.0.37", + "@types/gulp": "3.8.32", + "@types/node": "6.0.88", + "fs-extra": "~0.26.7", + "gulp": "~3.9.1", + "gulp-cache": "~0.4.5", + "gulp-changed": "~1.3.2", + "gulp-decomment": "~0.1.3", + "gulp-plumber": "~1.1.0", + "gulp-sourcemaps": "~1.6.0", + "gulp-texttojs": "~1.0.3", + "gulp-typescript": "~3.1.6", + "gulp-util": "~3.0.7", + "lodash": "~4.15.0", + "md5": "~2.2.1", + "merge2": "~1.0.2", + "object-assign": "~4.1.0", + "through2": "~2.0.1", + "tslint": "~5.6.0", + "tslint-microsoft-contrib": "~5.0.0", + "typescript": "~2.4.1" + }, + "dependencies": { + "@types/node": { + "version": "6.0.88", + "resolved": "https://registry.npmjs.org/@types/node/-/node-6.0.88.tgz", + "integrity": "sha512-bYDPZTX0/s1aihdjLuAgogUAT5M+TpoWChEMea2p0yOcfn5bu3k6cJb9cp6nw268XeSNIGGr+4+/8V5K6BGzLQ==", + "dev": true + }, + "lodash": { + "version": "4.15.0", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.15.0.tgz", + "integrity": "sha512-/XM2P+O3xDTOR/CrI4ZqqzgC3tFOLfn2sUIIKN9CYI3YmZnZ9QcElpYh0MHiHXMNJLWwbVxkCaO6zFGS97Xj0g==", + "dev": true + } + } + }, + "@microsoft/gulp-core-build-webpack": { + "version": "3.2.14", + "resolved": "https://registry.npmjs.org/@microsoft/gulp-core-build-webpack/-/gulp-core-build-webpack-3.2.14.tgz", + "integrity": "sha512-Mg/LlY7RRO2qqb/r0qf51LHl2rzd4OcYUN5fVg8CgbJX1WdOyro/2GpCTniacYJY5LLwA21cBgB8LrfZ3RmFjg==", + "dev": true, + "requires": { + "@microsoft/gulp-core-build": "3.2.7", + "@types/gulp": "3.8.32", + "@types/node": "6.0.88", + "gulp": "~3.9.1", + "gulp-util": "~3.0.7", + "webpack": "~3.6.0" + }, + "dependencies": { + "@types/node": { + "version": "6.0.88", + "resolved": "https://registry.npmjs.org/@types/node/-/node-6.0.88.tgz", + "integrity": "sha512-bYDPZTX0/s1aihdjLuAgogUAT5M+TpoWChEMea2p0yOcfn5bu3k6cJb9cp6nw268XeSNIGGr+4+/8V5K6BGzLQ==", + "dev": true + } + } + }, + "@microsoft/load-themed-styles": { + "version": "1.7.9", + "resolved": "https://registry.npmjs.org/@microsoft/load-themed-styles/-/load-themed-styles-1.7.9.tgz", + "integrity": "sha512-XxDxvSdl0BsrF3v+GQGwQYPFCI9ItHDVGdjIJ9d2QLzL+HRHwkfzGcZ7fpr7R4NemGIEz/jQHg1a14I4XS2tUA==" + }, + "@microsoft/loader-cased-file": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@microsoft/loader-cased-file/-/loader-cased-file-1.4.1.tgz", + "integrity": "sha512-R+LD02T96acvFMLt7Y+v+bpE/6XfBSP+6dNatbX8VMgn0kJ5yzKFKdtuuIhlnCITlDqlURlCKJ7mnQFDashhtw==", + "dev": true, + "requires": { + "@types/lodash": "4.14.74", + "@types/node": "6.0.64", + "file-loader": "~1.1.5", + "loader-utils": "~1.1.0", + "lodash": "~4.15.0" + }, + "dependencies": { + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "dev": true + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha512-knHEZMgs8BB+MInokmNTg/OyPlAddghe1YBgNwJBc5zsJi/uyIcXoSDsL/W9ymOsBoBGdPIHXYJ9+qKFwRwDng==", + "dev": true + }, + "loader-utils": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", + "integrity": "sha512-gkD9aSEG9UGglyPcDJqY9YBTUtCLKaBK6ihD2VP1d1X60lTfFspNZNulGBBbUZLkPygy4LySYHyxBpq+VhjObQ==", + "dev": true, + "requires": { + "big.js": "^3.1.3", + "emojis-list": "^2.0.0", + "json5": "^0.5.0" + } + }, + "lodash": { + "version": "4.15.0", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.15.0.tgz", + "integrity": "sha512-/XM2P+O3xDTOR/CrI4ZqqzgC3tFOLfn2sUIIKN9CYI3YmZnZ9QcElpYh0MHiHXMNJLWwbVxkCaO6zFGS97Xj0g==", + "dev": true + } + } + }, + "@microsoft/loader-load-themed-styles": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/@microsoft/loader-load-themed-styles/-/loader-load-themed-styles-1.6.4.tgz", + "integrity": "sha512-xADGr/HbJefKoGwbD9NiAHDL/wnCwG/lTo9dwHIPnLKCC0YqJMR9jqnOtHpPSCv6l20Njgk1/evDa60HeFMRqw==", + "dev": true, + "requires": { + "@microsoft/load-themed-styles": "1.7.9", + "loader-utils": "~1.1.0" + }, + "dependencies": { + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "dev": true + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha512-knHEZMgs8BB+MInokmNTg/OyPlAddghe1YBgNwJBc5zsJi/uyIcXoSDsL/W9ymOsBoBGdPIHXYJ9+qKFwRwDng==", + "dev": true + }, + "loader-utils": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", + "integrity": "sha512-gkD9aSEG9UGglyPcDJqY9YBTUtCLKaBK6ihD2VP1d1X60lTfFspNZNulGBBbUZLkPygy4LySYHyxBpq+VhjObQ==", + "dev": true, + "requires": { + "big.js": "^3.1.3", + "emojis-list": "^2.0.0", + "json5": "^0.5.0" + } + } + } + }, + "@microsoft/microsoft-graph-client": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@microsoft/microsoft-graph-client/-/microsoft-graph-client-1.0.0.tgz", + "integrity": "sha512-urg0alDEHXCkN94cDxO6mf0RVcy+9MXYmYJpY/oAz2YXY6RFlGTQxfLdNQhTDXKRf3RvG4MuLfZwJWlWX/iRuA==", + "dev": true, + "requires": { + "es6-promise": "^4.1.0", + "superagent": "^3.5.2" + } + }, + "@microsoft/node-core-library": { + "version": "0.3.16", + "resolved": "https://registry.npmjs.org/@microsoft/node-core-library/-/node-core-library-0.3.16.tgz", + "integrity": "sha512-iD1Uuz02I5h6KedTEEfqOfBGg1/8y82ov6Yncu5ATRCf+RLNsQIu1O3RHesj0B/bL0Civb5iTdyOzSw/8RKJfg==", + "dev": true, + "requires": { + "@types/fs-extra": "0.0.37", + "@types/node": "6.0.88", + "@types/z-schema": "3.16.31", + "fs-extra": "~0.26.7", + "jju": "~1.3.0", + "z-schema": "~3.18.3" + }, + "dependencies": { + "@types/node": { + "version": "6.0.88", + "resolved": "https://registry.npmjs.org/@types/node/-/node-6.0.88.tgz", + "integrity": "sha512-bYDPZTX0/s1aihdjLuAgogUAT5M+TpoWChEMea2p0yOcfn5bu3k6cJb9cp6nw268XeSNIGGr+4+/8V5K6BGzLQ==", + "dev": true + } + } + }, + "@microsoft/office-ui-fabric-react-bundle": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@microsoft/office-ui-fabric-react-bundle/-/office-ui-fabric-react-bundle-1.4.1.tgz", + "integrity": "sha512-e1cmTwf2sAlPXINouSt3ufxfEJMX1JFlxzkJTsM4jsfgbd10BCSDWDGkNHU1S2LFpD6z99mFpkiktdyMU/8PlA==", + "requires": { + "@types/react": "15.6.6", + "@types/webpack-env": "1.13.1", + "@uifabric/icons": "5.2.0", + "office-ui-fabric-react": "5.21.0", + "react": "15.6.2", + "react-dom": "15.6.2", + "tslib": "~1.8.0" + } + }, + "@microsoft/package-deps-hash": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@microsoft/package-deps-hash/-/package-deps-hash-2.1.4.tgz", + "integrity": "sha512-VffYZxrjzTcXKSu06t8JZGvbKJ6tj0AljTFPv1b23ciGwxA0/L57PW6syETG7D7Lt+Di8HCOOnjVPMmghXjKfw==", + "dev": true + }, + "@microsoft/rush-lib": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@microsoft/rush-lib/-/rush-lib-4.0.1.tgz", + "integrity": "sha512-3REpMtSXEqarG009/Ndn8UqyzDvJeKYvQdTzEny0IDfkB/Oekv4XVYetJoiWS8xHTl8y72jonIUjM6Af7Ffx3g==", + "dev": true, + "requires": { + "@microsoft/node-core-library": "0.3.16", + "@microsoft/package-deps-hash": "2.1.4", + "@microsoft/stream-collator": "2.1.4", + "@microsoft/ts-command-line": "2.2.4", + "@types/fs-extra": "0.0.37", + "@types/node": "6.0.88", + "@types/z-schema": "3.16.31", + "builtins": "~1.0.3", + "colors": "~1.1.2", + "fs-extra": "~0.26.7", + "git-repo-info": "~1.1.4", + "glob": "~7.0.5", + "glob-escape": "~0.0.1", + "inquirer": "~1.2.1", + "jju": "~1.3.0", + "lodash": "~4.15.0", + "minimatch": "~3.0.2", + "npm-package-arg": "~5.1.2", + "read-package-tree": "~5.1.5", + "rimraf": "~2.5.4", + "semver": "~5.3.0", + "tar": "~3.1.12", + "wordwrap": "~1.0.0", + "z-schema": "~3.18.3" + }, + "dependencies": { + "@types/node": { + "version": "6.0.88", + "resolved": "https://registry.npmjs.org/@types/node/-/node-6.0.88.tgz", + "integrity": "sha512-bYDPZTX0/s1aihdjLuAgogUAT5M+TpoWChEMea2p0yOcfn5bu3k6cJb9cp6nw268XeSNIGGr+4+/8V5K6BGzLQ==", + "dev": true + }, + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha512-ENwblkFQpqqia6b++zLD/KUWafYlVY/UNnAp7oz7LY7E924wmpye416wBOmvv/HMWzl8gL1kJlfvId/1Dg176w==", + "dev": true + }, + "glob": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz", + "integrity": "sha512-f8c0rE8JiCxpa52kWPAOa3ZaYEnzofDzCQLCn3Vdk0Z5OVLq3BsRFJI4S4ykpeVW6QMGBUkMeUpoEgWnMTnw5Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.2", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "lodash": { + "version": "4.15.0", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.15.0.tgz", + "integrity": "sha512-/XM2P+O3xDTOR/CrI4ZqqzgC3tFOLfn2sUIIKN9CYI3YmZnZ9QcElpYh0MHiHXMNJLWwbVxkCaO6zFGS97Xj0g==", + "dev": true + }, + "minimatch": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz", + "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "tar": { + "version": "3.1.15", + "resolved": "https://registry.npmjs.org/tar/-/tar-3.1.15.tgz", + "integrity": "sha512-pQNFsg+Wb6VXsrIPUnuQwrHR4wD5ASBR0jRyiT4/AALFA2Nl+CjhkDX5fTmIwCuULRtyQR3Dae2BBnP2EFHscw==", + "dev": true, + "requires": { + "minipass": "^2.0.2", + "minizlib": "^1.0.3", + "mkdirp": "^0.5.0", + "yallist": "^3.0.2" + } + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + } + } + }, + "@microsoft/set-webpack-public-path-plugin": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@microsoft/set-webpack-public-path-plugin/-/set-webpack-public-path-plugin-1.3.4.tgz", + "integrity": "sha512-1r/mtlNC1fFePtcBSrRN5nss68Ytev9PU5RHkUDuQ9blvay+sQ2TvY8d9Gdt0/SiV7thTSo28kN4LKnBf6m+Mw==", + "dev": true, + "requires": { + "@types/webpack": "3.0.11", + "lodash": "~4.15.0", + "uglify-js": "~3.0.28" + }, + "dependencies": { + "commander": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", + "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==", + "dev": true + }, + "lodash": { + "version": "4.15.0", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.15.0.tgz", + "integrity": "sha512-/XM2P+O3xDTOR/CrI4ZqqzgC3tFOLfn2sUIIKN9CYI3YmZnZ9QcElpYh0MHiHXMNJLWwbVxkCaO6zFGS97Xj0g==", + "dev": true + }, + "uglify-js": { + "version": "3.0.28", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.0.28.tgz", + "integrity": "sha512-0h/qGay016GG2lVav3Kz174F3T2Vjlz2v6HCt+WDQpoXfco0hWwF5gHK9yh88mUYvIC+N7Z8NT8WpjSp1yoqGA==", + "dev": true, + "requires": { + "commander": "~2.11.0", + "source-map": "~0.5.1" + } + } + } + }, + "@microsoft/sp-application-base": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@microsoft/sp-application-base/-/sp-application-base-1.4.1.tgz", + "integrity": "sha512-EzwZk8KGu7JKOP/0pLV8KBnHNjIThTge9WYuu6et137FJAxDtTBRKqX9lXOBMIGNyDJYxEIC1mqpA6JaSqoP+Q==", + "requires": { + "@microsoft/decorators": "1.4.1", + "@microsoft/load-themed-styles": "1.7.9", + "@microsoft/sp-component-base": "1.4.1", + "@microsoft/sp-core-library": "1.4.1", + "@microsoft/sp-extension-base": "1.4.1", + "@microsoft/sp-http": "1.4.1", + "@microsoft/sp-loader": "1.4.1", + "@microsoft/sp-lodash-subset": "1.4.1", + "@microsoft/sp-module-interfaces": "1.4.1", + "@microsoft/sp-odata-types": "1.4.1", + "@microsoft/sp-page-context": "1.4.1", + "@types/es6-promise": "0.0.33", + "@types/webpack-env": "1.13.1", + "tslib": "~1.8.0" + } + }, + "@microsoft/sp-build-common": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@microsoft/sp-build-common/-/sp-build-common-1.4.1.tgz", + "integrity": "sha512-pqj0slx8UwqLuZR0XkK/F4cK1Q5UNWFAvwbBAcs+OKdxxaBxO83L0iSyNH1zTCEqbPCNLOumjV1tAtoyiAF05A==", + "dev": true, + "requires": { + "@microsoft/gulp-core-build": "3.2.7", + "@microsoft/gulp-core-build-typescript": "4.2.14", + "@microsoft/sp-tslint-rules": "1.4.1", + "@types/yargs": "0.0.35", + "gulp": "~3.9.1", + "jju": "~1.3.0", + "yargs": "~4.6.0" + }, + "dependencies": { + "@types/yargs": { + "version": "0.0.35", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-0.0.35.tgz", + "integrity": "sha512-cXgmr2XZj6k+tNved/HHocCqK6ToAW807t8U2esw7bf2h2iIU0i5gyllALi6rX7nd076e9fpV3KsLh39zZIvXA==", + "dev": true + } + } + }, + "@microsoft/sp-build-core-tasks": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@microsoft/sp-build-core-tasks/-/sp-build-core-tasks-1.4.1.tgz", + "integrity": "sha512-xXnPO1A/WHMGM4w+ZSFotq0ys7hMnYgecoEeojUC7I2JYnxvy2TLd3NFavknaRapjsJGdo0F6na1q77Say5ICQ==", + "dev": true, + "requires": { + "@microsoft/gulp-core-build": "3.2.7", + "@microsoft/gulp-core-build-karma": "4.3.6", + "@microsoft/gulp-core-build-serve": "3.1.14", + "@microsoft/gulp-core-build-webpack": "3.2.14", + "@microsoft/load-themed-styles": "1.7.9", + "@microsoft/loader-cased-file": "1.4.1", + "@microsoft/loader-load-themed-styles": "1.6.4", + "@microsoft/node-core-library": "0.3.16", + "@microsoft/rush-lib": "4.0.1", + "@microsoft/set-webpack-public-path-plugin": "1.3.4", + "@microsoft/sp-module-interfaces": "1.4.1", + "@microsoft/sp-polyfills": "1.2.0", + "@types/colors": "1.1.1", + "@types/es6-promise": "0.0.33", + "@types/finalhandler": "0.0.31", + "@types/fs-extra": "0.0.37", + "@types/glob": "5.0.30", + "@types/gulp-replace": "0.0.29", + "@types/lodash": "4.14.74", + "@types/merge2": "0.3.29", + "@types/node": "6.0.64", + "@types/resolve": "0.0.4", + "@types/rimraf": "0.0.28", + "@types/serve-static": "1.7.31", + "@types/uuid": "3.0.0", + "@types/webpack": "3.0.11", + "@types/webpack-stream": "3.2.7", + "azure-storage": "~0.10.0", + "colors": "~1.1.2", + "css-loader": "~0.28.7", + "finalhandler": "~0.4.1", + "fs-extra": "~0.26.7", + "glob": "~7.0.5", + "glob-escape": "~0.0.1", + "gulp": "~3.9.1", + "gulp-replace": "~0.5.4", + "gulp-util": "~3.0.7", + "html-loader": "~0.5.1", + "json-loader": "~0.5.7", + "lodash": "~4.15.0", + "merge2": "~1.0.2", + "node-zip": "~1.1.1", + "phantomjs-prebuilt": "~2.1.6", + "resolve": "~1.1.7", + "rimraf": "~2.6.1", + "serve-static": "~1.10.2", + "source-map-loader": "~0.2.3", + "through2": "~2.0.1", + "uuid": "~3.1.0", + "webpack": "~3.6.0", + "webpack-stream": "~4.0.0", + "xml": "~1.0.1" + }, + "dependencies": { + "@microsoft/sp-polyfills": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@microsoft/sp-polyfills/-/sp-polyfills-1.2.0.tgz", + "integrity": "sha512-SZARibyCQB+1j5b7g/6CrsUBA8pz9Yh1z+2RhXMlJcLyGkUmSriKgRmHnPjpjogQSGUAARTIFaYIMncfqL+8Pg==", + "dev": true, + "requires": { + "@types/es6-promise": "0.0.32", + "@types/webpack-env": "1.13.0", + "es6-collections": "0.5.6", + "es6-promise": "4.1.1", + "whatwg-fetch": "2.0.3", + "whatwg-url": "4.7.1" + }, + "dependencies": { + "@types/es6-promise": { + "version": "0.0.32", + "resolved": "https://registry.npmjs.org/@types/es6-promise/-/es6-promise-0.0.32.tgz", + "integrity": "sha512-SdSOCnocglNSmtTqTb6rKLyi7WwrLy8YQAER1uAEI9XDvpoYOfTf93mQp9WljpCTNs92/SrefioZ8/p7Xe03VQ==", + "dev": true + } + } + }, + "@types/webpack-env": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.13.0.tgz", + "integrity": "sha512-0BANcVFVqkAD1i7/fWy9Vu6KjB9whuAmkfFX0GFwNzubu2i0qXDsLvGZSbU1QimJHWH4rqjJDQ/PX9v5OVepEA==", + "dev": true + }, + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha512-ENwblkFQpqqia6b++zLD/KUWafYlVY/UNnAp7oz7LY7E924wmpye416wBOmvv/HMWzl8gL1kJlfvId/1Dg176w==", + "dev": true + }, + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha512-X0rGvJcskG1c3TgSCPqHJ0XJgwlcvOC7elJ5Y0hYuKBZoVqWpAMfLOeIh2UI/DCQ5ruodIjvsugZtjUYUw2pUw==", + "dev": true, + "requires": { + "ms": "0.7.1" + } + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==", + "dev": true + }, + "finalhandler": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-0.4.1.tgz", + "integrity": "sha512-+AkanbaabSCYrDcrU+TcA/8SEyMDAN7mjE6GC71GAlvYDXM4wzUsRqLLS2qPtWecIlkX5+MMZGd2RyxO3yBOfg==", + "dev": true, + "requires": { + "debug": "~2.2.0", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "unpipe": "~1.0.0" + } + }, + "glob": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz", + "integrity": "sha512-f8c0rE8JiCxpa52kWPAOa3ZaYEnzofDzCQLCn3Vdk0Z5OVLq3BsRFJI4S4ykpeVW6QMGBUkMeUpoEgWnMTnw5Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.2", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "http-errors": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz", + "integrity": "sha512-gMygNskMurDCWfoCdyh1gOeDfSbkAHXqz94QoPj5IHIUjC/BG8/xv7FSEUr7waR5RcAya4j58bft9Wu/wHNeXA==", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "statuses": "1" + } + }, + "lodash": { + "version": "4.15.0", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.15.0.tgz", + "integrity": "sha512-/XM2P+O3xDTOR/CrI4ZqqzgC3tFOLfn2sUIIKN9CYI3YmZnZ9QcElpYh0MHiHXMNJLWwbVxkCaO6zFGS97Xj0g==", + "dev": true + }, + "mime": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", + "integrity": "sha512-sAaYXszED5ALBt665F0wMQCUXpGuZsGdopoqcHPdL39ZYdi7uHoZlhrfZfhv8WzivhBzr/oXwaj+yiK5wY8MXQ==", + "dev": true + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha512-lRLiIR9fSNpnP6TC4v8+4OU7oStC01esuNowdQ34L+Gk8e5Puoc88IqJ+XAY/B3Mn2ZKis8l8HX90oU8ivzUHg==", + "dev": true + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "range-parser": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.0.3.tgz", + "integrity": "sha512-nDsRrtIxVUO5opg/A8T2S3ebULVIfuh8ECbh4w3N4mWxIiT3QILDJDUQayPqm2e8Q8NUa0RSUkGCfe33AfjR3Q==", + "dev": true + }, + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg==", + "dev": true + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + }, + "dependencies": { + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, + "send": { + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.13.2.tgz", + "integrity": "sha512-cQ0rmXHrdO2Iof08igV2bG/yXWD106ANwBg6DkGQNT2Vsznbgq6T0oAIQboy1GoFsIuy51jCim26aA9tj3Z3Zg==", + "dev": true, + "requires": { + "debug": "~2.2.0", + "depd": "~1.1.0", + "destroy": "~1.0.4", + "escape-html": "~1.0.3", + "etag": "~1.7.0", + "fresh": "0.3.0", + "http-errors": "~1.3.1", + "mime": "1.3.4", + "ms": "0.7.1", + "on-finished": "~2.3.0", + "range-parser": "~1.0.3", + "statuses": "~1.2.1" + } + }, + "serve-static": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.10.3.tgz", + "integrity": "sha512-ScsFovjz3Db+vGgpofR/U8p8UULEcGV9akqyo8TQ1mMnjcxemE7Y5Muo+dvy3tJLY/doY2v1H61eCBMYGmwfrA==", + "dev": true, + "requires": { + "escape-html": "~1.0.3", + "parseurl": "~1.3.1", + "send": "0.13.2" + } + }, + "statuses": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz", + "integrity": "sha512-pVEuxHdSGrt8QmQ3LOZXLhSA6MP/iPqKzZeO6Squ7PNGkA/9MBsSfV0/L+bIxkoDmjF4tZcLpcVq/fkqoHvuKg==", + "dev": true + }, + "uuid": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", + "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==", + "dev": true + }, + "whatwg-fetch": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz", + "integrity": "sha512-SA2KdOXATOroD3EBUYvcdugsusXS5YiQFqwskSbsp5b1gK8HpNi/YP0jcy/BDpdllp305HMnrsVf9K7Be9GiEQ==", + "dev": true + } + } + }, + "@microsoft/sp-build-web": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@microsoft/sp-build-web/-/sp-build-web-1.4.1.tgz", + "integrity": "sha512-b2j09Ejdk1qr5OhArzhTp6eNQLGQCR0vQGzo1ZC6Yb+YMEvR+hKEGn5A59vaZRbM9oMIaB71g74FuqfJum9qTw==", + "dev": true, + "requires": { + "@microsoft/gulp-core-build": "3.2.7", + "@microsoft/gulp-core-build-karma": "4.3.6", + "@microsoft/gulp-core-build-sass": "4.1.14", + "@microsoft/gulp-core-build-serve": "3.1.14", + "@microsoft/gulp-core-build-typescript": "4.2.14", + "@microsoft/gulp-core-build-webpack": "3.2.14", + "@microsoft/sp-build-common": "1.4.1", + "@microsoft/sp-build-core-tasks": "1.4.1", + "@microsoft/sp-polyfills": "1.4.1", + "@types/karma": "0.13.33", + "@types/webpack": "3.0.11", + "gulp": "~3.9.1", + "webpack": "~3.6.0", + "yargs": "~4.6.0" + } + }, + "@microsoft/sp-client-preview": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@microsoft/sp-client-preview/-/sp-client-preview-1.4.1.tgz", + "integrity": "sha512-/fG86YaC0BIGingGxg2dQLPX4sIbZxre6SidjVBF+d/+oWvCedHNDCALL+aaV5V9ZkywufodTlxiV1KnTPrYMw==", + "dev": true, + "requires": { + "@microsoft/microsoft-graph-client": "~1.0.0", + "@microsoft/sp-core-library": "1.4.1", + "@microsoft/sp-http": "1.4.1", + "@microsoft/sp-lodash-subset": "1.4.1", + "@types/webpack-env": "1.13.1", + "tslib": "~1.8.0" + } + }, + "@microsoft/sp-component-base": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@microsoft/sp-component-base/-/sp-component-base-1.4.1.tgz", + "integrity": "sha512-yGSfHdF+bpHBDpYoofa7EqNOlZYS4Ew4IBKaxchm/GzUxdII2w02v82osWXBRJEf6UWXiT6ho7hsRG9Q2A0Llg==", + "requires": { + "@microsoft/decorators": "1.4.1", + "@microsoft/sp-core-library": "1.4.1", + "@microsoft/sp-loader": "1.4.1", + "@microsoft/sp-lodash-subset": "1.4.1", + "@microsoft/sp-module-interfaces": "1.4.1", + "@microsoft/sp-page-context": "1.4.1", + "@types/webpack-env": "1.13.1" + } + }, + "@microsoft/sp-core-library": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@microsoft/sp-core-library/-/sp-core-library-1.4.1.tgz", + "integrity": "sha512-SyPFJHVqGAeF+UoRnyn2Pbgk1SQ53kyfAKlHwK3kiGyeTDY9W9uwmWIaV6krJi2+NethzABSXW1h6PlZbEb02w==", + "requires": { + "@microsoft/sp-lodash-subset": "1.4.1", + "@microsoft/sp-module-interfaces": "1.4.1", + "@types/es6-promise": "0.0.33", + "@types/webpack-env": "1.13.1" + } + }, + "@microsoft/sp-dialog": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@microsoft/sp-dialog/-/sp-dialog-1.4.1.tgz", + "integrity": "sha512-/ef6R/7/k3aHQfezrxhsNoAN+ZIN+R+/lEauEmrAjz/u57MBPbbKWqMjYhhGxVapWYnjloKpUNjMoVIBuPdm8Q==", + "requires": { + "@microsoft/decorators": "1.4.1", + "@microsoft/office-ui-fabric-react-bundle": "1.4.1", + "@microsoft/sp-application-base": "1.4.1", + "@microsoft/sp-core-library": "1.4.1", + "@microsoft/sp-webpart-base": "1.4.1", + "@types/es6-promise": "0.0.33", + "@types/react": "15.6.6", + "@types/react-dom": "15.5.6", + "@types/webpack-env": "1.13.1", + "office-ui-fabric-react": "5.21.0", + "react": "15.6.2", + "react-dom": "15.6.2" + } + }, + "@microsoft/sp-extension-base": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@microsoft/sp-extension-base/-/sp-extension-base-1.4.1.tgz", + "integrity": "sha512-R061rmOv/YnO4CmjVWlKD5MNlPu3hSA2SpiniATntiZTvn1kDZ48269/6Mg3Ijgm5FcUH51IcpVamtbRmzh3Vw==", + "requires": { + "@microsoft/decorators": "1.4.1", + "@microsoft/sp-component-base": "1.4.1", + "@microsoft/sp-core-library": "1.4.1", + "@microsoft/sp-http": "1.4.1", + "@microsoft/sp-loader": "1.4.1", + "@microsoft/sp-lodash-subset": "1.4.1", + "@microsoft/sp-module-interfaces": "1.4.1", + "@microsoft/sp-page-context": "1.4.1", + "@types/es6-promise": "0.0.33", + "@types/webpack-env": "1.13.1" + } + }, + "@microsoft/sp-http": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@microsoft/sp-http/-/sp-http-1.4.1.tgz", + "integrity": "sha512-DJ2vfd3omAwzxsGXDoHUCLpJeVLttljm74nbIEIygm1KYCEBMuCqOWqmSlfUGPhXLsX1gF04/6Fm5TENJX+gAQ==", + "requires": { + "@microsoft/decorators": "1.4.1", + "@microsoft/sp-core-library": "1.4.1", + "@microsoft/sp-lodash-subset": "1.4.1", + "@types/adal": "1.0.27", + "@types/es6-promise": "0.0.33", + "@types/sinon": "1.16.34", + "@types/webpack-env": "1.13.1", + "adal-angular": "1.0.16", + "tslib": "~1.8.0" + } + }, + "@microsoft/sp-loader": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@microsoft/sp-loader/-/sp-loader-1.4.1.tgz", + "integrity": "sha512-Wyyj/HxnpwlFxU1YGCVTfULJuW0Au/fRr4aA8efxtZa9vWYiRHIu7zEP8codwsGpJm/TYPRWlJpuxFzzWCeLLw==", + "requires": { + "@microsoft/office-ui-fabric-react-bundle": "1.4.1", + "@microsoft/sp-core-library": "1.4.1", + "@microsoft/sp-lodash-subset": "1.4.1", + "@microsoft/sp-module-interfaces": "1.4.1", + "@microsoft/sp-odata-types": "1.4.1", + "@microsoft/sp-polyfills": "1.4.1", + "@types/es6-promise": "0.0.33", + "@types/react": "15.6.6", + "@types/react-dom": "15.5.6", + "@types/requirejs": "2.1.29", + "@types/webpack-env": "1.13.1", + "office-ui-fabric-react": "5.21.0", + "react": "15.6.2", + "react-dom": "15.6.2", + "requirejs": "2.1.20" + } + }, + "@microsoft/sp-lodash-subset": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@microsoft/sp-lodash-subset/-/sp-lodash-subset-1.4.1.tgz", + "integrity": "sha512-BCpYtG14lPJi4brAiWsF73Oy18hsL/QXukqwOQW4I8xPYR2Pay3rlM2g2ga08qmRJIeUhmVmMQATLWfhxnJBKg==", + "requires": { + "@types/lodash": "4.14.74", + "@types/webpack-env": "1.13.1", + "tslib": "~1.8.0" + } + }, + "@microsoft/sp-module-interfaces": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@microsoft/sp-module-interfaces/-/sp-module-interfaces-1.4.1.tgz", + "integrity": "sha512-bzLTTaw4a17pTteayCaNN7SNS11iHiVbsS0QoYrrhS+d3/A88a0FPM8Hcn4IV4nOG6zKV+jeBwyDi2FpkCAtOA==", + "requires": { + "@types/node": "6.0.64", + "@types/z-schema": "3.16.31", + "z-schema": "~3.18.3" + } + }, + "@microsoft/sp-odata-types": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@microsoft/sp-odata-types/-/sp-odata-types-1.4.1.tgz", + "integrity": "sha512-CAz/i+TQ1SCcFZEwBp5EpMMFaKF0cBTv2R+rlPLHpt+/gRvuuBf9I7yJHhRlhf4vhZ6/vzpuSKajHNriHkjk/w==", + "requires": { + "tslib": "~1.8.0" + } + }, + "@microsoft/sp-office-ui-fabric-core": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@microsoft/sp-office-ui-fabric-core/-/sp-office-ui-fabric-core-1.4.1.tgz", + "integrity": "sha512-dCyV6bQcq60ICbdqd9B/sYSBXP+Lo2Z89GfROR6JswxX+JpEICcqqYfn1pBS7X8yt/tp+joms8G1uKgZDXITBw==", + "requires": { + "@types/webpack-env": "1.13.1", + "office-ui-fabric-core": "9.1.0", + "tslib": "~1.8.0" + } + }, + "@microsoft/sp-page-context": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@microsoft/sp-page-context/-/sp-page-context-1.4.1.tgz", + "integrity": "sha512-7x9Uo8L9wFPEUIeOS3PtxX4vl6n/XFt/mqIZCYmFv/NAwnZlYgciLLGiRgDdZsuWgWB/HDBsl6LjMrSH3BcaaQ==", + "requires": { + "@microsoft/sp-core-library": "1.4.1", + "@microsoft/sp-http": "1.4.1", + "@microsoft/sp-lodash-subset": "1.4.1", + "@microsoft/sp-odata-types": "1.4.1", + "@types/es6-promise": "0.0.33", + "@types/webpack-env": "1.13.1", + "tslib": "~1.8.0" + } + }, + "@microsoft/sp-polyfills": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@microsoft/sp-polyfills/-/sp-polyfills-1.4.1.tgz", + "integrity": "sha512-G+STNulZAOEUSkMQc4RnQq0nxUgBGEj1sBiNg1AB6uX7OlrloPJ8IHoQgYJEwEc67xKkxMIqolxOc18BRcEeug==", + "requires": { + "@types/webpack-env": "1.13.1", + "es6-collections": "0.5.6", + "es6-promise": "4.1.1", + "tslib": "~1.8.0", + "whatwg-fetch": "2.0.3", + "whatwg-url": "4.7.1" + }, + "dependencies": { + "whatwg-fetch": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz", + "integrity": "sha512-SA2KdOXATOroD3EBUYvcdugsusXS5YiQFqwskSbsp5b1gK8HpNi/YP0jcy/BDpdllp305HMnrsVf9K7Be9GiEQ==" + } + } + }, + "@microsoft/sp-tslint-rules": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@microsoft/sp-tslint-rules/-/sp-tslint-rules-1.4.1.tgz", + "integrity": "sha512-f2dRQGSA7Mi3c4EiC1j5aqIPf+sWqnCaXW06dRKBc4z81eBYE9xA/SQ4PyriPpvulmJsTFokCTYBORlJt8NnYg==", + "dev": true, + "requires": { + "@microsoft/gulp-core-build": "3.2.7", + "@microsoft/gulp-core-build-typescript": "4.2.14", + "tslint": "~5.6.0", + "tslint-microsoft-contrib": "~5.0.0", + "tsutils": "~2.11.2" + }, + "dependencies": { + "tsutils": { + "version": "2.11.2", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.11.2.tgz", + "integrity": "sha512-M4ZQC3gDzYpvlur7oVgZhdYeweresnr1c0cTG6QJFr/yH13C/rYEC0I+CnDi8l4QcoRIb2c2iHBkRtZgspWGuw==", + "dev": true, + "requires": { + "tslib": "^1.7.1" + } + } + } + }, + "@microsoft/sp-webpart-base": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@microsoft/sp-webpart-base/-/sp-webpart-base-1.4.1.tgz", + "integrity": "sha512-0dSvcAlFZE4fAf4ZLv0jsQrpslNJbtg/3wY/BCCYWNa4BgK2pswlH1b0rmoZ3k98ENJK3cdzpQ7J7sHOr3Ggsg==", + "requires": { + "@microsoft/decorators": "1.4.1", + "@microsoft/load-themed-styles": "1.7.9", + "@microsoft/office-ui-fabric-react-bundle": "1.4.1", + "@microsoft/sp-component-base": "1.4.1", + "@microsoft/sp-core-library": "1.4.1", + "@microsoft/sp-http": "1.4.1", + "@microsoft/sp-loader": "1.4.1", + "@microsoft/sp-lodash-subset": "1.4.1", + "@microsoft/sp-module-interfaces": "1.4.1", + "@microsoft/sp-page-context": "1.4.1", + "@types/es6-promise": "0.0.33", + "@types/react": "15.6.6", + "@types/react-dom": "15.5.6", + "@types/scrollreveal": "0.0.2", + "@types/webpack-env": "1.13.1", + "office-ui-fabric": "2.6.1", + "office-ui-fabric-react": "5.21.0", + "react": "15.6.2", + "react-dom": "15.6.2", + "scrollreveal": "3.3.6", + "tslib": "~1.8.0" + } + }, + "@microsoft/sp-webpart-workbench": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@microsoft/sp-webpart-workbench/-/sp-webpart-workbench-1.4.1.tgz", + "integrity": "sha512-wnakEHXn4Xwy5mvTkfl/mMPDdQVVvh1HT1ve1I77HMLkk9Dn6HvlmFTPv47EPtSh15dkWvH1hJSzZE7hvZpcag==", + "dev": true, + "requires": { + "@microsoft/gulp-core-build-serve": "3.1.14", + "@microsoft/office-ui-fabric-react-bundle": "1.4.1", + "@microsoft/sp-application-base": "1.4.1", + "@microsoft/sp-build-core-tasks": "1.4.1", + "@microsoft/sp-client-preview": "1.4.1", + "@microsoft/sp-core-library": "1.4.1", + "@microsoft/sp-loader": "1.4.1", + "@microsoft/sp-lodash-subset": "1.4.1", + "@microsoft/sp-module-interfaces": "1.4.1", + "@microsoft/sp-webpart-base": "1.4.1", + "@types/es6-promise": "0.0.33", + "@types/fs-extra": "0.0.37", + "@types/react": "15.6.6", + "@types/react-dom": "15.5.6", + "@types/webpack-env": "1.13.1", + "fs-extra": "~0.26.7", + "office-ui-fabric-react": "5.21.0", + "react": "15.6.2", + "react-dom": "15.6.2", + "tslib": "~1.8.0" + } + }, + "@microsoft/stream-collator": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@microsoft/stream-collator/-/stream-collator-2.1.4.tgz", + "integrity": "sha512-Rf3p7+A9KBkcWzJw51oADNEftmnBUM9CmFYm9hVNmz9FsBZhHaFWH4z3L9tdWxdXO6G7OR5neXMR062BhK4fIw==", + "dev": true, + "requires": { + "@types/node": "6.0.88", + "colors": "~1.1.2" + }, + "dependencies": { + "@types/node": { + "version": "6.0.88", + "resolved": "https://registry.npmjs.org/@types/node/-/node-6.0.88.tgz", + "integrity": "sha512-bYDPZTX0/s1aihdjLuAgogUAT5M+TpoWChEMea2p0yOcfn5bu3k6cJb9cp6nw268XeSNIGGr+4+/8V5K6BGzLQ==", + "dev": true + }, + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha512-ENwblkFQpqqia6b++zLD/KUWafYlVY/UNnAp7oz7LY7E924wmpye416wBOmvv/HMWzl8gL1kJlfvId/1Dg176w==", + "dev": true + } + } + }, + "@microsoft/ts-command-line": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@microsoft/ts-command-line/-/ts-command-line-2.2.4.tgz", + "integrity": "sha512-hMpO5Qllq2VyHxdXNMwkY/v8IvZw0wW57ySb51MxLwSZKFT9G4NK3dl2cUEz4cRwoau1M7qVJHcchFIiS/MAsA==", + "dev": true, + "requires": { + "@types/argparse": "~1.0.33", + "@types/node": "6.0.88", + "argparse": "~1.0.9", + "colors": "~1.1.2" + }, + "dependencies": { + "@types/node": { + "version": "6.0.88", + "resolved": "https://registry.npmjs.org/@types/node/-/node-6.0.88.tgz", + "integrity": "sha512-bYDPZTX0/s1aihdjLuAgogUAT5M+TpoWChEMea2p0yOcfn5bu3k6cJb9cp6nw268XeSNIGGr+4+/8V5K6BGzLQ==", + "dev": true + }, + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha512-ENwblkFQpqqia6b++zLD/KUWafYlVY/UNnAp7oz7LY7E924wmpye416wBOmvv/HMWzl8gL1kJlfvId/1Dg176w==", + "dev": true + } + } + }, + "@pnp/common": { + "version": "1.3.11", + "resolved": "https://registry.npmjs.org/@pnp/common/-/common-1.3.11.tgz", + "integrity": "sha512-RhYKcfMP+h0pAzORZRHSPPLOBB58djN/pfnorpWPjsx6ZxMqbiDqTzAtTF4m8z/mdNnxJr0Q3kwt4ImU3FjwnA==", + "requires": { + "adal-angular": "1.0.17", + "tslib": "1.10.0" + }, + "dependencies": { + "adal-angular": { + "version": "1.0.17", + "resolved": "https://registry.npmjs.org/adal-angular/-/adal-angular-1.0.17.tgz", + "integrity": "sha512-+Z9aq7L25OncsaVcnhSsi7AMR/dlg0gWVNptsdtkL9Ih7hA1oJ14mhWB60CB83JF6DlzamVKLMGbrAcgFQqhCg==" + }, + "tslib": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", + "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==" + } + } + }, + "@pnp/logging": { + "version": "1.3.11", + "resolved": "https://registry.npmjs.org/@pnp/logging/-/logging-1.3.11.tgz", + "integrity": "sha512-hADlIXwvF/wjee7425nFJ6NhqaWpWTJ5yg02bpwBUsiSuFqEUf+LwuAcyHQre2lMs6KyNa65FWoRQok9BlZuxA==", + "requires": { + "tslib": "1.10.0" + }, + "dependencies": { + "tslib": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", + "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==" + } + } + }, + "@pnp/odata": { + "version": "1.3.11", + "resolved": "https://registry.npmjs.org/@pnp/odata/-/odata-1.3.11.tgz", + "integrity": "sha512-yMaRiuVZRei2pkryCOqsw3ZXD2Lw30IJv136WQmQPQPOxG4cvsS9+woXkfMqbWV2KQ1evFUqVXbitIz6eDVfNA==", + "requires": { + "tslib": "1.10.0" + }, + "dependencies": { + "tslib": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", + "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==" + } + } + }, + "@pnp/sp": { + "version": "1.3.11", + "resolved": "https://registry.npmjs.org/@pnp/sp/-/sp-1.3.11.tgz", + "integrity": "sha512-NjdeGe81aukiSPelSPjgAFRC1+SrNPTXvTdEqTH+Q1ZvgNtk8bdZp6K6xf9emfeM2qZDOu9GpKZpg0W/emq++g==", + "requires": { + "tslib": "1.10.0" + }, + "dependencies": { + "tslib": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", + "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==" + } + } + }, + "@pnp/sp-clientsvc": { + "version": "1.3.11", + "resolved": "https://registry.npmjs.org/@pnp/sp-clientsvc/-/sp-clientsvc-1.3.11.tgz", + "integrity": "sha512-eIUnmDWjizcWJzhWxAbfsxEyHF1dabkGlihnDnlcYGhtvh8BwuM67A57qc5fbxzCS59c0YU57szB1EucoNmV4A==", + "requires": { + "tslib": "1.10.0" + }, + "dependencies": { + "tslib": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", + "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==" + } + } + }, + "@pnp/sp-taxonomy": { + "version": "1.3.11", + "resolved": "https://registry.npmjs.org/@pnp/sp-taxonomy/-/sp-taxonomy-1.3.11.tgz", + "integrity": "sha512-shzCSjmOlr6mojCXJkfD8Xf9lJnhphq4Fj6mdUQGwpak+VIU+Fogf6AI0j6AReCKtKsKyqfud9X7C8tH07C3DA==", + "requires": { + "tslib": "1.10.0" + }, + "dependencies": { + "tslib": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", + "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==" + } + } + }, + "@pnp/telemetry-js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@pnp/telemetry-js/-/telemetry-js-2.0.0.tgz", + "integrity": "sha512-qFNm3mTerTnxgTR6c/4iMMt8EUKrQn5z0XG/IQtpNlp6m7KXRDFR87mQKeBVtSv2LhxGO0VNFndKJIibBw52zQ==", + "requires": { + "whatwg-fetch": "2.0.4" + }, + "dependencies": { + "whatwg-fetch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz", + "integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng==" + } + } + }, + "@types/adal": { + "version": "1.0.27", + "resolved": "https://registry.npmjs.org/@types/adal/-/adal-1.0.27.tgz", + "integrity": "sha512-Dll0X5OdCgnqMhp/bH/XSjFpn1putDI9OVlw+LgmxOjZWKUQXOpHkGWbARNReeYBWmaEvWBVWkZG4yhfcCeOZQ==", + "requires": { + "@types/angular": "*" + } + }, + "@types/angular": { + "version": "1.8.9", + "resolved": "https://registry.npmjs.org/@types/angular/-/angular-1.8.9.tgz", + "integrity": "sha512-Z0HukqZkx0fotsV3QO00yqU9NzcQI+tMcrum+8MvfB4ePqCawZctF/gz6QiuII+T1ax+LitNoPx/eICTgnF4sg==" + }, + "@types/argparse": { + "version": "1.0.38", + "resolved": "https://registry.npmjs.org/@types/argparse/-/argparse-1.0.38.tgz", + "integrity": "sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==", + "dev": true + }, + "@types/assertion-error": { + "version": "1.0.30", + "resolved": "https://registry.npmjs.org/@types/assertion-error/-/assertion-error-1.0.30.tgz", + "integrity": "sha512-wWn1Ba63rMb2s3ZrcLe6NCxvRrQerwxQYFUPMIgZH0iktGbQt+5WML8tQsVMMFW4Ju4ZGwjFzDZdot5JlPaOIA==", + "dev": true + }, + "@types/bluebird": { + "version": "3.5.42", + "resolved": "https://registry.npmjs.org/@types/bluebird/-/bluebird-3.5.42.tgz", + "integrity": "sha512-Jhy+MWRlro6UjVi578V/4ZGNfeCOcNCp0YaFNIUGFKlImowqwb1O/22wDVk3FDGMLqxdpOV3qQHD5fPEH4hK6A==", + "dev": true + }, + "@types/chai": { + "version": "3.4.34", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-3.4.34.tgz", + "integrity": "sha512-TzDolStiqqbaW6kHZH7ZslhrFUoy7s68ODIGmg7aZSQWL5bBNovAlVf/y1f0+iogNx1A99noKtdf7X74AxhpMQ==", + "dev": true + }, + "@types/chalk": { + "version": "0.4.31", + "resolved": "https://registry.npmjs.org/@types/chalk/-/chalk-0.4.31.tgz", + "integrity": "sha512-nF0fisEPYMIyfrFgabFimsz9Lnuu9MwkNrrlATm2E4E46afKDyeelT+8bXfw1VSc7sLBxMxRgT7PxTC2JcqN4Q==", + "dev": true + }, + "@types/colors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/colors/-/colors-1.1.1.tgz", + "integrity": "sha512-rV0iaaYYJPa3vYpYRUX0ItsmLGZWNYjgCYj3B7RwI8feLJMNSualSn4XIbfwJcaNizJEGDQxynjwHdLrM+ZWIw==", + "dev": true + }, + "@types/es6-promise": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/@types/es6-promise/-/es6-promise-0.0.33.tgz", + "integrity": "sha512-HKJFVLCGrWQ/1unEw8JdaTxu6n3EUxmwTxJ6D0O1x0gD8joCsgoTWxEgevb7fp2XIogNjof3KEd+3bJoGne/nw==" + }, + "@types/express-serve-static-core": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.0.7.tgz", + "integrity": "sha512-R+33OsgWw7rOhD1emjU7dzCDHucJrgJXMA5PYCzJxVil0dsyx5iBEPHqpPfiKNJQb7lZ1vxwoLR4Z87bBUpeGQ==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "@types/finalhandler": { + "version": "0.0.31", + "resolved": "https://registry.npmjs.org/@types/finalhandler/-/finalhandler-0.0.31.tgz", + "integrity": "sha512-nocmlCjk7fft802VTAtemOOVWCSnXMZ2X8/oG5rpF0H3vUx+SCoiUkO4HWiaB64RE4wTGkRwBcX3ZotilpKubw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/fs-extra": { + "version": "0.0.37", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-0.0.37.tgz", + "integrity": "sha512-S0g2/LsG9cPXfG3cC4CnPCv3K3qRqCkZPMkI6CRJ/zT3i7FfeSHHm9m5x90FSUZVkJI34yz2Qq33OErhfLHx9g==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/glob": { + "version": "5.0.30", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-5.0.30.tgz", + "integrity": "sha512-ZM05wDByI+WA153sfirJyEHoYYoIuZ7lA2dB/Gl8ymmpMTR78fNRtDMqa7Z6SdH4fZdLWZNRE6mZpx3XqBOrHw==", + "dev": true, + "requires": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/gulp": { + "version": "3.8.32", + "resolved": "https://registry.npmjs.org/@types/gulp/-/gulp-3.8.32.tgz", + "integrity": "sha512-yiZK92YHgtOwx+xAchUmrapyONmPXAuzWsVvoWQe5gF8nwaAK7uwaO+mLyF9GaE6lr1ZE6ZnG3X5CY3vULgg1A==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/orchestrator": "*", + "@types/vinyl": "*" + } + }, + "@types/gulp-replace": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/gulp-replace/-/gulp-replace-0.0.29.tgz", + "integrity": "sha512-oUsvz5zifedYUZyEJ4wSKzBx3ZL0Y9NSZPwwrrbfEvmP81i/7zQjFouW8FOegINgXTNXTb8NzxLeoONJrOwXbw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/gulp-util": { + "version": "3.0.30", + "resolved": "https://registry.npmjs.org/@types/gulp-util/-/gulp-util-3.0.30.tgz", + "integrity": "sha512-5UL5DbAmaj4SKghF2gjS1NQhS+ka+2dCnloNyldJaO7foVlNmPK+LisCz31ParFUtVq5sa1bdovuSfWUma246g==", + "dev": true, + "requires": { + "@types/chalk": "*", + "@types/node": "*", + "@types/through2": "*", + "@types/vinyl": "*" + } + }, + "@types/karma": { + "version": "0.13.33", + "resolved": "https://registry.npmjs.org/@types/karma/-/karma-0.13.33.tgz", + "integrity": "sha512-nkUNhFxUdOqhQYYRqGge05GlGHhQ44wJiqkjOsy2RU9hjeRJAUHVnzdSVq7pPb4qOpa+t3UR7CzmXF2Gkz0MaQ==", + "dev": true, + "requires": { + "@types/bluebird": "*", + "@types/log4js": "*", + "@types/node": "*" + } + }, + "@types/lodash": { + "version": "4.14.74", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.74.tgz", + "integrity": "sha512-BZknw3E/z3JmCLqQVANcR17okqVTPZdlxvcIz0fJiJVLUCbSH1hK3zs9r634PVSmrzAxN+n/fxlVRiYoArdOIQ==" + }, + "@types/log4js": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@types/log4js/-/log4js-2.3.5.tgz", + "integrity": "sha512-SwF8LkSHqHy9A8GQ67NAYJiGl8zzP4Qtx65Wa+IOxDGdMHxKeoQZjg7m2M1erIT6VK0DYHpu2aTbdLkdkuMHjw==", + "dev": true, + "requires": { + "log4js": "*" + } + }, + "@types/merge2": { + "version": "0.3.29", + "resolved": "https://registry.npmjs.org/@types/merge2/-/merge2-0.3.29.tgz", + "integrity": "sha512-2G+P3WmXG93CEVHXxfUhLvyWgjuHv2Nsr+uZuXZL3K9PcXLt7w5CdHovlZXP3PuzjuR3ETtrYyM8SbqD+zfFaA==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/mime": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-4.0.0.tgz", + "integrity": "sha512-5eEkJZ/BLvTE3vXGKkWlyTSUVZuzj23Wj8PoyOq2lt5I3CYbiLBOPb3XmCW6QcuOibIUE6emHXHt9E/F/rCa6w==", + "dev": true, + "requires": { + "mime": "*" + } + }, + "@types/minimatch": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-6.0.0.tgz", + "integrity": "sha512-zmPitbQ8+6zNutpwgcQuLcsEpn/Cj54Kbn7L5pX0Os5kdWplB7xPgEh/g+SWOB/qmows2gpuCaPyduq8ZZRnxA==", + "dev": true, + "requires": { + "minimatch": "*" + } + }, + "@types/mocha": { + "version": "2.2.38", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-2.2.38.tgz", + "integrity": "sha512-nTV6VCPZS8Vm6vX7i8LxlC5C1gQlugxtXSsLbL0Uolr89f13Ru7190ohAUFpW868Ri+CidqogX+oXWtX1EiVpQ==", + "dev": true + }, + "@types/node": { + "version": "6.0.64", + "resolved": "https://registry.npmjs.org/@types/node/-/node-6.0.64.tgz", + "integrity": "sha512-fxYo88xh1lnYgDokdWRhEIU0McQmsED65/hZ1rArDd9QWa8/k/b2CFeQ2LX7aCZn9whYdzvsqv38SbxeLF+srg==" + }, + "@types/node-notifier": { + "version": "0.0.28", + "resolved": "https://registry.npmjs.org/@types/node-notifier/-/node-notifier-0.0.28.tgz", + "integrity": "sha512-hNXLiEtRYLtqhmuy5kyS3fdMY8IuSE3HKTCX7wHGBW5DY9FjUREF+avcaaHkcLTllg7Eeq1TjJW9BlX9rCu2uw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/orchestrator": { + "version": "0.0.30", + "resolved": "https://registry.npmjs.org/@types/orchestrator/-/orchestrator-0.0.30.tgz", + "integrity": "sha512-rT9So631KbmirIGsZ5m6T15FKHqiWhYRULdl03l/WBezzZ8wwhYTS2zyfHjsvAGYFVff1wtmGFd0akRCBDSZrA==", + "dev": true, + "requires": { + "@types/q": "*" + } + }, + "@types/q": { + "version": "0.0.32", + "resolved": "https://registry.npmjs.org/@types/q/-/q-0.0.32.tgz", + "integrity": "sha512-qYi3YV9inU/REEfxwVcGZzbS3KG/Xs90lv0Pr+lDtuVjBPGd1A+eciXzVSaRvLify132BfcvhvEjeVahrUl0Ug==", + "dev": true + }, + "@types/qs": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==", + "dev": true + }, + "@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "dev": true + }, + "@types/react": { + "version": "15.6.6", + "resolved": "https://registry.npmjs.org/@types/react/-/react-15.6.6.tgz", + "integrity": "sha512-a45hjEjpRira6tJM8E2/aGDqqNx9/PhtQ4GxEg7MsslTuAKdweWLH0oE2K0dgMFdzw9E2yRB6jqrA8IKXaevwQ==" + }, + "@types/react-dom": { + "version": "15.5.6", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-15.5.6.tgz", + "integrity": "sha512-dP4vEDEH4rL+uUl6f//c6mjepTVdJ6Ldx3z0dZbw047T5Z+o2PZDW/Qd+I4PkTmIgk7YNAZC/TFnm3IHT5UAhw==", + "requires": { + "@types/react": "^15" + } + }, + "@types/requirejs": { + "version": "2.1.29", + "resolved": "https://registry.npmjs.org/@types/requirejs/-/requirejs-2.1.29.tgz", + "integrity": "sha512-61MNgoBY6iEsHhFGiElSjEu8HbHOahJLGh9BdGSfzgAN+2qOuFJKuG3f7F+/ggKr+0yEM3Y4fCWAgxU6es0otg==" + }, + "@types/resolve": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.4.tgz", + "integrity": "sha512-wi4ZBFChiqAhKjqxCGqhJZ8Ry3OslZ5xxwFzfjVkRBVzficC9YfE44qHf0/eIqgRNQqslPRWtdXpFQNO3BkPTw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/rimraf": { + "version": "0.0.28", + "resolved": "https://registry.npmjs.org/@types/rimraf/-/rimraf-0.0.28.tgz", + "integrity": "sha512-xnLdvcPWgKF71R2DEQCZfXLutuAApHhJT+Y4/ptZ8FN610hSVT98TyLLkMjRm3VJ2BqUUXRjYtdZ12KvDXBT7A==", + "dev": true + }, + "@types/scrollreveal": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/@types/scrollreveal/-/scrollreveal-0.0.2.tgz", + "integrity": "sha512-tLP/n3XGheuFYKfQsNlZbn8d6Gm7e81r9He131adAZltpYySyF99GLgfx4Qikl2ERuY+Pbp73F78PgEicZAzHA==" + }, + "@types/semver": { + "version": "5.3.33", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-5.3.33.tgz", + "integrity": "sha512-UwrBgjsRS8BSsckIEdrAhIAmdh0MJidtKTvD3S6tpMq6qHLY3uGaNYcRDUjPxpF4hOAOEbMNSXhhfxmNHB1QNQ==", + "dev": true + }, + "@types/send": { + "version": "0.17.5", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.5.tgz", + "integrity": "sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w==", + "dev": true, + "requires": { + "@types/mime": "^1", + "@types/node": "*" + }, + "dependencies": { + "@types/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", + "dev": true + } + } + }, + "@types/serve-static": { + "version": "1.7.31", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.7.31.tgz", + "integrity": "sha512-ZA6hU8nps4jY6pCNDTjGlydERrMFyuOD3cJjYOy/nEnrQCA4wmZ9ibHppuMDpwJvMlkMQRwnXvMiHEZQHgFM6A==", + "dev": true, + "requires": { + "@types/express-serve-static-core": "*", + "@types/mime": "*" + } + }, + "@types/sinon": { + "version": "1.16.34", + "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-1.16.34.tgz", + "integrity": "sha512-LlnaG49HjLH4Mlom4OaQSUZq/Rn6QQMXyRqV2omEdgJzFSbb/Ssr63yGVLQCXIwjdtUSSWViP6mypV4+8B6jZw==" + }, + "@types/tapable": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/@types/tapable/-/tapable-2.2.7.tgz", + "integrity": "sha512-D6QzACV9vNX3r8HQQNTOnpG+Bv1rko+yEA82wKs3O9CQ5+XW7HI7TED17/UE7+5dIxyxZIWTxKbsBeF6uKFCwA==", + "dev": true, + "requires": { + "tapable": "^2.2.0" + }, + "dependencies": { + "tapable": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz", + "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==", + "dev": true + } + } + }, + "@types/through2": { + "version": "2.0.32", + "resolved": "https://registry.npmjs.org/@types/through2/-/through2-2.0.32.tgz", + "integrity": "sha512-VYclBauj55V0qPDHs9QMdKBdxdob6zta8mcayjTyOzlRgl+PNERnvNol99W1PBnvQXaYoTTqSce97rr9dz9oXQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/uglify-js": { + "version": "3.17.5", + "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.17.5.tgz", + "integrity": "sha512-TU+fZFBTBcXj/GpDpDaBmgWk/gn96kMZ+uocaFUlV2f8a6WdMzzI44QBCmGcCiYR0Y6ZlNRiyUyKKt5nl/lbzQ==", + "dev": true, + "requires": { + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "@types/uuid": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-3.0.0.tgz", + "integrity": "sha512-CGaBAcUB4o+YTaUBZ2VfBc7PcIZXwHflZs4FDtr5Kk7MpAl0PVfH7W/VqoHH+OAG41d9YSCV8eWDfz/KKqVm+A==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/vinyl": { + "version": "1.2.30", + "resolved": "https://registry.npmjs.org/@types/vinyl/-/vinyl-1.2.30.tgz", + "integrity": "sha512-ZxTDgs8M3kvBSfgwF0EQQmQU9dM6qzDBCeN8lCW0wvXtVsKWaZjyURKZlaV0A7lMci2Cj1fEqyR09bMaQXRxOg==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/webpack": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-3.0.11.tgz", + "integrity": "sha512-zd9NK+SLVONhuD2iGVfE8KcpTHIwIcIZqyisRyGurjC2iXzRu1rkJmAWq4agBOw7rU3GocH29JX/gwrDLSA+cw==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/tapable": "*", + "@types/uglify-js": "*" + } + }, + "@types/webpack-env": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.13.1.tgz", + "integrity": "sha512-oHyg0NssP2RCpCvE35hhbSqMJRsc5lSW+GFe+Vc65JL+kHII1VMYM+0KeV/z4utFuUqPoQRmq8KMMp7ba0dj6Q==" + }, + "@types/webpack-stream": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/@types/webpack-stream/-/webpack-stream-3.2.7.tgz", + "integrity": "sha512-s+i5OFlyHkZloE12E69yUMWjj1m9nwcy/E6KiVieNiroQltPX27XY6S67rwdn9bewSNlqM/z0z8xjJ1loAO5WQ==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/webpack": "*" + } + }, + "@types/yargs": { + "version": "0.0.34", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-0.0.34.tgz", + "integrity": "sha512-Rrj9a2bqpcPKGYCIyQGkD24PeCZG3ow58cgaAtI4jwsUMe/9hDaCInMpXZ+PaUK3cVwsFUstpOEkSfMdQpCnYA==", + "dev": true + }, + "@types/z-schema": { + "version": "3.16.31", + "resolved": "https://registry.npmjs.org/@types/z-schema/-/z-schema-3.16.31.tgz", + "integrity": "sha512-ccin7QmRIBE9m5DbUH/wSQT0toq8mkrvDv1uoLulyx6fmTTf+2cvpEFetGR+1pVJ6ldGPVuNx92jjEsrm8UISQ==" + }, + "@uifabric/icons": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@uifabric/icons/-/icons-5.2.0.tgz", + "integrity": "sha512-P5kfPej/wxgR8jZt/GqnU0FqYcz+JH1iCcaaYd6p9L3opmZtu4w5duKeqs+Bc1u7K16r800EQfLgKe76rt6AuA==", + "requires": { + "@uifabric/styling": ">=5.3.0 <6.0.0", + "tslib": "^1.6.0" + } + }, + "@uifabric/merge-styles": { + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/@uifabric/merge-styles/-/merge-styles-5.17.1.tgz", + "integrity": "sha512-4/EtO6Ns7kNtKxC+6InShwVQeNQEDT5H8Ex7m/i4OrT9i7csje4YwBQPkkpm31qJwEZEyD7bbAwyLezI63sLhg==", + "requires": { + "tslib": "^1.7.1" + } + }, + "@uifabric/styling": { + "version": "5.37.0", + "resolved": "https://registry.npmjs.org/@uifabric/styling/-/styling-5.37.0.tgz", + "integrity": "sha512-3hC0itW/hWSD5J4uANzUKk8XVGWUNkU+VLjEjWsQ6i5lvwFGaanR6Qy0bTkZdFGqFWMXe91CkBHV7HnvEx7tCA==", + "requires": { + "@microsoft/load-themed-styles": "^1.7.13", + "@uifabric/merge-styles": ">=5.17.1 <6.0.0", + "@uifabric/utilities": ">=5.34.2 <6.0.0", + "tslib": "^1.7.1" + }, + "dependencies": { + "@microsoft/load-themed-styles": { + "version": "1.10.295", + "resolved": "https://registry.npmjs.org/@microsoft/load-themed-styles/-/load-themed-styles-1.10.295.tgz", + "integrity": "sha512-W+IzEBw8a6LOOfRJM02dTT7BDZijxm+Z7lhtOAz1+y9vQm1Kdz9jlAO+qCEKsfxtUOmKilW8DIRqFw2aUgKeGg==" + } + } + }, + "@uifabric/utilities": { + "version": "5.34.3", + "resolved": "https://registry.npmjs.org/@uifabric/utilities/-/utilities-5.34.3.tgz", + "integrity": "sha512-6dERFkNNCUrPUuNG1nxlDDvt7DN5hxb41zp9AmKhK5cXZTYCblmlLBvb/qyielCnicfoagoA+lqH9NgnSE8u/A==", + "requires": { + "@uifabric/merge-styles": ">=5.17.1 <6.0.0", + "prop-types": "^15.5.10", + "tslib": "^1.7.1" + } + }, + "abab": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.4.tgz", + "integrity": "sha512-I+Wi+qiE2kUXyrRhNsWv6XsjUTBJjSoVSctKNBfLG5zG/Xe7Rjbxf13+vqYHNTwHaFU+FtSlVxOCTiMEVtPv0A==", + "dev": true + }, + "abbrev": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", + "integrity": "sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q==", + "dev": true + }, + "accepts": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz", + "integrity": "sha512-AOPopplFOUlmUugwiZUCDpOwmqvSgdCyE8iJVLWI4NcB7qfMKQN34dn5xYtlUU03XGG5egRWW4NW5gIxpa5hEA==", + "dev": true, + "requires": { + "mime-types": "~2.1.11", + "negotiator": "0.6.1" + } + }, + "acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha512-fu2ygVGuMmlzG8ZeRJ0bvR41nsAkxxhbyk8bZ1SS521Z7vmgJFTQQlfz/Mp/nJexGBz+v8sC9bM6+lNgskt4Ug==", + "dev": true + }, + "acorn-dynamic-import": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz", + "integrity": "sha512-GKp5tQ8h0KMPWIYGRHHXI1s5tUpZixZ3IHF2jAu42wSCf6In/G873s6/y4DdKdhWvzhu1T6mE1JgvnhAKqyYYQ==", + "dev": true, + "requires": { + "acorn": "^4.0.3" + } + }, + "acorn-globals": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-3.1.0.tgz", + "integrity": "sha512-uWttZCk96+7itPxK8xCzY86PnxKTMrReKDqrHzv42VQY0K30PUO8WY13WMOuI+cOdX4EIdzdvQ8k6jkuGRFMYw==", + "dev": true, + "requires": { + "acorn": "^4.0.4" + } + }, + "adal-angular": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/adal-angular/-/adal-angular-1.0.16.tgz", + "integrity": "sha512-tJf2bRwolKA8/J+wcy4CFOTAva8gpueHplptfjz3Wt1XOb7Y1jnwdm2VdkFZQUhxCtd/xPvcRSAQP2+ROtAD5g==" + }, + "after": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", + "integrity": "sha512-QbJ0NTQ/I9DI3uSJA4cbexiwQeRAfjPScqIbSjUDd9TOrcg6pTkdgziesOqxBMBzit8vFCTwrP27t13vFOORRA==", + "dev": true + }, + "ajv": { + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.2.5.tgz", + "integrity": "sha512-lhBCO8ZRekUVifgHf+8V/VO2h8/TJWQtxeXdTOWv14sVWmJjcxvjH5J38MBLipxVpXmyX1a/lyBom8y8MLkvZw==", + "dev": true, + "requires": { + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "json-schema-traverse": "^0.3.0", + "json-stable-stringify": "^1.0.1" + }, + "dependencies": { + "fast-deep-equal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha512-fueX787WZKCV0Is4/T2cyAdM4+x1S3MXXOAhavE1ys/W42SHAPacLTQhucja22QBYrfGw50M2sRiXPtTGv9Ymw==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha512-4JD/Ivzg7PoW8NzdrBSr3UFwC9mHgvI7Z6z3QGBsSHgKaRTUDmyZAAKJo2UbG1kUVfS9WS8bi36N49U1xw43DA==", + "dev": true + } + } + }, + "ajv-keywords": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", + "integrity": "sha512-ZFztHzVRdGLAzJmpUT9LNFLe1YiVOEylcaNpEutM26PVTCtOD919IMfD01CgbRouB42Dd9atjx1HseC15DgOZA==", + "dev": true + }, + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha512-GrTZLRpmp6wIC2ztrWW9MjjTgSKccffgFagbNDOX95/dcjEcYZibYTeaOntySQLcdw1ztBoFkviiUvTMbb9MYg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2", + "longest": "^1.0.1", + "repeat-string": "^1.5.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha512-0FcBfdcmaumGPQ0qPn7Q5qTgz/ooXgIyp1rf8ik5bGX8mpE2YHjC0P/eyQvxu1GURYQgq9ozf2mteQ5ZD9YiyQ==", + "dev": true + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==", + "dev": true + }, + "ansi-colors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", + "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", + "dev": true, + "requires": { + "ansi-wrap": "^0.1.0" + } + }, + "ansi-escapes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", + "integrity": "sha512-wiXutNjDUlNEDWHcYH3jtZUhd3c4/VojassD8zHdHCY13xbZy2XbW+NKQwA0tWGBVzDA9qEzYwfoSsWmviidhw==", + "dev": true + }, + "ansi-gray": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", + "integrity": "sha512-HrgGIZUl8h2EHuZaU9hTR/cU5nhKxpVE1V6kdGsQ8e4zirElJ5fvtfc8N7Q1oq1aatO275i8pUFUCpNWCAnVWw==", + "dev": true, + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true + }, + "ansi-wrap": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", + "integrity": "sha512-ZyznvL8k/FZeQHr2T6LzcJ/+vBApDnMNZvfVFy3At0knswWd6rJ3/0Hhmpu8oqa6C92npmozs890sX9Dl6q+Qw==", + "dev": true + }, + "anymatch": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "dev": true, + "requires": { + "micromatch": "^2.1.5", + "normalize-path": "^2.0.0" + }, + "dependencies": { + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha512-dtXTVMkh6VkEEA7OhXnN1Ecb8aAGFdZ1LFxtOCoqj4qkyOJMt7+qs6Ahdy6p/NQCPYsRSXXivhSB/J5E9jmYKA==", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1" + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha512-G2n5bG5fSUCpnsXz4+8FUkYsGPkNfLn9YvS66U5qbTIXI2Ynnlo4Bi42bWv+omKUCqz+ejzfClwne0alJWJPhg==", + "dev": true + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha512-xU7bpz2ytJl1bH9cgIurjpg/n8Gohy9GTw81heDYLJQ4RU60dlyJsa+atVF2pI0yMMvKxI9HkKwjePCj5XI1hw==", + "dev": true, + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha512-hxx03P2dJxss6ceIeri9cmYOT4SRs3Zk3afZwWpOsRqLqprhTR8u++SlC+sFGsQr7WGFPdMF7Gjc1njDLDK6UA==", + "dev": true, + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha512-1FOj1LOwn42TMrruOHGt18HemVnbwAmAak7krWk+wa93KXxGbK+2jpezm+ytJYDaBX0/SPLZFHKM7m+tKobWGg==", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha512-LnU2XFEk9xxSJ6rfgAry/ty5qwUTyHYOBU0g4R6tIw5ljwgGIBmiKhRWLw5NpMOnrgUNcDJ4WMp8rl3sYVHLNA==", + "dev": true, + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + } + } + } + }, + "append-transform": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", + "integrity": "sha512-Yisb7ew0ZEyDtRYQ+b+26o9KbiYPFxwcsxKzbssigzRRMJ9LpExPVUg6Fos7eP7yP3q7///tzze4nm4lTptPBw==", + "dev": true, + "requires": { + "default-require-extensions": "^1.0.0" + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==", + "dev": true + }, + "are-we-there-yet": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", + "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", + "dev": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", + "dev": true + }, + "array-differ": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", + "integrity": "sha512-LeZY+DZDRnvP7eMuQ6LHfCzUGxAAIViUBliK24P3hWXL6y4SortgR6Nim6xrkfSLlmH0+k+9NYNwVC2s53ZrYQ==", + "dev": true + }, + "array-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", + "integrity": "sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==", + "dev": true + }, + "array-equal": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.2.tgz", + "integrity": "sha512-gUHx76KtnhEgB3HOuFYiCm3FIdEs6ocM2asHvNTkfu/Y09qQVrrVVaOKENmS2KkSaGoxgXNqC+ZVtR/n0MOkSA==", + "dev": true + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==", + "dev": true + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true + }, + "array-slice": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", + "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", + "dev": true + }, + "arraybuffer.slice": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz", + "integrity": "sha512-6ZjfQaBSy6CuIH0+B0NrxMfDE5VIOCP/5gOqSpEIsaAZx9/giszzrXg6PZ7G51U/n88UmlAgYLNQ9wAnII7PJA==", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", + "dev": true + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" + }, + "asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz", + "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==", + "dev": true + } + } + }, + "assert": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.1.tgz", + "integrity": "sha512-zzw1uCAgLbsKwBfFc8CX78DDg+xZeBksSO3vwVIDDN5i94eOrPsSSyiVhmsSABFDM/OcpE2aagCat9dnWQLG1A==", + "dev": true, + "requires": { + "object.assign": "^4.1.4", + "util": "^0.10.4" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "util": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", + "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", + "dev": true, + "requires": { + "inherits": "2.0.3" + } + } + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "dev": true + }, + "assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", + "dev": true + }, + "ast-types": { + "version": "0.9.6", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.9.6.tgz", + "integrity": "sha512-qEdtR2UH78yyHX/AUNfXmJTlM48XoFZKBdwi1nzkI1mJL21cmbu0cvjxjpkXJ5NENMq42H+hNs8VLJcqXLerBQ==", + "dev": true + }, + "async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + }, + "dependencies": { + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + } + } + }, + "async-each": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.6.tgz", + "integrity": "sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg==", + "dev": true + }, + "async-foreach": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", + "integrity": "sha512-VUeSMD8nEGBWaZK4lizI1sf3yEC7pnAQ/mrI7pC2fBz2s/tq5jWWEngTwaf0Gruu/OoXRGLGg1XFqpYBiGTYJA==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "autoprefixer": { + "version": "6.3.7", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.3.7.tgz", + "integrity": "sha512-xnArQBxKETltXW1R/ZrmlaslmU5vF4huqAw0iARn1VXXc8TztdtWQJ9myUe/ywZbG7tvErKQ7hZORBf7G8fArQ==", + "dev": true, + "requires": { + "browserslist": "~1.3.4", + "caniuse-db": "^1.0.30000488", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^5.0.21", + "postcss-value-parser": "^3.2.3" + } + }, + "available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "requires": { + "possible-typed-array-names": "^1.0.0" + } + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "dev": true + }, + "aws4": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.13.2.tgz", + "integrity": "sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==", + "dev": true + }, + "azure-storage": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/azure-storage/-/azure-storage-0.10.0.tgz", + "integrity": "sha512-NP2N/+tI5uFGqM85cxjGgS0OKrV+JmFubZnowCJUBRrG57jHnkRzp9scGt5r9uDVWH3K4vOP5BvGMF+qlAlzuw==", + "dev": true, + "requires": { + "browserify-mime": "~1.2.9", + "extend": "~1.2.1", + "node-uuid": "~1.4.0", + "readable-stream": "~2.0.0", + "request": "~2.69.0", + "underscore": "~1.4.4", + "validator": "~3.22.2", + "xml2js": "0.2.7", + "xmlbuilder": "0.4.3" + }, + "dependencies": { + "assert-plus": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", + "integrity": "sha512-u1L0ZLywRziOVjUhRxI0Qg9G+4RnFB9H/Rq40YWn0dieDgO7vAYeJz6jKAO6t/aruzlDFLAPkQTT87e+f8Imaw==", + "dev": true + }, + "aws-sign2": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "integrity": "sha512-JnJpAS0p9RmixkOvW2XwDxxzs1bd4/VAGIl6Q0EC5YOo+p+hqIhtDhn/nmFnB/xUNXbLkpE2mOjgVIBRKD4xYw==", + "dev": true + }, + "caseless": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", + "integrity": "sha512-ODLXH644w9C2fMPAm7bMDQ3GRvipZWZfKc+8As6hIadRIelE0n0xZuN38NS6kiK3KPEVrpymmQD8bvncAHWQkQ==", + "dev": true + }, + "extend": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-1.2.1.tgz", + "integrity": "sha512-2/JwIYRpMBDSjbQjUUppNSrmc719crhFaWIdT+TRSVA8gE+6HEobQWqJ6VkPt/H8twS7h/0WWs7veh8wmp98Ng==", + "dev": true + }, + "form-data": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-1.0.1.tgz", + "integrity": "sha512-M4Yhq2mLogpCtpUmfopFlTTuIe6mSCTgKvnlMhDj3NcgVhA1uS20jT0n+xunKPzpmL5w2erSVtp+SKiJf1TlWg==", + "dev": true, + "requires": { + "async": "^2.0.1", + "combined-stream": "^1.0.5", + "mime-types": "^2.1.11" + } + }, + "har-validator": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", + "integrity": "sha512-P6tFV+wCcUL3nbyTDAvveDySfbhy0XkDtAIfZP6HITjM2WUsiPna/Eg1Yy93SFXvahqoX+kt0n+6xlXKDXYowA==", + "dev": true, + "requires": { + "chalk": "^1.1.1", + "commander": "^2.9.0", + "is-my-json-valid": "^2.12.4", + "pinkie-promise": "^2.0.0" + } + }, + "http-signature": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "integrity": "sha512-iUn0NcRULlDGtqNLN1Jxmzayk8ogm7NToldASyZBpM2qggbphjXzNOiw3piN8tgz+e/DRs6X5gAzFwTI6BCRcg==", + "dev": true, + "requires": { + "assert-plus": "^0.2.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node-uuid": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.8.tgz", + "integrity": "sha512-TkCET/3rr9mUuRp+CpO7qfgT++aAxfDRaalQhwPFzI9BY/2rCDn6OfpZOVggi1AXfTPpfkTrg5f5WQx5G1uLxA==", + "dev": true + }, + "oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha512-VlF07iu3VV3+BTXj43Nmp6Irt/G7j/NgEctUS6IweH1RGhURjjCc2NWtzXFPXXWWfc7hgbXQdtiQu2LGp6MxUg==", + "dev": true + }, + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha512-yN0WQmuCX63LP/TMvAg31nvT6m4vDqJEiiv2CAZqWOGNWutc9DfDk1NPYYmKUFmaVM2UwDowH4u5AHWYP/jxKw==", + "dev": true + }, + "qs": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.0.4.tgz", + "integrity": "sha512-zTqfwnNxm6UUH0mxoY9TRHavimMmNp1YZwCIO3oQbEbuQWDXo/yhigCah9Q3KTerKxlVvK3RaTdJD7dHBDBptg==", + "dev": true + }, + "readable-stream": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", + "integrity": "sha512-TXcFfb63BQe1+ySzsHZI/5v1aJPCShfqvWJ64ayNImXMsN1Cd0YGk/wm8KB7/OeessgPc9QvS9Zou8QTkFzsLw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "string_decoder": "~0.10.x", + "util-deprecate": "~1.0.1" + } + }, + "request": { + "version": "2.69.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.69.0.tgz", + "integrity": "sha512-WORLlE5HDoewOPTWQwArryfR0KPT0ac5Ck3VFbJ5g+mt2NoSgTLfEWQ+7Net/3QP7mMmKoJzsR28kOXO2Fx5Yw==", + "dev": true, + "requires": { + "aws-sign2": "~0.6.0", + "aws4": "^1.2.1", + "bl": "~1.0.0", + "caseless": "~0.11.0", + "combined-stream": "~1.0.5", + "extend": "~3.0.0", + "forever-agent": "~0.6.1", + "form-data": "~1.0.0-rc3", + "har-validator": "~2.0.6", + "hawk": "~3.1.0", + "http-signature": "~1.1.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.7", + "node-uuid": "~1.4.7", + "oauth-sign": "~0.8.0", + "qs": "~6.0.2", + "stringstream": "~0.0.4", + "tough-cookie": "~2.2.0", + "tunnel-agent": "~0.4.1" + }, + "dependencies": { + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + } + } + }, + "tough-cookie": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.2.2.tgz", + "integrity": "sha512-Knz9Yr0hlBoWQgUKzOIvRg5adinizAf49i2gHRhj6cLjlM304zRw7uyiY22ADniDxnPHXfIeyQD0EAkgpIz0ow==", + "dev": true + }, + "tunnel-agent": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", + "integrity": "sha512-e0IoVDWx8SDHc/hwFTqJDQ7CCDTEeGhmcT9jkWJjoGQSpgBz20nAMr80E3Tpk7PatJ1b37DQDgJR3CNSzcMOZQ==", + "dev": true + }, + "validator": { + "version": "3.22.2", + "resolved": "https://registry.npmjs.org/validator/-/validator-3.22.2.tgz", + "integrity": "sha512-2HwmaRTZyvuvAiRcQbBN3Z7A1OpCBb+5+koY9HeREc9Cip7AqZW85Iwml56wSGtloq72C1g4WjwhgHEZx5cEgQ==", + "dev": true + } + } + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + }, + "dependencies": { + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==", + "dev": true + } + } + }, + "babel-core": { + "version": "6.26.3", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", + "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-generator": "^6.26.0", + "babel-helpers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-register": "^6.26.0", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "convert-source-map": "^1.5.1", + "debug": "^2.6.9", + "json5": "^0.5.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.4", + "path-is-absolute": "^1.0.1", + "private": "^0.1.8", + "slash": "^1.0.0", + "source-map": "^0.5.7" + }, + "dependencies": { + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + } + } + }, + "babel-generator": { + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", + "dev": true, + "requires": { + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "detect-indent": "^4.0.0", + "jsesc": "^1.3.0", + "lodash": "^4.17.4", + "source-map": "^0.5.7", + "trim-right": "^1.0.1" + }, + "dependencies": { + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + } + } + }, + "babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha512-n7pFrqQm44TCYvrCDb0MqabAF+JUBq+ijBvNMUxpkLjJaAu32faIexewMumrH5KLLJ1HDyT0PTEqRyAe/GwwuQ==", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-jest": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-20.0.3.tgz", + "integrity": "sha512-eAycDKZn+m6jMBv5KMXRKttDeoDUE7Y6eQpeiF4ip0lLaI4uwGNhJIdVK2RptHjO9N9RJ2gONMn2XE67wBdf8A==", + "dev": true, + "requires": { + "babel-core": "^6.0.0", + "babel-plugin-istanbul": "^4.0.0", + "babel-preset-jest": "^20.0.3" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha512-Bl3ZiA+LjqaMtNYopA9TYE9HP1tQ+E5dLxE0XrAzcIJeK2UqF0/EaqXwBn9esd4UmTfEab+P+UYQ1GnioFIb/w==", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-istanbul": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz", + "integrity": "sha512-PWP9FQ1AhZhS01T/4qLSKoHGY/xvkZdVBGlKM/HuxxS3+sC66HhTNR7+MpbO/so/cz/wY94MeSWJuP1hXIPfwQ==", + "dev": true, + "requires": { + "babel-plugin-syntax-object-rest-spread": "^6.13.0", + "find-up": "^2.1.0", + "istanbul-lib-instrument": "^1.10.1", + "test-exclude": "^4.2.1" + } + }, + "babel-plugin-jest-hoist": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-20.0.3.tgz", + "integrity": "sha512-rnyXaCLaHX6BjzT9h4UI1xK7oobCwtLfhompk0qxbcQNhw8JEidggjO1KonVrpdd2+q3QAww3DwVdTYs0g373Q==", + "dev": true + }, + "babel-plugin-syntax-object-rest-spread": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", + "integrity": "sha512-C4Aq+GaAj83pRQ0EFgTvw5YO6T3Qz2KGrNRwIj9mSoNHVvdZY4KO2uA6HNtNXCw993iSZnckY1aLW8nOi8i4+w==", + "dev": true + }, + "babel-preset-jest": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-20.0.3.tgz", + "integrity": "sha512-qeYOCuriyIDRKDE/dByN/yCc/przV2LdHbxldeSsjOr1khQi2o2CzrHXUQM7dSWfmqwxTifznw+bNg59kkI18w==", + "dev": true, + "requires": { + "babel-plugin-jest-hoist": "^20.0.3" + } + }, + "babel-register": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", + "integrity": "sha512-veliHlHX06wjaeY8xNITbveXSiI+ASFnOqvne/LaIJIqOWi2Ogmj91KOugEz/hoh/fwMhXNBJPCv8Xaz5CyM4A==", + "dev": true, + "requires": { + "babel-core": "^6.26.0", + "babel-runtime": "^6.26.0", + "core-js": "^2.5.0", + "home-or-tmp": "^2.0.0", + "lodash": "^4.17.4", + "mkdirp": "^0.5.1", + "source-map-support": "^0.4.15" + }, + "dependencies": { + "core-js": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", + "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", + "dev": true + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + } + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==", + "dev": true, + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + }, + "dependencies": { + "core-js": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", + "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", + "dev": true + } + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha512-PCOcLFW7/eazGUKIoqH97sO9A2UYMahsn/yRQ7uOk37iutwjq7ODtcTNF+iFDSHNfkctqsLRjLP7URnOx0T1fg==", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "lodash": "^4.17.4" + }, + "dependencies": { + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + } + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha512-iSxeXx7apsjCHe9c7n8VtRXGzI2Bk1rBSOJgCCjfyXb6v1aCqE1KSEpq/8SXuVN8Ka/Rh1WDTF0MDzkvTA4MIA==", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" + }, + "dependencies": { + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + } + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha512-zhe3V/26rCWsEZK8kZN+HaQj5yQ1CilTObixFzKW1UWjqG7618Twz6YEsCnjfg5gBcJh02DrpCkS9h98ZqDY+g==", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" + }, + "dependencies": { + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + } + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, + "backo2": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", + "integrity": "sha512-zj6Z6M7Eq+PBZ7PQxl5NT665MvJdAkzp0f60nAJ+sLaSCBPMwVak5ZegFbgVCzFcCJTKFoMizvM5Ld7+JrRJHA==", + "dev": true + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-descriptor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", + "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + } + } + } + }, + "base64-arraybuffer": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", + "integrity": "sha512-437oANT9tP582zZMwSvZGy2nmSeAb8DW2me3y+Uv1Wp2Rulr8Mqlyrv3E7MLxmsiaPSMMDmiDVzgE+e8zlMx9g==", + "dev": true + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true + }, + "base64-url": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/base64-url/-/base64-url-1.2.1.tgz", + "integrity": "sha512-V8E0l1jyyeSSS9R+J9oljx5eq2rqzClInuwaPcyuv0Mm3ViI/3/rcc4rCEO8i4eQ4I0O0FAGYDA2i5xWHHPhzg==", + "dev": true + }, + "base64id": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", + "integrity": "sha512-rz8L+d/xByiB/vLVftPkyY215fqNrmasrcJsYkVcm4TgJNz+YXKrFaFAWibSaHkiKoSgMDCb+lipOIRQNGYesw==", + "dev": true + }, + "basic-auth": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-1.0.4.tgz", + "integrity": "sha512-uvq3I/zC5TmG0WZJDzsXzIytU9GiiSq23Gl27Dq9sV81JTfPfQhtdADECP1DJZeJoZPuYU0Y81hWC5y/dOR+Yw==", + "dev": true + }, + "basic-auth-connect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/basic-auth-connect/-/basic-auth-connect-1.0.0.tgz", + "integrity": "sha512-kiV+/DTgVro4aZifY/hwRwALBISViL5NP4aReaR2EVJEObpbUBHIkdJh/YpcoEiYt7nBodZ6U2ajZeZvSxUCCg==", + "dev": true + }, + "batch": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.5.3.tgz", + "integrity": "sha512-aQgHPLH2DHpFTpBl5/GiVdNzHEqsLCSs1RiPvqkKP1+7RkNJlv71kL8/KXmvvaLqoZ7ylmvqkZhLjjAoRz8Xgw==", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "beeper": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz", + "integrity": "sha512-3vqtKL1N45I5dV0RdssXZG7X6pCqQrWPNOlBPZPrd+QkE2HEhR57Z04m0KtpbsZH73j+a3F8UD1TQnn+ExTvIA==", + "dev": true + }, + "better-assert": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", + "integrity": "sha512-bYeph2DFlpK1XmGs6fvlLRUN29QISM3GBuUwSFsMY2XRx4AvC0WNCS57j4c/xGrK2RS24C1w3YoBOsw9fT46tQ==", + "dev": true, + "requires": { + "callsite": "1.0.0" + } + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "binaryextensions": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/binaryextensions/-/binaryextensions-1.0.1.tgz", + "integrity": "sha512-xnG0l4K3ghM62rFzDi2jcNEuICl6uQ4NgvGpqQsY7HgW8gPDeAWGOxHI/k+qZfXfMANytzrArGNPXidaCwtbmA==", + "dev": true + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "bl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.0.3.tgz", + "integrity": "sha512-phbvN+yOk05EGoFcV/0S8N8ShnJqf6VCWRAw5he2gvRwBubFt/OzmcTNGqBt5b7Y4RK3YCgf6jrgGSR0Cwtsgw==", + "dev": true, + "requires": { + "readable-stream": "~2.0.5" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha512-yN0WQmuCX63LP/TMvAg31nvT6m4vDqJEiiv2CAZqWOGNWutc9DfDk1NPYYmKUFmaVM2UwDowH4u5AHWYP/jxKw==", + "dev": true + }, + "readable-stream": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", + "integrity": "sha512-TXcFfb63BQe1+ySzsHZI/5v1aJPCShfqvWJ64ayNImXMsN1Cd0YGk/wm8KB7/OeessgPc9QvS9Zou8QTkFzsLw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "string_decoder": "~0.10.x", + "util-deprecate": "~1.0.1" + } + } + } + }, + "blob": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz", + "integrity": "sha512-YRc9zvVz4wNaxcXmiSgb9LAg7YYwqQ2xd0Sj6osfA7k/PKmIGVlnOYs3wOFdkRC9/JpQu8sGt/zHgJV7xzerfg==", + "dev": true + }, + "block-stream": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha512-OorbnJVPII4DuUKbjARAe8u8EfqOmkEEaSFIyoQ7OjTHn6kafxWl0wLgoZ2rXaYd7MyLcDaU4TmhfxtwgcccMQ==", + "dev": true, + "requires": { + "inherits": "~2.0.0" + } + }, + "bluebird": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.11.0.tgz", + "integrity": "sha512-UfFSr22dmHPQqPP9XWHRhq+gWnHCYguQGkXQlbyPtW5qTnhFWA8/iXg765tH0cAjy7l/zPJ1aBTO0g5XgA7kvQ==", + "dev": true + }, + "bn.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.2.tgz", + "integrity": "sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw==", + "dev": true + }, + "body-parser": { + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.13.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "dependencies": { + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "qs": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "dev": true, + "requires": { + "side-channel": "^1.0.6" + } + } + } + }, + "boom": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "integrity": "sha512-KbiZEa9/vofNcVJXGwdWWn25reQ3V3dHBWbS07FTF3/TOehLnm9GEhJV4T6ZvGPkShRpmUqYwnaCrkj0mRnP6Q==", + "dev": true, + "requires": { + "hoek": "2.x.x" + } + }, + "brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", + "dev": true + }, + "browser-resolve": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", + "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", + "dev": true, + "requires": { + "resolve": "1.1.7" + }, + "dependencies": { + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg==", + "dev": true + } + } + }, + "browser-stdout": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", + "integrity": "sha512-7Rfk377tpSM9TWBEeHs0FlDZGoAIei2V/4MdZJoFMBFAK6BqLpxAIUepGRHGdPFgGsLb02PXovC4qddyHvQqTg==", + "dev": true + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-mime": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/browserify-mime/-/browserify-mime-1.2.9.tgz", + "integrity": "sha512-uz+ItyJXBLb6wgon1ELEiVowJBEsy03PUWGRQU7cxxx9S+DW2hujPp+DaMYEOClRPzsn7NB99NtJ6pGnt8y+CQ==", + "dev": true + }, + "browserify-rsa": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.1.tgz", + "integrity": "sha512-YBjSAiTqM04ZVei6sXighu679a3SqWORA3qZTEqZImnlkDIFtKc6pNutpjyZ8RJTjQtuYfeetkxM11GwoYXMIQ==", + "dev": true, + "requires": { + "bn.js": "^5.2.1", + "randombytes": "^2.1.0", + "safe-buffer": "^5.2.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "browserify-sign": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.5.tgz", + "integrity": "sha512-C2AUdAJg6rlM2W5QMp2Q4KGQMVBwR1lIimTsUnutJ8bMpW5B52pGpR2gEnNBNwijumDo5FojQ0L9JrXA8m4YEw==", + "dev": true, + "requires": { + "bn.js": "^5.2.2", + "browserify-rsa": "^4.1.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.6.1", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.9", + "readable-stream": "^2.3.8", + "safe-buffer": "^5.2.1" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + } + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "requires": { + "pako": "~1.0.5" + } + }, + "browserslist": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.3.6.tgz", + "integrity": "sha512-fKSWtyNQTclfi1A+s2KU91/r1mfANG1ZibxTdCwJGfV1J9UwcV22plFOm0wkaq4WzqW87zxiAkyp2Ho1Wn1NnA==", + "dev": true, + "requires": { + "caniuse-db": "^1.0.30000525" + } + }, + "bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "requires": { + "node-int64": "^0.4.0" + } + }, + "buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + } + } + }, + "buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "dev": true, + "requires": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", + "dev": true + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true + }, + "buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==", + "dev": true + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", + "dev": true + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha512-wxXCdllwGhI2kCC0MnvTGYTMvnVZTvqgypkiTI8Pa5tcz2i6VqsqwYGgqwXji+4RgCzms6EajE4IxiUH6HH8nQ==", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==", + "dev": true + }, + "builtins": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", + "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==", + "dev": true + }, + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "cache-swap": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/cache-swap/-/cache-swap-0.3.0.tgz", + "integrity": "sha512-rwePCa4iVqXHrEEmQEoLR3Kea4aCTCf7JfX+mJA4Fd61Vb738TItRRv1v++emp9wfnRUKbXpIYfRJY4ThWK09g==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "mkdirp": "^0.5.1", + "object-assign": "^4.0.1", + "rimraf": "^2.4.0" + } + }, + "call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "dev": true, + "requires": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + } + }, + "call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dev": true, + "requires": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + } + }, + "call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, + "requires": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + } + }, + "callsite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", + "integrity": "sha512-0vdNRFXn5q+dtOqjfFtmtlI9N2eVZ7LMyEV2iKC5mEEFvSg/69Ml6b/WU2qF8W1nLRa0wiSrDT3Y5jOHZCwKPQ==", + "dev": true + }, + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==", + "dev": true + }, + "camel-case": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", + "integrity": "sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==", + "dev": true, + "requires": { + "no-case": "^2.2.0", + "upper-case": "^1.1.1" + } + }, + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg==", + "dev": true + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha512-bA/Z/DERHKqoEOrp+qeGKw1QlvEQkGZSc0XaY6VnTxZr+Kv1G5zFwttpjv8qxZ/sBPT4nthwZaAcsAZTJlSKXQ==", + "dev": true, + "requires": { + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" + }, + "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw==", + "dev": true + } + } + }, + "caniuse-api": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-1.6.1.tgz", + "integrity": "sha512-SBTl70K0PkDUIebbkXrxWqZlHNs0wRgRD6QZ8guctShjbh63gEPfF+Wj0Yw+75f5Y8tSzqAI/NcisYv/cCah2Q==", + "dev": true, + "requires": { + "browserslist": "^1.3.6", + "caniuse-db": "^1.0.30000529", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "caniuse-db": { + "version": "1.0.30001746", + "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30001746.tgz", + "integrity": "sha512-yglkT3HjfDx4LLOeOR0mm9o0dWvkxEYdC2y2a2Qrg+xfmmd5Z5s8IgXstIEPyOShj/ofJvfNCOz0rGLleSesCA==", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", + "dev": true + }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha512-Baz3aNe2gd2LP2qk5U+sDk/m4oSuwSDcBfayTCTBoWpfIGO5XFxPmjILQII4NGiZjD6DoDI6kf7gKaxkf7s3VQ==", + "dev": true, + "requires": { + "align-text": "^0.1.3", + "lazy-cache": "^1.0.3" + } + }, + "chai": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-3.5.0.tgz", + "integrity": "sha512-eRYY0vPS2a9zt5w5Z0aCeWbrXTEyvk7u/Xf71EzNObrjSCPgMm1Nku/D/u2tiqHBX5j40wWhj54YJLtgn8g55A==", + "dev": true, + "requires": { + "assertion-error": "^1.0.1", + "deep-eql": "^0.1.3", + "type-detect": "^1.0.0" + } + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "charenc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", + "dev": true + }, + "chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha512-mk8fAWcRUOxY7btlLtitj3A45jOwSAxH4tOFOoEGbVsl6cL6pPMWUy7dwZ/canfj3QEdP6FHSnf/l1c6/WkzVg==", + "dev": true, + "requires": { + "anymatch": "^1.3.0", + "async-each": "^1.0.0", + "fsevents": "^1.0.0", + "glob-parent": "^2.0.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^2.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0" + }, + "dependencies": { + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + } + } + }, + "ci-info": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz", + "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==", + "dev": true + }, + "cipher-base": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.7.tgz", + "integrity": "sha512-Mz9QMT5fJe7bKI7MH31UilT5cEK5EHHRCccw/YRFsRY47AuNgaV6HY3rscp0/I4Q+tTW/5zoqpSeRRI54TkDWA==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "safe-buffer": "^5.2.1", + "to-buffer": "^1.2.2" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "clap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.3.tgz", + "integrity": "sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==", + "dev": true, + "requires": { + "chalk": "^1.1.3" + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "clean-css": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz", + "integrity": "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==", + "dev": true, + "requires": { + "source-map": "~0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "cli-cursor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha512-25tABq090YNKkF6JH7lcwO0zFJTRke4Jcq9iX2nr/Sz0Cjjv4gckmwlW6Ty/aoyFd6z3ysR2hMGC2GFugmBo6A==", + "dev": true, + "requires": { + "restore-cursor": "^1.0.1" + } + }, + "cli-width": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", + "dev": true + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true + }, + "clone-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", + "integrity": "sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g==", + "dev": true + }, + "clone-stats": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", + "integrity": "sha512-dhUqc57gSMCo6TX85FLfe51eC/s+Im2MLkAgJwfaRRexR2tA4dd3eLEW4L6efzHc2iNorrRRXITifnDLlRrhaA==", + "dev": true + }, + "cloneable-readable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz", + "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "process-nextick-args": "^2.0.0", + "readable-stream": "^2.3.5" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true + }, + "coa": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.4.tgz", + "integrity": "sha512-KAGck/eNAmCL0dcT3BiuYwLbExK6lduR8DxM3C1TyDzaXhZHyZ8ooX5I5+na2e3dPFuibfxrGdorr0/Lr7RYCQ==", + "dev": true, + "requires": { + "q": "^1.1.2" + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", + "dev": true + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/color/-/color-0.11.4.tgz", + "integrity": "sha512-Ajpjd8asqZ6EdxQeqGzU5WBhhTfJ/0cA4Wlbre7e5vXfmDSmda7Ov6jeKoru+b0vHcb1CqvuroTHp5zIWzhVMA==", + "dev": true, + "requires": { + "clone": "^1.0.2", + "color-convert": "^1.3.0", + "color-string": "^0.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "color-string": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz", + "integrity": "sha512-sz29j1bmSDfoAxKIEU6zwoIZXN6BrFbAMIhfYCNyiZXBDuU/aiHlN84lp/xDzL2ubyFhLDobHIlU1X70XRrMDA==", + "dev": true, + "requires": { + "color-name": "^1.0.0" + } + }, + "color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true + }, + "colormin": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colormin/-/colormin-1.1.2.tgz", + "integrity": "sha512-XSEQUUQUR/lXqGyddiNH3XYFUPYlYr1vXy9rTFMsSOw+J7Q6EQkdlQIrTlYn4TccpsOaUE1PYQNjBn20gwCdgQ==", + "dev": true, + "requires": { + "color": "^0.11.0", + "css-color-names": "0.0.4", + "has": "^1.0.1" + } + }, + "colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "dev": true + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "component-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", + "integrity": "sha512-WZveuKPeKAG9qY+FkYDeADzdHyTYdIboXS59ixDeRJL5ZhxpqUnxSOwop4FQjMsiYm3/Or8cegVbpAHNA7pHxw==", + "dev": true + }, + "component-emitter": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", + "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", + "dev": true + }, + "component-inherit": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", + "integrity": "sha512-w+LhYREhatpVqTESyGFg3NlP6Iu0kEKUHETY9GoZP/pQyW4mHFZuFWRUCIqVPZ36ueVLtoOEZaAqbCF2RDndaA==", + "dev": true + }, + "compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, + "compression": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.5.2.tgz", + "integrity": "sha512-+2fE8M8+Oe0kAlbMPz6UinaaH/HaGf+c5HlWRyYtPga/PHKxStJJKTU4xca8StY0JQ78L2kJaslpgSzCKgHaxQ==", + "dev": true, + "requires": { + "accepts": "~1.2.12", + "bytes": "2.1.0", + "compressible": "~2.0.5", + "debug": "~2.2.0", + "on-headers": "~1.0.0", + "vary": "~1.0.1" + }, + "dependencies": { + "accepts": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.2.13.tgz", + "integrity": "sha512-R190A3EzrS4huFOVZajhXCYZt5p5yrkaQOB4nsWzfth0cYaDcSN5J86l58FJ1dt7igp37fB/QhnuFkGAJmr+eg==", + "dev": true, + "requires": { + "mime-types": "~2.1.6", + "negotiator": "0.5.3" + } + }, + "bytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.1.0.tgz", + "integrity": "sha512-k9VSlRfRi5JYyQWMylSOgjld96ta1qaQUIvmn+na0BzViclH04PBumewv4z5aeXNkn6Z/gAN5FtPeBLvV20F9w==", + "dev": true + }, + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha512-X0rGvJcskG1c3TgSCPqHJ0XJgwlcvOC7elJ5Y0hYuKBZoVqWpAMfLOeIh2UI/DCQ5ruodIjvsugZtjUYUw2pUw==", + "dev": true, + "requires": { + "ms": "0.7.1" + } + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha512-lRLiIR9fSNpnP6TC4v8+4OU7oStC01esuNowdQ34L+Gk8e5Puoc88IqJ+XAY/B3Mn2ZKis8l8HX90oU8ivzUHg==", + "dev": true + }, + "negotiator": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.5.3.tgz", + "integrity": "sha512-oXmnazqehLNFohqgLxRyUdOQU9/UX0NpCpsnbjWUjM62ZM8oSOXYZpHc68XR130ftPNano0oQXGdREAplZRhaQ==", + "dev": true + }, + "vary": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.0.1.tgz", + "integrity": "sha512-yNsH+tC0r8quK2tg/yqkXqqaYzeKTkSqQ+8T6xCoWgOi/bU/omMYz+6k+I91JJJDeltJzI7oridTOq6OYkY0Tw==", + "dev": true + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "dev": true, + "requires": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + } + }, + "connect-livereload": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/connect-livereload/-/connect-livereload-0.5.4.tgz", + "integrity": "sha512-3KnRwsWf4VmP01I4hCDQqTc4e2UxOvJIi8i08GiwqX2oymzxNFY7PqjFkwHglYTJ0yzUJkO5yqdPxVaIz3Pbug==", + "dev": true + }, + "connect-timeout": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/connect-timeout/-/connect-timeout-1.6.2.tgz", + "integrity": "sha512-qIFt3Ja6gRuJtVoWhPa5FtOO8ERs0MfW/QkmQ0vjrAL78otrkxe8w/qjTAgU/T1W/jH5qeZXJHilmOPKNTiEQw==", + "dev": true, + "requires": { + "debug": "~2.2.0", + "http-errors": "~1.3.1", + "ms": "0.7.1", + "on-headers": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha512-X0rGvJcskG1c3TgSCPqHJ0XJgwlcvOC7elJ5Y0hYuKBZoVqWpAMfLOeIh2UI/DCQ5ruodIjvsugZtjUYUw2pUw==", + "dev": true, + "requires": { + "ms": "0.7.1" + } + }, + "http-errors": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz", + "integrity": "sha512-gMygNskMurDCWfoCdyh1gOeDfSbkAHXqz94QoPj5IHIUjC/BG8/xv7FSEUr7waR5RcAya4j58bft9Wu/wHNeXA==", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "statuses": "1" + } + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha512-lRLiIR9fSNpnP6TC4v8+4OU7oStC01esuNowdQ34L+Gk8e5Puoc88IqJ+XAY/B3Mn2ZKis8l8HX90oU8ivzUHg==", + "dev": true + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true + } + } + }, + "console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "dev": true + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", + "dev": true + }, + "content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==", + "dev": true + }, + "content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "dev": true + }, + "content-type-parser": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/content-type-parser/-/content-type-parser-1.0.2.tgz", + "integrity": "sha512-lM4l4CnMEwOLHAHr/P6MEZwZFPJFtAAKgL6pogbXmVZggIqXhdB6RbBtPOTsw2FcXwYhehRGERJmRrjOiIB8pQ==", + "dev": true + }, + "convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha512-+IJOX0OqlHCszo2mBUq+SrEbCj6w7Kpffqx60zYbPTFaO4+yYgRjHwcZNpWvaTylDHaV7PPmBHzSecZiMhtPgw==", + "dev": true + }, + "cookie-parser": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.3.5.tgz", + "integrity": "sha512-YN/8nzPcK5o6Op4MIzAd4H4qUal5+3UaMhVIeaafFYL0pKvBQA/9Yhzo7ZwvBpjdGshsiTAb1+FC37M6RdPDFg==", + "dev": true, + "requires": { + "cookie": "0.1.3", + "cookie-signature": "1.0.6" + }, + "dependencies": { + "cookie": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.3.tgz", + "integrity": "sha512-mWkFhcL+HVG1KjeCjEBVJJ7s4sAGMLiBDFSDs4bzzvgLZt7rW8BhP6XV/8b1+pNvx/skd3yYxPuaF3Z6LlQzyw==", + "dev": true + } + } + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "dev": true + }, + "cookiejar": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz", + "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==", + "dev": true + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", + "dev": true + }, + "core-js": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", + "integrity": "sha512-ZiPp9pZlgxpWRu0M+YWbm6+aQ84XEfH1JRXvfOc/fILWI0VKhLC2LX13X1NYq4fULzLMq7Hfh43CSo2/aIaUPA==" + }, + "core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "cosmiconfig": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-2.2.2.tgz", + "integrity": "sha512-GiNXLwAFPYHy25XmTPpafYvn3CLAkJ8FLsscq78MQd1Kh0OU6Yzhn4eV2MVF4G9WEQZoWEGltatdR+ntGPMl5A==", + "dev": true, + "requires": { + "is-directory": "^0.3.1", + "js-yaml": "^3.4.3", + "minimist": "^1.2.0", + "object-assign": "^4.1.0", + "os-homedir": "^1.0.1", + "parse-json": "^2.2.0", + "require-from-string": "^1.1.0" + } + }, + "crc": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/crc/-/crc-3.3.0.tgz", + "integrity": "sha512-QCx3z7FOZbJrapsnewTkh1Hxh6PHV61SRHbx6Q65Uih3y0kfIj+dDGI3uQ4Q1DLKOILyvpZxvJpoKPrxathpCg==", + "dev": true + }, + "create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + }, + "dependencies": { + "bn.js": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz", + "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==", + "dev": true + } + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "create-react-class": { + "version": "15.7.0", + "resolved": "https://registry.npmjs.org/create-react-class/-/create-react-class-15.7.0.tgz", + "integrity": "sha512-QZv4sFWG9S5RUvkTYWbflxeZX+JG7Cz0Tn33rQBJ+WFQTqTfUTjMjiv9tnfXazjsO5r0KhPs+AqCjyrQX6h2ng==", + "requires": { + "loose-envify": "^1.3.1", + "object-assign": "^4.1.1" + } + }, + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "dependencies": { + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + } + } + }, + "crypt": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", + "dev": true + }, + "cryptiles": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "integrity": "sha512-FFN5KwpvvQTTS5hWPxrU8/QE4kQUc6uwZcrnlMBN82t1MgAtq8mnoDwINBly9Tdr02seeIIhtdF+UH1feBYGog==", + "dev": true, + "requires": { + "boom": "2.x.x" + } + }, + "crypto-browserify": { + "version": "3.12.1", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.1.tgz", + "integrity": "sha512-r4ESw/IlusD17lgQi1O20Fa3qNnsckR126TdUuBgAu7GBYSIPvdNyONd3Zrxh0xCwA4+6w/TDArBPsMvhur+KQ==", + "dev": true, + "requires": { + "browserify-cipher": "^1.0.1", + "browserify-sign": "^4.2.3", + "create-ecdh": "^4.0.4", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "diffie-hellman": "^5.0.3", + "hash-base": "~3.0.4", + "inherits": "^2.0.4", + "pbkdf2": "^3.1.2", + "public-encrypt": "^4.0.3", + "randombytes": "^2.1.0", + "randomfill": "^1.0.4" + } + }, + "csrf": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/csrf/-/csrf-3.0.6.tgz", + "integrity": "sha512-3q1ocniLMgk9nHHEt/I/JsN9IfiGjgp6MHgYNT7+CPmQvi5DF6qzenXnZSH6f9Qaa+4DhmUDJa8SgFZ+OFf9Qg==", + "dev": true, + "requires": { + "rndm": "1.2.0", + "tsscmp": "1.0.5", + "uid-safe": "2.1.4" + } + }, + "css-color-names": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "integrity": "sha512-zj5D7X1U2h2zsXOAM8EyUREBnnts6H+Jm+d1M2DbiQQcUtnqgQsMrdo8JW9R80YFUmIdBZeMu5wvYM7hcgWP/Q==", + "dev": true + }, + "css-loader": { + "version": "0.28.11", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-0.28.11.tgz", + "integrity": "sha512-wovHgjAx8ZIMGSL8pTys7edA1ClmzxHeY6n/d97gg5odgsxEgKjULPR0viqyC+FWMCL9sfqoC/QCUBo62tLvPg==", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "css-selector-tokenizer": "^0.7.0", + "cssnano": "^3.10.0", + "icss-utils": "^2.1.0", + "loader-utils": "^1.0.2", + "lodash.camelcase": "^4.3.0", + "object-assign": "^4.1.1", + "postcss": "^5.0.6", + "postcss-modules-extract-imports": "^1.2.0", + "postcss-modules-local-by-default": "^1.2.0", + "postcss-modules-scope": "^1.1.0", + "postcss-modules-values": "^1.3.0", + "postcss-value-parser": "^3.3.0", + "source-list-map": "^2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "postcss-modules-extract-imports": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.1.tgz", + "integrity": "sha512-6jt9XZwUhwmRUhb/CkyJY020PYaPJsCyt3UjbaWo6XEbH/94Hmv6MP7fG2C5NDU/BcHzyGYxNtHvM+LTf9HrYw==", + "dev": true, + "requires": { + "postcss": "^6.0.1" + }, + "dependencies": { + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + } + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "css-modules-loader-core": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/css-modules-loader-core/-/css-modules-loader-core-1.1.0.tgz", + "integrity": "sha512-XWOBwgy5nwBn76aA+6ybUGL/3JBnCtBX9Ay9/OWIpzKYWlVHMazvJ+WtHumfi+xxdPF440cWK7JCYtt8xDifew==", + "dev": true, + "requires": { + "icss-replace-symbols": "1.1.0", + "postcss": "6.0.1", + "postcss-modules-extract-imports": "1.1.0", + "postcss-modules-local-by-default": "1.2.0", + "postcss-modules-scope": "1.1.0", + "postcss-modules-values": "1.3.0" + }, + "dependencies": { + "postcss": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.1.tgz", + "integrity": "sha512-VbGX1LQgQbf9l3cZ3qbUuC3hGqIEOGQFHAEHQ/Diaeo0yLgpgK5Rb8J+OcamIfQ9PbAU/fzBjVtQX3AhJHUvZw==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "css-selector-tokenizer": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.3.tgz", + "integrity": "sha512-jWQv3oCEL5kMErj4wRnK/OPoBi0D+P1FR2cDCKYPaMeD2eW3/mttav8HT4hT1CKopiJI/psEULjkClhvJo4Lvg==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "fastparse": "^1.1.2" + } + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "cssnano": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-3.10.0.tgz", + "integrity": "sha512-0o0IMQE0Ezo4b41Yrm8U6Rp9/Ag81vNXY1gZMnT1XhO4DpjEf2utKERqWJbOoz3g1Wdc1d3QSta/cIuJ1wSTEg==", + "dev": true, + "requires": { + "autoprefixer": "^6.3.1", + "decamelize": "^1.1.2", + "defined": "^1.0.0", + "has": "^1.0.1", + "object-assign": "^4.0.1", + "postcss": "^5.0.14", + "postcss-calc": "^5.2.0", + "postcss-colormin": "^2.1.8", + "postcss-convert-values": "^2.3.4", + "postcss-discard-comments": "^2.0.4", + "postcss-discard-duplicates": "^2.0.1", + "postcss-discard-empty": "^2.0.1", + "postcss-discard-overridden": "^0.1.1", + "postcss-discard-unused": "^2.2.1", + "postcss-filter-plugins": "^2.0.0", + "postcss-merge-idents": "^2.1.5", + "postcss-merge-longhand": "^2.0.1", + "postcss-merge-rules": "^2.0.3", + "postcss-minify-font-values": "^1.0.2", + "postcss-minify-gradients": "^1.0.1", + "postcss-minify-params": "^1.0.4", + "postcss-minify-selectors": "^2.0.4", + "postcss-normalize-charset": "^1.1.0", + "postcss-normalize-url": "^3.0.7", + "postcss-ordered-values": "^2.1.0", + "postcss-reduce-idents": "^2.2.2", + "postcss-reduce-initial": "^1.0.0", + "postcss-reduce-transforms": "^1.0.3", + "postcss-svgo": "^2.1.1", + "postcss-unique-selectors": "^2.0.2", + "postcss-value-parser": "^3.2.3", + "postcss-zindex": "^2.0.1" + } + }, + "csso": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/csso/-/csso-2.3.2.tgz", + "integrity": "sha512-FmCI/hmqDeHHLaIQckMhMZneS84yzUZdrWDAvJVVxOwcKE1P1LF9FGmzr1ktIQSxOw6fl3PaQsmfg+GN+VvR3w==", + "dev": true, + "requires": { + "clap": "^1.0.9", + "source-map": "^0.5.3" + } + }, + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + }, + "cssstyle": { + "version": "0.2.37", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz", + "integrity": "sha512-FUpKc+1FNBsHUr9IsfSGCovr8VuGOiiuzlgCyppKBjJi2jYTOFLN3oiiNRMIvYqbFzF38mqKj4BgcevzU5/kIA==", + "dev": true, + "requires": { + "cssom": "0.3.x" + } + }, + "csurf": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/csurf/-/csurf-1.8.3.tgz", + "integrity": "sha512-p2NJ9fGOn5HCaV9jAOBCSjIGMRMrpm9/yDswD0bFi7zQv1ifDufIKI5nem9RmhMsH6jVD6Sx6vs57hnivvkJJw==", + "dev": true, + "requires": { + "cookie": "0.1.3", + "cookie-signature": "1.0.6", + "csrf": "~3.0.0", + "http-errors": "~1.3.1" + }, + "dependencies": { + "cookie": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.3.tgz", + "integrity": "sha512-mWkFhcL+HVG1KjeCjEBVJJ7s4sAGMLiBDFSDs4bzzvgLZt7rW8BhP6XV/8b1+pNvx/skd3yYxPuaF3Z6LlQzyw==", + "dev": true + }, + "http-errors": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz", + "integrity": "sha512-gMygNskMurDCWfoCdyh1gOeDfSbkAHXqz94QoPj5IHIUjC/BG8/xv7FSEUr7waR5RcAya4j58bft9Wu/wHNeXA==", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "statuses": "1" + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true + } + } + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha512-/fITjgjGU50vjQ4FH6eUoYu+iUoUKIXws2hL15JJpIR+BbTxaXQsMuuyjtNh2WqsSBS5nsaZHFsFecyw5CCAng==", + "dev": true, + "requires": { + "array-find-index": "^1.0.1" + } + }, + "custom-event": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", + "integrity": "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==", + "dev": true + }, + "d": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz", + "integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==", + "dev": true, + "requires": { + "es5-ext": "^0.10.64", + "type": "^2.7.2" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "dateformat": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.2.0.tgz", + "integrity": "sha512-GODcnWq3YGoTnygPfi02ygEiRxqUxpJwuRHjdhJYuxpcZmDq4rjBiXYmbCCzStxo176ixfLT6i4NPwQooRySnw==", + "dev": true + }, + "deasync": { + "version": "0.1.30", + "resolved": "https://registry.npmjs.org/deasync/-/deasync-0.1.30.tgz", + "integrity": "sha512-OaAjvEQuQ9tJsKG4oHO9nV1UHTwb2Qc2+fadB0VeVtD0Z9wiG1XPGLJ4W3aLhAoQSYTaLROFRbd5X20Dkzf7MQ==", + "dev": true, + "requires": { + "bindings": "^1.5.0", + "node-addon-api": "^1.7.1" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "debuglog": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz", + "integrity": "sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw==", + "dev": true + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", + "dev": true + }, + "decomment": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/decomment/-/decomment-0.8.8.tgz", + "integrity": "sha512-xVbmniKld/kjjmoHjT0Ex35aa16zw29WEzSAflBcMawjqDtZlrR6wkSwYV0mwJYytDz8JEAYia5Pl8IJRXdWLg==", + "dev": true, + "requires": { + "esprima": "^4.0.0" + } + }, + "deep-eql": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", + "integrity": "sha512-6sEotTRGBFiNcqVoeHwnfopbSpi5NbH1VWJmYCVkmxMmaVTT0bUTrNaGyBwhgP4MZL012W/mkzIn3Da+iDYweg==", + "dev": true, + "requires": { + "type-detect": "0.1.1" + }, + "dependencies": { + "type-detect": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz", + "integrity": "sha512-5rqszGVwYgBoDkIm2oUtvkfZMQ0vk29iDMU0W2qCa3rG0vPDNczCMT4hV/bLBgLg8k8ri6+u3Zbt+S/14eMzlA==", + "dev": true + } + } + }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "default-require-extensions": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", + "integrity": "sha512-Dn2eAftOqXhNXs5f/Xjn7QTZ6kDYkx7u0EXQInN1oyYwsZysu11q7oTtaKcbzLxZRJiDHa8VmwpWmb4lY5FqgA==", + "dev": true, + "requires": { + "strip-bom": "^2.0.0" + }, + "dependencies": { + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + } + } + }, + "defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dev": true, + "requires": { + "clone": "^1.0.2" + } + }, + "define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "requires": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + } + }, + "define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "requires": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-descriptor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", + "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + } + } + } + }, + "defined": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.1.tgz", + "integrity": "sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==", + "dev": true + }, + "del": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "integrity": "sha512-Z4fzpbIRjOu7lO5jCETSWoqUDVe0IPOlfugBsF6suen2LKDlVb4QZpKEM9P+buNJ4KI1eN7I083w/pbKUpsrWQ==", + "dev": true, + "requires": { + "globby": "^5.0.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "rimraf": "^2.2.8" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "dev": true + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true + }, + "deprecated": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/deprecated/-/deprecated-0.0.1.tgz", + "integrity": "sha512-BRACtc6B1mJe2J2mruHFqHWrtLy0Qppu/7LKdqWH3o/9j1L/1phPUaQV+2S3H8ZDW0k6h+NEOKcHBDRikWLiOA==", + "dev": true + }, + "des.js": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz", + "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true + }, + "detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==", + "dev": true + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha512-BDKtmHlOzwI7iRuEkhzsnPoi5ypEhWAJB5RvHWe1kMr06js3uK5B3734i3ui5Yd+wOJV1cpE4JnivPD283GU/A==", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "dezalgo": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", + "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", + "dev": true, + "requires": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, + "di": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", + "integrity": "sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==", + "dev": true + }, + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz", + "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==", + "dev": true + } + } + }, + "dom-serialize": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", + "integrity": "sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ==", + "dev": true, + "requires": { + "custom-event": "~1.0.0", + "ent": "~2.2.0", + "extend": "^3.0.0", + "void-elements": "^2.0.0" + } + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true + }, + "dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dev": true, + "requires": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + } + }, + "duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true + }, + "duplexer2": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", + "integrity": "sha512-+AWBwjGadtksxjOQSFDhPNQbed7icNXApT4+2BNpsXzcCBiInq2H9XW0O8sfHFaPmnQRs7cg/P0fAr2IWQSW0g==", + "dev": true, + "requires": { + "readable-stream": "~1.1.9" + } + }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.5.228", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.228.tgz", + "integrity": "sha512-nxkiyuqAn4MJ1QbobwqJILiDtu/jk14hEAWaMiJmNPh1Z+jqoFlBFZjdXwLWGeVSeu9hGLg6+2G9yJaW8rBIFA==", + "dev": true + }, + "elliptic": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.6.1.tgz", + "integrity": "sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==", + "dev": true, + "requires": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz", + "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==", + "dev": true + } + } + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true + }, + "encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "requires": { + "iconv-lite": "^0.6.2" + } + }, + "end-of-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.1.0.tgz", + "integrity": "sha512-EoulkdKF/1xa92q25PbjuDcgJ9RDHYU2Rs3SCIvs2/dSQ3BpmxneNHmA/M7fe60M3PrV7nNGTTNbkK62l6vXiQ==", + "dev": true, + "requires": { + "once": "~1.3.0" + }, + "dependencies": { + "once": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "integrity": "sha512-6vaNInhu+CHxtONf3zw3vq4SP2DOQhjBvIa3rNcG0+P7eKWlYH6Peu7rHizSloRU2EwMz6GraLieis9Ac9+p1w==", + "dev": true, + "requires": { + "wrappy": "1" + } + } + } + }, + "engine.io": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-1.8.5.tgz", + "integrity": "sha512-j1DWIcktw4hRwrv6nWx++5nFH2X64x16MAG2P0Lmi5Dvdfi3I+Jhc7JKJIdAmDJa+5aZ/imHV7dWRPy2Cqjh3A==", + "dev": true, + "requires": { + "accepts": "1.3.3", + "base64id": "1.0.0", + "cookie": "0.3.1", + "debug": "2.3.3", + "engine.io-parser": "1.3.2", + "ws": "~1.1.5" + }, + "dependencies": { + "debug": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "integrity": "sha512-dCHp4G+F11zb+RtEu7BE2U8R32AYmM/4bljQfut8LipH3PdwsVBVGh083MXvtKkB7HSQUzSwiXz53c4mzJvYfw==", + "dev": true, + "requires": { + "ms": "0.7.2" + } + }, + "ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha512-5NnE67nQSQDJHVahPJna1PQ/zCXMnQop3yUCxjKPNzCxuyPSKWTQ/5Gu5CZmjetwGLWRA+PzeF5thlbOdbQldA==", + "dev": true + } + } + }, + "engine.io-client": { + "version": "1.8.6", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-1.8.6.tgz", + "integrity": "sha512-6+rInQu8xU7c0fIF6RC4SRKuHVWPt8Xq0bZYS4lMrTwmhRineOlEMsU3X0zS5mHIvCgJsmpOKEX7DhihGk7j0g==", + "dev": true, + "requires": { + "component-emitter": "1.2.1", + "component-inherit": "0.0.3", + "debug": "2.3.3", + "engine.io-parser": "1.3.2", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "parsejson": "0.0.3", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "ws": "~1.1.5", + "xmlhttprequest-ssl": "1.6.3", + "yeast": "0.1.2" + }, + "dependencies": { + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha512-jPatnhd33viNplKjqXKRkGU345p263OIWzDL2wH3LGIGp5Kojo+uXizHmOADRvhGFFTnJqX3jBAKP6vvmSDKcA==", + "dev": true + }, + "debug": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "integrity": "sha512-dCHp4G+F11zb+RtEu7BE2U8R32AYmM/4bljQfut8LipH3PdwsVBVGh083MXvtKkB7HSQUzSwiXz53c4mzJvYfw==", + "dev": true, + "requires": { + "ms": "0.7.2" + } + }, + "ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha512-5NnE67nQSQDJHVahPJna1PQ/zCXMnQop3yUCxjKPNzCxuyPSKWTQ/5Gu5CZmjetwGLWRA+PzeF5thlbOdbQldA==", + "dev": true + } + } + }, + "engine.io-parser": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-1.3.2.tgz", + "integrity": "sha512-3UyTJo+5Jbmr7rd3MosTAApK7BOIo4sjx8dJYSHa3Em5R3A9Y2s9GWu4JFJe6Px0VieJC0hKUA5NBytC+O7k2A==", + "dev": true, + "requires": { + "after": "0.8.2", + "arraybuffer.slice": "0.0.6", + "base64-arraybuffer": "0.1.5", + "blob": "0.0.4", + "has-binary": "0.1.7", + "wtf-8": "1.0.0" + } + }, + "enhanced-resolve": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz", + "integrity": "sha512-ZaAux1rigq1e2nQrztHn4h2ugvpzZxs64qneNah+8Mh/K0CRqJFJc+UoXnUsq+1yX+DmQFPPdVqboKAJ89e0Iw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.4.0", + "object-assign": "^4.0.1", + "tapable": "^0.2.7" + } + }, + "ent": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.2.tgz", + "integrity": "sha512-kKvD1tO6BM+oK9HzCPpUdRb4vKFQY/FPTFmurMvh6LlN68VMrdj77w8yp51/kDbpkFOS9J8w5W6zIzgM2H8/hw==", + "dev": true, + "requires": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "punycode": "^1.4.1", + "safe-regex-test": "^1.1.0" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "dev": true + } + } + }, + "errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dev": true, + "requires": { + "prr": "~1.0.1" + } + }, + "error-ex": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", + "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "errorhandler": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.4.3.tgz", + "integrity": "sha512-pp1hk9sZBq4Bj/e/Cl84fJ3cYiQDFZk3prp7jrurUbPGOlY7zA2OubjhhEAWuUb8VNTFIkGwoby7Uq6YpicfvQ==", + "dev": true, + "requires": { + "accepts": "~1.3.0", + "escape-html": "~1.0.3" + } + }, + "es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "dev": true + }, + "es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true + }, + "es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dev": true, + "requires": { + "es-errors": "^1.3.0" + } + }, + "es5-ext": { + "version": "0.10.64", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz", + "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==", + "dev": true, + "requires": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "esniff": "^2.0.1", + "next-tick": "^1.1.0" + } + }, + "es6-collections": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/es6-collections/-/es6-collections-0.5.6.tgz", + "integrity": "sha512-00CyNymrhAP9f/wv/0UiIpQz+EiceFPdn4pH4pkEvijenhQrSXSkACoXZ8JXyLiY6uF4xNyunXAFwDE9ndsmOA==" + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-map": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", + "integrity": "sha512-mz3UqCh0uPCIqsw1SSAkB/p0rOzF/M0V++vyN7JqlPtSW/VsYgQBvVvqMLmfBuyMzTpLnNqi6JmcSizs4jy19A==", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14", + "es6-iterator": "~2.0.1", + "es6-set": "~0.1.5", + "es6-symbol": "~3.1.1", + "event-emitter": "~0.3.5" + } + }, + "es6-promise": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.1.1.tgz", + "integrity": "sha512-OaU1hHjgJf+b0NzsxCg7NdIYERD6Hy/PEmFLTjw+b65scuisG3Kt4QoTvJ66BBkPZ581gr0kpoVzKnxniM8nng==" + }, + "es6-set": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.6.tgz", + "integrity": "sha512-TE3LgGLDIBX332jq3ypv6bcOpkLO0AslAQo7p2VqX/1N46YNsvIWgvjojjSEnWEGWMhr1qUbYeTSir5J6mFHOw==", + "dev": true, + "requires": { + "d": "^1.0.1", + "es5-ext": "^0.10.62", + "es6-iterator": "~2.0.3", + "es6-symbol": "^3.1.3", + "event-emitter": "^0.3.5", + "type": "^2.7.2" + } + }, + "es6-symbol": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz", + "integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==", + "dev": true, + "requires": { + "d": "^1.0.2", + "ext": "^1.7.0" + } + }, + "es6-templates": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/es6-templates/-/es6-templates-0.2.3.tgz", + "integrity": "sha512-sziUVwcvQ+lOsrTyUY0Q11ilAPj+dy7AQ1E1MgSaHTaaAFTffaa08QSlGNU61iyVaroyb6nYdBV6oD7nzn6i8w==", + "dev": true, + "requires": { + "recast": "~0.11.12", + "through": "~2.3.6" + } + }, + "es6-weak-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.1" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "escodegen": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "dev": true, + "requires": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + } + } + }, + "escope": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", + "integrity": "sha512-75IUQsusDdalQEW/G/2esa87J7raqdJF+Ca0/Xm5C3Q58Nr4yVYjZGp/P1+2xiEVgXRrA39dpRb8LcshajbqDQ==", + "dev": true, + "requires": { + "es6-map": "^0.1.3", + "es6-weak-map": "^2.0.1", + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "esniff": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz", + "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==", + "dev": true, + "requires": { + "d": "^1.0.1", + "es5-ext": "^0.10.62", + "event-emitter": "^0.3.5", + "type": "^2.7.2" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "etag": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.7.0.tgz", + "integrity": "sha512-Mbv5pNpLNPrm1b4rzZlZlfTRpdDr31oiD43N362sIyvSWVNu5Du33EcJGzvEV4YdYLuENB1HzND907cQkFmXNw==", + "dev": true + }, + "event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "event-stream": { + "version": "3.0.20", + "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.0.20.tgz", + "integrity": "sha512-u2P2ZUf2wN0LBDY6gDNMH+GvLer2Fpb0IAw7i6abjy8HLZnhdobM10Qohn86mwTKy3lcV9VuUms0aU9kpfBrow==", + "dev": true, + "requires": { + "duplexer": "~0.1.1", + "from": "~0", + "map-stream": "~0.0.3", + "pause-stream": "0.0.11", + "split": "0.2", + "stream-combiner": "~0.0.3", + "through": "~2.3.1" + } + }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "exec-sh": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.2.2.tgz", + "integrity": "sha512-FIUCJz1RbuS0FKTdaAafAByGS0CPvU3R0MeHxgtl+djzCc//F8HakL8GzmVNZanasTbTAY/3DRFA0KpVqj/eAw==", + "dev": true, + "requires": { + "merge": "^1.2.0" + } + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==", + "dev": true, + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "exit-hook": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", + "integrity": "sha512-MsG3prOVw1WtLXAZbM3KiYtooKR1LvxHh3VHsVtIy0uiUu8usxgB/94DP2HxtD/661lLdB6yzQ09lGJSQr6nkg==", + "dev": true + }, + "expand-braces": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/expand-braces/-/expand-braces-0.1.2.tgz", + "integrity": "sha512-zOOsEnAhvIxxd0esCNbYG2xerGf46niZ1egS43eV7Fu4t7VIScgPXMcMabCLaPrqkzwvwo6zZipDiX3t0ILF2w==", + "dev": true, + "requires": { + "array-slice": "^0.2.3", + "array-unique": "^0.2.1", + "braces": "^0.1.2" + }, + "dependencies": { + "array-slice": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz", + "integrity": "sha512-rlVfZW/1Ph2SNySXwR9QYkChp8EkOEiTMO5Vwx60usw04i4nWemkm9RXmQqgkQFaLHsqLuADvjp6IfgL9l2M8Q==", + "dev": true + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha512-G2n5bG5fSUCpnsXz4+8FUkYsGPkNfLn9YvS66U5qbTIXI2Ynnlo4Bi42bWv+omKUCqz+ejzfClwne0alJWJPhg==", + "dev": true + }, + "braces": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-0.1.5.tgz", + "integrity": "sha512-EIMHIv2UXHWFY2xubUGKz+hq9hNkENj4Pjvr7h58cmJgpkK2yMlKA8I484f7MSttkzVAy/lL7X9xDaILd6avzA==", + "dev": true, + "requires": { + "expand-range": "^0.1.0" + } + }, + "expand-range": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-0.1.1.tgz", + "integrity": "sha512-busOHJ0t7t5UcutcyNDqmaDX+1cb0XlqsAUgTlmplVv0rIqBaMcBSZRLlkDm0nxtl8O3o/EvRRrdQ/WnyPERLQ==", + "dev": true, + "requires": { + "is-number": "^0.1.1", + "repeat-string": "^0.2.2" + } + }, + "is-number": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-0.1.1.tgz", + "integrity": "sha512-la5kPULwIgkSSaZj9w7/A1uHqOBAgOhDUKQ5CkfL8LZ4Si6r4+2D0hI6b4o60MW4Uj2yNJARWIZUDPxlvOYQcw==", + "dev": true + }, + "repeat-string": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-0.2.2.tgz", + "integrity": "sha512-yHeI3F9v20MY+8/5WAUgIWseMZwpLD+l9h5hGyzh6fQjhle2AwjjRDao1m5IozSDuVvMw09/mvE8AU1oDmZKpQ==", + "dev": true + } + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha512-AFASGfIlnIbkKPQwX1yHaDjFvh/1gyKJODme52V6IORh69uEYgZp0o9C+qsIGNVEiuuhQU0CSSl++Rlegg1qvA==", + "dev": true, + "requires": { + "fill-range": "^2.1.0" + }, + "dependencies": { + "fill-range": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", + "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", + "dev": true, + "requires": { + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^3.0.0", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" + } + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha512-QUzH43Gfb9+5yckcrSA0VBDwEtDUchrk4F6tfJZQuNzDJbEDB9cZNzSfXGQ1jqmdDY/kl41lUOWM9syA8z8jlg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "express": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.14.1.tgz", + "integrity": "sha512-aL+R5JmMN85tiMiWNx3wge9k3hjqezh530Nbc36kJezDZO8hkK+LBaaFvv9wziPiigK6vCubJ+omjQyqt8keYw==", + "dev": true, + "requires": { + "accepts": "~1.3.3", + "array-flatten": "1.1.1", + "content-disposition": "0.5.2", + "content-type": "~1.0.2", + "cookie": "0.3.1", + "cookie-signature": "1.0.6", + "debug": "~2.2.0", + "depd": "~1.1.0", + "encodeurl": "~1.0.1", + "escape-html": "~1.0.3", + "etag": "~1.7.0", + "finalhandler": "0.5.1", + "fresh": "0.3.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.1", + "path-to-regexp": "0.1.7", + "proxy-addr": "~1.1.3", + "qs": "6.2.0", + "range-parser": "~1.2.0", + "send": "0.14.2", + "serve-static": "~1.11.2", + "type-is": "~1.6.14", + "utils-merge": "1.0.0", + "vary": "~1.1.0" + }, + "dependencies": { + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha512-X0rGvJcskG1c3TgSCPqHJ0XJgwlcvOC7elJ5Y0hYuKBZoVqWpAMfLOeIh2UI/DCQ5ruodIjvsugZtjUYUw2pUw==", + "dev": true, + "requires": { + "ms": "0.7.1" + } + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true + }, + "finalhandler": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-0.5.1.tgz", + "integrity": "sha512-PYuh1UzGGCOoRvrbGYCq6memvx41rxMCr+0XT9NtiIWqGG7hbCBcPMBRQoi5sMZDzTOxwiuv7/gwPtrDOz76CQ==", + "dev": true, + "requires": { + "debug": "~2.2.0", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "statuses": "~1.3.1", + "unpipe": "~1.0.0" + } + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha512-lRLiIR9fSNpnP6TC4v8+4OU7oStC01esuNowdQ34L+Gk8e5Puoc88IqJ+XAY/B3Mn2ZKis8l8HX90oU8ivzUHg==", + "dev": true + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "qs": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.0.tgz", + "integrity": "sha512-xJlDcRyZKEdvI99YhwNqGKmeiOCcfxk5E09Gof/E8xSpiMcqJ+BCwPZ3ykEYQdwDlmTpK6YlPB/kd8zfy9e7wg==", + "dev": true + }, + "statuses": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha512-wuTCPGlJONk/a1kqZ4fQM2+908lC7fa7nPYpTC1EhnvqLX/IICbeP1OZGDtA374trpSq68YubKUMo8oRhN46yg==", + "dev": true + }, + "utils-merge": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz", + "integrity": "sha512-HwU9SLQEtyo+0uoKXd1nkLqigUWLB+QuNQR4OcmB73eWqksM5ovuqcycks2x043W8XVb75rG1HQ0h93TMXkzQQ==", + "dev": true + } + } + }, + "express-session": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.11.3.tgz", + "integrity": "sha512-QdSbGRRg+JMvlYpancRDFXDmIMqjEdpowriwQc4Kz3mvPwTnOPD/h5FSS21+4z4Isosta+ULmEwL6F3/lylWWg==", + "dev": true, + "requires": { + "cookie": "0.1.3", + "cookie-signature": "1.0.6", + "crc": "3.3.0", + "debug": "~2.2.0", + "depd": "~1.0.1", + "on-headers": "~1.0.0", + "parseurl": "~1.3.0", + "uid-safe": "~2.0.0", + "utils-merge": "1.0.0" + }, + "dependencies": { + "cookie": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.3.tgz", + "integrity": "sha512-mWkFhcL+HVG1KjeCjEBVJJ7s4sAGMLiBDFSDs4bzzvgLZt7rW8BhP6XV/8b1+pNvx/skd3yYxPuaF3Z6LlQzyw==", + "dev": true + }, + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha512-X0rGvJcskG1c3TgSCPqHJ0XJgwlcvOC7elJ5Y0hYuKBZoVqWpAMfLOeIh2UI/DCQ5ruodIjvsugZtjUYUw2pUw==", + "dev": true, + "requires": { + "ms": "0.7.1" + } + }, + "depd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.0.1.tgz", + "integrity": "sha512-OEWAMbCkK9IWQ8pfTvHBhCSqHgR+sk5pbiYqq0FqfARG4Cy+cRsCbITx6wh5pcsmfBPiJAcbd98tfdz5fnBbag==", + "dev": true + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha512-lRLiIR9fSNpnP6TC4v8+4OU7oStC01esuNowdQ34L+Gk8e5Puoc88IqJ+XAY/B3Mn2ZKis8l8HX90oU8ivzUHg==", + "dev": true + }, + "uid-safe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.0.0.tgz", + "integrity": "sha512-PH/12q0a/sEGVS28fZ5evILW2Ayn13PwkYmCleDsIPm39vUIqN58hjyqtUd496kyMY6WkXtaDMDpS8nSCmNKTg==", + "dev": true, + "requires": { + "base64-url": "1.2.1" + } + }, + "utils-merge": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz", + "integrity": "sha512-HwU9SLQEtyo+0uoKXd1nkLqigUWLB+QuNQR4OcmB73eWqksM5ovuqcycks2x043W8XVb75rG1HQ0h93TMXkzQQ==", + "dev": true + } + } + }, + "ext": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", + "dev": true, + "requires": { + "type": "^2.7.2" + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "external-editor": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-1.1.1.tgz", + "integrity": "sha512-0XYlP43jzxMgJjugDJ85Z0UDPnowkUbfFztNvsSGC9sJVIk97MZbGEb9WAhIVH0UgNxoLj/9ZQgB4CHJyz2GGQ==", + "dev": true, + "requires": { + "extend": "^3.0.0", + "spawn-sync": "^1.0.15", + "tmp": "^0.0.29" + }, + "dependencies": { + "tmp": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.29.tgz", + "integrity": "sha512-89PTqMWGDva+GqClOqBV9s3SMh7MA3Mq0pJUdAoHuF65YoE7O0LermaZkVfT5/Ngfo18H4eYiyG7zKOtnEbxsw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.1" + } + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-descriptor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", + "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + } + } + } + }, + "extract-zip": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz", + "integrity": "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==", + "dev": true, + "requires": { + "concat-stream": "^1.6.2", + "debug": "^2.6.9", + "mkdirp": "^0.5.4", + "yauzl": "^2.10.0" + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", + "dev": true + }, + "fancy-log": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", + "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", + "dev": true, + "requires": { + "ansi-gray": "^0.1.1", + "color-support": "^1.1.3", + "parse-node-version": "^1.0.0", + "time-stamp": "^1.0.0" + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "fastparse": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", + "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", + "dev": true + }, + "faye-websocket": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha512-Xhj93RXbMSq8urNCUq4p9l0P6hnySJ/7YNRhYNug0bLOuii7pKO7xQFb5mx9xZXWCar88pLPb805PvUkwrLZpQ==", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, + "requires": { + "bser": "2.1.1" + } + }, + "fbjs": { + "version": "0.8.18", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.18.tgz", + "integrity": "sha512-EQaWFK+fEPSoibjNy8IxUtaFOMXcWsY0JaVrQoZR9zC8N2Ygf9iDITPWjUTVIax95b6I742JFLqASHfsag/vKA==", + "requires": { + "core-js": "^1.0.0", + "isomorphic-fetch": "^2.1.1", + "loose-envify": "^1.0.0", + "object-assign": "^4.1.0", + "promise": "^7.1.1", + "setimmediate": "^1.0.5", + "ua-parser-js": "^0.7.30" + } + }, + "fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dev": true, + "requires": { + "pend": "~1.2.0" + } + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha512-UxKlfCRuCBxSXU4C6t9scbDyWZ4VlaFFdojKtzJuSkuOBQ5CNFum+zZXFwHjo+CxBC1t6zlYPgHIgFjL8ggoEQ==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + } + }, + "file-loader": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-1.1.11.tgz", + "integrity": "sha512-TGR4HU7HUsGg6GCOPJnFk06RhWgEWFLAGWiT6rcD+GRC2keU3s9RGJ+b3Z6/U73jwwNb2gKLJ7YCrp+jvU4ALg==", + "dev": true, + "requires": { + "loader-utils": "^1.0.2", + "schema-utils": "^0.4.5" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true + }, + "schema-utils": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz", + "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha512-BTCqyBaWBTsauvnHiE8i562+EdJj+oUpkqWp2R1iCoR8f6oo8STRu3of7WJJ0TqWtxN50a5YFpzYK4Jj9esYfQ==", + "dev": true + }, + "fileset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", + "integrity": "sha512-UxowFKnAFIwtmSxgKjWAVgjE3Fk7MQJT0ZIyl0NwIFZTrx4913rLaonGJ84V+x/2+w/pe4ULHRns+GZPs1TVuw==", + "dev": true, + "requires": { + "glob": "^7.0.3", + "minimatch": "^3.0.3" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "dependencies": { + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true + } + } + }, + "find-index": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/find-index/-/find-index-0.1.1.tgz", + "integrity": "sha512-uJ5vWrfBKMcE6y2Z8834dwEZj9mNGxYa3t3I53OwFeuZ8D9oc2E5zcsrkuhX6h4iYrjhiv0T3szQmxlAV9uxDg==", + "dev": true + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "findup-sync": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", + "integrity": "sha512-vs+3unmJT45eczmcAZ6zMJtxN3l/QXeccaXQx5cu/MeJMhewVfoWZqibRkOxPnmoR59+Zy5hjabfQc6JLSah4g==", + "dev": true, + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^3.1.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + } + }, + "fined": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", + "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", + "dev": true, + "requires": { + "expand-tilde": "^2.0.2", + "is-plain-object": "^2.0.3", + "object.defaults": "^1.1.0", + "object.pick": "^1.2.0", + "parse-filepath": "^1.0.1" + } + }, + "first-chunk-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz", + "integrity": "sha512-ArRi5axuv66gEsyl3UuK80CzW7t56hem73YGNYxNWTGNKFJUadSb9Gu9SHijYEUi8ulQMf1bJomYNwSCPHhtTQ==", + "dev": true + }, + "flagged-respawn": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", + "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", + "dev": true + }, + "flatten": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz", + "integrity": "sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==", + "dev": true + }, + "follow-redirects": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", + "dev": true + }, + "for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "dev": true, + "requires": { + "is-callable": "^1.2.7" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", + "dev": true + }, + "for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==", + "dev": true, + "requires": { + "for-in": "^1.0.1" + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", + "dev": true + }, + "fork-stream": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/fork-stream/-/fork-stream-0.0.4.tgz", + "integrity": "sha512-Pqq5NnT78ehvUnAk/We/Jr22vSvanRlFTpAmQ88xBY/M1TlHe+P0ILuEyXS595ysdGfaj22634LBkGMA2GTcpA==", + "dev": true + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "formatio": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/formatio/-/formatio-1.1.1.tgz", + "integrity": "sha512-cPh7is6k3d8tIUh+pnXXuAbD/uhSXGgqLPw0UrYpv5lfdJ+MMMSjx40JNpqP7Top9Nt25YomWEiRmkHbOvkCaA==", + "dev": true, + "requires": { + "samsam": "~1.1" + } + }, + "formidable": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.6.tgz", + "integrity": "sha512-KcpbcpuLNOwrEjnbpMC0gS+X8ciDoZE1kkqzat4a8vrprf+s9pKNQ/QIwWfbfs4ltgmFl3MD177SNTkve3BwGQ==", + "dev": true + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha512-Ua9xNhH0b8pwE3yRbFfXJvfdWF0UHNCdeyb2sbi9Ul/M+r3PTdrz7Cv4SCfZRMjmzEM9PhraqfZFbGTIg3OMyA==", + "dev": true + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.3.0.tgz", + "integrity": "sha512-akx5WBKAwMSg36qoHTuMMVncHWctlaDGslJASDYAhoLrzDUDCjZlOngNa/iC6lPm9aA0qk8pN5KnpmbJHSIIQQ==", + "dev": true + }, + "from": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", + "integrity": "sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==", + "dev": true + }, + "fs-extra": { + "version": "0.26.7", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.26.7.tgz", + "integrity": "sha512-waKu+1KumRhYv8D8gMRCKJGAMI9pRnPuEb1mvgYD0f7wBscg+h6bW4FDTmEZhB9VKxvoTtxW+Y7bnIlB7zja6Q==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^2.1.0", + "klaw": "^1.0.0", + "path-is-absolute": "^1.0.0", + "rimraf": "^2.2.8" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } + }, + "fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + } + }, + "function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==", + "dev": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "gaze": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-0.5.2.tgz", + "integrity": "sha512-3IWbXGkDDHFX8zIlNdfnmhvlSMhpBO6tDr4InB8fGku6dh/gjFPGNqcdsXJajZg05x9jRzXbL6gCnCnuMap4tw==", + "dev": true, + "requires": { + "globule": "~0.1.0" + } + }, + "generate-function": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", + "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", + "dev": true, + "requires": { + "is-property": "^1.0.2" + } + }, + "generate-object-property": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", + "integrity": "sha512-TuOwZWgJ2VAMEGJvAyPWvpqxSANF0LDpmyHauMjFYzaACvn+QTT/AZomvPCzVBV7yDN3OmwHQ5OvHaeLKre3JQ==", + "dev": true, + "requires": { + "is-property": "^1.0.0" + } + }, + "generator-function": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", + "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", + "dev": true + }, + "generic-names": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/generic-names/-/generic-names-1.0.3.tgz", + "integrity": "sha512-b6OHfQuKasIKM9b6YPkX+KUj/TLBTx3B/1aT1T5F12FEuEqyFMdr59OMS53aoaSw8eVtapdqieX6lbg5opaOhA==", + "dev": true, + "requires": { + "loader-utils": "^0.2.16" + }, + "dependencies": { + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "dev": true + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha512-knHEZMgs8BB+MInokmNTg/OyPlAddghe1YBgNwJBc5zsJi/uyIcXoSDsL/W9ymOsBoBGdPIHXYJ9+qKFwRwDng==", + "dev": true + }, + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha512-tiv66G0SmiOx+pLWMtGEkfSEejxvb6N6uRrQjfWJIT79W9GMpgKeCAmm9aVBKtd4WEgntciI8CsGqjpDoCWJug==", + "dev": true, + "requires": { + "big.js": "^3.1.3", + "emojis-list": "^2.0.0", + "json5": "^0.5.0", + "object-assign": "^4.0.1" + } + } + } + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "dev": true, + "requires": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + } + }, + "get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, + "requires": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + } + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw==", + "dev": true + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", + "dev": true + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "git-repo-info": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/git-repo-info/-/git-repo-info-1.1.4.tgz", + "integrity": "sha512-BM1q39ZsMWzXW2RKNhCZIpUeonqg982X2Y1w/KBxsfgo0g1UqHBdjh8nsLcL9Wr7IPhLsP4/tZ6gTqW+IVv+lA==", + "dev": true + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha512-ab1S1g1EbO7YzauaJLkgLp7DZVAqj9M/dvKlTt8DkXA2tiOIcSMrlVI2J1RZyB5iJVccEscjGn+kpOG9788MHA==", + "dev": true, + "requires": { + "glob-parent": "^2.0.0", + "is-glob": "^2.0.0" + }, + "dependencies": { + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + } + } + }, + "glob-escape": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/glob-escape/-/glob-escape-0.0.2.tgz", + "integrity": "sha512-L/cXYz8x7qer1HAyUQ+mbjcUsJVdpRxpAf7CwqHoNBs9vTpABlGfNN4tzkDxt+u3Z7ZncVyKlCNPtzb0R/7WbA==", + "dev": true + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha512-JDYOvfxio/t42HKdxkAYaCiBN7oYiuxykOxKxdaUW5Qn0zaYN3gRQWolrwdnf0shM9/EP0ebuuTmyoXNr1cC5w==", + "dev": true, + "requires": { + "is-glob": "^2.0.0" + }, + "dependencies": { + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + } + } + }, + "glob-stream": { + "version": "3.1.18", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-3.1.18.tgz", + "integrity": "sha512-owHtlMMXIAbxLjhUAO0HhW1/TB7kV0AwDduI3BLbYsWCaRzNIcLBu8N0wHZft2Za2SCmUXCEOdpZzC7k/H19eg==", + "dev": true, + "requires": { + "glob": "^4.3.1", + "glob2base": "^0.0.12", + "minimatch": "^2.0.1", + "ordered-read-streams": "^0.1.0", + "through2": "^0.6.1", + "unique-stream": "^1.0.0" + }, + "dependencies": { + "glob": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz", + "integrity": "sha512-I0rTWUKSZKxPSIAIaqhSXTM/DiII6wame+rEC3cFA5Lqmr9YmdL7z6Hj9+bdWtTvoY1Su4/OiMLmb37Y7JzvJQ==", + "dev": true, + "requires": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^2.0.1", + "once": "^1.3.0" + } + }, + "minimatch": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", + "integrity": "sha512-jQo6o1qSVLEWaw3l+bwYA2X0uLuK2KjNh2wjgO7Q/9UJnXr1Q3yQKR8BI0/Bt/rPg75e6SMW4hW/6cBHVTZUjA==", + "dev": true, + "requires": { + "brace-expansion": "^1.0.0" + } + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha512-RkK/CCESdTKQZHdmKICijdKKsCRVHs5KsLZ6pACAmF/1GPUQhonHSXWNERctxEp7RmvjdNbZTL5z9V7nSCXKcg==", + "dev": true, + "requires": { + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" + } + } + } + }, + "glob-watcher": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-0.0.6.tgz", + "integrity": "sha512-lzYWq1BJLBmtb9rzT6+lgbFlEW6Sc7B+Qs3RmsNA9lbdFSqLHhebfypPR3nbEOMeEQyawVXqSDH0aqjtImldow==", + "dev": true, + "requires": { + "gaze": "^0.5.1" + } + }, + "glob2base": { + "version": "0.0.12", + "resolved": "https://registry.npmjs.org/glob2base/-/glob2base-0.0.12.tgz", + "integrity": "sha512-ZyqlgowMbfj2NPjxaZZ/EtsXlOch28FRXgMd64vqZWk1bT9+wvSRLYD1om9M7QfQru51zJPAT17qXm4/zd+9QA==", + "dev": true, + "requires": { + "find-index": "^0.1.1" + } + }, + "global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "requires": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + } + }, + "global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", + "dev": true, + "requires": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + }, + "globby": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "integrity": "sha512-HJRTIH2EeH44ka+LWig+EqT2ONSYpVlNfx6pyd592/VF1TbfljJ7elwie7oSwcViLGqOdWocSdu2txwBF9bjmQ==", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "globule": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/globule/-/globule-0.1.0.tgz", + "integrity": "sha512-3eIcA2OjPCm4VvwIwZPzIxCVssA8HSpM2C6c6kK5ufJH4FGwWoyqL3In19uuX4oe+TwH3w2P1nQDmW56iehO4A==", + "dev": true, + "requires": { + "glob": "~3.1.21", + "lodash": "~1.0.1", + "minimatch": "~0.2.11" + }, + "dependencies": { + "glob": { + "version": "3.1.21", + "resolved": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz", + "integrity": "sha512-ANhy2V2+tFpRajE3wN4DhkNQ08KDr0Ir1qL12/cUe5+a7STEK8jkW4onUYuY8/06qAFuT5je7mjAqzx0eKI2tQ==", + "dev": true, + "requires": { + "graceful-fs": "~1.2.0", + "inherits": "1", + "minimatch": "~0.2.11" + } + }, + "graceful-fs": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz", + "integrity": "sha512-iiTUZ5vZ+2ZV+h71XAgwCSu6+NAizhFU3Yw8aC/hH5SQ3SnISqEqAek40imAFGtDcwJKNhXvSY+hzIolnLwcdQ==", + "dev": true + }, + "inherits": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz", + "integrity": "sha512-Al67oatbRSo3RV5hRqIoln6Y5yMVbJSIn4jEJNL7VCImzq/kLr7vvb6sFRJXqr8rpHc/2kJOM+y0sPKN47VdzA==", + "dev": true + }, + "minimatch": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", + "integrity": "sha512-zZ+Jy8lVWlvqqeM8iZB7w7KmQkoJn8djM585z88rywrEbzoqawVa9FR5p2hwD+y74nfuKOjmNvi9gtWJNLqHvA==", + "dev": true, + "requires": { + "lru-cache": "2", + "sigmund": "~1.0.0" + } + } + } + }, + "glogg": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz", + "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==", + "dev": true, + "requires": { + "sparkles": "^1.0.0" + } + }, + "gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "dev": true + }, + "graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha512-8tLu60LgxF6XpdbK8OW3FA+IfTNBn1ZHGHKF4KQbEeSkajYw5PlYJcKluntgegDPTg8UkHjpet1T82vk6TQ68w==", + "dev": true + }, + "growl": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", + "integrity": "sha512-RTBwDHhNuOx4F0hqzItc/siXCasGfC4DeWcBamclWd+6jWtBaeB/SGbMkGf0eiQoW7ib8JpvOgnUsmgMHI3Mfw==", + "dev": true + }, + "growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw==", + "dev": true + }, + "gulp": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/gulp/-/gulp-3.9.1.tgz", + "integrity": "sha512-6FHNdR+VG1LcPz6gZGGqgvimWWGtl4x3FvshAdK/UnAjU7aFOyzft3Fjp35r0Y3ZF4u8vND0S4nGsIB/sxTqzQ==", + "dev": true, + "requires": { + "archy": "^1.0.0", + "chalk": "^1.0.0", + "deprecated": "^0.0.1", + "gulp-util": "^3.0.0", + "interpret": "^1.0.0", + "liftoff": "^2.1.0", + "minimist": "^1.1.0", + "orchestrator": "^0.3.0", + "pretty-hrtime": "^1.0.0", + "semver": "^4.1.0", + "tildify": "^1.0.0", + "v8flags": "^2.0.2", + "vinyl-fs": "^0.3.0" + }, + "dependencies": { + "semver": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", + "integrity": "sha512-IrpJ+yoG4EOH8DFWuVg+8H1kW1Oaof0Wxe7cPcXW3x9BjkN/eVo54F15LyqemnDIUYskQWr9qvl/RihmSy6+xQ==", + "dev": true + } + } + }, + "gulp-cache": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/gulp-cache/-/gulp-cache-0.4.6.tgz", + "integrity": "sha512-wPOAlH+ijGGposz5L6e46T6P95e4hUVZ2H2X55/3Foi6c9V4T3L/wBmAAQS/OxTSfRFRdK/BwS0BmDE8JreiNw==", + "dev": true, + "requires": { + "bluebird": "^3.0.5", + "cache-swap": "^0.3.0", + "gulp-util": "^3.0.7", + "object-assign": "^4.0.1", + "object.omit": "^2.0.0", + "object.pick": "^1.1.1", + "readable-stream": "^2.0.4", + "try-json-parse": "^0.1.1", + "vinyl": "^1.1.0" + }, + "dependencies": { + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "vinyl": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz", + "integrity": "sha512-Ci3wnR2uuSAWFMSglZuB8Z2apBdtOyz8CV7dC6/U1XbltXBC+IuutUkXQISz01P+US2ouBuesSbV6zILZ6BuzQ==", + "dev": true, + "requires": { + "clone": "^1.0.0", + "clone-stats": "^0.0.1", + "replace-ext": "0.0.1" + } + } + } + }, + "gulp-changed": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/gulp-changed/-/gulp-changed-1.3.2.tgz", + "integrity": "sha512-4GlC7YwzA29e2eBQy25DeCm8jsoJuvOA12jHsIJn75084iP3utuIkCDpzhqzd/u+pG6i+Zgpit/fGjAACPpQqA==", + "dev": true, + "requires": { + "gulp-util": "^3.0.0", + "through2": "^2.0.0" + } + }, + "gulp-clean-css": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/gulp-clean-css/-/gulp-clean-css-3.0.4.tgz", + "integrity": "sha512-qavWQtLYTbqLTOi3PuCvX40B79JJJKvVgvKVNS2xNX8d8LDFrglV2pQT6EmzfeyQix7I5/oIoPGRufGp48TXiA==", + "dev": true, + "requires": { + "clean-css": "^4.0.9", + "gulp-util": "^3.0.8", + "through2": "^2.0.3", + "vinyl-sourcemaps-apply": "^0.2.1" + } + }, + "gulp-clip-empty-files": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/gulp-clip-empty-files/-/gulp-clip-empty-files-0.1.2.tgz", + "integrity": "sha512-VRlTP+Mxp4rP1f3+Q72SatKjTBt5kzlQc7cgRIZcK0snl+4KhegSUJpbSBmoD4qP+bAZy/Kb2HYINckUnNLNhg==", + "dev": true, + "requires": { + "through2": "~2.0.1" + } + }, + "gulp-clone": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gulp-clone/-/gulp-clone-1.0.0.tgz", + "integrity": "sha512-/TI0F0L7sLfxb/Ib85X+5wCTw7f17MLzD7CV+nrmB4hqLDWjnPVL7issTtD2qqPTCbwGsHepAGQDx6HoTrLXxw==", + "dev": true, + "requires": { + "gulp-util": "~2.2.14", + "through2": "~0.4.1" + }, + "dependencies": { + "ansi-regex": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz", + "integrity": "sha512-sGwIGMjhYdW26/IhwK2gkWWI8DRCVO6uj3hYgHT+zD+QL1pa37tM3ujhyfcJIYSbsxp7Gxhy7zrRW/1AHm4BmA==", + "dev": true + }, + "ansi-styles": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz", + "integrity": "sha512-f2PKUkN5QngiSemowa6Mrk9MPCdtFiOSmibjZ+j1qhLGHHYsqZwmBMRF3IRMVXo8sybDqx2fJl2d/8OphBoWkA==", + "dev": true + }, + "chalk": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz", + "integrity": "sha512-bIKA54hP8iZhyDT81TOsJiQvR1gW+ZYSXFaZUAvoD4wCHdbHY2actmpTE4x344ZlFqHbvoxKOaESULTZN2gstg==", + "dev": true, + "requires": { + "ansi-styles": "^1.1.0", + "escape-string-regexp": "^1.0.0", + "has-ansi": "^0.1.0", + "strip-ansi": "^0.3.0", + "supports-color": "^0.2.0" + } + }, + "dateformat": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz", + "integrity": "sha512-5sFRfAAmbHdIts+eKjR9kYJoF0ViCMVX9yqLu5A7S/v+nd077KgCITOMiirmyCBiZpKLDXbBOkYm6tu7rX/TKg==", + "dev": true, + "requires": { + "get-stdin": "^4.0.1", + "meow": "^3.3.0" + } + }, + "gulp-util": { + "version": "2.2.20", + "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-2.2.20.tgz", + "integrity": "sha512-9rtv4sj9EtCWYGD15HQQvWtRBtU9g1t0+w29tphetHxjxEAuBKQJkhGqvlLkHEtUjEgoqIpsVwPKU1yMZAa+wA==", + "dev": true, + "requires": { + "chalk": "^0.5.0", + "dateformat": "^1.0.7-1.2.3", + "lodash._reinterpolate": "^2.4.1", + "lodash.template": "^2.4.1", + "minimist": "^0.2.0", + "multipipe": "^0.1.0", + "through2": "^0.5.0", + "vinyl": "^0.2.1" + }, + "dependencies": { + "through2": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.5.1.tgz", + "integrity": "sha512-zexCrAOTbjkBCXGyozn7hhS3aEaqdrc59mAD2E3dKYzV1vFuEGQ1hEDJN2oQMQFwy4he2zyLqPZV+AlfS8ZWJA==", + "dev": true, + "requires": { + "readable-stream": "~1.0.17", + "xtend": "~3.0.0" + } + } + } + }, + "has-ansi": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz", + "integrity": "sha512-1YsTg1fk2/6JToQhtZkArMkurq8UoWU1Qe0aR3VUHjgij4nOylSWLWAtBXoZ4/dXOmugfLGm1c+QhuD0JyedFA==", + "dev": true, + "requires": { + "ansi-regex": "^0.2.0" + } + }, + "lodash._reinterpolate": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-2.4.1.tgz", + "integrity": "sha512-QGEOOjJi7W9LIgDAMVgtGBb8Qgo8ieDlSOCoZjtG45ZNRvDJZjwVMTYlfTIWdNRUiR1I9BjIqQ3Zaf1+DYM94g==", + "dev": true + }, + "lodash.escape": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-2.4.1.tgz", + "integrity": "sha512-PiEStyvZ8gz37qBE+HqME1Yc/ewb/59AMOu8pG7Ztani86foPTxgzckQvMdphmXPY6V5f20Ex/CaNBqHG4/ycQ==", + "dev": true, + "requires": { + "lodash._escapehtmlchar": "~2.4.1", + "lodash._reunescapedhtml": "~2.4.1", + "lodash.keys": "~2.4.1" + } + }, + "lodash.keys": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-2.4.1.tgz", + "integrity": "sha512-ZpJhwvUXHSNL5wYd1RM6CUa2ZuqorG9ngoJ9Ix5Cce+uX7I5O/E06FCJdhSZ33b5dVyeQDnIlWH7B2s5uByZ7g==", + "dev": true, + "requires": { + "lodash._isnative": "~2.4.1", + "lodash._shimkeys": "~2.4.1", + "lodash.isobject": "~2.4.1" + } + }, + "lodash.template": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-2.4.1.tgz", + "integrity": "sha512-5yLOQwlS69xbaez3g9dA1i0GMAj8pLDHp8lhA4V7M1vRam1lqD76f0jg5EV+65frbqrXo1WH9ZfKalfYBzJ5yQ==", + "dev": true, + "requires": { + "lodash._escapestringchar": "~2.4.1", + "lodash._reinterpolate": "~2.4.1", + "lodash.defaults": "~2.4.1", + "lodash.escape": "~2.4.1", + "lodash.keys": "~2.4.1", + "lodash.templatesettings": "~2.4.1", + "lodash.values": "~2.4.1" + } + }, + "lodash.templatesettings": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-2.4.1.tgz", + "integrity": "sha512-vY3QQ7GxbeLe8XfTvoYDbaMHO5iyTDJS1KIZrxp00PRMmyBKr8yEcObHSl2ppYTwd8MgqPXAarTvLA14hx8ffw==", + "dev": true, + "requires": { + "lodash._reinterpolate": "~2.4.1", + "lodash.escape": "~2.4.1" + } + }, + "minimist": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.2.4.tgz", + "integrity": "sha512-Pkrrm8NjyQ8yVt8Am9M+yUt74zE3iokhzbG1bFVNjLB92vwM71hf40RkEsryg98BujhVOncKm/C1xROxZ030LQ==", + "dev": true + }, + "object-keys": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", + "integrity": "sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw==", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "strip-ansi": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz", + "integrity": "sha512-DerhZL7j6i6/nEnVG0qViKXI0OKouvvpsAiaj7c+LfqZZZxdwZtv8+UiA/w4VUJpT8UzX0pR1dcHOii1GbmruQ==", + "dev": true, + "requires": { + "ansi-regex": "^0.2.1" + } + }, + "supports-color": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz", + "integrity": "sha512-tdCZ28MnM7k7cJDJc7Eq80A9CsRFAAOZUy41npOZCs++qSjfIy7o5Rh46CBk+Dk5FbKJ33X3Tqg4YrV07N5RaA==", + "dev": true + }, + "through2": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.4.2.tgz", + "integrity": "sha512-45Llu+EwHKtAZYTPPVn3XZHBgakWMN3rokhEv5hu596XP+cNgplMg+Gj+1nmAvj+L0K7+N49zBKx5rah5u0QIQ==", + "dev": true, + "requires": { + "readable-stream": "~1.0.17", + "xtend": "~2.1.1" + }, + "dependencies": { + "xtend": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", + "integrity": "sha512-vMNKzr2rHP9Dp/e1NQFnLQlwlhp9L/LfvnsVdHxN1f+uggyVI3i08uD14GPvCToPkdsRfyPqIyYGmIk58V98ZQ==", + "dev": true, + "requires": { + "object-keys": "~0.4.0" + } + } + } + }, + "vinyl": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.2.3.tgz", + "integrity": "sha512-4gFk9xrecazOTuFKcUYrE1TjHSYL63dio72D+q0d1mHF51FEcxTT2RHFpHbN5TNJgmPYHuVsBdhvXEOCDcytSA==", + "dev": true, + "requires": { + "clone-stats": "~0.0.1" + } + }, + "xtend": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-3.0.0.tgz", + "integrity": "sha512-sp/sT9OALMjRW1fKDlPeuSZlDQpkqReA0pyJukniWbTGoEKefHxhGJynE3PNhUMlcM8qWIjPwecwCw4LArS5Eg==", + "dev": true + } + } + }, + "gulp-connect": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/gulp-connect/-/gulp-connect-5.0.0.tgz", + "integrity": "sha512-W3ZYRmbdJcfBGTPNqzfU0tW6ws37qoLaFnrGANYp8NL1QfNYqModdoXauze0LNqONsUwWIUquss3RnImgCOU3g==", + "dev": true, + "requires": { + "connect": "^2.30.0", + "connect-livereload": "^0.5.4", + "event-stream": "^3.3.2", + "gulp-util": "^3.0.6", + "tiny-lr": "^0.2.1" + }, + "dependencies": { + "body-parser": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.13.3.tgz", + "integrity": "sha512-ypX8/9uws2W+CjPp3QMmz1qklzlhRBknQve22Y+WFecHql+qDFfG+VVNX7sooA4Q3+2fdq4ZZj6Xr07gA90RZg==", + "dev": true, + "requires": { + "bytes": "2.1.0", + "content-type": "~1.0.1", + "debug": "~2.2.0", + "depd": "~1.0.1", + "http-errors": "~1.3.1", + "iconv-lite": "0.4.11", + "on-finished": "~2.3.0", + "qs": "4.0.0", + "raw-body": "~2.1.2", + "type-is": "~1.6.6" + } + }, + "bytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.1.0.tgz", + "integrity": "sha512-k9VSlRfRi5JYyQWMylSOgjld96ta1qaQUIvmn+na0BzViclH04PBumewv4z5aeXNkn6Z/gAN5FtPeBLvV20F9w==", + "dev": true + }, + "connect": { + "version": "2.30.2", + "resolved": "https://registry.npmjs.org/connect/-/connect-2.30.2.tgz", + "integrity": "sha512-eY4YHls5bz/g6h9Q8B/aVkS6D7+TRiRlI3ksuruv3yc2rLbTG7HB/7T/CoZsuVH5e2i3S9J+2eARV5o7GIYq8Q==", + "dev": true, + "requires": { + "basic-auth-connect": "1.0.0", + "body-parser": "~1.13.3", + "bytes": "2.1.0", + "compression": "~1.5.2", + "connect-timeout": "~1.6.2", + "content-type": "~1.0.1", + "cookie": "0.1.3", + "cookie-parser": "~1.3.5", + "cookie-signature": "1.0.6", + "csurf": "~1.8.3", + "debug": "~2.2.0", + "depd": "~1.0.1", + "errorhandler": "~1.4.2", + "express-session": "~1.11.3", + "finalhandler": "0.4.0", + "fresh": "0.3.0", + "http-errors": "~1.3.1", + "method-override": "~2.3.5", + "morgan": "~1.6.1", + "multiparty": "3.3.2", + "on-headers": "~1.0.0", + "parseurl": "~1.3.0", + "pause": "0.1.0", + "qs": "4.0.0", + "response-time": "~2.3.1", + "serve-favicon": "~2.3.0", + "serve-index": "~1.7.2", + "serve-static": "~1.10.0", + "type-is": "~1.6.6", + "utils-merge": "1.0.0", + "vhost": "~3.0.1" + } + }, + "cookie": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.3.tgz", + "integrity": "sha512-mWkFhcL+HVG1KjeCjEBVJJ7s4sAGMLiBDFSDs4bzzvgLZt7rW8BhP6XV/8b1+pNvx/skd3yYxPuaF3Z6LlQzyw==", + "dev": true + }, + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha512-X0rGvJcskG1c3TgSCPqHJ0XJgwlcvOC7elJ5Y0hYuKBZoVqWpAMfLOeIh2UI/DCQ5ruodIjvsugZtjUYUw2pUw==", + "dev": true, + "requires": { + "ms": "0.7.1" + } + }, + "depd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.0.1.tgz", + "integrity": "sha512-OEWAMbCkK9IWQ8pfTvHBhCSqHgR+sk5pbiYqq0FqfARG4Cy+cRsCbITx6wh5pcsmfBPiJAcbd98tfdz5fnBbag==", + "dev": true + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==", + "dev": true + }, + "escape-html": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.2.tgz", + "integrity": "sha512-J5ahyCRC4liskWVAfkmosNWfG0eHQxI0W+Ko7k3cZaYVMfgt05dwZ68vw6S/TZM1BPvuTv3kq6CRCb7WWtBUVA==", + "dev": true + }, + "event-stream": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.5.tgz", + "integrity": "sha512-vyibDcu5JL20Me1fP734QBH/kenBGLZap2n0+XXM7mvuUPzJ20Ydqj1aKcIeMdri1p+PU+4yAKugjN8KCVst+g==", + "dev": true, + "requires": { + "duplexer": "^0.1.1", + "from": "^0.1.7", + "map-stream": "0.0.7", + "pause-stream": "^0.0.11", + "split": "^1.0.1", + "stream-combiner": "^0.2.2", + "through": "^2.3.8" + } + }, + "finalhandler": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-0.4.0.tgz", + "integrity": "sha512-jJU2WE88OqUvwAIf/1K2G2fTdKKZ8LvSwYQyFFekDcmBnBmht38enbcmErnA7iNZktcEo/o2JAHYbe1QDOAgaA==", + "dev": true, + "requires": { + "debug": "~2.2.0", + "escape-html": "1.0.2", + "on-finished": "~2.3.0", + "unpipe": "~1.0.0" + } + }, + "http-errors": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz", + "integrity": "sha512-gMygNskMurDCWfoCdyh1gOeDfSbkAHXqz94QoPj5IHIUjC/BG8/xv7FSEUr7waR5RcAya4j58bft9Wu/wHNeXA==", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "statuses": "1" + } + }, + "iconv-lite": { + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.11.tgz", + "integrity": "sha512-8UmnaYeP5puk18SkBrYULVTiq7REcimhx+ykJVJBiaz89DQmVQAfS29ZhHah86la90/t0xy4vRk86/2cCwNodA==", + "dev": true + }, + "mime": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", + "integrity": "sha512-sAaYXszED5ALBt665F0wMQCUXpGuZsGdopoqcHPdL39ZYdi7uHoZlhrfZfhv8WzivhBzr/oXwaj+yiK5wY8MXQ==", + "dev": true + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha512-lRLiIR9fSNpnP6TC4v8+4OU7oStC01esuNowdQ34L+Gk8e5Puoc88IqJ+XAY/B3Mn2ZKis8l8HX90oU8ivzUHg==", + "dev": true + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "qs": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-4.0.0.tgz", + "integrity": "sha512-8MPmJ83uBOPsQj5tQCv4g04/nTiY+d17yl9o3Bw73vC6XlEm2POIRRlOgWJ8i74bkGLII670cDJJZkgiZ2sIkg==", + "dev": true + }, + "range-parser": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.0.3.tgz", + "integrity": "sha512-nDsRrtIxVUO5opg/A8T2S3ebULVIfuh8ECbh4w3N4mWxIiT3QILDJDUQayPqm2e8Q8NUa0RSUkGCfe33AfjR3Q==", + "dev": true + }, + "raw-body": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.1.7.tgz", + "integrity": "sha512-x4d27vsIG04gZ1imkuDXB9Rd/EkAx5kYzeMijIYw1PAor0Ld3nTlkQQwDjKu42GdRUFCX1AfGnTSQB4O57eWVg==", + "dev": true, + "requires": { + "bytes": "2.4.0", + "iconv-lite": "0.4.13", + "unpipe": "1.0.0" + }, + "dependencies": { + "bytes": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.4.0.tgz", + "integrity": "sha512-SvUX8+c/Ga454a4fprIdIUzUN9xfd1YTvYh7ub5ZPJ+ZJ/+K2Bp6IpWGmnw8r3caLTsmhvJAKZz3qjIo9+XuCQ==", + "dev": true + }, + "iconv-lite": { + "version": "0.4.13", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz", + "integrity": "sha512-QwVuTNQv7tXC5mMWFX5N5wGjmybjNBBD8P3BReTkPmipoxTUFgWM2gXNvldHQr6T14DH0Dh6qBVg98iJt7u4mQ==", + "dev": true + } + } + }, + "send": { + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.13.2.tgz", + "integrity": "sha512-cQ0rmXHrdO2Iof08igV2bG/yXWD106ANwBg6DkGQNT2Vsznbgq6T0oAIQboy1GoFsIuy51jCim26aA9tj3Z3Zg==", + "dev": true, + "requires": { + "debug": "~2.2.0", + "depd": "~1.1.0", + "destroy": "~1.0.4", + "escape-html": "~1.0.3", + "etag": "~1.7.0", + "fresh": "0.3.0", + "http-errors": "~1.3.1", + "mime": "1.3.4", + "ms": "0.7.1", + "on-finished": "~2.3.0", + "range-parser": "~1.0.3", + "statuses": "~1.2.1" + }, + "dependencies": { + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, + "statuses": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz", + "integrity": "sha512-pVEuxHdSGrt8QmQ3LOZXLhSA6MP/iPqKzZeO6Squ7PNGkA/9MBsSfV0/L+bIxkoDmjF4tZcLpcVq/fkqoHvuKg==", + "dev": true + } + } + }, + "serve-static": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.10.3.tgz", + "integrity": "sha512-ScsFovjz3Db+vGgpofR/U8p8UULEcGV9akqyo8TQ1mMnjcxemE7Y5Muo+dvy3tJLY/doY2v1H61eCBMYGmwfrA==", + "dev": true, + "requires": { + "escape-html": "~1.0.3", + "parseurl": "~1.3.1", + "send": "0.13.2" + }, + "dependencies": { + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + } + } + }, + "split": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", + "dev": true, + "requires": { + "through": "2" + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true + }, + "stream-combiner": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.2.2.tgz", + "integrity": "sha512-6yHMqgLYDzQDcAkL+tjJDC5nSNuNIx0vZtRZeiPh7Saef7VHX9H5Ijn9l2VIol2zaNYlYEX6KyuT/237A58qEQ==", + "dev": true, + "requires": { + "duplexer": "~0.1.1", + "through": "~2.3.4" + } + }, + "utils-merge": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz", + "integrity": "sha512-HwU9SLQEtyo+0uoKXd1nkLqigUWLB+QuNQR4OcmB73eWqksM5ovuqcycks2x043W8XVb75rG1HQ0h93TMXkzQQ==", + "dev": true + } + } + }, + "gulp-decomment": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/gulp-decomment/-/gulp-decomment-0.1.3.tgz", + "integrity": "sha512-jeeeO1Zh2+w6xYXQwc8EwWHPc9OAtVen2LlhcSWcm0Yw9GaDsU7j1K2sK9b6mc7kr9ZrurKnBnObSzHUDjB41w==", + "dev": true, + "requires": { + "decomment": "^0.8.2", + "gulp-util": "3.0", + "through2": "2.0" + } + }, + "gulp-flatten": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/gulp-flatten/-/gulp-flatten-0.2.0.tgz", + "integrity": "sha512-8kKeBDfHGx0CEWoB6BPh5bsynUG2VGmSz6hUlX531cfDz/+PRYZa9i3e3+KYuaV0GuCsRZNThSRjBfHOyypy8Q==", + "dev": true, + "requires": { + "gulp-util": "^3.0.1", + "through2": "^2.0.0" + } + }, + "gulp-if": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/gulp-if/-/gulp-if-2.0.2.tgz", + "integrity": "sha512-tV0UfXkZodpFq6CYxEqH8tqLQgN6yR9qOhpEEN3O6N5Hfqk3fFLcbAavSex5EqnmoQjyaZ/zvgwclvlTI1KGfw==", + "dev": true, + "requires": { + "gulp-match": "^1.0.3", + "ternary-stream": "^2.0.1", + "through2": "^2.0.1" + } + }, + "gulp-karma": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/gulp-karma/-/gulp-karma-0.0.5.tgz", + "integrity": "sha512-Kutx0lT+q+jQI9XHcAiH9iFQKrigpYvaDbLVq4czQbgZST88JKxOXbjNhWs/1qdSVqjsd2GmxdZWRQbSd1r7aQ==", + "dev": true, + "requires": { + "event-stream": "~3.0.20", + "gulp-util": "~2.2.14", + "optimist": "~0.6.0", + "xtend": "~2.1.1" + }, + "dependencies": { + "ansi-regex": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz", + "integrity": "sha512-sGwIGMjhYdW26/IhwK2gkWWI8DRCVO6uj3hYgHT+zD+QL1pa37tM3ujhyfcJIYSbsxp7Gxhy7zrRW/1AHm4BmA==", + "dev": true + }, + "ansi-styles": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz", + "integrity": "sha512-f2PKUkN5QngiSemowa6Mrk9MPCdtFiOSmibjZ+j1qhLGHHYsqZwmBMRF3IRMVXo8sybDqx2fJl2d/8OphBoWkA==", + "dev": true + }, + "chalk": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz", + "integrity": "sha512-bIKA54hP8iZhyDT81TOsJiQvR1gW+ZYSXFaZUAvoD4wCHdbHY2actmpTE4x344ZlFqHbvoxKOaESULTZN2gstg==", + "dev": true, + "requires": { + "ansi-styles": "^1.1.0", + "escape-string-regexp": "^1.0.0", + "has-ansi": "^0.1.0", + "strip-ansi": "^0.3.0", + "supports-color": "^0.2.0" + } + }, + "dateformat": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz", + "integrity": "sha512-5sFRfAAmbHdIts+eKjR9kYJoF0ViCMVX9yqLu5A7S/v+nd077KgCITOMiirmyCBiZpKLDXbBOkYm6tu7rX/TKg==", + "dev": true, + "requires": { + "get-stdin": "^4.0.1", + "meow": "^3.3.0" + } + }, + "gulp-util": { + "version": "2.2.20", + "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-2.2.20.tgz", + "integrity": "sha512-9rtv4sj9EtCWYGD15HQQvWtRBtU9g1t0+w29tphetHxjxEAuBKQJkhGqvlLkHEtUjEgoqIpsVwPKU1yMZAa+wA==", + "dev": true, + "requires": { + "chalk": "^0.5.0", + "dateformat": "^1.0.7-1.2.3", + "lodash._reinterpolate": "^2.4.1", + "lodash.template": "^2.4.1", + "minimist": "^0.2.0", + "multipipe": "^0.1.0", + "through2": "^0.5.0", + "vinyl": "^0.2.1" + } + }, + "has-ansi": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz", + "integrity": "sha512-1YsTg1fk2/6JToQhtZkArMkurq8UoWU1Qe0aR3VUHjgij4nOylSWLWAtBXoZ4/dXOmugfLGm1c+QhuD0JyedFA==", + "dev": true, + "requires": { + "ansi-regex": "^0.2.0" + } + }, + "lodash._reinterpolate": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-2.4.1.tgz", + "integrity": "sha512-QGEOOjJi7W9LIgDAMVgtGBb8Qgo8ieDlSOCoZjtG45ZNRvDJZjwVMTYlfTIWdNRUiR1I9BjIqQ3Zaf1+DYM94g==", + "dev": true + }, + "lodash.escape": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-2.4.1.tgz", + "integrity": "sha512-PiEStyvZ8gz37qBE+HqME1Yc/ewb/59AMOu8pG7Ztani86foPTxgzckQvMdphmXPY6V5f20Ex/CaNBqHG4/ycQ==", + "dev": true, + "requires": { + "lodash._escapehtmlchar": "~2.4.1", + "lodash._reunescapedhtml": "~2.4.1", + "lodash.keys": "~2.4.1" + } + }, + "lodash.keys": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-2.4.1.tgz", + "integrity": "sha512-ZpJhwvUXHSNL5wYd1RM6CUa2ZuqorG9ngoJ9Ix5Cce+uX7I5O/E06FCJdhSZ33b5dVyeQDnIlWH7B2s5uByZ7g==", + "dev": true, + "requires": { + "lodash._isnative": "~2.4.1", + "lodash._shimkeys": "~2.4.1", + "lodash.isobject": "~2.4.1" + } + }, + "lodash.template": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-2.4.1.tgz", + "integrity": "sha512-5yLOQwlS69xbaez3g9dA1i0GMAj8pLDHp8lhA4V7M1vRam1lqD76f0jg5EV+65frbqrXo1WH9ZfKalfYBzJ5yQ==", + "dev": true, + "requires": { + "lodash._escapestringchar": "~2.4.1", + "lodash._reinterpolate": "~2.4.1", + "lodash.defaults": "~2.4.1", + "lodash.escape": "~2.4.1", + "lodash.keys": "~2.4.1", + "lodash.templatesettings": "~2.4.1", + "lodash.values": "~2.4.1" + } + }, + "lodash.templatesettings": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-2.4.1.tgz", + "integrity": "sha512-vY3QQ7GxbeLe8XfTvoYDbaMHO5iyTDJS1KIZrxp00PRMmyBKr8yEcObHSl2ppYTwd8MgqPXAarTvLA14hx8ffw==", + "dev": true, + "requires": { + "lodash._reinterpolate": "~2.4.1", + "lodash.escape": "~2.4.1" + } + }, + "minimist": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.2.4.tgz", + "integrity": "sha512-Pkrrm8NjyQ8yVt8Am9M+yUt74zE3iokhzbG1bFVNjLB92vwM71hf40RkEsryg98BujhVOncKm/C1xROxZ030LQ==", + "dev": true + }, + "object-keys": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", + "integrity": "sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw==", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "strip-ansi": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz", + "integrity": "sha512-DerhZL7j6i6/nEnVG0qViKXI0OKouvvpsAiaj7c+LfqZZZxdwZtv8+UiA/w4VUJpT8UzX0pR1dcHOii1GbmruQ==", + "dev": true, + "requires": { + "ansi-regex": "^0.2.1" + } + }, + "supports-color": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz", + "integrity": "sha512-tdCZ28MnM7k7cJDJc7Eq80A9CsRFAAOZUy41npOZCs++qSjfIy7o5Rh46CBk+Dk5FbKJ33X3Tqg4YrV07N5RaA==", + "dev": true + }, + "through2": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.5.1.tgz", + "integrity": "sha512-zexCrAOTbjkBCXGyozn7hhS3aEaqdrc59mAD2E3dKYzV1vFuEGQ1hEDJN2oQMQFwy4he2zyLqPZV+AlfS8ZWJA==", + "dev": true, + "requires": { + "readable-stream": "~1.0.17", + "xtend": "~3.0.0" + }, + "dependencies": { + "xtend": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-3.0.0.tgz", + "integrity": "sha512-sp/sT9OALMjRW1fKDlPeuSZlDQpkqReA0pyJukniWbTGoEKefHxhGJynE3PNhUMlcM8qWIjPwecwCw4LArS5Eg==", + "dev": true + } + } + }, + "vinyl": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.2.3.tgz", + "integrity": "sha512-4gFk9xrecazOTuFKcUYrE1TjHSYL63dio72D+q0d1mHF51FEcxTT2RHFpHbN5TNJgmPYHuVsBdhvXEOCDcytSA==", + "dev": true, + "requires": { + "clone-stats": "~0.0.1" + } + }, + "xtend": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", + "integrity": "sha512-vMNKzr2rHP9Dp/e1NQFnLQlwlhp9L/LfvnsVdHxN1f+uggyVI3i08uD14GPvCToPkdsRfyPqIyYGmIk58V98ZQ==", + "dev": true, + "requires": { + "object-keys": "~0.4.0" + } + } + } + }, + "gulp-match": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/gulp-match/-/gulp-match-1.1.0.tgz", + "integrity": "sha512-DlyVxa1Gj24DitY2OjEsS+X6tDpretuxD6wTfhXE/Rw2hweqc1f6D/XtsJmoiCwLWfXgR87W9ozEityPCVzGtQ==", + "dev": true, + "requires": { + "minimatch": "^3.0.3" + } + }, + "gulp-open": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/gulp-open/-/gulp-open-2.0.0.tgz", + "integrity": "sha512-AtHMAgdaX9+CRJvvo4i2KTBzUZKiGB94j99e6V8JfXGaV9ugxy+BjdLXedkl5bUpV1HEe9FCOgAKFzPCFvQy/w==", + "dev": true, + "requires": { + "colors": "^1.1.2", + "gulp-util": "^3.0.2", + "open": "0.0.5", + "through2": "^2.0.1" + } + }, + "gulp-plumber": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/gulp-plumber/-/gulp-plumber-1.1.0.tgz", + "integrity": "sha512-KLlTTb4xONJMSW235/SOCpKpNMFv2xh+RLsPOIdb6INF9yo1SN9zsMiREHQXRAegGQYdSIwYU9U5XFyCoaqUiw==", + "dev": true, + "requires": { + "gulp-util": "^3", + "through2": "^2" + } + }, + "gulp-postcss": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/gulp-postcss/-/gulp-postcss-6.3.0.tgz", + "integrity": "sha512-XHMQRgD7rfBq2MBtygVPKq+PGcikfq0ekKMwsUvMTK42XmteiDAvkTW+HJ34Znf8DIZzsv3EPDMWTdQw3Gy/MA==", + "dev": true, + "requires": { + "gulp-util": "^3.0.8", + "postcss": "^5.2.10", + "postcss-load-config": "^1.1.0", + "vinyl-sourcemaps-apply": "^0.2.1" + } + }, + "gulp-replace": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/gulp-replace/-/gulp-replace-0.5.4.tgz", + "integrity": "sha512-lHL+zKJN8uV95UkONnfRkoj2yJxPPupt2SahxA4vo5c+Ee3+WaIiMdWbOyUhg8BhAROQrWKnnxKOWPdVrnBwGw==", + "dev": true, + "requires": { + "istextorbinary": "1.0.2", + "readable-stream": "^2.0.1", + "replacestream": "^4.0.0" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "gulp-sass": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/gulp-sass/-/gulp-sass-3.1.0.tgz", + "integrity": "sha512-5ukPdOhqQciyrSymsfZx0a71RcrywDyoiuvt/IV57D3++RwuaXSB412fLFqqRSTfPYRQw/j2QII0kImKRq+ucQ==", + "dev": true, + "requires": { + "gulp-util": "^3.0", + "lodash.clonedeep": "^4.3.2", + "node-sass": "^4.2.0", + "through2": "^2.0.0", + "vinyl-sourcemaps-apply": "^0.2.0" + } + }, + "gulp-sourcemaps": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/gulp-sourcemaps/-/gulp-sourcemaps-1.6.0.tgz", + "integrity": "sha512-NjRy6+Qb5K1xbwOvPviD3uA4KSq2zsalPL+4vxPQPuL+kKzHjXJL10/kLaESic3LmBto8VIBHr3gIN3F9AjnhA==", + "dev": true, + "requires": { + "convert-source-map": "^1.1.1", + "graceful-fs": "^4.1.2", + "strip-bom": "^2.0.0", + "through2": "^2.0.0", + "vinyl": "^1.0.0" + }, + "dependencies": { + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + }, + "vinyl": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz", + "integrity": "sha512-Ci3wnR2uuSAWFMSglZuB8Z2apBdtOyz8CV7dC6/U1XbltXBC+IuutUkXQISz01P+US2ouBuesSbV6zILZ6BuzQ==", + "dev": true, + "requires": { + "clone": "^1.0.0", + "clone-stats": "^0.0.1", + "replace-ext": "0.0.1" + } + } + } + }, + "gulp-texttojs": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/gulp-texttojs/-/gulp-texttojs-1.0.3.tgz", + "integrity": "sha512-DEMS2CJMEVGij91zojvm8xHvrlg2++6C3JbiZB3heqK9vxQCTHvmqpOdNO6YLVufJ1f3RCfeS298SB/O0SuXpQ==", + "dev": true, + "requires": { + "lodash": "^2.4.1", + "node.extend": "^1.0.10", + "through2": "^0.4.2" + }, + "dependencies": { + "lodash": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", + "integrity": "sha512-Kak1hi6/hYHGVPmdyiZijoQyz5x2iGVzs6w9GYB/HiXEtylY7tIoYEROMjvM1d9nXJqPOrG2MNPMn01bJ+S0Rw==", + "dev": true + }, + "object-keys": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", + "integrity": "sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw==", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "through2": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.4.2.tgz", + "integrity": "sha512-45Llu+EwHKtAZYTPPVn3XZHBgakWMN3rokhEv5hu596XP+cNgplMg+Gj+1nmAvj+L0K7+N49zBKx5rah5u0QIQ==", + "dev": true, + "requires": { + "readable-stream": "~1.0.17", + "xtend": "~2.1.1" + } + }, + "xtend": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", + "integrity": "sha512-vMNKzr2rHP9Dp/e1NQFnLQlwlhp9L/LfvnsVdHxN1f+uggyVI3i08uD14GPvCToPkdsRfyPqIyYGmIk58V98ZQ==", + "dev": true, + "requires": { + "object-keys": "~0.4.0" + } + } + } + }, + "gulp-typescript": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/gulp-typescript/-/gulp-typescript-3.1.7.tgz", + "integrity": "sha512-CjawxVvgx3fyToJn4xJAdJ3vc5obzxnmEGFvCWvLbc3p9yTPPcM7jrot3NsxszeB9vMyZ1w+poJgOgnBmeJ+2Q==", + "dev": true, + "requires": { + "gulp-util": "~3.0.7", + "source-map": "~0.5.3", + "through2": "~2.0.1", + "vinyl-fs": "~2.4.3" + }, + "dependencies": { + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha512-dtXTVMkh6VkEEA7OhXnN1Ecb8aAGFdZ1LFxtOCoqj4qkyOJMt7+qs6Ahdy6p/NQCPYsRSXXivhSB/J5E9jmYKA==", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1" + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha512-G2n5bG5fSUCpnsXz4+8FUkYsGPkNfLn9YvS66U5qbTIXI2Ynnlo4Bi42bWv+omKUCqz+ejzfClwne0alJWJPhg==", + "dev": true + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha512-xU7bpz2ytJl1bH9cgIurjpg/n8Gohy9GTw81heDYLJQ4RU60dlyJsa+atVF2pI0yMMvKxI9HkKwjePCj5XI1hw==", + "dev": true, + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha512-hxx03P2dJxss6ceIeri9cmYOT4SRs3Zk3afZwWpOsRqLqprhTR8u++SlC+sFGsQr7WGFPdMF7Gjc1njDLDK6UA==", + "dev": true, + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha512-1FOj1LOwn42TMrruOHGt18HemVnbwAmAak7krWk+wa93KXxGbK+2jpezm+ytJYDaBX0/SPLZFHKM7m+tKobWGg==", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA==", + "dev": true, + "requires": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } + }, + "glob-stream": { + "version": "5.3.5", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-5.3.5.tgz", + "integrity": "sha512-piN8XVAO2sNxwVLokL4PswgJvK/uQ6+awwXUVRTGF+rRfgCZpn4hOqxiRuTEbU/k3qgKl0DACYQ/0Sge54UMQg==", + "dev": true, + "requires": { + "extend": "^3.0.0", + "glob": "^5.0.3", + "glob-parent": "^3.0.0", + "micromatch": "^2.3.7", + "ordered-read-streams": "^0.3.0", + "through2": "^0.6.0", + "to-absolute-glob": "^0.1.1", + "unique-stream": "^2.0.2" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", + "dev": true + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha512-RkK/CCESdTKQZHdmKICijdKKsCRVHs5KsLZ6pACAmF/1GPUQhonHSXWNERctxEp7RmvjdNbZTL5z9V7nSCXKcg==", + "dev": true, + "requires": { + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" + } + } + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha512-LnU2XFEk9xxSJ6rfgAry/ty5qwUTyHYOBU0g4R6tIw5ljwgGIBmiKhRWLw5NpMOnrgUNcDJ4WMp8rl3sYVHLNA==", + "dev": true, + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + }, + "dependencies": { + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + } + } + }, + "ordered-read-streams": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.3.0.tgz", + "integrity": "sha512-xQvd8qvx9U1iYY9aVqPpoF5V9uaWJKV6ZGljkh/jkiNX0DiQsjbWvRumbh10QTMDE8DheaOEU8xi0szbrgjzcw==", + "dev": true, + "requires": { + "is-stream": "^1.0.1", + "readable-stream": "^2.0.1" + } + }, + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + }, + "unique-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz", + "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==", + "dev": true, + "requires": { + "json-stable-stringify-without-jsonify": "^1.0.1", + "through2-filter": "^3.0.0" + }, + "dependencies": { + "through2-filter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", + "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", + "dev": true, + "requires": { + "through2": "~2.0.0", + "xtend": "~4.0.0" + } + } + } + }, + "vinyl": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz", + "integrity": "sha512-Ci3wnR2uuSAWFMSglZuB8Z2apBdtOyz8CV7dC6/U1XbltXBC+IuutUkXQISz01P+US2ouBuesSbV6zILZ6BuzQ==", + "dev": true, + "requires": { + "clone": "^1.0.0", + "clone-stats": "^0.0.1", + "replace-ext": "0.0.1" + } + }, + "vinyl-fs": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-2.4.4.tgz", + "integrity": "sha512-lxMlQW/Wxk/pwhooY3Ut0Q11OH5ZvZfV0Gg1c306fBNWznQ6ZeQaCdE7XX0O/PpGSqgAsHMBxwFgcGxiYW3hZg==", + "dev": true, + "requires": { + "duplexify": "^3.2.0", + "glob-stream": "^5.3.2", + "graceful-fs": "^4.0.0", + "gulp-sourcemaps": "1.6.0", + "is-valid-glob": "^0.3.0", + "lazystream": "^1.0.0", + "lodash.isequal": "^4.0.0", + "merge-stream": "^1.0.0", + "mkdirp": "^0.5.0", + "object-assign": "^4.0.0", + "readable-stream": "^2.0.4", + "strip-bom": "^2.0.0", + "strip-bom-stream": "^1.0.0", + "through2": "^2.0.0", + "through2-filter": "^2.0.0", + "vali-date": "^1.0.0", + "vinyl": "^1.0.0" + } + } + } + }, + "gulp-util": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz", + "integrity": "sha512-q5oWPc12lwSFS9h/4VIjG+1NuNDlJ48ywV2JKItY4Ycc/n1fXJeYPVQsfu5ZrhQi7FGSDBalwUCLar/GyHXKGw==", + "dev": true, + "requires": { + "array-differ": "^1.0.0", + "array-uniq": "^1.0.2", + "beeper": "^1.0.0", + "chalk": "^1.0.0", + "dateformat": "^2.0.0", + "fancy-log": "^1.1.0", + "gulplog": "^1.0.0", + "has-gulplog": "^0.1.0", + "lodash._reescape": "^3.0.0", + "lodash._reevaluate": "^3.0.0", + "lodash._reinterpolate": "^3.0.0", + "lodash.template": "^3.0.0", + "minimist": "^1.1.0", + "multipipe": "^0.1.2", + "object-assign": "^3.0.0", + "replace-ext": "0.0.1", + "through2": "^2.0.0", + "vinyl": "^0.5.0" + }, + "dependencies": { + "object-assign": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", + "integrity": "sha512-jHP15vXVGeVh1HuaA2wY6lxk+whK/x4KBG88VXeRma7CCun7iGD5qPc4eYykQ9sdQvg8jkwFKsSxHln2ybW3xQ==", + "dev": true + } + } + }, + "gulplog": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", + "integrity": "sha512-hm6N8nrm3Y08jXie48jsC55eCZz9mnb4OirAStEk2deqeyhXU3C1otDVh+ccttMuc1sBi6RX6ZJ720hs9RCvgw==", + "dev": true, + "requires": { + "glogg": "^1.0.0" + } + }, + "handlebars": { + "version": "4.7.8", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", + "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4", + "wordwrap": "^1.0.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", + "dev": true + }, + "har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "dev": true, + "requires": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + } + } + }, + "has": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", + "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", + "dev": true + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-binary": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/has-binary/-/has-binary-0.1.7.tgz", + "integrity": "sha512-k1Umb4/jrBWZbtL+QKSji8qWeoZ7ZTkXdnDXt1wxwBKAFM0//u96wDj43mBIqCIas8rDQMYyrBEvcS8hdGd4Sg==", + "dev": true, + "requires": { + "isarray": "0.0.1" + } + }, + "has-cors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", + "integrity": "sha512-g5VNKdkFuUuVCP9gYfDJHjK2nqdQJ7aDLTnycnc2+RvsOQbuLdF5pm7vuE5J76SEBIQjs4kQY/BWq74JUmjbXA==", + "dev": true + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true + }, + "has-gulplog": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz", + "integrity": "sha512-+F4GzLjwHNNDEAJW2DC1xXfEoPkRDmUdJ7CBYw4MpqtDwOnqdImJl7GWlpqx+Wko6//J8uKTnIe4wZSv7yCqmw==", + "dev": true, + "requires": { + "sparkles": "^1.0.0" + } + }, + "has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "requires": { + "es-define-property": "^1.0.0" + } + }, + "has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "dev": true + }, + "has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "requires": { + "has-symbols": "^1.0.3" + } + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.5.tgz", + "integrity": "sha512-vXm0l45VbcHEVlTCzs8M+s0VeYsB2lnlAaThoLKGXr3bE/VWDOelNUnycUPEhKEaXARL2TEFjBOyUiM6+55KBg==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "safe-buffer": "^5.2.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "hasha": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/hasha/-/hasha-2.2.0.tgz", + "integrity": "sha512-jZ38TU/EBiGKrmyTNNZgnvCZHNowiRI4+w/I9noMlekHTZH3KyGgvJLmhSgykeAQ9j2SYPDosM0Bg3wHfzibAQ==", + "dev": true, + "requires": { + "is-stream": "^1.0.1", + "pinkie-promise": "^2.0.0" + } + }, + "hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "requires": { + "function-bind": "^1.1.2" + } + }, + "hawk": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "integrity": "sha512-X8xbmTc1cbPXcQV4WkLcRMALuyoxhfpFATmyuCxJPOAvrDS4DNnsTAOmKUxMTOWU6TzrTOkxPKwIx5ZOpJVSrg==", + "dev": true, + "requires": { + "boom": "2.x.x", + "cryptiles": "2.x.x", + "hoek": "2.x.x", + "sntp": "1.x.x" + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "hoek": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha512-V6Yw1rIcYV/4JsnggjBU0l4Kr+EXhpwqXRusENU1Xx6ro00IHPHYNynCuBTOZAPlr3AAmLvchH9I7N/VUdvOwQ==", + "dev": true + }, + "home-or-tmp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha512-ycURW7oUxE2sNiPVw1HVEFsW+ecOpJ5zaj7eC0RlwhibhRBod20muUN8qu/gzx956YrLolVvs1MTXwKgC2rVEg==", + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.1" + } + }, + "homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "dev": true, + "requires": { + "parse-passwd": "^1.0.0" + } + }, + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "html-comment-regex": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", + "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==", + "dev": true + }, + "html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "dev": true, + "requires": { + "whatwg-encoding": "^1.0.1" + } + }, + "html-loader": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/html-loader/-/html-loader-0.5.5.tgz", + "integrity": "sha512-7hIW7YinOYUpo//kSYcPB6dCKoceKLmOwjEMmhIobHuWGDVl0Nwe4l68mdG/Ru0wcUxQjVMEoZpkalZ/SE7zog==", + "dev": true, + "requires": { + "es6-templates": "^0.2.3", + "fastparse": "^1.1.1", + "html-minifier": "^3.5.8", + "loader-utils": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "html-minifier": { + "version": "3.5.21", + "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.21.tgz", + "integrity": "sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==", + "dev": true, + "requires": { + "camel-case": "3.0.x", + "clean-css": "4.2.x", + "commander": "2.17.x", + "he": "1.2.x", + "param-case": "2.1.x", + "relateurl": "0.2.x", + "uglify-js": "3.4.x" + }, + "dependencies": { + "commander": { + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", + "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "uglify-js": { + "version": "3.4.10", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.10.tgz", + "integrity": "sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==", + "dev": true, + "requires": { + "commander": "~2.19.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "commander": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", + "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", + "dev": true + } + } + } + } + }, + "http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + } + }, + "http-parser-js": { + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.10.tgz", + "integrity": "sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==", + "dev": true + }, + "http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==", + "dev": true + }, + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + }, + "icss-replace-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", + "integrity": "sha512-chIaY3Vh2mh2Q3RGXttaDIzeiPvaVXJ+C4DAh/w3c37SKZ/U6PGMmuicR2EQQp9bKG8zLMCl7I+PtIoOOPp8Gg==", + "dev": true + }, + "icss-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-2.1.0.tgz", + "integrity": "sha512-bsVoyn/1V4R1kYYjLcWLedozAM4FClZUdjE9nIr8uWY7xs78y9DATgwz2wGU7M+7z55KenmmTkN2DVJ7bqzjAA==", + "dev": true, + "requires": { + "postcss": "^6.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true + }, + "in-publish": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.1.tgz", + "integrity": "sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ==", + "dev": true + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha512-aqwDFWSgSgfRaEwao5lg5KEcVd/2a+D1rvoG7NdilmYz0NwRk6StWpWdz/Hpk34MKPpx7s8XxUqimfcQK6gGlg==", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA==", + "dev": true + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha512-i0G7hLJ1z0DE8dsqJa2rycj9dBmNKgXBvotXtZYXakU9oivfB9Uj2ZBC27qqef2U58/ZLwalxa1X/RDCdkHtVg==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "inpath": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/inpath/-/inpath-1.0.2.tgz", + "integrity": "sha512-DTt55ovuYFC62a8oJxRjV2MmTPUdxN43Gd8I2ZgawxbAha6PvJkDQy/RbZGFCJF5IXrpp4PAYtW1w3aV7jXkew==", + "dev": true + }, + "inquirer": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-1.2.3.tgz", + "integrity": "sha512-diSnpgfv/Ozq6QKuV2mUcwZ+D24b03J3W6EVxzvtkCWJTPrH2gKLsqgSW0vzRMZZFhFdhnvzka0RUJxIm7AOxQ==", + "dev": true, + "requires": { + "ansi-escapes": "^1.1.0", + "chalk": "^1.0.0", + "cli-cursor": "^1.0.1", + "cli-width": "^2.0.0", + "external-editor": "^1.1.0", + "figures": "^1.3.5", + "lodash": "^4.3.0", + "mute-stream": "0.0.6", + "pinkie-promise": "^2.0.0", + "run-async": "^2.2.0", + "rx": "^4.1.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.0", + "through": "^2.3.6" + }, + "dependencies": { + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "mute-stream": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.6.tgz", + "integrity": "sha512-m0kBTDLF/0lgzCsPVmJSKM5xkLNX7ZAB0Q+n2DP37JMIRPVC2R4c3BdO6x++bXFKftbhvSfKgwxAexME+BRDRw==", + "dev": true + } + } + }, + "interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "dev": true + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==", + "dev": true + }, + "ipaddr.js": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.4.0.tgz", + "integrity": "sha512-RbrsPoo4IkisyHhS9VDa3ybxnu0wOo0uTAhaELmwxq244p18X7Dk0fQoJvh/QTkIUO296fbjgvMqK3ry84eVVA==", + "dev": true + }, + "is": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/is/-/is-3.3.2.tgz", + "integrity": "sha512-a2xr4E3s1PjDS8ORcGgXpWx6V+liNs+O3JRD2mb9aeugD7rtkkZ0zgLdYgw0tWsKhsdiezGYptSiMlVazCBTuQ==", + "dev": true + }, + "is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "dev": true, + "requires": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + } + }, + "is-absolute-url": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "integrity": "sha512-vOx7VprsKyllwjSkLV79NIhpyLfr3jAp7VaTCMXOJHu4m0Ew1CZ2fcjASwmV1jI3BWuWHB013M48eyeldk9gYg==", + "dev": true + }, + "is-accessor-descriptor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.1.tgz", + "integrity": "sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==", + "dev": true, + "requires": { + "hasown": "^2.0.0" + } + }, + "is-arguments": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz", + "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", + "dev": true, + "requires": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha512-C2wz7Juo5pUZTFQVer9c+9b4qw3I5T/CHQxQyhVu7BJel6C22FmsLIWsdseYyOw6xz9Pqy9eJWSkQ7+3iN1HVw==", + "dev": true, + "requires": { + "builtin-modules": "^1.0.0" + } + }, + "is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true + }, + "is-ci": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", + "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", + "dev": true, + "requires": { + "ci-info": "^1.5.0" + } + }, + "is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "dev": true, + "requires": { + "hasown": "^2.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.1.tgz", + "integrity": "sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==", + "dev": true, + "requires": { + "hasown": "^2.0.0" + } + }, + "is-descriptor": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + } + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==", + "dev": true + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha512-9YclgOGtN/f8zx0Pr4FQYMdibBiTaH3sn52vjYip4ZSf6C4/6RfTEZ+MR4GvKhCxdPh21Bg42/WL55f6KSnKpg==", + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha512-0EygVC5qPvIyb+gSz7zdD5/AAoS6Qrx1e//6N4yv4oNm30kqvdmG66oZFWVlQHUWe5OjP08FuTw2IdT0EOTcYA==", + "dev": true, + "requires": { + "is-primitive": "^2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true + }, + "is-finite": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", + "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-generator-function": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", + "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", + "dev": true, + "requires": { + "call-bound": "^1.0.4", + "generator-function": "^2.0.0", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + } + }, + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + }, + "is-my-ip-valid": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.1.tgz", + "integrity": "sha512-jxc8cBcOWbNK2i2aTkCZP6i7wkHF1bqKFrwEHuN5Jtg5BSaZHUZQ/JTOJwoV41YvHnOaRyWWh72T/KvfNz9DJg==", + "dev": true + }, + "is-my-json-valid": { + "version": "2.20.6", + "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.20.6.tgz", + "integrity": "sha512-1JQwulVNjx8UqkPE/bqDaxtH4PXCe/2VRh/y3p99heOV87HG4Id5/VfDswd+YiAfHcRTfDlWgISycnHuhZq1aw==", + "dev": true, + "requires": { + "generate-function": "^2.0.0", + "generate-object-property": "^1.1.0", + "is-my-ip-valid": "^1.0.0", + "jsonpointer": "^5.0.0", + "xtend": "^4.0.0" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha512-cnS56eR9SPAscL77ik76ATVqoPARTqPIVkMDVxRaWH06zT+6+CzIroYRJ0VVvm0Z1zfAvxvz9i/D3Ppjaqt5Nw==", + "dev": true + }, + "is-path-in-cwd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", + "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", + "dev": true, + "requires": { + "is-path-inside": "^1.0.0" + } + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha512-qhsCR/Esx4U4hg/9I19OVUAJkGWtjRYHMRgUMZE2TDdj+Ag+kttZanLupfddNyglzz50cUlmWzUaI37GDfNx/g==", + "dev": true, + "requires": { + "path-is-inside": "^1.0.1" + } + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha512-Yu68oeXJ7LeWNmZ3Zov/xg/oDBnBK2RNxwYY1ilNJX+tKKZqgPK+qOn/Gs9jEu66KDY9Netf5XLKNGzas/vPfQ==", + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha512-N3w1tFaRfk3UrPfqeRyD+GYDASU3W5VinKhlORy8EWVf/sIdDL9GAcew85XmktCfH+ngG7SRXEVDoO18WMdB/Q==", + "dev": true + }, + "is-property": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==", + "dev": true + }, + "is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "dev": true, + "requires": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + } + }, + "is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "dev": true, + "requires": { + "is-unc-path": "^1.0.0" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==" + }, + "is-svg": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-2.1.0.tgz", + "integrity": "sha512-Ya1giYJUkcL/94quj0+XGcmts6cETPBW1MiFz1ReJrnDJ680F52qpAEGAEGU0nq96FRGIGPx6Yo1CyPXcOoyGw==", + "dev": true, + "requires": { + "html-comment-regex": "^1.1.0" + } + }, + "is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "dev": true, + "requires": { + "which-typed-array": "^1.1.16" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "dev": true + }, + "is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "dev": true, + "requires": { + "unc-path-regex": "^0.1.2" + } + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==", + "dev": true + }, + "is-valid-glob": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-0.3.0.tgz", + "integrity": "sha512-CvG8EtJZ8FyzVOGPzrDorzyN65W1Ld8BVnqshRCah6pFIsprGx3dKgFtjLn/Vw9kGqR4OlR84U7yhT9ZVTyWIQ==", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "dev": true + }, + "isbinaryfile": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.3.tgz", + "integrity": "sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==", + "dev": true, + "requires": { + "buffer-alloc": "^1.2.0" + } + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true + }, + "isomorphic-fetch": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", + "integrity": "sha512-9c4TNAKYXM5PRyVcwUZrF3W09nQ+sO7+jydgs4ZGW9dhsLG2VOlISJABombdQqQRXCwuYG3sYV/puGf5rp0qmA==", + "requires": { + "node-fetch": "^1.0.1", + "whatwg-fetch": ">=0.10.0" + } + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", + "dev": true + }, + "istanbul": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/istanbul/-/istanbul-0.4.5.tgz", + "integrity": "sha512-nMtdn4hvK0HjUlzr1DrKSUY8ychprt8dzHOgY2KXsIhHu5PuQQEOTM27gV9Xblyon7aUH/TSFIjRHEODF/FRPg==", + "dev": true, + "requires": { + "abbrev": "1.0.x", + "async": "1.x", + "escodegen": "1.8.x", + "esprima": "2.7.x", + "glob": "^5.0.15", + "handlebars": "^4.0.1", + "js-yaml": "3.x", + "mkdirp": "0.5.x", + "nopt": "3.x", + "once": "1.x", + "resolve": "1.1.x", + "supports-color": "^3.1.0", + "which": "^1.1.1", + "wordwrap": "^1.0.0" + }, + "dependencies": { + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==", + "dev": true + }, + "escodegen": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", + "integrity": "sha512-yhi5S+mNTOuRvyW4gWlg5W1byMaQGWWSYHXsuFZ7GBo7tpyOwi2EdzMP/QWxh9hwkD2m+wDVHJsxhRIj+v/b/A==", + "dev": true, + "requires": { + "esprima": "^2.7.1", + "estraverse": "^1.9.1", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.2.0" + } + }, + "esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha512-OarPfz0lFCiW4/AV2Oy1Rp9qu0iusTKqykwTspGCZtPxmF81JR4MmIebvF1F9+UOKth2ZubLQ4XGGaU+hSn99A==", + "dev": true + }, + "estraverse": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", + "integrity": "sha512-25w1fMXQrGdoquWnScXZGckOv+Wes+JDnuN/+7ex3SauFRS72r2lFDec0EKPt2YD1wUJ/IrfEex+9yp4hfSOJA==", + "dev": true + }, + "glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA==", + "dev": true, + "requires": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg==", + "dev": true + }, + "source-map": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", + "integrity": "sha512-CBdZ2oa/BHhS4xj5DlhjWNHcan57/5YuvfdLf17iVmIpd9KRm+DFLmC6nBNj+6Ua7Kt3TmOjDpQT1aTYOQtoUA==", + "dev": true, + "optional": true, + "requires": { + "amdefine": ">=0.0.4" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "istanbul-api": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.3.7.tgz", + "integrity": "sha512-4/ApBnMVeEPG3EkSzcw25wDe4N66wxwn+KKn6b47vyek8Xb3NBAcg4xfuQbS7BqcZuTX4wxfD5lVagdggR3gyA==", + "dev": true, + "requires": { + "async": "^2.1.4", + "fileset": "^2.0.2", + "istanbul-lib-coverage": "^1.2.1", + "istanbul-lib-hook": "^1.2.2", + "istanbul-lib-instrument": "^1.10.2", + "istanbul-lib-report": "^1.1.5", + "istanbul-lib-source-maps": "^1.2.6", + "istanbul-reports": "^1.5.1", + "js-yaml": "^3.7.0", + "mkdirp": "^0.5.1", + "once": "^1.4.0" + } + }, + "istanbul-instrumenter-loader": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-instrumenter-loader/-/istanbul-instrumenter-loader-3.0.1.tgz", + "integrity": "sha512-a5SPObZgS0jB/ixaKSMdn6n/gXSrK2S6q/UfRJBT3e6gQmVjwZROTODQsYW5ZNwOu78hG62Y3fWlebaVOL0C+w==", + "dev": true, + "requires": { + "convert-source-map": "^1.5.0", + "istanbul-lib-instrument": "^1.7.3", + "loader-utils": "^1.1.0", + "schema-utils": "^0.3.0" + } + }, + "istanbul-lib-coverage": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.1.tgz", + "integrity": "sha512-PzITeunAgyGbtY1ibVIUiV679EFChHjoMNRibEIobvmrCRaIgwLxNucOSimtNWUhEib/oO7QY2imD75JVgCJWQ==", + "dev": true + }, + "istanbul-lib-hook": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.2.2.tgz", + "integrity": "sha512-/Jmq7Y1VeHnZEQ3TL10VHyb564mn6VrQXHchON9Jf/AEcmQ3ZIiyD1BVzNOKTZf/G3gE+kiGK6SmpF9y3qGPLw==", + "dev": true, + "requires": { + "append-transform": "^0.4.0" + } + }, + "istanbul-lib-instrument": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.2.tgz", + "integrity": "sha512-aWHxfxDqvh/ZlxR8BBaEPVSWDPUkGD63VjGQn3jcw8jCp7sHEMKcrj4xfJn/ABzdMEHiQNyvDQhqm5o8+SQg7A==", + "dev": true, + "requires": { + "babel-generator": "^6.18.0", + "babel-template": "^6.16.0", + "babel-traverse": "^6.18.0", + "babel-types": "^6.18.0", + "babylon": "^6.18.0", + "istanbul-lib-coverage": "^1.2.1", + "semver": "^5.3.0" + } + }, + "istanbul-lib-report": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.5.tgz", + "integrity": "sha512-UsYfRMoi6QO/doUshYNqcKJqVmFe9w51GZz8BS3WB0lYxAllQYklka2wP9+dGZeHYaWIdcXUx8JGdbqaoXRXzw==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^1.2.1", + "mkdirp": "^0.5.1", + "path-parse": "^1.0.5", + "supports-color": "^3.1.2" + }, + "dependencies": { + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.6.tgz", + "integrity": "sha512-TtbsY5GIHgbMsMiRw35YBHGpZ1DVFEO19vxxeiDMYaeOFOCzfnYVxvl6pOUIZR4dtPhAGpSMup8OyF8ubsaqEg==", + "dev": true, + "requires": { + "debug": "^3.1.0", + "istanbul-lib-coverage": "^1.2.1", + "mkdirp": "^0.5.1", + "rimraf": "^2.6.1", + "source-map": "^0.5.3" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "istanbul-reports": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.5.1.tgz", + "integrity": "sha512-+cfoZ0UXzWjhAdzosCPP3AN8vvef8XDkWtTfgaN+7L3YTpNYITnCaEkceo5SEYy644VkHka/P1FvkWvrG/rrJw==", + "dev": true, + "requires": { + "handlebars": "^4.0.3" + } + }, + "istextorbinary": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/istextorbinary/-/istextorbinary-1.0.2.tgz", + "integrity": "sha512-qZ5ptUDuni2pdCngFTraYa5kalQ0mX47Mhn08tT0DZZv/7yhX1eMb9lFtXVbWhFtgRtpLG/UdqVAjh9teO5x+w==", + "dev": true, + "requires": { + "binaryextensions": "~1.0.0", + "textextensions": "~1.0.0" + } + }, + "jest-changed-files": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-20.0.3.tgz", + "integrity": "sha512-3o76mBdqPXN5zrak+U9ldALWgYlQQgKh8vQL3nsQO/seybjPqsp2Qp0pGGvVeMOaiwCbOZCrOvb3D8QhG/9Ccw==", + "dev": true + }, + "jest-cli": { + "version": "20.0.4", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-20.0.4.tgz", + "integrity": "sha512-OfQTkV6T5+V+c3hbzGVJl1SqTOmIw7dBIZYl6XDdSNOmhoyCmwNh/dsEs0lgqIMZkF+AeLbRswkH91XBVXyKqg==", + "dev": true, + "requires": { + "ansi-escapes": "^1.4.0", + "callsites": "^2.0.0", + "chalk": "^1.1.3", + "graceful-fs": "^4.1.11", + "is-ci": "^1.0.10", + "istanbul-api": "^1.1.1", + "istanbul-lib-coverage": "^1.0.1", + "istanbul-lib-instrument": "^1.4.2", + "istanbul-lib-source-maps": "^1.1.0", + "jest-changed-files": "^20.0.3", + "jest-config": "^20.0.4", + "jest-docblock": "^20.0.3", + "jest-environment-jsdom": "^20.0.3", + "jest-haste-map": "^20.0.4", + "jest-jasmine2": "^20.0.4", + "jest-message-util": "^20.0.3", + "jest-regex-util": "^20.0.3", + "jest-resolve-dependencies": "^20.0.3", + "jest-runtime": "^20.0.4", + "jest-snapshot": "^20.0.3", + "jest-util": "^20.0.3", + "micromatch": "^2.3.11", + "node-notifier": "^5.0.2", + "pify": "^2.3.0", + "slash": "^1.0.0", + "string-length": "^1.0.1", + "throat": "^3.0.0", + "which": "^1.2.12", + "worker-farm": "^1.3.1", + "yargs": "^7.0.2" + }, + "dependencies": { + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha512-dtXTVMkh6VkEEA7OhXnN1Ecb8aAGFdZ1LFxtOCoqj4qkyOJMt7+qs6Ahdy6p/NQCPYsRSXXivhSB/J5E9jmYKA==", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1" + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha512-G2n5bG5fSUCpnsXz4+8FUkYsGPkNfLn9YvS66U5qbTIXI2Ynnlo4Bi42bWv+omKUCqz+ejzfClwne0alJWJPhg==", + "dev": true + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha512-xU7bpz2ytJl1bH9cgIurjpg/n8Gohy9GTw81heDYLJQ4RU60dlyJsa+atVF2pI0yMMvKxI9HkKwjePCj5XI1hw==", + "dev": true, + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha512-hxx03P2dJxss6ceIeri9cmYOT4SRs3Zk3afZwWpOsRqLqprhTR8u++SlC+sFGsQr7WGFPdMF7Gjc1njDLDK6UA==", + "dev": true, + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha512-1FOj1LOwn42TMrruOHGt18HemVnbwAmAak7krWk+wa93KXxGbK+2jpezm+ytJYDaBX0/SPLZFHKM7m+tKobWGg==", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha512-LnU2XFEk9xxSJ6rfgAry/ty5qwUTyHYOBU0g4R6tIw5ljwgGIBmiKhRWLw5NpMOnrgUNcDJ4WMp8rl3sYVHLNA==", + "dev": true, + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + } + }, + "yargs": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.2.tgz", + "integrity": "sha512-ZEjj/dQYQy0Zx0lgLMLR8QuaqTihnxirir7EwUHp1Axq4e3+k8jXU5K0VLbNvedv1f4EWtBonDIZm0NUr+jCcA==", + "dev": true, + "requires": { + "camelcase": "^3.0.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.2", + "which-module": "^1.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^5.0.1" + } + } + } + }, + "jest-config": { + "version": "20.0.4", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-20.0.4.tgz", + "integrity": "sha512-9urceXnsfO+DXNGrzeDFKx/IAFpUljbvaiPZEn1sWuF97QN0Ppt7yXmnPoAOylwxpNK1t9lWUER5eeoH63rPCA==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "glob": "^7.1.1", + "jest-environment-jsdom": "^20.0.3", + "jest-environment-node": "^20.0.3", + "jest-jasmine2": "^20.0.4", + "jest-matcher-utils": "^20.0.3", + "jest-regex-util": "^20.0.3", + "jest-resolve": "^20.0.4", + "jest-validate": "^20.0.3", + "pretty-format": "^20.0.3" + } + }, + "jest-diff": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-20.0.3.tgz", + "integrity": "sha512-DITOXlTg0HDL9QKiVpf82vDu/nva60/V9xp056zjnAYpHVTZlJgfLMIHJmgPCoSu0+7n7QUAfxyFUHUGyHLFSw==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "diff": "^3.2.0", + "jest-matcher-utils": "^20.0.3", + "pretty-format": "^20.0.3" + } + }, + "jest-docblock": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-20.0.3.tgz", + "integrity": "sha512-lHwefzd+CB38Awy4yiWb8he+ovUXjNeuN4tNQ1sa6/vBh6P7XwpiuSDIs4GH6/yE1uDBUaYiaf/msD7cWMTL7g==", + "dev": true + }, + "jest-environment-jsdom": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-20.0.3.tgz", + "integrity": "sha512-SSm2oCtH0kBYdXhEMzZDFM4GU/auz4x7yv8AGduAZSZP5loKYHLNoKfVlyN1iFQ+vCJ+1QSS+sVnUARSwaBqbw==", + "dev": true, + "requires": { + "jest-mock": "^20.0.3", + "jest-util": "^20.0.3", + "jsdom": "^9.12.0" + } + }, + "jest-environment-node": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-20.0.3.tgz", + "integrity": "sha512-kVwkLhrGd1toaMHHtVIM2qleNTBDrFUZ6Qjv0GEfd75DK2P0H24xVVMA83H0PEkNbGl2EbjF/CeAIJSN3LagBw==", + "dev": true, + "requires": { + "jest-mock": "^20.0.3", + "jest-util": "^20.0.3" + } + }, + "jest-haste-map": { + "version": "20.0.5", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-20.0.5.tgz", + "integrity": "sha512-0IKAQjUvuZjMCNi/0VNQQF74/H9KB67hsHJqGiwTWQC6XO5Azs7kLWm+6Q/dwuhvDUvABDOBMFK2/FwZ3sZ07Q==", + "dev": true, + "requires": { + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.1.11", + "jest-docblock": "^20.0.3", + "micromatch": "^2.3.11", + "sane": "~1.6.0", + "worker-farm": "^1.3.1" + }, + "dependencies": { + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha512-dtXTVMkh6VkEEA7OhXnN1Ecb8aAGFdZ1LFxtOCoqj4qkyOJMt7+qs6Ahdy6p/NQCPYsRSXXivhSB/J5E9jmYKA==", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1" + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha512-G2n5bG5fSUCpnsXz4+8FUkYsGPkNfLn9YvS66U5qbTIXI2Ynnlo4Bi42bWv+omKUCqz+ejzfClwne0alJWJPhg==", + "dev": true + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha512-xU7bpz2ytJl1bH9cgIurjpg/n8Gohy9GTw81heDYLJQ4RU60dlyJsa+atVF2pI0yMMvKxI9HkKwjePCj5XI1hw==", + "dev": true, + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha512-hxx03P2dJxss6ceIeri9cmYOT4SRs3Zk3afZwWpOsRqLqprhTR8u++SlC+sFGsQr7WGFPdMF7Gjc1njDLDK6UA==", + "dev": true, + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha512-1FOj1LOwn42TMrruOHGt18HemVnbwAmAak7krWk+wa93KXxGbK+2jpezm+ytJYDaBX0/SPLZFHKM7m+tKobWGg==", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha512-LnU2XFEk9xxSJ6rfgAry/ty5qwUTyHYOBU0g4R6tIw5ljwgGIBmiKhRWLw5NpMOnrgUNcDJ4WMp8rl3sYVHLNA==", + "dev": true, + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + } + } + } + }, + "jest-jasmine2": { + "version": "20.0.4", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-20.0.4.tgz", + "integrity": "sha512-XNHvFt9iljOaSSZU5t5dC9kJtrcM+KnVbw0Qa/BpGZlrorqS+m0iWiAJO2xXcGMimCmhT4NLZAS1v/JBGWR8Cg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "graceful-fs": "^4.1.11", + "jest-diff": "^20.0.3", + "jest-matcher-utils": "^20.0.3", + "jest-matchers": "^20.0.3", + "jest-message-util": "^20.0.3", + "jest-snapshot": "^20.0.3", + "once": "^1.4.0", + "p-map": "^1.1.1" + } + }, + "jest-matcher-utils": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-20.0.3.tgz", + "integrity": "sha512-eSNh2n3aXULZUbherq5+lZVdpUau8sniowi1tcc1ZueBk/97avAwwoDwBVvxI9JINVrPTsCI51SiQtrjBkVvPw==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "pretty-format": "^20.0.3" + } + }, + "jest-matchers": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-matchers/-/jest-matchers-20.0.3.tgz", + "integrity": "sha512-aDlp50L8qPJ+Y+tifrlKewT0ZU1uC9OP7GJ5T0UKSw/wB73wf6jKEAZUqyA67BocW8BZD7qVVWHasm7u2D1CMQ==", + "dev": true, + "requires": { + "jest-diff": "^20.0.3", + "jest-matcher-utils": "^20.0.3", + "jest-message-util": "^20.0.3", + "jest-regex-util": "^20.0.3" + } + }, + "jest-message-util": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-20.0.3.tgz", + "integrity": "sha512-p4UQLFjZmXw9Optr6c0aAIDN622+tdVW9XjaCODww/Y8MRGo1S60CICl0Jb4XdJWmMkmD07osWc6aElLxo0mDg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "micromatch": "^2.3.11", + "slash": "^1.0.0" + }, + "dependencies": { + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha512-dtXTVMkh6VkEEA7OhXnN1Ecb8aAGFdZ1LFxtOCoqj4qkyOJMt7+qs6Ahdy6p/NQCPYsRSXXivhSB/J5E9jmYKA==", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1" + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha512-G2n5bG5fSUCpnsXz4+8FUkYsGPkNfLn9YvS66U5qbTIXI2Ynnlo4Bi42bWv+omKUCqz+ejzfClwne0alJWJPhg==", + "dev": true + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha512-xU7bpz2ytJl1bH9cgIurjpg/n8Gohy9GTw81heDYLJQ4RU60dlyJsa+atVF2pI0yMMvKxI9HkKwjePCj5XI1hw==", + "dev": true, + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha512-hxx03P2dJxss6ceIeri9cmYOT4SRs3Zk3afZwWpOsRqLqprhTR8u++SlC+sFGsQr7WGFPdMF7Gjc1njDLDK6UA==", + "dev": true, + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha512-1FOj1LOwn42TMrruOHGt18HemVnbwAmAak7krWk+wa93KXxGbK+2jpezm+ytJYDaBX0/SPLZFHKM7m+tKobWGg==", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha512-LnU2XFEk9xxSJ6rfgAry/ty5qwUTyHYOBU0g4R6tIw5ljwgGIBmiKhRWLw5NpMOnrgUNcDJ4WMp8rl3sYVHLNA==", + "dev": true, + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + } + } + } + }, + "jest-mock": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-20.0.3.tgz", + "integrity": "sha512-Edmuskld6ImmUuqxhbwwX5fDXQlFC/fe3XcZKVwK9SnbetIFyivTaub71ZbL5uuWdkvr4VggcyxlhdnpsIlRvg==", + "dev": true + }, + "jest-regex-util": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-20.0.3.tgz", + "integrity": "sha512-WVFSnROOYgYA+AyTytpZA93EEv16DfPkkR8V8okVQjirXLfRs9n451BPgiiUJSHIyJv+OQ4El0+q16hyY1dEdA==", + "dev": true + }, + "jest-resolve": { + "version": "20.0.4", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-20.0.4.tgz", + "integrity": "sha512-n/u93CugulXmQ8FcHHGv1kUEFagsbXsJgKLK2G4eAdmawHObAc6DgJtOVp9hgNJOGRU6c6ozdB5nzMO02Fecig==", + "dev": true, + "requires": { + "browser-resolve": "^1.11.2", + "is-builtin-module": "^1.0.0", + "resolve": "^1.3.2" + } + }, + "jest-resolve-dependencies": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-20.0.3.tgz", + "integrity": "sha512-k0DK242umC88ih4KKH1jVlXBulQJfOmMXV/nMMfqRgeFKbBYfUROLZkz0zr8TON5WfnuiHV5GotqE0pXoqg08A==", + "dev": true, + "requires": { + "jest-regex-util": "^20.0.3" + } + }, + "jest-runtime": { + "version": "20.0.4", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-20.0.4.tgz", + "integrity": "sha512-NTGhGRKhfM19w0egxges3hhIO8gPXB2H6Txaie3+AZIHF+VZCItH27uEFzU6cQTdwzcWaiieYgCAfGKNeUUf7g==", + "dev": true, + "requires": { + "babel-core": "^6.0.0", + "babel-jest": "^20.0.3", + "babel-plugin-istanbul": "^4.0.0", + "chalk": "^1.1.3", + "convert-source-map": "^1.4.0", + "graceful-fs": "^4.1.11", + "jest-config": "^20.0.4", + "jest-haste-map": "^20.0.4", + "jest-regex-util": "^20.0.3", + "jest-resolve": "^20.0.4", + "jest-util": "^20.0.3", + "json-stable-stringify": "^1.0.1", + "micromatch": "^2.3.11", + "strip-bom": "3.0.0", + "yargs": "^7.0.2" + }, + "dependencies": { + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha512-dtXTVMkh6VkEEA7OhXnN1Ecb8aAGFdZ1LFxtOCoqj4qkyOJMt7+qs6Ahdy6p/NQCPYsRSXXivhSB/J5E9jmYKA==", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1" + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha512-G2n5bG5fSUCpnsXz4+8FUkYsGPkNfLn9YvS66U5qbTIXI2Ynnlo4Bi42bWv+omKUCqz+ejzfClwne0alJWJPhg==", + "dev": true + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha512-xU7bpz2ytJl1bH9cgIurjpg/n8Gohy9GTw81heDYLJQ4RU60dlyJsa+atVF2pI0yMMvKxI9HkKwjePCj5XI1hw==", + "dev": true, + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha512-hxx03P2dJxss6ceIeri9cmYOT4SRs3Zk3afZwWpOsRqLqprhTR8u++SlC+sFGsQr7WGFPdMF7Gjc1njDLDK6UA==", + "dev": true, + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha512-1FOj1LOwn42TMrruOHGt18HemVnbwAmAak7krWk+wa93KXxGbK+2jpezm+ytJYDaBX0/SPLZFHKM7m+tKobWGg==", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha512-LnU2XFEk9xxSJ6rfgAry/ty5qwUTyHYOBU0g4R6tIw5ljwgGIBmiKhRWLw5NpMOnrgUNcDJ4WMp8rl3sYVHLNA==", + "dev": true, + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true + }, + "yargs": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.2.tgz", + "integrity": "sha512-ZEjj/dQYQy0Zx0lgLMLR8QuaqTihnxirir7EwUHp1Axq4e3+k8jXU5K0VLbNvedv1f4EWtBonDIZm0NUr+jCcA==", + "dev": true, + "requires": { + "camelcase": "^3.0.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.2", + "which-module": "^1.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^5.0.1" + } + } + } + }, + "jest-snapshot": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-20.0.3.tgz", + "integrity": "sha512-oapnAnOloz9Lv2r44TtiAQiPT2f6NdLFvK6mW3hnGStfDjstnbHAxG0f/tUhXr81BcmZvz03hsMMInKi9bHG0Q==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "jest-diff": "^20.0.3", + "jest-matcher-utils": "^20.0.3", + "jest-util": "^20.0.3", + "natural-compare": "^1.4.0", + "pretty-format": "^20.0.3" + } + }, + "jest-util": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-20.0.3.tgz", + "integrity": "sha512-Ig/4sAywd/7YJe3jUOIyj+NaX7NCQnxMc/lfRezvbkceZDye0mch126UfIzqyBdS2gjxQl7S8yERvcZDMvK1NA==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "graceful-fs": "^4.1.11", + "jest-message-util": "^20.0.3", + "jest-mock": "^20.0.3", + "jest-validate": "^20.0.3", + "leven": "^2.1.0", + "mkdirp": "^0.5.1" + } + }, + "jest-validate": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-20.0.3.tgz", + "integrity": "sha512-yIpGo3le6q+ZPID2UCl58FRM4ZVGZK9qu1RaWSbEnZFUcj08XznJWd6g2HbPqsWCY9abBO3hq2aP5GZveEfGUg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "jest-matcher-utils": "^20.0.3", + "leven": "^2.1.0", + "pretty-format": "^20.0.3" + } + }, + "jju": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jju/-/jju-1.3.0.tgz", + "integrity": "sha512-5ZxkUdN34GXez75MJH/34+sHOwkYzw5a7fKqlaByXpwZCU8fsBZaN/WMD9iTxYIuPu3yPCR21mNOS8SKPnPPNw==", + "dev": true + }, + "js-base64": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz", + "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", + "dev": true + }, + "jsdom": { + "version": "9.12.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-9.12.0.tgz", + "integrity": "sha512-Qw4oqNxo4LyzkSqVIyCnEltTc4xV3g1GBaI88AvYTesWzmWHUSoMNmhBjUBa+6ldXIBJS9xoeLNJPfUAykTyxw==", + "dev": true, + "requires": { + "abab": "^1.0.3", + "acorn": "^4.0.4", + "acorn-globals": "^3.1.0", + "array-equal": "^1.0.0", + "content-type-parser": "^1.0.1", + "cssom": ">= 0.3.2 < 0.4.0", + "cssstyle": ">= 0.2.37 < 0.3.0", + "escodegen": "^1.6.1", + "html-encoding-sniffer": "^1.0.1", + "nwmatcher": ">= 1.3.9 < 2.0.0", + "parse5": "^1.5.1", + "request": "^2.79.0", + "sax": "^1.2.1", + "symbol-tree": "^3.2.1", + "tough-cookie": "^2.3.2", + "webidl-conversions": "^4.0.0", + "whatwg-encoding": "^1.0.1", + "whatwg-url": "^4.3.0", + "xml-name-validator": "^2.0.1" + }, + "dependencies": { + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + } + } + }, + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha512-Mke0DA0QjUWuJlhsE0ZPPhYiJkRap642SmI/4ztCFaUs6V2AiH1sfecc+57NgaryfAA2VR3v6O+CSjC1jZJKOA==", + "dev": true + }, + "json-loader": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.7.tgz", + "integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==", + "dev": true + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.3.0.tgz", + "integrity": "sha512-qtYiSSFlwot9XHtF9bD9c7rwKjr+RecWT//ZnPvSmEjpV5mmPOCN4j8UjY5hbjNkOwZ/jQv3J6R1/pL7RwgMsg==", + "dev": true, + "requires": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "isarray": "^2.0.5", + "jsonify": "^0.0.1", + "object-keys": "^1.1.1" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + } + } + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "dev": true + }, + "json3": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", + "integrity": "sha512-I5YLeauH3rIaE99EE++UeH2M2gSYo8/2TqDac7oZEH6D/DSQ4Woa628Qrfj1X9/OY5Mk5VvIDQaKCDchXaKrmA==", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw==", + "dev": true + }, + "jsonfile": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsonify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.1.tgz", + "integrity": "sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==", + "dev": true + }, + "jsonpointer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", + "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==", + "dev": true + }, + "jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + } + }, + "jszip": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-2.5.0.tgz", + "integrity": "sha512-IRoyf8JSYY3nx+uyh5xPc0qdy8pUDTp2UkHOWYNF/IO/3D8nx7899UlSAjD8rf8wUgOmm0lACWx/GbW3EaxIXQ==", + "dev": true, + "requires": { + "pako": "~0.2.5" + }, + "dependencies": { + "pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==", + "dev": true + } + } + }, + "karma": { + "version": "0.13.22", + "resolved": "https://registry.npmjs.org/karma/-/karma-0.13.22.tgz", + "integrity": "sha512-A9/7e/IzHUkTcfjnTy5Wzo2P5wPuf7+QZh1JzNdTpYA0AN/vSrxfFjPKtKC3jRYJFZMJ7S1I9L2LItaJS1XMSg==", + "dev": true, + "requires": { + "batch": "^0.5.3", + "bluebird": "^2.9.27", + "body-parser": "^1.12.4", + "chokidar": "^1.4.1", + "colors": "^1.1.0", + "connect": "^3.3.5", + "core-js": "^2.1.0", + "di": "^0.0.1", + "dom-serialize": "^2.2.0", + "expand-braces": "^0.1.1", + "glob": "^7.0.0", + "graceful-fs": "^4.1.2", + "http-proxy": "^1.13.0", + "isbinaryfile": "^3.0.0", + "lodash": "^3.8.0", + "log4js": "^0.6.31", + "mime": "^1.3.4", + "minimatch": "^3.0.0", + "optimist": "^0.6.1", + "rimraf": "^2.3.3", + "socket.io": "^1.4.5", + "source-map": "^0.5.3", + "useragent": "^2.1.6" + }, + "dependencies": { + "core-js": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", + "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", + "dev": true + }, + "lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha512-9mDDwqVIma6OZX79ZlDACZl8sBm0TEnkf99zV3iMA4GzkIT/9hiqP5mY0HoT1iNLCrKc/R1HByV+yJfRWVJryQ==", + "dev": true + } + } + }, + "karma-coverage": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-0.5.5.tgz", + "integrity": "sha512-nC6B3DdP0IhNVUH25kx7ztVBT5belTC4MQ2tDhvvGMUhrpUPA3vUipBC9XqE9WqfHQDjRfQdn4z7Y0iKC6axBA==", + "dev": true, + "requires": { + "dateformat": "^1.0.6", + "istanbul": "^0.4.0", + "minimatch": "^3.0.0", + "source-map": "^0.5.1" + }, + "dependencies": { + "dateformat": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz", + "integrity": "sha512-5sFRfAAmbHdIts+eKjR9kYJoF0ViCMVX9yqLu5A7S/v+nd077KgCITOMiirmyCBiZpKLDXbBOkYm6tu7rX/TKg==", + "dev": true, + "requires": { + "get-stdin": "^4.0.1", + "meow": "^3.3.0" + } + } + } + }, + "karma-mocha": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/karma-mocha/-/karma-mocha-0.2.2.tgz", + "integrity": "sha512-ymidfOYzZT4L9JANTTUXE3g0KCJBkC8VJMdUQqXdeklEDuj0QfZSRVmIQgQtqTr4VUcn7XBNuul049Y8tD8JZA==", + "dev": true + }, + "karma-mocha-clean-reporter": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/karma-mocha-clean-reporter/-/karma-mocha-clean-reporter-0.0.1.tgz", + "integrity": "sha512-Uwm3V4rijEmokqIQslD6FFl9GfvfBTiRi3ay1U47zaUAGITnC6iOdX+YAklGfzN/zYopY+nzm9oJxOUSt4cUMQ==", + "dev": true, + "requires": { + "chalk": "^1.0.0", + "karma": ">=0.9", + "log-symbols": "^1.0.2", + "mocha-clean": "^0.4.0" + } + }, + "karma-phantomjs-launcher": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/karma-phantomjs-launcher/-/karma-phantomjs-launcher-1.0.4.tgz", + "integrity": "sha512-tf4P3plsE7wb5Pqh8GJ6RnElxfI/UM4MtVnjbSIZFpdFJlKnjRzfIx8MLCcSYJBwZ1+qSKFz4uBe3XNoq2t3KA==", + "dev": true, + "requires": { + "lodash": "^4.0.1", + "phantomjs-prebuilt": "^2.1.7" + }, + "dependencies": { + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + } + } + }, + "karma-sinon-chai": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/karma-sinon-chai/-/karma-sinon-chai-1.2.4.tgz", + "integrity": "sha512-0HeASco7V3S6jhIF1LuRNl74A1ty2VHcBXR4VqKq4tYbph++gx+IA/SoQfoa24ZFQ7K9cze+Zr6KmEWA5cXKhg==", + "dev": true, + "requires": { + "lolex": "^1.5.0" + }, + "dependencies": { + "lolex": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-1.6.0.tgz", + "integrity": "sha512-/bpxDL56TG5LS5zoXxKqA6Ro5tkOS5M8cm/7yQcwLIKIcM2HR5fjjNCaIhJNv96SEk4hNGSafYMZK42Xv5fihQ==", + "dev": true + } + } + }, + "karma-webpack": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/karma-webpack/-/karma-webpack-2.0.13.tgz", + "integrity": "sha512-2cyII34jfrAabbI2+4Rk4j95Nazl98FvZQhgSiqKUDarT317rxfv/EdzZ60CyATN4PQxJdO5ucR5bOOXkEVrXw==", + "dev": true, + "requires": { + "async": "^2.0.0", + "babel-runtime": "^6.0.0", + "loader-utils": "^1.0.0", + "lodash": "^4.0.0", + "source-map": "^0.5.6", + "webpack-dev-middleware": "^1.12.0" + }, + "dependencies": { + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + } + } + }, + "kew": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/kew/-/kew-0.7.0.tgz", + "integrity": "sha512-IG6nm0+QtAMdXt9KvbgbGdvY50RSrw+U4sGZg+KlrSKPJEwVE5JVoI3d7RWfSMdBQneRheeAOj3lIjX5VL/9RQ==", + "dev": true + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "klaw": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", + "integrity": "sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.9" + } + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha512-RE2g0b5VGZsOCFOCgP7omTRYFqydmZkBwl5oNnQ1lDYC57uyO9KqNnNVxT7COSHTxrRCWVcAVOcbjk+tvh/rgQ==", + "dev": true + }, + "lazystream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", + "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", + "dev": true, + "requires": { + "readable-stream": "^2.0.5" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==", + "dev": true, + "requires": { + "invert-kv": "^1.0.0" + } + }, + "leven": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", + "integrity": "sha512-nvVPLpIHUxCUoRLrFqTgSxXJ614d8AgQoWl7zPe/2VadE8+1dpU3LBhowRuBAcuwruWtOdD8oYC9jDNJjXDPyA==", + "dev": true + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "liftoff": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.5.0.tgz", + "integrity": "sha512-01zfGFqfORP1CGmZZP2Zn51zsqz4RltDi0RDOhbGoLYdUT5Lw+I2gX6QdwXhPITF6hPOHEOp+At6/L24hIg9WQ==", + "dev": true, + "requires": { + "extend": "^3.0.0", + "findup-sync": "^2.0.0", + "fined": "^1.0.1", + "flagged-respawn": "^1.0.0", + "is-plain-object": "^2.0.4", + "object.map": "^1.0.0", + "rechoir": "^0.6.2", + "resolve": "^1.1.7" + } + }, + "livereload-js": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-2.4.0.tgz", + "integrity": "sha512-XPQH8Z2GDP/Hwz2PCDrh2mth4yFejwA1OZ/81Ti3LgKyhDcEjsSsqFWZojHG0va/duGd+WyosY7eXLDoOyqcPw==", + "dev": true + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + }, + "dependencies": { + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + } + } + }, + "loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", + "dev": true + }, + "loader-utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "dependencies": { + "json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + } + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz", + "integrity": "sha512-0VSEDVec/Me2eATuoiQd8IjyBMMX0fahob8YJ96V1go2RjvCk1m1GxmtfXn8RNSaLaTtop7fsuhhu9oLk3hUgA==", + "dev": true + }, + "lodash._baseassign": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", + "integrity": "sha512-t3N26QR2IdSN+gqSy9Ds9pBu/J1EAFEshKlUHpJG3rvyJOYgcELIxcIeKKfZk7sjOz11cFfzJRsyFry/JyabJQ==", + "dev": true, + "requires": { + "lodash._basecopy": "^3.0.0", + "lodash.keys": "^3.0.0" + } + }, + "lodash._baseclone": { + "version": "4.5.7", + "resolved": "https://registry.npmjs.org/lodash._baseclone/-/lodash._baseclone-4.5.7.tgz", + "integrity": "sha512-nOtLg6tdIdD+TehqBv0WI7jbkLaohHhKSwLmS/UXSFWMWWUxdJc9EVtAfD4L0mV15vV+lZVfF4LEo363VdrMBw==", + "dev": true + }, + "lodash._basecopy": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", + "integrity": "sha512-rFR6Vpm4HeCK1WPGvjZSJ+7yik8d8PVUdCJx5rT2pogG4Ve/2ZS7kfmO5l5T2o5V2mqlNIfSF5MZlr1+xOoYQQ==", + "dev": true + }, + "lodash._basecreate": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz", + "integrity": "sha512-EDem6C9iQpn7fxnGdmhXmqYGjCkStmDXT4AeyB2Ph8WKbglg4aJZczNkQglj+zWXcOEEkViK8THuV2JvugW47g==", + "dev": true + }, + "lodash._basetostring": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz", + "integrity": "sha512-mTzAr1aNAv/i7W43vOR/uD/aJ4ngbtsRaCubp2BfZhlGU/eORUjg/7F6X0orNMdv33JOrdgGybtvMN/po3EWrA==", + "dev": true + }, + "lodash._basevalues": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz", + "integrity": "sha512-H94wl5P13uEqlCg7OcNNhMQ8KvWSIyqXzOPusRgHC9DK3o54P6P3xtbXlVbRABG4q5gSmp7EDdJ0MSuW9HX6Mg==", + "dev": true + }, + "lodash._escapehtmlchar": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._escapehtmlchar/-/lodash._escapehtmlchar-2.4.1.tgz", + "integrity": "sha512-eHm2t2Lg476lq5v4FVmm3B5mCaRlDyTE8fnMfPCEq2o46G4au0qNXIKh7YWhjprm1zgSMLcMSs1XHMgkw02PbQ==", + "dev": true, + "requires": { + "lodash._htmlescapes": "~2.4.1" + } + }, + "lodash._escapestringchar": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._escapestringchar/-/lodash._escapestringchar-2.4.1.tgz", + "integrity": "sha512-iZ6Os4iipaE43pr9SBks+UpZgAjJgRC+lGf7onEoByMr1+Nagr1fmR7zCM6Q4RGMB/V3a57raEN0XZl7Uub3/g==", + "dev": true + }, + "lodash._getnative": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", + "integrity": "sha512-RrL9VxMEPyDMHOd9uFbvMe8X55X16/cGM5IgOKgRElQZutpX89iS6vwl64duTV1/16w5JY7tuFNXqoekmh1EmA==", + "dev": true + }, + "lodash._htmlescapes": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._htmlescapes/-/lodash._htmlescapes-2.4.1.tgz", + "integrity": "sha512-g79hNmMOBVyV+4oKIHM7MWy9Awtk3yqf0Twlawr6f+CmG44nTwBh9I5XiLUnk39KTfYoDBpS66glQGgQCnFIuA==", + "dev": true + }, + "lodash._isiterateecall": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", + "integrity": "sha512-De+ZbrMu6eThFti/CSzhRvTKMgQToLxbij58LMfM8JnYDNSOjkjTCIaa8ixglOeGh2nyPlakbt5bJWJ7gvpYlQ==", + "dev": true + }, + "lodash._isnative": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._isnative/-/lodash._isnative-2.4.1.tgz", + "integrity": "sha512-BOlKGKNHhCHswGOWtmVb5zBygyxN7EmTuzVOSQI6QSoGhG+kvv71gICFS1TBpnqvT1n53txK8CDK3u5D2/GZxQ==", + "dev": true + }, + "lodash._objecttypes": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._objecttypes/-/lodash._objecttypes-2.4.1.tgz", + "integrity": "sha512-XpqGh1e7hhkOzftBfWE7zt+Yn9mVHFkDhicVttvKLsoCMLVVL+xTQjfjB4X4vtznauxv0QZ5ZAeqjvat0dh62Q==", + "dev": true + }, + "lodash._reescape": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz", + "integrity": "sha512-Sjlavm5y+FUVIF3vF3B75GyXrzsfYV8Dlv3L4mEpuB9leg8N6yf/7rU06iLPx9fY0Mv3khVp9p7Dx0mGV6V5OQ==", + "dev": true + }, + "lodash._reevaluate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz", + "integrity": "sha512-OrPwdDc65iJiBeUe5n/LIjd7Viy99bKwDdk7Z5ljfZg0uFRFlfQaCy9tZ4YMAag9WAZmlVpe1iZrkIMMSMHD3w==", + "dev": true + }, + "lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA==", + "dev": true + }, + "lodash._reunescapedhtml": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._reunescapedhtml/-/lodash._reunescapedhtml-2.4.1.tgz", + "integrity": "sha512-CfmZRU1Mk4E/5jh+Wu8lc7tuc3VkuwWZYVIgdPDH9NRSHgiL4Or3AA4JCIpgrkVzHOM+jKu2OMkAVquruhRHDQ==", + "dev": true, + "requires": { + "lodash._htmlescapes": "~2.4.1", + "lodash.keys": "~2.4.1" + }, + "dependencies": { + "lodash.keys": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-2.4.1.tgz", + "integrity": "sha512-ZpJhwvUXHSNL5wYd1RM6CUa2ZuqorG9ngoJ9Ix5Cce+uX7I5O/E06FCJdhSZ33b5dVyeQDnIlWH7B2s5uByZ7g==", + "dev": true, + "requires": { + "lodash._isnative": "~2.4.1", + "lodash._shimkeys": "~2.4.1", + "lodash.isobject": "~2.4.1" + } + } + } + }, + "lodash._root": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz", + "integrity": "sha512-O0pWuFSK6x4EXhM1dhZ8gchNtG7JMqBtrHdoUFUWXD7dJnNSUze1GuyQr5sOs0aCvgGeI3o/OJW8f4ca7FDxmQ==", + "dev": true + }, + "lodash._shimkeys": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._shimkeys/-/lodash._shimkeys-2.4.1.tgz", + "integrity": "sha512-lBrglYxLD/6KAJ8IEa5Lg+YHgNAL7FyKqXg4XOUI+Du/vtniLs1ZqS+yHNKPkK54waAgkdUnDOYaWf+rv4B+AA==", + "dev": true, + "requires": { + "lodash._objecttypes": "~2.4.1" + } + }, + "lodash._stack": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/lodash._stack/-/lodash._stack-4.1.3.tgz", + "integrity": "sha512-7RsWIq+4lw45MQpNO/7kFGOeyO/ixHtm9x9SR7p7vnLorby345sBcAq0F9Q2zcHAA9LO7OxDelGEBOolQE66rQ==", + "dev": true + }, + "lodash.assign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", + "integrity": "sha512-hFuH8TY+Yji7Eja3mGiuAxBqLagejScbG8GbG0j6o9vzn0YL14My+ktnqtZgFTosKymC9/44wP6s7xyuLfnClw==", + "dev": true + }, + "lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", + "dev": true + }, + "lodash.clone": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-4.5.0.tgz", + "integrity": "sha512-GhrVeweiTD6uTmmn5hV/lzgCQhccwReIVRLHp7LT4SopOjqEZ5BbX8b5WWEtAKasjmy8hR7ZPwsYlxRCku5odg==", + "dev": true + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", + "dev": true + }, + "lodash.create": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lodash.create/-/lodash.create-3.1.1.tgz", + "integrity": "sha512-IUfOYwDEbI8JbhW6psW+Ig01BOVK67dTSCUAbS58M0HBkPcAv/jHuxD+oJVP2tUCo3H9L6f/8GM6rxwY+oc7/w==", + "dev": true, + "requires": { + "lodash._baseassign": "^3.0.0", + "lodash._basecreate": "^3.0.0", + "lodash._isiterateecall": "^3.0.0" + } + }, + "lodash.defaults": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-2.4.1.tgz", + "integrity": "sha512-5wTIPWwGGr07JFysAZB8+7JB2NjJKXDIwogSaRX5zED85zyUAQwtOqUk8AsJkkigUcL3akbHYXd5+BPtTGQPZw==", + "dev": true, + "requires": { + "lodash._objecttypes": "~2.4.1", + "lodash.keys": "~2.4.1" + }, + "dependencies": { + "lodash.keys": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-2.4.1.tgz", + "integrity": "sha512-ZpJhwvUXHSNL5wYd1RM6CUa2ZuqorG9ngoJ9Ix5Cce+uX7I5O/E06FCJdhSZ33b5dVyeQDnIlWH7B2s5uByZ7g==", + "dev": true, + "requires": { + "lodash._isnative": "~2.4.1", + "lodash._shimkeys": "~2.4.1", + "lodash.isobject": "~2.4.1" + } + } + } + }, + "lodash.escape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz", + "integrity": "sha512-n1PZMXgaaDWZDSvuNZ/8XOcYO2hOKDqZel5adtR30VKQAtoWs/5AOeFA0vPV8moiPzlqe7F4cP2tzpFewQyelQ==", + "dev": true, + "requires": { + "lodash._root": "^3.0.0" + } + }, + "lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==" + }, + "lodash.isarguments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==", + "dev": true + }, + "lodash.isarray": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", + "integrity": "sha512-JwObCrNJuT0Nnbuecmqr5DgtuBppuCvGD9lxjFpAzwnVtdGoDQ1zig+5W8k5/6Gcn0gZ3936HDAlGd28i7sOGQ==", + "dev": true + }, + "lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==" + }, + "lodash.isobject": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-2.4.1.tgz", + "integrity": "sha512-sTebg2a1PoicYEZXD5PBdQcTlIJ6hUslrlWr7iV0O7n+i4596s2NQ9I5CaZ5FbXSfya/9WQsrYLANUJv9paYVA==", + "dev": true, + "requires": { + "lodash._objecttypes": "~2.4.1" + } + }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "dev": true + }, + "lodash.keys": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", + "integrity": "sha512-CuBsapFjcubOGMn3VD+24HOAPxM79tH+V6ivJL3CHYjtrawauDJHUk//Yew9Hvc6e9rbCrURGk8z6PC+8WJBfQ==", + "dev": true, + "requires": { + "lodash._getnative": "^3.0.0", + "lodash.isarguments": "^3.0.0", + "lodash.isarray": "^3.0.0" + } + }, + "lodash.keysin": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.keysin/-/lodash.keysin-4.2.0.tgz", + "integrity": "sha512-QDSAMsZshsqFm+mNfN3zhWXRH7kGRjh6DWCIekWqgANCBeb78IpZfunCmIsyqnLMp8mkHm5KTlQ35LwIn8hd0A==", + "dev": true + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true + }, + "lodash.merge": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.3.5.tgz", + "integrity": "sha512-VOaeJaCs3/jZ7Sy3CIrOsy8yej1vUmFo7Xgb21rzp/HJNhghsnlIc+DcfekWJIwsfdkBdJp2CplncAQd54N37Q==", + "dev": true, + "requires": { + "lodash._baseclone": "~4.5.0", + "lodash._stack": "~4.1.0", + "lodash.isplainobject": "^4.0.0", + "lodash.keysin": "^4.0.0", + "lodash.rest": "^4.0.0" + } + }, + "lodash.rest": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/lodash.rest/-/lodash.rest-4.0.5.tgz", + "integrity": "sha512-hsypEpebNAt0hj1aX9isQqi2CIZoNS1lP6PSWhB3hcMnBivobYzPZRPYq4cr38+RtvrlxQTgaW+sIuHAhBoHrA==", + "dev": true + }, + "lodash.restparam": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", + "integrity": "sha512-L4/arjjuq4noiUJpt3yS6KIKDtJwNe2fIYgMqyYYKoeIfV1iEqvPwhCx23o+R9dzouGihDAPN1dTIRWa7zk8tw==", + "dev": true + }, + "lodash.some": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz", + "integrity": "sha512-j7MJE+TuT51q9ggt4fSgVqro163BEFjAt3u97IqU+JA2DkWl80nFTrowzLpZ/BnpN7rrl0JA/593NAdd8p/scQ==", + "dev": true + }, + "lodash.template": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz", + "integrity": "sha512-0B4Y53I0OgHUJkt+7RmlDFWKjVAI/YUpWNiL9GQz5ORDr4ttgfQGo+phBWKFLJbBdtOwgMuUkdOHOnPg45jKmQ==", + "dev": true, + "requires": { + "lodash._basecopy": "^3.0.0", + "lodash._basetostring": "^3.0.0", + "lodash._basevalues": "^3.0.0", + "lodash._isiterateecall": "^3.0.0", + "lodash._reinterpolate": "^3.0.0", + "lodash.escape": "^3.0.0", + "lodash.keys": "^3.0.0", + "lodash.restparam": "^3.0.0", + "lodash.templatesettings": "^3.0.0" + } + }, + "lodash.templatesettings": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz", + "integrity": "sha512-TcrlEr31tDYnWkHFWDCV3dHYroKEXpJZ2YJYvJdhN+y4AkWMDZ5I4I8XDtUKqSAyG81N7w+I1mFEJtcED+tGqQ==", + "dev": true, + "requires": { + "lodash._reinterpolate": "^3.0.0", + "lodash.escape": "^3.0.0" + } + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "dev": true + }, + "lodash.values": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.values/-/lodash.values-2.4.1.tgz", + "integrity": "sha512-fQwubKvj2Nox2gy6YnjFm8C1I6MIlzKUtBB+Pj7JGtloGqDDL5CPRr4DUUFWPwXWwAl2k3f4C3Aw8H1qAPB9ww==", + "dev": true, + "requires": { + "lodash.keys": "~2.4.1" + }, + "dependencies": { + "lodash.keys": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-2.4.1.tgz", + "integrity": "sha512-ZpJhwvUXHSNL5wYd1RM6CUa2ZuqorG9ngoJ9Ix5Cce+uX7I5O/E06FCJdhSZ33b5dVyeQDnIlWH7B2s5uByZ7g==", + "dev": true, + "requires": { + "lodash._isnative": "~2.4.1", + "lodash._shimkeys": "~2.4.1", + "lodash.isobject": "~2.4.1" + } + } + } + }, + "log-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", + "integrity": "sha512-mmPrW0Fh2fxOzdBbFv4g1m6pR72haFLPJ2G5SJEELf1y+iaQrDG6cWCPjy54RHYbZAt7X+ls690Kw62AdWXBzQ==", + "dev": true, + "requires": { + "chalk": "^1.0.0" + } + }, + "log4js": { + "version": "0.6.38", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-0.6.38.tgz", + "integrity": "sha512-Cd+klbx7lkiaamEId9/0odHxv/PFHDz2E12kEfd6/CzIOZD084DzysASR/Dot4i1dYPBQKC3r2XIER+dfbLOmw==", + "dev": true, + "requires": { + "readable-stream": "~1.0.2", + "semver": "~4.3.3" + }, + "dependencies": { + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "semver": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", + "integrity": "sha512-IrpJ+yoG4EOH8DFWuVg+8H1kW1Oaof0Wxe7cPcXW3x9BjkN/eVo54F15LyqemnDIUYskQWr9qvl/RihmSy6+xQ==", + "dev": true + } + } + }, + "lolex": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-1.4.0.tgz", + "integrity": "sha512-vycT6CqVi1zilT3lTrgdCcjyTd0DSUlD5ZCZXGqtWSuh1pCJTwLrjeitVj7hDN8rUkMjOHZkHKoRCSiU/E7qcg==", + "dev": true + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha512-k+yt5n3l48JU4k8ftnKG6V7u32wyH2NfKzeMto9F/QRE0amxy/LayxwlvjjkZEIzqR+19IrtFO8p5kB9QaYUFg==", + "dev": true + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha512-RPNliZOFkqFumDhvYqOaNY4Uz9oJM2K9tC6JWsJJsNdhuONW4LQHRBpb0qf4pJApVffI5N39SwzWZJuEhfd7eQ==", + "dev": true, + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + } + }, + "lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==", + "dev": true + }, + "lru-cache": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", + "integrity": "sha512-WpibWJ60c3AgAz8a2iYErDrcT2C7OmKnsWhIcHOjkUHFjkXncJhtLxNSqUmxRxRunpb5I8Vprd7aNSd2NtksJQ==", + "dev": true + }, + "make-iterator": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", + "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "requires": { + "tmpl": "1.0.5" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", + "dev": true + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", + "dev": true + }, + "map-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.0.7.tgz", + "integrity": "sha512-C0X0KQmGm3N2ftbTGBhSyuydQ+vV1LC3f3zPvT3RXHXNZrvfPZcoXp/N5DOa8vedX/rTMm2CjTtivFg2STJMRQ==", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "math-expression-evaluator": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.4.0.tgz", + "integrity": "sha512-4vRUvPyxdO8cWULGTh9dZWL2tZK6LDBvj+OGHBER7poH9Qdt7kXEoj20wiz4lQUbUXQZFjPbe5mVDo9nutizCw==", + "dev": true + }, + "math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "dev": true + }, + "math-random": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.4.tgz", + "integrity": "sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==", + "dev": true + }, + "md5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.2.1.tgz", + "integrity": "sha512-PlGG4z5mBANDGCKsYQe0CaUYHdZYZt8ZPZLmEt+Urf0W4GlpTX4HescwHU+dc9+Z/G/vZKYZYFrwgm9VxK6QOQ==", + "dev": true, + "requires": { + "charenc": "~0.0.1", + "crypt": "~0.0.1", + "is-buffer": "~1.1.1" + } + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true + }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha512-nOBDrc/wgpkd3X/JOhMqYR+/eLqlfLP4oQfoBA6QExIxEl+GU01oyEkwWyueyO8110pUKijtiHGhEmYoOn88oQ==", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha512-TNdwZs0skRlpPpCUK25StC4VH+tP5GgeY1HQOOGP+lQ2xtdkN2VtT/5tiX9k3IWpkBPV9b3LsAWXn4GGi/PrSA==", + "dev": true, + "requires": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" + } + }, + "merge": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/merge/-/merge-1.2.1.tgz", + "integrity": "sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ==", + "dev": true + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "dev": true + }, + "merge-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", + "integrity": "sha512-e6RM36aegd4f+r8BZCcYXlO2P3H6xbUM6ktL2Xmf45GAOit9bI4z6/3VU7JwllVO1L7u0UDSg/EhzQ5lmMLolA==", + "dev": true, + "requires": { + "readable-stream": "^2.0.1" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "merge2": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.0.3.tgz", + "integrity": "sha512-KgI4P7MSM31MNBftGJ07WBsLYLx7z9mQsL6+bcHk80AdmUA3cPzX69MK6dSgEgSF9TXLOl040pgo0XP/VTMENA==", + "dev": true + }, + "method-override": { + "version": "2.3.10", + "resolved": "https://registry.npmjs.org/method-override/-/method-override-2.3.10.tgz", + "integrity": "sha512-Ks2/7e+3JuwQcpLybc6wTHyqg13HDjOhLcE+YaAEub9DbSxF+ieMvxUlybmWW9luRMh9Cd0rO9aNtzUT51xfNQ==", + "dev": true, + "requires": { + "debug": "2.6.9", + "methods": "~1.1.2", + "parseurl": "~1.3.2", + "vary": "~1.1.2" + } + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz", + "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==", + "dev": true + } + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "requires": { + "mime-db": "1.52.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", + "dev": true + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true + }, + "minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + }, + "dependencies": { + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + } + } + }, + "minizlib": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "dev": true, + "requires": { + "minipass": "^2.9.0" + } + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + }, + "mocha": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-3.4.2.tgz", + "integrity": "sha512-19d+WPNPG+gCDZvyw8zMcn1MPl72yfZKuTjC/reTOVOFx3VBHXEwxxJyvi9B4G0RV49jjXs0huLKcG58X9S84Q==", + "dev": true, + "requires": { + "browser-stdout": "1.3.0", + "commander": "2.9.0", + "debug": "2.6.0", + "diff": "3.2.0", + "escape-string-regexp": "1.0.5", + "glob": "7.1.1", + "growl": "1.9.2", + "json3": "3.3.2", + "lodash.create": "3.1.1", + "mkdirp": "0.5.1", + "supports-color": "3.1.2" + }, + "dependencies": { + "commander": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "integrity": "sha512-bmkUukX8wAOjHdN26xj5c4ctEV22TQ7dQYhSmuckKhToXrkUn0iIaolHdIxYYqD55nhpSPA9zPQ1yP57GdXP2A==", + "dev": true, + "requires": { + "graceful-readlink": ">= 1.0.0" + } + }, + "debug": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.0.tgz", + "integrity": "sha512-XMYwiKKX0jdij1QRlpYn0O6gks0hW3iYUsx/h/RLPKouDGVeun2wlMYl29C85KBjnv1vw2vj+yti1ziHsXd7cg==", + "dev": true, + "requires": { + "ms": "0.7.2" + } + }, + "diff": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.2.0.tgz", + "integrity": "sha512-597ykPFhtJYaXqPq6fF7Vl1fXTKgPdLOntyxpmdzUOKiYGqK7zcnbplj5088+8qJnWdzXhyeau5iVr8HVo9dgg==", + "dev": true + }, + "glob": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", + "integrity": "sha512-mRyN/EsN2SyNhKWykF3eEGhDpeNplMWaW18Bmh76tnOqk5TbELAVwFAYOCmKVssOYFrYvvLMguiA+NXO3ZTuVA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.2", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha512-miQKw5Hv4NS1Psg2517mV4e4dYNaO3++hjAvLOAzKqZ61rH8NS1SK+vbfBWZ5PY/Me/bEWhUwqMghEW5Fb9T7Q==", + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha512-SknJC52obPfGQPnjIkXbmA6+5H15E+fR+E4iR2oQ3zzCLbd7/ONua69R/Gw7AgkTLsRG+r5fzksYwWe1AgTyWA==", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha512-5NnE67nQSQDJHVahPJna1PQ/zCXMnQop3yUCxjKPNzCxuyPSKWTQ/5Gu5CZmjetwGLWRA+PzeF5thlbOdbQldA==", + "dev": true + }, + "supports-color": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz", + "integrity": "sha512-F8dvPrZJtNzvDRX26eNXT4a7AecAvTGljmmnI39xEgSpbHKhQ7N0dO/NTxUExd0wuLHp4zbwYY7lvHq0aKpwrA==", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "mocha-clean": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/mocha-clean/-/mocha-clean-0.4.0.tgz", + "integrity": "sha512-BftHw52rVdBUBUdt8r4UjPgN/slxa8ZQ2kw7mogC5WjuPkz3cx8DZC38ivDPWojn4ie+ogX0r0lKiEe7H89o3A==", + "dev": true + }, + "morgan": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.6.1.tgz", + "integrity": "sha512-WWxlTx5xCqbtSeX/gPVHUZBhAhSMfYQLgPrWHEN0FYnF+zf1Ju/Zct6rpeKmvzibrYF4QvFVws7IN61BxnKu+Q==", + "dev": true, + "requires": { + "basic-auth": "~1.0.3", + "debug": "~2.2.0", + "depd": "~1.0.1", + "on-finished": "~2.3.0", + "on-headers": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha512-X0rGvJcskG1c3TgSCPqHJ0XJgwlcvOC7elJ5Y0hYuKBZoVqWpAMfLOeIh2UI/DCQ5ruodIjvsugZtjUYUw2pUw==", + "dev": true, + "requires": { + "ms": "0.7.1" + } + }, + "depd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.0.1.tgz", + "integrity": "sha512-OEWAMbCkK9IWQ8pfTvHBhCSqHgR+sk5pbiYqq0FqfARG4Cy+cRsCbITx6wh5pcsmfBPiJAcbd98tfdz5fnBbag==", + "dev": true + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha512-lRLiIR9fSNpnP6TC4v8+4OU7oStC01esuNowdQ34L+Gk8e5Puoc88IqJ+XAY/B3Mn2ZKis8l8HX90oU8ivzUHg==", + "dev": true + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + } + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "multiparty": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/multiparty/-/multiparty-3.3.2.tgz", + "integrity": "sha512-FX6dDOKzDpkrb5/+Imq+V6dmCZNnC02tMDiZfrgHSYgfQj6CVPGzOVqfbHKt/Vy4ZZsmMPXkulyLf92lCyvV7A==", + "dev": true, + "requires": { + "readable-stream": "~1.1.9", + "stream-counter": "~0.2.0" + } + }, + "multipipe": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz", + "integrity": "sha512-7ZxrUybYv9NonoXgwoOqtStIu18D1c3eFZj27hqgf5kBrBF8Q+tE8V0MW8dKM5QLkQPh1JhhbKgHLY9kifov4Q==", + "dev": true, + "requires": { + "duplexer2": "0.0.2" + } + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "nan": { + "version": "2.23.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.23.0.tgz", + "integrity": "sha512-1UxuyYGdoQHcGg87Lkqm3FzefucTa0NAiOcuRsDmysep3c1LVCRK2krrUDafMWtjSG04htvAmvg96+SDknOmgQ==", + "dev": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "natives": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/natives/-/natives-1.1.6.tgz", + "integrity": "sha512-6+TDFewD4yxY14ptjKaS63GVdtKiES1pTPyxn9Jb0rBqPMZ7VcCiooEhPNsr+mqHtMGxa/5c/HhcC4uPEUw/nA==", + "dev": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "negotiator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "integrity": "sha512-qTxkr1RoLw5Pz+1+PTJ/66hWuyi2LEOeOuIDJDlx6JF8x75bmD5C7qXTg2UlX5W9rLfkqKP+r8q6Vy6NWdWrbw==", + "dev": true + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", + "dev": true + }, + "no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "dev": true, + "requires": { + "lower-case": "^1.1.1" + } + }, + "node-addon-api": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz", + "integrity": "sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==", + "dev": true + }, + "node-fetch": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", + "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", + "requires": { + "encoding": "^0.1.11", + "is-stream": "^1.0.1" + } + }, + "node-forge": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.6.tgz", + "integrity": "sha512-sol30LUpz1jQFBjOKwbjxijiE3b6pjd74YwfD0fJOKPjF+fONKb2Yg8rYgS6+bK6VDl+/wfr4IYpC7jDzLUIfw==", + "dev": true + }, + "node-gyp": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz", + "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==", + "dev": true, + "requires": { + "fstream": "^1.0.0", + "glob": "^7.0.3", + "graceful-fs": "^4.1.2", + "mkdirp": "^0.5.0", + "nopt": "2 || 3", + "npmlog": "0 || 1 || 2 || 3 || 4", + "osenv": "0", + "request": "^2.87.0", + "rimraf": "2", + "semver": "~5.3.0", + "tar": "^2.0.0", + "which": "1" + } + }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true + }, + "node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "dev": true, + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "dev": true + }, + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + }, + "dependencies": { + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "dev": true, + "requires": { + "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + } + } + } + } + }, + "node-notifier": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.0.2.tgz", + "integrity": "sha512-nmc9wotRDRFGrV2zn6VmdkZjqr2dnzM23KRfMATDYt1XvlfjIqLf+THlXeO1+Wbltz04EeIO9FVVhBzQtVTZCg==", + "dev": true, + "requires": { + "growly": "^1.3.0", + "semver": "^5.3.0", + "shellwords": "^0.1.0", + "which": "^1.2.12" + } + }, + "node-sass": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.14.1.tgz", + "integrity": "sha512-sjCuOlvGyCJS40R8BscF5vhVlQjNN069NtQ1gSxyK1u9iqvn6tf7O1R4GNowVZfiZUCRt5MmMs1xd+4V/7Yr0g==", + "dev": true, + "requires": { + "async-foreach": "^0.1.3", + "chalk": "^1.1.1", + "cross-spawn": "^3.0.0", + "gaze": "^1.0.0", + "get-stdin": "^4.0.1", + "glob": "^7.0.3", + "in-publish": "^2.0.0", + "lodash": "^4.17.15", + "meow": "^3.7.0", + "mkdirp": "^0.5.1", + "nan": "^2.13.2", + "node-gyp": "^3.8.0", + "npmlog": "^4.0.0", + "request": "^2.88.0", + "sass-graph": "2.2.5", + "stdout-stream": "^1.4.0", + "true-case-path": "^1.0.2" + }, + "dependencies": { + "cross-spawn": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", + "integrity": "sha512-eZ+m1WNhSZutOa/uRblAc9Ut5MQfukFrFMtPSm3bZCA888NmMd5AWXWdgRZ80zd+pTk1P2JrGjg9pUPTvl2PWQ==", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "which": "^1.2.9" + } + }, + "gaze": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", + "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", + "dev": true, + "requires": { + "globule": "^1.0.0" + } + }, + "globule": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.4.tgz", + "integrity": "sha512-OPTIfhMBh7JbBYDpa5b+Q5ptmMWKwcNcFSR/0c6t8V4f3ZAVBEsKNY37QdVqmLRYSMhOUGYrY0QhSoEpzGr/Eg==", + "dev": true, + "requires": { + "glob": "~7.1.1", + "lodash": "^4.17.21", + "minimatch": "~3.0.2" + }, + "dependencies": { + "glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "minimatch": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz", + "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + } + } + }, + "node-zip": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/node-zip/-/node-zip-1.1.1.tgz", + "integrity": "sha512-sXfGL65EcaAJqNSXxuyf//i4D4geUtJgZDYUd7IBo2/CH8XY8vcWh1+CBCxuVVyR+S4vAFc3hr//JkCi2+V5vg==", + "dev": true, + "requires": { + "jszip": "2.5.0" + } + }, + "node.extend": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/node.extend/-/node.extend-1.1.8.tgz", + "integrity": "sha512-L/dvEBwyg3UowwqOUTyDsGBU6kjBQOpOhshio9V3i3BMPv5YUb9+mWNN8MK0IbWqT0AqaTSONZf0aTuMMahWgA==", + "dev": true, + "requires": { + "has": "^1.0.3", + "is": "^3.2.1" + } + }, + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==", + "dev": true, + "requires": { + "abbrev": "1" + } + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true + }, + "normalize-url": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", + "integrity": "sha512-A48My/mtCklowHBlI8Fq2jFWK4tX4lJ5E6ytFsSOq1fzpvT0SQSgKhSg7lN5c2uYFOrUAOQp6zhhJnpp1eMloQ==", + "dev": true, + "requires": { + "object-assign": "^4.0.1", + "prepend-http": "^1.0.0", + "query-string": "^4.1.0", + "sort-keys": "^1.0.0" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", + "dev": true + }, + "npm-package-arg": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-5.1.2.tgz", + "integrity": "sha512-wJBsrf0qpypPT7A0LART18hCdyhpCMxeTtcb0X4IZO2jsP6Om7EHN1d9KSKiqD+KVH030RVNpWS9thk+pb7wzA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.4.2", + "osenv": "^0.1.4", + "semver": "^5.1.0", + "validate-npm-package-name": "^3.0.0" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==", + "dev": true + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", + "dev": true + }, + "nwmatcher": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.4.4.tgz", + "integrity": "sha512-3iuY4N5dhgMpCUrOVnuAdGrgxVqV2cJpM+XNccjR2DKOB1RUP0aA+wGXEiNziG/UKboFyGBIoKOaNlJxx8bciQ==", + "dev": true + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" + }, + "object-component": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", + "integrity": "sha512-S0sN3agnVh2SZNEIGc0N1X4Z5K0JeFbGBrnuZpsxuUh5XLF0BnvWkMjRXo/zGKLd/eghvNIKcx1pQkmUjXIyrA==", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "dev": true, + "requires": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", + "object-keys": "^1.1.1" + } + }, + "object.defaults": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", + "integrity": "sha512-c/K0mw/F11k4dEUBMW8naXUuBuhxRCfG7W+yFy8EcijU/rSmazOUd1XAEEe6bC0OuXY4HUKjTJv7xbxIMqdxrA==", + "dev": true, + "requires": { + "array-each": "^1.0.1", + "array-slice": "^1.0.0", + "for-own": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "object.map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", + "integrity": "sha512-3+mAJu2PLfnSVGHwIWubpOFLscJANBKuB/6A4CxBstc4aqwQY0FWcsppuy4jU5GSB95yES5JHSI+33AWuS4k6w==", + "dev": true, + "requires": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + } + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha512-UiAM5mhmIuKLsOvrL+B0U2d1hXHF3bFYWIuH1LMpuV2EJEHG1Ntz06PgLEHjm6VFd87NpH8rastvPoyv6UW2fA==", + "dev": true, + "requires": { + "for-own": "^0.1.4", + "is-extendable": "^0.1.1" + }, + "dependencies": { + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha512-SKmowqGTJoPzLO1T0BBJpkfp3EMacCMOuH40hOUbrbzElVktk4DioXVM99QkLCyKoiuOmyjgcWMpVz2xjE7LZw==", + "dev": true, + "requires": { + "for-in": "^1.0.1" + } + } + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "office-ui-fabric": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/office-ui-fabric/-/office-ui-fabric-2.6.1.tgz", + "integrity": "sha512-Riapp5oQoqRHZHQ2NlM+BGKjK5NAX4q1hP80EEcfJH6qZQ3PhV0nm5ld5VD3hs6u8aZlabp3Ai6rYfODqapdFA==" + }, + "office-ui-fabric-core": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/office-ui-fabric-core/-/office-ui-fabric-core-9.1.0.tgz", + "integrity": "sha512-VwGbHIT89e+9XdGcb2gdPgKgYQGjRG5peyPNO982znlCSB/UIM9g7gF6JmHpaMHb8xvEScY7UGJ8GRz6GQVBRg==" + }, + "office-ui-fabric-react": { + "version": "5.21.0", + "resolved": "https://registry.npmjs.org/office-ui-fabric-react/-/office-ui-fabric-react-5.21.0.tgz", + "integrity": "sha512-9IBLK6JUWYvdCumKywjkSP7mf/MqTRorP1qXtb2c+w2fQJH4NkdBjanO0zr37c5VPwlqc0KvPf51E9t1NU7oTg==", + "requires": { + "@microsoft/load-themed-styles": "^1.7.2", + "@uifabric/icons": ">=5.2.0 <6.0.0", + "@uifabric/merge-styles": ">=5.6.0 <6.0.0", + "@uifabric/styling": ">=5.7.0 <6.0.0", + "@uifabric/utilities": ">=5.3.3 <6.0.0", + "prop-types": "^15.5.10", + "tslib": "^1.7.1" + } + }, + "on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha512-GZ+g4jayMqzCRMgB2sol7GiCLjKfS1PINkjmx8spcKce1LiVqcbQreXwqs2YAFXC6R03VIG28ZS31t8M866v6A==", + "dev": true + }, + "open": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/open/-/open-0.0.5.tgz", + "integrity": "sha512-+X/dJYLapVO1VbC620DhtNZK9U4/kQVaTQp/Gh7cb6UTLYfGZzzU2ZXkWrOA/wBrf4UqAFwtLqXYTxe4tSnWQQ==", + "dev": true + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha512-snN4O4TkigujZphWLN0E//nQmm7790RYaE53DdL7ZYwee2D8DDo9/EyYiKUfN3rneWUjhJnueija3G9I2i0h3g==", + "dev": true, + "requires": { + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" + }, + "dependencies": { + "minimist": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "integrity": "sha512-iotkTvxc+TwOm5Ieim8VnSNvCDjCK9S8G3scJ50ZthspSxa7jx50jkhYduuAtAjvfDUwSgOwf8+If99AlOEhyw==", + "dev": true + }, + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha512-1tMA907+V4QmxV7dbRvb4/8MaRALK6q9Abid3ndMYnbyo8piisCmeONVqVSXqQA3KaP4SLt5b7ud6E2sqP8TFw==", + "dev": true + } + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "options": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz", + "integrity": "sha512-bOj3L1ypm++N+n7CEbbe473A414AB7z+amKYshRb//iuL3MpdDCLhPnw6aVTdKB9g5ZRVHIEp8eUln6L2NUStg==", + "dev": true + }, + "orchestrator": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/orchestrator/-/orchestrator-0.3.8.tgz", + "integrity": "sha512-DrQ43ngaJ0e36j2CHyoDoIg1K4zbc78GnTQESebK9vu6hj4W5/pvfSFO/kgM620Yd0YnhseSNYsLK3/SszZ5NQ==", + "dev": true, + "requires": { + "end-of-stream": "~0.1.5", + "sequencify": "~0.0.7", + "stream-consume": "~0.1.0" + }, + "dependencies": { + "end-of-stream": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-0.1.5.tgz", + "integrity": "sha512-go5TQkd0YRXYhX+Lc3UrXkoKU5j+m72jEP5lHWr2Nh82L8wfZtH8toKgcg4T10o23ELIMGXQdwCbl+qAXIPDrw==", + "dev": true, + "requires": { + "once": "~1.3.0" + } + }, + "once": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "integrity": "sha512-6vaNInhu+CHxtONf3zw3vq4SP2DOQhjBvIa3rNcG0+P7eKWlYH6Peu7rHizSloRU2EwMz6GraLieis9Ac9+p1w==", + "dev": true, + "requires": { + "wrappy": "1" + } + } + } + }, + "ordered-read-streams": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.1.0.tgz", + "integrity": "sha512-PMX5ehiNri4+lgk9fl09xuPeciGmyPyVUSBwwPT4C/3EHGxoVf7UdgKDE3SLBD4pUDmlzrg1L1cK5igrp+Tyuw==", + "dev": true + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", + "dev": true + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==", + "dev": true + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g==", + "dev": true, + "requires": { + "lcid": "^1.0.0" + } + }, + "os-shim": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/os-shim/-/os-shim-0.1.3.tgz", + "integrity": "sha512-jd0cvB8qQ5uVt0lvCIexBaROw1KyKm5sbulg2fWOHjETisuCzWyt+eTZKEMs8v6HwzoGs8xik26jg7eCM6pS+A==", + "dev": true + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "dev": true + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-map": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", + "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", + "dev": true + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "dev": true + }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + }, + "param-case": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", + "integrity": "sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==", + "dev": true, + "requires": { + "no-case": "^2.2.0" + } + }, + "parse-asn1": { + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.9.tgz", + "integrity": "sha512-fIYNuZ/HastSb80baGOuPRo1O9cf4baWw5WsAp7dBuUzeTD/BoaG8sVTdlPFksBE2lF21dN+A1AnrpIjSWqHHg==", + "dev": true, + "requires": { + "asn1.js": "^4.10.1", + "browserify-aes": "^1.2.0", + "evp_bytestokey": "^1.0.3", + "pbkdf2": "^3.1.5", + "safe-buffer": "^5.2.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "parse-filepath": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", + "integrity": "sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==", + "dev": true, + "requires": { + "is-absolute": "^1.0.0", + "map-cache": "^0.2.0", + "path-root": "^0.1.1" + } + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha512-FC5TeK0AwXzq3tUBFtH74naWkPQCEWs4K+xMxWZBlKDWu0bVHXGZa+KKqxKidd7xwhdZ19ZNuF2uO1M/r196HA==", + "dev": true, + "requires": { + "glob-base": "^0.3.0", + "is-dotfile": "^1.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.0" + }, + "dependencies": { + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + } + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", + "dev": true + }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", + "dev": true + }, + "parse5": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-1.5.1.tgz", + "integrity": "sha512-w2jx/0tJzvgKwZa58sj2vAYq/S/K1QJfIB3cWYea/Iu1scFPDQQ3IQiVZTHWtRBwAjv2Yd7S/xeZf3XqLDb3bA==", + "dev": true + }, + "parsejson": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/parsejson/-/parsejson-0.0.3.tgz", + "integrity": "sha512-v38ZjVbinlZ2r1Rz06WUZEnGoSRcEGX+roMsiWjHeAe23s2qlQUyfmsPQZvh7d8l0E8AZzTIO/RkUr00LfkSiA==", + "dev": true, + "requires": { + "better-assert": "~1.0.0" + } + }, + "parseqs": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", + "integrity": "sha512-B3Nrjw2aL7aI4TDujOzfA4NsEc4u1lVcIRE0xesutH8kjeWF70uk+W5cBlIQx04zUH9NTBvuN36Y9xLRPK6Jjw==", + "dev": true, + "requires": { + "better-assert": "~1.0.0" + } + }, + "parseuri": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", + "integrity": "sha512-ijhdxJu6l5Ru12jF0JvzXVPvsC+VibqeaExlNoMhWN6VQ79PGjkmc7oA4W1lp00sFkNyj0fx6ivPLdV51/UMog==", + "dev": true, + "requires": { + "better-assert": "~1.0.0" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", + "dev": true + }, + "path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "path-root": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==", + "dev": true, + "requires": { + "path-root-regex": "^0.1.0" + } + }, + "path-root-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "dev": true + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pause": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/pause/-/pause-0.1.0.tgz", + "integrity": "sha512-aeHLgQCtI3tcuYVnrvAeVb4Tkm1za4r3YDv3hMeUxcRxet3dbEhJOdtoMrsT/Q5tY3Oy2A1A9FD5el5tWp2FSg==", + "dev": true + }, + "pause-stream": { + "version": "0.0.11", + "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", + "integrity": "sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==", + "dev": true, + "requires": { + "through": "~2.3" + } + }, + "pbkdf2": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.5.tgz", + "integrity": "sha512-Q3CG/cYvCO1ye4QKkuH7EXxs3VC/rI1/trd+qX2+PolbaKG0H+bgcZzrTt96mMyRtejk+JMCiLUn3y29W8qmFQ==", + "dev": true, + "requires": { + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "ripemd160": "^2.0.3", + "safe-buffer": "^5.2.1", + "sha.js": "^2.4.12", + "to-buffer": "^1.2.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", + "dev": true + }, + "phantomjs-polyfill": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/phantomjs-polyfill/-/phantomjs-polyfill-0.0.2.tgz", + "integrity": "sha512-USErWAfES7rDxo6XgXkb8gt+0viV9lRb8OZNixEgjRBQjvVMyBeUZgy3HuE7vful8fv0UWb2wUD9jhkYB269wA==", + "dev": true + }, + "phantomjs-prebuilt": { + "version": "2.1.16", + "resolved": "https://registry.npmjs.org/phantomjs-prebuilt/-/phantomjs-prebuilt-2.1.16.tgz", + "integrity": "sha512-PIiRzBhW85xco2fuj41FmsyuYHKjKuXWmhjy3A/Y+CMpN/63TV+s9uzfVhsUwFe0G77xWtHBG8xmXf5BqEUEuQ==", + "dev": true, + "requires": { + "es6-promise": "^4.0.3", + "extract-zip": "^1.6.5", + "fs-extra": "^1.0.0", + "hasha": "^2.2.0", + "kew": "^0.7.0", + "progress": "^1.1.8", + "request": "^2.81.0", + "request-progress": "^2.0.1", + "which": "^1.2.10" + }, + "dependencies": { + "fs-extra": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz", + "integrity": "sha512-VerQV6vEKuhDWD2HGOybV6v5I73syoc/cXAbKlgTC7M/oFVEtklWlp9QH2Ijw3IaWDOQcMkldSPa7zXy79Z/UQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^2.1.0", + "klaw": "^1.0.0" + } + } + } + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "optional": true + }, + "pidof": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pidof/-/pidof-1.0.2.tgz", + "integrity": "sha512-LLJhTVEUCZnotdAM5rd7KiTdLGgk6i763/hsd5pO+8yuF7mdgg0ob8w/98KrTAcPsj6YzGrkFLPVtBOr1uW2ag==", + "dev": true + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pkg-conf": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-1.1.3.tgz", + "integrity": "sha512-9hHgE5+Xai/ChrnahNP8Ke0VNF/s41IZIB/d24eMHEaRamdPg+wwlRm2lTb5wMvE8eTIKrYZsrxfuOwt3dpsIQ==", + "dev": true, + "requires": { + "find-up": "^1.0.0", + "load-json-file": "^1.1.0", + "object-assign": "^4.0.1", + "symbol": "^0.2.1" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + } + } + }, + "plugin-error": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz", + "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==", + "dev": true, + "requires": { + "ansi-colors": "^1.0.1", + "arr-diff": "^4.0.0", + "arr-union": "^3.1.0", + "extend-shallow": "^3.0.2" + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", + "dev": true + }, + "possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + }, + "dependencies": { + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-calc": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-5.3.1.tgz", + "integrity": "sha512-iBcptYFq+QUh9gzP7ta2btw50o40s4uLI4UDVgd5yRAZtUDWc5APdl5yQDd2h/TyiZNbJrv0HiYhT102CMgN7Q==", + "dev": true, + "requires": { + "postcss": "^5.0.2", + "postcss-message-helpers": "^2.0.0", + "reduce-css-calc": "^1.2.6" + } + }, + "postcss-colormin": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-2.2.2.tgz", + "integrity": "sha512-XXitQe+jNNPf+vxvQXIQ1+pvdQKWKgkx8zlJNltcMEmLma1ypDRDQwlLt+6cP26fBreihNhZxohh1rcgCH2W5w==", + "dev": true, + "requires": { + "colormin": "^1.0.5", + "postcss": "^5.0.13", + "postcss-value-parser": "^3.2.3" + } + }, + "postcss-convert-values": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz", + "integrity": "sha512-SE7mf25D3ORUEXpu3WUqQqy0nCbMuM5BEny+ULE/FXdS/0UMA58OdzwvzuHJRpIFlk1uojt16JhaEogtP6W2oA==", + "dev": true, + "requires": { + "postcss": "^5.0.11", + "postcss-value-parser": "^3.1.2" + } + }, + "postcss-discard-comments": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz", + "integrity": "sha512-yGbyBDo5FxsImE90LD8C87vgnNlweQkODMkUZlDVM/CBgLr9C5RasLGJxxh9GjVOBeG8NcCMatoqI1pXg8JNXg==", + "dev": true, + "requires": { + "postcss": "^5.0.14" + } + }, + "postcss-discard-duplicates": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz", + "integrity": "sha512-+lk5W1uqO8qIUTET+UETgj9GWykLC3LOldr7EehmymV0Wu36kyoHimC4cILrAAYpHQ+fr4ypKcWcVNaGzm0reA==", + "dev": true, + "requires": { + "postcss": "^5.0.4" + } + }, + "postcss-discard-empty": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz", + "integrity": "sha512-IBFoyrwk52dhF+5z/ZAbzq5Jy7Wq0aLUsOn69JNS+7YeuyHaNzJwBIYE0QlUH/p5d3L+OON72Fsexyb7OK/3og==", + "dev": true, + "requires": { + "postcss": "^5.0.14" + } + }, + "postcss-discard-overridden": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz", + "integrity": "sha512-IyKoDL8QNObOiUc6eBw8kMxBHCfxUaERYTUe2QF8k7j/xiirayDzzkmlR6lMQjrAM1p1DDRTvWrS7Aa8lp6/uA==", + "dev": true, + "requires": { + "postcss": "^5.0.16" + } + }, + "postcss-discard-unused": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz", + "integrity": "sha512-nCbFNfqYAbKCw9J6PSJubpN9asnrwVLkRDFc4KCwyUEdOtM5XDE/eTW3OpqHrYY1L4fZxgan7LLRAAYYBzwzrg==", + "dev": true, + "requires": { + "postcss": "^5.0.14", + "uniqs": "^2.0.0" + } + }, + "postcss-filter-plugins": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/postcss-filter-plugins/-/postcss-filter-plugins-2.0.3.tgz", + "integrity": "sha512-T53GVFsdinJhgwm7rg1BzbeBRomOg9y5MBVhGcsV0CxurUdVj1UlPdKtn7aqYA/c/QVkzKMjq2bSV5dKG5+AwQ==", + "dev": true, + "requires": { + "postcss": "^5.0.4" + } + }, + "postcss-load-config": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-1.2.0.tgz", + "integrity": "sha512-3fpCfnXo9Qd/O/q/XL4cJUhRsqjVD2V1Vhy3wOEcLE5kz0TGtdDXJSoiTdH4e847KphbEac4+EZSH4qLRYIgLw==", + "dev": true, + "requires": { + "cosmiconfig": "^2.1.0", + "object-assign": "^4.1.0", + "postcss-load-options": "^1.2.0", + "postcss-load-plugins": "^2.3.0" + } + }, + "postcss-load-options": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-load-options/-/postcss-load-options-1.2.0.tgz", + "integrity": "sha512-WKS5LJMZLWGwtfhs5ahb2ycpoYF3m0kK4QEaM+elr5EpiMt0H296P/9ETa13WXzjPwB0DDTBiUBBWSHoApQIJg==", + "dev": true, + "requires": { + "cosmiconfig": "^2.1.0", + "object-assign": "^4.1.0" + } + }, + "postcss-load-plugins": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/postcss-load-plugins/-/postcss-load-plugins-2.3.0.tgz", + "integrity": "sha512-/WGUMYhKiryWjYO6c7kAcqMuD7DVkaQ8HcbQenDme/d3OBOmrYMFObOKgUWyUy1uih5U2Dakq8H6VcJi5C9wHQ==", + "dev": true, + "requires": { + "cosmiconfig": "^2.1.1", + "object-assign": "^4.1.0" + } + }, + "postcss-merge-idents": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz", + "integrity": "sha512-9DHmfCZ7/hNHhIKnNkz4CU0ejtGen5BbTRJc13Z2uHfCedeCUsK2WEQoAJRBL+phs68iWK6Qf8Jze71anuysWA==", + "dev": true, + "requires": { + "has": "^1.0.1", + "postcss": "^5.0.10", + "postcss-value-parser": "^3.1.1" + } + }, + "postcss-merge-longhand": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz", + "integrity": "sha512-ma7YvxjdLQdifnc1HFsW/AW6fVfubGyR+X4bE3FOSdBVMY9bZjKVdklHT+odknKBB7FSCfKIHC3yHK7RUAqRPg==", + "dev": true, + "requires": { + "postcss": "^5.0.4" + } + }, + "postcss-merge-rules": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz", + "integrity": "sha512-Wgg2FS6W3AYBl+5L9poL6ZUISi5YzL+sDCJfM7zNw/Q1qsyVQXXZ2cbVui6mu2cYJpt1hOKCGj1xA4mq/obz/Q==", + "dev": true, + "requires": { + "browserslist": "^1.5.2", + "caniuse-api": "^1.5.2", + "postcss": "^5.0.4", + "postcss-selector-parser": "^2.2.2", + "vendors": "^1.0.0" + }, + "dependencies": { + "browserslist": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "integrity": "sha512-qHJblDE2bXVRYzuDetv/wAeHOJyO97+9wxC1cdCtyzgNuSozOyRCiiLaCR1f71AN66lQdVVBipWm63V+a7bPOw==", + "dev": true, + "requires": { + "caniuse-db": "^1.0.30000639", + "electron-to-chromium": "^1.2.7" + } + } + } + }, + "postcss-message-helpers": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz", + "integrity": "sha512-tPLZzVAiIJp46TBbpXtrUAKqedXSyW5xDEo1sikrfEfnTs+49SBZR/xDdqCiJvSSbtr615xDsaMF3RrxS2jZlA==", + "dev": true + }, + "postcss-minify-font-values": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz", + "integrity": "sha512-vFSPzrJhNe6/8McOLU13XIsERohBJiIFFuC1PolgajOZdRWqRgKITP/A4Z/n4GQhEmtbxmO9NDw3QLaFfE1dFQ==", + "dev": true, + "requires": { + "object-assign": "^4.0.1", + "postcss": "^5.0.4", + "postcss-value-parser": "^3.0.2" + } + }, + "postcss-minify-gradients": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz", + "integrity": "sha512-DZhT0OE+RbVqVyGsTIKx84rU/5cury1jmwPa19bViqYPQu499ZU831yMzzsyC8EhiZVd73+h5Z9xb/DdaBpw7Q==", + "dev": true, + "requires": { + "postcss": "^5.0.12", + "postcss-value-parser": "^3.3.0" + } + }, + "postcss-minify-params": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz", + "integrity": "sha512-hhJdMVgP8vasrHbkKAk+ab28vEmPYgyuDzRl31V3BEB3QOR3L5TTIVEWLDNnZZ3+fiTi9d6Ker8GM8S1h8p2Ow==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.1", + "postcss": "^5.0.2", + "postcss-value-parser": "^3.0.2", + "uniqs": "^2.0.0" + } + }, + "postcss-minify-selectors": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz", + "integrity": "sha512-e13vxPBSo3ZaPne43KVgM+UETkx3Bs4/Qvm6yXI9HQpQp4nyb7HZ0gKpkF+Wn2x+/dbQ+swNpCdZSbMOT7+TIA==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.2", + "has": "^1.0.1", + "postcss": "^5.0.14", + "postcss-selector-parser": "^2.0.0" + } + }, + "postcss-modules": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/postcss-modules/-/postcss-modules-0.6.4.tgz", + "integrity": "sha512-VpgIcxrKYHyg6GFfWKmCmxjtcRvGBOD0iee6usYMcVdgCoWDNObdIZG7lqJPPOt7BQN4yCSG9TnxG1F3WW0WFQ==", + "dev": true, + "requires": { + "css-modules-loader-core": "^1.0.1", + "generic-names": "^1.0.2", + "postcss": "^5.2.8", + "string-hash": "^1.1.1" + } + }, + "postcss-modules-extract-imports": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz", + "integrity": "sha512-zF9+UIEvtpeqMGxhpeT9XaIevQSrBBCz9fi7SwfkmjVacsSj8DY5eFVgn+wY8I9vvdDDwK5xC8Myq4UkoLFIkA==", + "dev": true, + "requires": { + "postcss": "^6.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-modules-local-by-default": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", + "integrity": "sha512-X4cquUPIaAd86raVrBwO8fwRfkIdbwFu7CTfEOjiZQHVQwlHRSkTgH5NLDmMm5+1hQO8u6dZ+TOOJDbay1hYpA==", + "dev": true, + "requires": { + "css-selector-tokenizer": "^0.7.0", + "postcss": "^6.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-modules-scope": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", + "integrity": "sha512-LTYwnA4C1He1BKZXIx1CYiHixdSe9LWYVKadq9lK5aCCMkoOkFyZ7aigt+srfjlRplJY3gIol6KUNefdMQJdlw==", + "dev": true, + "requires": { + "css-selector-tokenizer": "^0.7.0", + "postcss": "^6.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-modules-values": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz", + "integrity": "sha512-i7IFaR9hlQ6/0UgFuqM6YWaCfA1Ej8WMg8A5DggnH1UGKJvTV/ugqq/KaULixzzOi3T/tF6ClBXcHGCzdd5unA==", + "dev": true, + "requires": { + "icss-replace-symbols": "^1.1.0", + "postcss": "^6.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-normalize-charset": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz", + "integrity": "sha512-RKgjEks83l8w4yEhztOwNZ+nLSrJ+NvPNhpS+mVDzoaiRHZQVoG7NF2TP5qjwnaN9YswUhj6m1E0S0Z+WDCgEQ==", + "dev": true, + "requires": { + "postcss": "^5.0.5" + } + }, + "postcss-normalize-url": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz", + "integrity": "sha512-WqtWG6GV2nELsQEFES0RzfL2ebVwmGl/M8VmMbshKto/UClBo+mznX8Zi4/hkThdqx7ijwv+O8HWPdpK7nH/Ig==", + "dev": true, + "requires": { + "is-absolute-url": "^2.0.0", + "normalize-url": "^1.4.0", + "postcss": "^5.0.14", + "postcss-value-parser": "^3.2.3" + } + }, + "postcss-ordered-values": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz", + "integrity": "sha512-5RB1IUZhkxDCfa5fx/ogp/A82mtq+r7USqS+7zt0e428HJ7+BHCxyeY39ClmkkUtxdOd3mk8gD6d9bjH2BECMg==", + "dev": true, + "requires": { + "postcss": "^5.0.4", + "postcss-value-parser": "^3.0.1" + } + }, + "postcss-reduce-idents": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz", + "integrity": "sha512-0+Ow9e8JLtffjumJJFPqvN4qAvokVbdQPnijUDSOX8tfTwrILLP4ETvrZcXZxAtpFLh/U0c+q8oRMJLr1Kiu4w==", + "dev": true, + "requires": { + "postcss": "^5.0.4", + "postcss-value-parser": "^3.0.2" + } + }, + "postcss-reduce-initial": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz", + "integrity": "sha512-jJFrV1vWOPCQsIVitawGesRgMgunbclERQ/IRGW7r93uHrVzNQQmHQ7znsOIjJPZ4yWMzs5A8NFhp3AkPHPbDA==", + "dev": true, + "requires": { + "postcss": "^5.0.4" + } + }, + "postcss-reduce-transforms": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz", + "integrity": "sha512-lGgRqnSuAR5i5uUg1TA33r9UngfTadWxOyL2qx1KuPoCQzfmtaHjp9PuwX7yVyRxG3BWBzeFUaS5uV9eVgnEgQ==", + "dev": true, + "requires": { + "has": "^1.0.1", + "postcss": "^5.0.8", + "postcss-value-parser": "^3.0.1" + } + }, + "postcss-selector-parser": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz", + "integrity": "sha512-3pqyakeGhrO0BQ5+/tGTfvi5IAUAhHRayGK8WFSu06aEv2BmHoXw/Mhb+w7VY5HERIuC+QoUI7wgrCcq2hqCVA==", + "dev": true, + "requires": { + "flatten": "^1.0.2", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "postcss-svgo": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-2.1.6.tgz", + "integrity": "sha512-y5AdQdgBoF4rbpdbeWAJuxE953g/ylRfVNp6mvAi61VCN/Y25Tu9p5mh3CyI42WbTRIiwR9a1GdFtmDnNPeskQ==", + "dev": true, + "requires": { + "is-svg": "^2.0.0", + "postcss": "^5.0.14", + "postcss-value-parser": "^3.2.3", + "svgo": "^0.7.0" + } + }, + "postcss-unique-selectors": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz", + "integrity": "sha512-WZX8r1M0+IyljoJOJleg3kYm10hxNYF9scqAT7v/xeSX1IdehutOM85SNO0gP9K+bgs86XERr7Ud5u3ch4+D8g==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.1", + "postcss": "^5.0.4", + "uniqs": "^2.0.0" + } + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "postcss-zindex": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-2.2.0.tgz", + "integrity": "sha512-uhRZ2hRgj0lorxm9cr62B01YzpUe63h0RXMXQ4gWW3oa2rpJh+FJAiEAytaFCPU/VgaBS+uW2SJ1XKyDNz1h4w==", + "dev": true, + "requires": { + "has": "^1.0.1", + "postcss": "^5.0.4", + "uniqs": "^2.0.0" + } + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "dev": true + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==", + "dev": true + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha512-s/46sYeylUfHNjI+sA/78FAHlmIuKqI9wNnzEOGehAlUUYeObv5C2mOinXBjyUyWmJ2SfcS2/ydApH4hTF4WXQ==", + "dev": true + }, + "pretty-format": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-20.0.3.tgz", + "integrity": "sha512-dSW/15bmtC3vuheyzWUveowskTAUAWKE08+x06rgYzvSoDzg6cVg/MPKgNvh87jRJvOQ/qaQZLLWml2jrukk6w==", + "dev": true, + "requires": { + "ansi-regex": "^2.1.1", + "ansi-styles": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + } + } + }, + "pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==", + "dev": true + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "dev": true + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "progress": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", + "integrity": "sha512-UdA8mJ4weIkUBO224tIarHzuHs4HuYiJvsuGT7j/SPQiUJVjYvNDBIPa0hAorduOfjGohB/qHWRa/lrrWX/mXw==", + "dev": true + }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "requires": { + "asap": "~2.0.3" + } + }, + "prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "proxy-addr": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.1.5.tgz", + "integrity": "sha512-av1MQ5vwTiMICwU75KSf/vJ6a+AXP0MtP+aYBqm2RFlire7BP6sWlfOLc8+6wIQrywycqSpJWm5zNkYFkRARWA==", + "dev": true, + "requires": { + "forwarded": "~0.1.0", + "ipaddr.js": "1.4.0" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", + "dev": true + }, + "psl": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz", + "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==", + "dev": true, + "requires": { + "punycode": "^2.3.1" + } + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + }, + "dependencies": { + "bn.js": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz", + "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==", + "dev": true + } + } + }, + "punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", + "dev": true + }, + "qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "dev": true + }, + "query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha512-O2XLNDBIg1DnTOa+2XrIwSiXEV8h2KImXUnjhhn2+UsvZ+Es2uyd5CCRTNQlDGbzUQOW3aYCBx9rVA6dzsiY7Q==", + "dev": true, + "requires": { + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", + "dev": true + }, + "random-bytes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", + "integrity": "sha512-iv7LhNVO047HzYR3InF6pUcUsPQiHTM1Qal51DcGSuZFBil1aBBWG5eHPNek7bvILMaYJ/8RU1e8w1AMdHmLQQ==", + "dev": true + }, + "randomatic": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz", + "integrity": "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==", + "dev": true, + "requires": { + "is-number": "^4.0.0", + "kind-of": "^6.0.0", + "math-random": "^1.0.1" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true + } + } + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true + }, + "raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "dependencies": { + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + } + } + }, + "react": { + "version": "15.6.2", + "resolved": "https://registry.npmjs.org/react/-/react-15.6.2.tgz", + "integrity": "sha512-DHyivomgg2kMUWsT3mfMtIKNxJyAtlcFtCd+vWvk4u/mAsnXqrhkDVAzZR7aSS/kk2hvAS7rwlia6zyAcJjcsg==", + "requires": { + "create-react-class": "^15.6.0", + "fbjs": "^0.8.9", + "loose-envify": "^1.1.0", + "object-assign": "^4.1.0", + "prop-types": "^15.5.10" + } + }, + "react-dom": { + "version": "15.6.2", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-15.6.2.tgz", + "integrity": "sha512-qxrSETbovswZ0xXs1o5+1o9NfNYbLnQWUqhef36tDWb+tGrbsHjEel5DZuncWMbO0rWd5e4AvCoJBOWm3x6p3A==", + "requires": { + "fbjs": "^0.8.9", + "loose-envify": "^1.1.0", + "object-assign": "^4.1.0", + "prop-types": "^15.5.10" + } + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "read": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", + "integrity": "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==", + "dev": true, + "requires": { + "mute-stream": "~0.0.4" + } + }, + "read-package-json": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-2.1.2.tgz", + "integrity": "sha512-D1KmuLQr6ZSJS0tW8hf3WGpRlwszJOXZ3E8Yd/DNRaM5d+1wVRZdHlpGBLAuovjr28LbWvjpWkBHMxpRGGjzNA==", + "dev": true, + "requires": { + "glob": "^7.1.1", + "json-parse-even-better-errors": "^2.3.0", + "normalize-package-data": "^2.0.0", + "npm-normalize-package-bin": "^1.0.0" + } + }, + "read-package-tree": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/read-package-tree/-/read-package-tree-5.1.6.tgz", + "integrity": "sha512-FCX1aT3GWyY658wzDICef4p+n0dB+ENRct8E/Qyvppj6xVpOYerBHfUu7OP5Rt1/393Tdglguf5ju5DEX4wZNg==", + "dev": true, + "requires": { + "debuglog": "^1.0.1", + "dezalgo": "^1.0.0", + "once": "^1.3.0", + "read-package-json": "^2.0.0", + "readdir-scoped-modules": "^1.0.0" + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==", + "dev": true, + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==", + "dev": true, + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + } + } + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "readdir-scoped-modules": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz", + "integrity": "sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==", + "dev": true, + "requires": { + "debuglog": "^1.0.1", + "dezalgo": "^1.0.0", + "graceful-fs": "^4.1.2", + "once": "^1.3.0" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "recast": { + "version": "0.11.23", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.11.23.tgz", + "integrity": "sha512-+nixG+3NugceyR8O1bLU45qs84JgI3+8EauyRZafLgC9XbdAOIVgwV1Pe2da0YzGo62KzWoZwUpVEQf6qNAXWA==", + "dev": true, + "requires": { + "ast-types": "0.9.6", + "esprima": "~3.1.0", + "private": "~0.1.5", + "source-map": "~0.5.0" + }, + "dependencies": { + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha512-AWwVMNxwhN8+NIPQzAQZCm7RkLC4RbM3B1OobMuyp3i+w73X57KCKaVIxaRZb+DYCojq7rspo+fmuQfAboyhFg==", + "dev": true + } + } + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "dev": true, + "requires": { + "resolve": "^1.1.6" + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha512-qtW5hKzGQZqKoh6JNSD+4lfitfPKGz42e6QwiRmPM5mmKtR0N41AbJRYu0xJi7nhOJ4WDgRkKvAk6tw4WIwR4g==", + "dev": true, + "requires": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + } + }, + "reduce-css-calc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz", + "integrity": "sha512-0dVfwYVOlf/LBA2ec4OwQ6p3X9mYxn/wOl2xTcLwjnPYrkgEfPx3VI4eGCH3rQLlPISG5v9I9bkZosKsNRTRKA==", + "dev": true, + "requires": { + "balanced-match": "^0.4.2", + "math-expression-evaluator": "^1.2.14", + "reduce-function-call": "^1.0.1" + }, + "dependencies": { + "balanced-match": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "integrity": "sha512-STw03mQKnGUYtoNjmowo4F2cRmIIxYEGiMsjjwla/u5P1lxadj/05WkNaFjNiKTgJkj8KiXbgAiRTmcQRwQNtg==", + "dev": true + } + } + }, + "reduce-function-call": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.3.tgz", + "integrity": "sha512-Hl/tuV2VDgWgCSEeWMLwxLZqX7OK59eU1guxXsRKTAyeYimivsKdtcV4fu3r710tpG5GmDKDhQ0HSZLExnNmyQ==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + }, + "regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "dev": true, + "requires": { + "is-equal-shallow": "^0.1.3" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", + "dev": true + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", + "dev": true + }, + "repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A==", + "dev": true, + "requires": { + "is-finite": "^1.0.0" + } + }, + "replace-ext": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", + "integrity": "sha512-AFBWBy9EVRTa/LhEcG8QDP3FvpwZqmvN2QFDuJswFeaVhWnZMp8q3E6Zd90SR04PlIwfGdyVjNyLPyen/ek5CQ==", + "dev": true + }, + "replacestream": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/replacestream/-/replacestream-4.0.3.tgz", + "integrity": "sha512-AC0FiLS352pBBiZhd4VXB1Ab/lh0lEgpP+GGvZqbQh8a5cmXVoTe5EX/YeTFArnp4SRGTHh1qCHu9lGs1qG8sA==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.3", + "object-assign": "^4.0.1", + "readable-stream": "^2.0.2" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + } + }, + "request-progress": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-2.0.1.tgz", + "integrity": "sha512-dxdraeZVUNEn9AvLrxkgB2k6buTlym71dJk1fk4v8j3Ou3RKNm07BcgbHdj2lLgYGfqX71F+awb1MR+tWPFJzA==", + "dev": true, + "requires": { + "throttleit": "^1.0.0" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true + }, + "require-from-string": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz", + "integrity": "sha512-H7AkJWMobeskkttHyhTVtS0fxpFLjxhbfMa6Bk3wimP7sdPRGL3EyCg3sAQenFfAe+xQ+oAc85Nmtvq0ROM83Q==", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==", + "dev": true + }, + "requirejs": { + "version": "2.1.20", + "resolved": "https://registry.npmjs.org/requirejs/-/requirejs-2.1.20.tgz", + "integrity": "sha512-J/+2bPCGvLhrRFOar8550xmHHmoJk1UunPROQKxV66u1KgxtYzRzXm6TAzLak+2X8i5cETl2UO/mGSZ6QdEXhg==" + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "resolve": { + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "dev": true, + "requires": { + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==", + "dev": true, + "requires": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + } + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", + "dev": true + }, + "response-time": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/response-time/-/response-time-2.3.4.tgz", + "integrity": "sha512-fiyq1RvW5/Br6iAtT8jN1XrNY8WPu2+yEypLbaijWry8WDZmn12azG9p/+c+qpEebURLlQmqCB8BNSu7ji+xQQ==", + "dev": true, + "requires": { + "depd": "~2.0.0", + "on-headers": "~1.1.0" + }, + "dependencies": { + "on-headers": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz", + "integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==", + "dev": true + } + } + }, + "restore-cursor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", + "integrity": "sha512-reSjH4HuiFlxlaBaFCiS6O76ZGG2ygKoSlCsipKdaZuKSPx/+bt9mULkn4l0asVzbEfQQmXRg6Wp6gv6m0wElw==", + "dev": true, + "requires": { + "exit-hook": "^1.0.0", + "onetime": "^1.0.0" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha512-yqINtL/G7vs2v+dFIZmFUDbnVyFUJFKd6gK22Kgo6R4jfJGFtisKyncWDDULgjfqf4ASQuIQyjJ7XZ+3aWpsAg==", + "dev": true, + "requires": { + "align-text": "^0.1.1" + } + }, + "rimraf": { + "version": "2.5.4", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz", + "integrity": "sha512-Lw7SHMjssciQb/rRz7JyPIy9+bbUshEucPoLRvWqy09vC5zQixl8Uet+Zl+SROBB/JMWHJRdCk1qdxNWHNMvlQ==", + "dev": true, + "requires": { + "glob": "^7.0.5" + } + }, + "ripemd160": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.3.tgz", + "integrity": "sha512-5Di9UC0+8h1L6ZD2d7awM7E/T4uA1fJRlx6zk/NvdCCVEoAnFqvHmCuNeIKoCeIixBX/q8uM+6ycDvF8woqosA==", + "dev": true, + "requires": { + "hash-base": "^3.1.2", + "inherits": "^2.0.4" + }, + "dependencies": { + "hash-base": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.2.tgz", + "integrity": "sha512-Bb33KbowVTIj5s7Ked1OsqHUeCpz//tPwR+E2zJgJKo9Z5XolZ9b6bdUgjmYlwnWhoOQKoTd1TYToZGn5mAYOg==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^2.3.8", + "safe-buffer": "^5.2.1", + "to-buffer": "^1.2.1" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + } + } + }, + "rndm": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/rndm/-/rndm-1.2.0.tgz", + "integrity": "sha512-fJhQQI5tLrQvYIYFpOnFinzv9dwmR7hRnUz1XqP3OJ1jIweTNOd6aTO4jwQSgcBSFUB+/KHJxuGneime+FdzOw==", + "dev": true + }, + "run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true + }, + "rx": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz", + "integrity": "sha512-CiaiuN6gapkdl+cZUr67W6I8jquN4lkak3vtIsIWCl4XIPP8ffsoyN6/+PuGXnQy8Cu8W2y9Xxh31Rq4M6wUug==", + "dev": true + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "dev": true, + "requires": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "samsam": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.1.2.tgz", + "integrity": "sha512-iVL7LibpM3tl4rQPweOXXrmjGegxx27flTOjQEZD3PXe4oZNFzuz6Si4mgleK/JWU/hyCvtV01RUovjvBEpDmw==", + "dev": true + }, + "sane": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/sane/-/sane-1.6.0.tgz", + "integrity": "sha512-r9zOMa72GMYfOja8DZvDrKQjKE7vxQD2AHFVV/cg05JmAhKoumAjrW/0QbKw6kGebgcG6HV/3u+EI8ZqrAPT3Q==", + "dev": true, + "requires": { + "anymatch": "^1.3.0", + "exec-sh": "^0.2.0", + "fb-watchman": "^1.8.0", + "minimatch": "^3.0.2", + "minimist": "^1.1.1", + "walker": "~1.0.5", + "watch": "~0.10.0" + }, + "dependencies": { + "bser": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bser/-/bser-1.0.2.tgz", + "integrity": "sha512-kKi2swDowbCsnwsYyJnMkz3N1utuJfnWcvzxVX45nWuumTNEkig97rvLVN60+8OWgAWuJdIyEfTPTZqyPoklwA==", + "dev": true, + "requires": { + "node-int64": "^0.4.0" + } + }, + "fb-watchman": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-1.9.2.tgz", + "integrity": "sha512-XgitQpaII7LkblC9X8HhfnfuDpyOYSB/Xw8h3Q/gXfMtyL7UICDS1axIlafhwfvKxPjrqnu7EfO7i3A1kH+Rfg==", + "dev": true, + "requires": { + "bser": "1.0.2" + } + } + } + }, + "sass-graph": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.5.tgz", + "integrity": "sha512-VFWDAHOe6mRuT4mZRd4eKE+d8Uedrk6Xnh7Sh9b4NGufQLQjOrvf/MQoOdx+0s92L89FeyUUNfU597j/3uNpag==", + "dev": true, + "requires": { + "glob": "^7.0.0", + "lodash": "^4.0.0", + "scss-tokenizer": "^0.2.3", + "yargs": "^13.3.2" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "which-module": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", + "dev": true + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + } + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + } + }, + "yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "sax": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", + "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", + "dev": true + }, + "schema-utils": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz", + "integrity": "sha512-QaVYBaD9U8scJw2EBWnCBY+LJ0AD+/2edTaigDs0XLDLBfJmSUK9KGqktg1rb32U3z4j/XwvFwHHH1YfbYFd7Q==", + "dev": true, + "requires": { + "ajv": "^5.0.0" + } + }, + "scrollreveal": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/scrollreveal/-/scrollreveal-3.3.6.tgz", + "integrity": "sha512-5HiAtVqwffX18w/kqXkD+S54A0MoE4xLAwQcszEYGuy+EsRUoHsw1BhFpxGCcbTXIy5HMtj/qmLDbpQ+J3llig==" + }, + "scss-tokenizer": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", + "integrity": "sha512-dYE8LhncfBUar6POCxMTm0Ln+erjeczqEvCJib5/7XNkdw1FkUGgwMPY360FY0FgPWQxHWCx29Jl3oejyGLM9Q==", + "dev": true, + "requires": { + "js-base64": "^2.1.8", + "source-map": "^0.4.2" + }, + "dependencies": { + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha512-Y8nIfcb1s/7DcobUz1yOO1GSp7gyL+D9zLHDehT7iRESqGSxjJ448Sg7rvfgsRJCnKLdSl11uGf0s9X80cH0/A==", + "dev": true, + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha512-mfmm3/H9+67MCVix1h+IXTpDwL6710LyHuk7+cWC9T1mE0qz4iHhh6r4hU2wrIT9iTsAAC2XQRvfblL028cpLw==", + "dev": true + }, + "send": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.14.2.tgz", + "integrity": "sha512-36O39SV4A6lj4TBALc0tAMmiTwClC2Npp6wiRvzxqyrH3yTiYwAmWVyB2a0a/D3ISCQVHY/l+VO/9JVo6ZubfA==", + "dev": true, + "requires": { + "debug": "~2.2.0", + "depd": "~1.1.0", + "destroy": "~1.0.4", + "encodeurl": "~1.0.1", + "escape-html": "~1.0.3", + "etag": "~1.7.0", + "fresh": "0.3.0", + "http-errors": "~1.5.1", + "mime": "1.3.4", + "ms": "0.7.2", + "on-finished": "~2.3.0", + "range-parser": "~1.2.0", + "statuses": "~1.3.1" + }, + "dependencies": { + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha512-X0rGvJcskG1c3TgSCPqHJ0XJgwlcvOC7elJ5Y0hYuKBZoVqWpAMfLOeIh2UI/DCQ5ruodIjvsugZtjUYUw2pUw==", + "dev": true, + "requires": { + "ms": "0.7.1" + }, + "dependencies": { + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha512-lRLiIR9fSNpnP6TC4v8+4OU7oStC01esuNowdQ34L+Gk8e5Puoc88IqJ+XAY/B3Mn2ZKis8l8HX90oU8ivzUHg==", + "dev": true + } + } + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==", + "dev": true + }, + "http-errors": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.5.1.tgz", + "integrity": "sha512-ftkc2U5ADKHv8Ny1QJaDn8xnE18G+fP5QYupx9c3Xk6L5Vgo3qK8Bgbpb4a+jRtaF/YQKjIuXA5J0tde4Tojng==", + "dev": true, + "requires": { + "inherits": "2.0.3", + "setprototypeof": "1.0.2", + "statuses": ">= 1.3.1 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "mime": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", + "integrity": "sha512-sAaYXszED5ALBt665F0wMQCUXpGuZsGdopoqcHPdL39ZYdi7uHoZlhrfZfhv8WzivhBzr/oXwaj+yiK5wY8MXQ==", + "dev": true + }, + "ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha512-5NnE67nQSQDJHVahPJna1PQ/zCXMnQop3yUCxjKPNzCxuyPSKWTQ/5Gu5CZmjetwGLWRA+PzeF5thlbOdbQldA==", + "dev": true + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "setprototypeof": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.2.tgz", + "integrity": "sha512-mNRSo7UFE4c4tjxlZ3KxO5r+3oQUD1M/KXbp/XTwTwybL4VR9T8Ltmv5DvZX8iRz6C3hQmQftXEV0EmTKRV6mg==", + "dev": true + }, + "statuses": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha512-wuTCPGlJONk/a1kqZ4fQM2+908lC7fa7nPYpTC1EhnvqLX/IICbeP1OZGDtA374trpSq68YubKUMo8oRhN46yg==", + "dev": true + } + } + }, + "sequencify": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/sequencify/-/sequencify-0.0.7.tgz", + "integrity": "sha512-YL8BPm0tp6SlXef/VqYpA/ijmTsDP2ZEXzsnqjkaWS7NP7Bfvw18NboL0O8WCIjy67sOCG3MYSK1PB4GC9XdtQ==", + "dev": true + }, + "serve-favicon": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/serve-favicon/-/serve-favicon-2.3.2.tgz", + "integrity": "sha512-oHEaA3ohvKxEWhjP97cQ6QuTTbMBF3AxDyMSvBtvnl1jXaB2Ik6kXE7nUtPM3YVU5VHCDe6n7JZrFCWzQuvXEQ==", + "dev": true, + "requires": { + "etag": "~1.7.0", + "fresh": "0.3.0", + "ms": "0.7.2", + "parseurl": "~1.3.1" + }, + "dependencies": { + "ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha512-5NnE67nQSQDJHVahPJna1PQ/zCXMnQop3yUCxjKPNzCxuyPSKWTQ/5Gu5CZmjetwGLWRA+PzeF5thlbOdbQldA==", + "dev": true + } + } + }, + "serve-index": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.7.3.tgz", + "integrity": "sha512-g18EQWY83uFBldFpCyK/a49yxQgIMEMLA6U9f66FiI848mLkMO8EY/xRAZAoCwNFwSUAiArCF3mdjaNXpd3ghw==", + "dev": true, + "requires": { + "accepts": "~1.2.13", + "batch": "0.5.3", + "debug": "~2.2.0", + "escape-html": "~1.0.3", + "http-errors": "~1.3.1", + "mime-types": "~2.1.9", + "parseurl": "~1.3.1" + }, + "dependencies": { + "accepts": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.2.13.tgz", + "integrity": "sha512-R190A3EzrS4huFOVZajhXCYZt5p5yrkaQOB4nsWzfth0cYaDcSN5J86l58FJ1dt7igp37fB/QhnuFkGAJmr+eg==", + "dev": true, + "requires": { + "mime-types": "~2.1.6", + "negotiator": "0.5.3" + } + }, + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha512-X0rGvJcskG1c3TgSCPqHJ0XJgwlcvOC7elJ5Y0hYuKBZoVqWpAMfLOeIh2UI/DCQ5ruodIjvsugZtjUYUw2pUw==", + "dev": true, + "requires": { + "ms": "0.7.1" + } + }, + "http-errors": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz", + "integrity": "sha512-gMygNskMurDCWfoCdyh1gOeDfSbkAHXqz94QoPj5IHIUjC/BG8/xv7FSEUr7waR5RcAya4j58bft9Wu/wHNeXA==", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "statuses": "1" + } + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha512-lRLiIR9fSNpnP6TC4v8+4OU7oStC01esuNowdQ34L+Gk8e5Puoc88IqJ+XAY/B3Mn2ZKis8l8HX90oU8ivzUHg==", + "dev": true + }, + "negotiator": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.5.3.tgz", + "integrity": "sha512-oXmnazqehLNFohqgLxRyUdOQU9/UX0NpCpsnbjWUjM62ZM8oSOXYZpHc68XR130ftPNano0oQXGdREAplZRhaQ==", + "dev": true + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true + } + } + }, + "serve-static": { + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.11.2.tgz", + "integrity": "sha512-nBt9IVflCqc4pEtjttEgnwUJXBdy8xk0yZm16OomALNUKVa0S4X6pupZm/92j7M1AbPrC1WYkjr6HjtLeHnsAg==", + "dev": true, + "requires": { + "encodeurl": "~1.0.1", + "escape-html": "~1.0.3", + "parseurl": "~1.3.1", + "send": "0.14.2" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true + }, + "set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "requires": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + } + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + }, + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "sha.js": { + "version": "2.4.12", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.12.tgz", + "integrity": "sha512-8LzC5+bvI45BjpfXU8V5fdU2mfeKiQe1D1gIMn7XUlF3OTUrpdJpPPH4EMAnF0DsHHdSZqCdSss5qCmJKuiO3w==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "safe-buffer": "^5.2.1", + "to-buffer": "^1.2.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true + }, + "shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", + "dev": true + }, + "side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "dev": true, + "requires": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + } + }, + "side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "dev": true, + "requires": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + } + }, + "side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dev": true, + "requires": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + } + }, + "side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dev": true, + "requires": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + } + }, + "sigmund": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "integrity": "sha512-fCvEXfh6NWpm+YSuY2bpXb/VIihqWA6hLsgboC+0nl71Q7N7o2eaCW8mJa/NLvQhs6jpd3VZV4UiUQlV6+lc8g==", + "dev": true + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "sinon": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-1.17.7.tgz", + "integrity": "sha512-M9rtyQxKfcTTdB64rpPSRaTzOvunb+HHPv/3PxvNPrEDnFSny95Pi6/3VoD471ody0ay0IHyzT3BErfcLXj6NA==", + "dev": true, + "requires": { + "formatio": "1.1.1", + "lolex": "1.3.2", + "samsam": "1.1.2", + "util": ">=0.10.3 <1" + }, + "dependencies": { + "lolex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-1.3.2.tgz", + "integrity": "sha512-YYp8cqz7/8eruZ15L1mzcPkvLYxipfdsWIDESvNdNmQP9o7TsDitRhNuV2xb7aFu2ofZngao1jiVrVZ842x4BQ==", + "dev": true + } + } + }, + "sinon-chai": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/sinon-chai/-/sinon-chai-2.8.0.tgz", + "integrity": "sha512-2RpVbbry6Axt98pdpyxTD4J8xeNHriQBczockg1FdifpVgPRQ7Bo3BZdv6t+bzNphna851QqK66QhTadFa+B4Q==", + "dev": true + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==", + "dev": true + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-descriptor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", + "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "sntp": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "integrity": "sha512-7bgVOAnPj3XjrKY577S+puCKGCRlUrcrEdsMeRXlg9Ghf5df/xNi6sONUa43WrHUd3TjJBF7O04jYoiY0FVa0A==", + "dev": true, + "requires": { + "hoek": "2.x.x" + } + }, + "socket.io": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-1.7.4.tgz", + "integrity": "sha512-rKMY/U7gBmbHjwrljcPHy+uEXZ5973WvO2DrooL643w1R24SZVzsmhvNmJFjYVhAL4y7wrZJJS/znUfp0VWfKw==", + "dev": true, + "requires": { + "debug": "2.3.3", + "engine.io": "~1.8.4", + "has-binary": "0.1.7", + "object-assign": "4.1.0", + "socket.io-adapter": "0.5.0", + "socket.io-client": "1.7.4", + "socket.io-parser": "2.3.1" + }, + "dependencies": { + "debug": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "integrity": "sha512-dCHp4G+F11zb+RtEu7BE2U8R32AYmM/4bljQfut8LipH3PdwsVBVGh083MXvtKkB7HSQUzSwiXz53c4mzJvYfw==", + "dev": true, + "requires": { + "ms": "0.7.2" + } + }, + "ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha512-5NnE67nQSQDJHVahPJna1PQ/zCXMnQop3yUCxjKPNzCxuyPSKWTQ/5Gu5CZmjetwGLWRA+PzeF5thlbOdbQldA==", + "dev": true + }, + "object-assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz", + "integrity": "sha512-Lbc7GfN7XFaK30bzUN3cDYLOkT0dH05S0ax1QikylHUD9+Z9PRF3G1iYwX3kcz+6AlzTFGkUgMxz6l3aUwbwTA==", + "dev": true + } + } + }, + "socket.io-adapter": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-0.5.0.tgz", + "integrity": "sha512-zmYvlFJay9skt4yk1MffE9p93HKvQtyy0BLZ5dRM73bOXFJXNZWq8qZVdY456sLaxdK6fHGiZ7glxzqvzwGzkw==", + "dev": true, + "requires": { + "debug": "2.3.3", + "socket.io-parser": "2.3.1" + }, + "dependencies": { + "debug": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "integrity": "sha512-dCHp4G+F11zb+RtEu7BE2U8R32AYmM/4bljQfut8LipH3PdwsVBVGh083MXvtKkB7HSQUzSwiXz53c4mzJvYfw==", + "dev": true, + "requires": { + "ms": "0.7.2" + } + }, + "ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha512-5NnE67nQSQDJHVahPJna1PQ/zCXMnQop3yUCxjKPNzCxuyPSKWTQ/5Gu5CZmjetwGLWRA+PzeF5thlbOdbQldA==", + "dev": true + } + } + }, + "socket.io-client": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-1.7.4.tgz", + "integrity": "sha512-vW9xr9XyTJejFS//7GNZmLTLkUSAcvOSxRXXhrojV+7wboTFB8CuvK1UBCW3NiB2kqyi0h9cTeyD7dXjdUd9jQ==", + "dev": true, + "requires": { + "backo2": "1.0.2", + "component-bind": "1.0.0", + "component-emitter": "1.2.1", + "debug": "2.3.3", + "engine.io-client": "~1.8.4", + "has-binary": "0.1.7", + "indexof": "0.0.1", + "object-component": "0.0.3", + "parseuri": "0.0.5", + "socket.io-parser": "2.3.1", + "to-array": "0.1.4" + }, + "dependencies": { + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha512-jPatnhd33viNplKjqXKRkGU345p263OIWzDL2wH3LGIGp5Kojo+uXizHmOADRvhGFFTnJqX3jBAKP6vvmSDKcA==", + "dev": true + }, + "debug": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "integrity": "sha512-dCHp4G+F11zb+RtEu7BE2U8R32AYmM/4bljQfut8LipH3PdwsVBVGh083MXvtKkB7HSQUzSwiXz53c4mzJvYfw==", + "dev": true, + "requires": { + "ms": "0.7.2" + } + }, + "ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha512-5NnE67nQSQDJHVahPJna1PQ/zCXMnQop3yUCxjKPNzCxuyPSKWTQ/5Gu5CZmjetwGLWRA+PzeF5thlbOdbQldA==", + "dev": true + } + } + }, + "socket.io-parser": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-2.3.1.tgz", + "integrity": "sha512-j6l4g/+yWQjmy1yByzg1DPFL4vxQw+NwCJatIxni/AE1wfm17FBtIKSWU4Ay+onrJwDxmC4eK4QS/04ZsqYwZQ==", + "dev": true, + "requires": { + "component-emitter": "1.1.2", + "debug": "2.2.0", + "isarray": "0.0.1", + "json3": "3.3.2" + }, + "dependencies": { + "component-emitter": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.1.2.tgz", + "integrity": "sha512-YhIbp3PJiznERfjlIkK0ue4obZxt2S60+0W8z24ZymOHT8sHloOqWOqZRU2eN5OlY8U08VFsP02letcu26FilA==", + "dev": true + }, + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha512-X0rGvJcskG1c3TgSCPqHJ0XJgwlcvOC7elJ5Y0hYuKBZoVqWpAMfLOeIh2UI/DCQ5ruodIjvsugZtjUYUw2pUw==", + "dev": true, + "requires": { + "ms": "0.7.1" + } + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha512-lRLiIR9fSNpnP6TC4v8+4OU7oStC01esuNowdQ34L+Gk8e5Puoc88IqJ+XAY/B3Mn2ZKis8l8HX90oU8ivzUHg==", + "dev": true + } + } + }, + "sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==", + "dev": true, + "requires": { + "is-plain-obj": "^1.0.0" + } + }, + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true + }, + "source-map-loader": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-0.2.4.tgz", + "integrity": "sha512-OU6UJUty+i2JDpTItnizPrlpOIBLmQbWMuBg9q5bVtnHACqw1tn9nNwqJLbv0/00JjnJb/Ee5g5WS5vrRv7zIQ==", + "dev": true, + "requires": { + "async": "^2.5.0", + "loader-utils": "^1.1.0" + } + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true, + "requires": { + "source-map": "^0.5.6" + } + }, + "source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "dev": true + }, + "sparkles": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", + "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==", + "dev": true + }, + "spawn-sync": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/spawn-sync/-/spawn-sync-1.0.15.tgz", + "integrity": "sha512-9DWBgrgYZzNghseho0JOuh+5fg9u6QWhAWa51QC7+U5rCheZ/j1DrEZnyE0RBBRqZ9uEXGPgSSM0nky6burpVw==", + "dev": true, + "requires": { + "concat-stream": "^1.4.7", + "os-shim": "^0.1.2" + } + }, + "spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.22", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.22.tgz", + "integrity": "sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==", + "dev": true + }, + "split": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/split/-/split-0.2.10.tgz", + "integrity": "sha512-e0pKq+UUH2Xq/sXbYpZBZc3BawsfDZ7dgv+JtRTUPNcvF5CMR4Y9cvJqkMY0MoxWzTHvZuz1beg6pNEKlszPiQ==", + "dev": true, + "requires": { + "through": "2" + } + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "sshpk": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz", + "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true + }, + "stdout-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz", + "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==", + "dev": true, + "requires": { + "readable-stream": "^2.0.1" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "stream-combiner": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", + "integrity": "sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==", + "dev": true, + "requires": { + "duplexer": "~0.1.1" + } + }, + "stream-consume": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/stream-consume/-/stream-consume-0.1.1.tgz", + "integrity": "sha512-tNa3hzgkjEP7XbCkbRXe1jpg+ievoa0O4SCFlMOYEscGSS4JJsckGL8swUyAa/ApGU3Ae4t6Honor4HhL+tRyg==", + "dev": true + }, + "stream-counter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/stream-counter/-/stream-counter-0.2.0.tgz", + "integrity": "sha512-GjA2zKc2iXUUKRcOxXQmhEx0Ev3XHJ6c8yWGqhQjWwhGrqNwSsvq9YlRLgoGtZ5Kx2Ln94IedaqJ5GUG6aBbxA==", + "dev": true, + "requires": { + "readable-stream": "~1.1.8" + } + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "dev": true, + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "stream-shift": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", + "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==", + "dev": true + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==", + "dev": true + }, + "string-hash": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz", + "integrity": "sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A==", + "dev": true + }, + "string-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-1.0.1.tgz", + "integrity": "sha512-MNCACnufWUf3pQ57O5WTBMkKhzYIaKEcUioO0XHrTMafrbBaNk4IyDOLHBv5xbXO0jLLdsYWeFjpjG2hVHRDtw==", + "dev": true, + "requires": { + "strip-ansi": "^3.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", + "dev": true + }, + "stringstream": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.6.tgz", + "integrity": "sha512-87GEBAkegbBcweToUrdzf3eLhWNg06FJTebl4BVJz/JgWy8CvEr9dRtX5qWphiynMSQlxxi+QqN0z5T32SLlhA==", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-bom": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-1.0.0.tgz", + "integrity": "sha512-qVAeAIjblKDp/8Cd0tJdxpe3Iq/HooI7En98alEaMbz4Wedlrcj3WI72dDQSrziRW5IQ0zeBo3JXsmS8RcS9jg==", + "dev": true, + "requires": { + "first-chunk-stream": "^1.0.0", + "is-utf8": "^0.2.0" + } + }, + "strip-bom-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-1.0.0.tgz", + "integrity": "sha512-7jfJB9YpI2Z0aH3wu10ZqitvYJaE0s5IzFuWE+0pbb4Q/armTloEUShymkDO47YSLnjAW52mlXT//hs9wXNNJQ==", + "dev": true, + "requires": { + "first-chunk-stream": "^1.0.0", + "strip-bom": "^2.0.0" + }, + "dependencies": { + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + } + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", + "dev": true + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha512-I5iQq6aFMM62fBEAIB/hXzwJD6EEZ0xEGCX2t7oXqaKPIRgt4WruAQ285BISgdkP+HLGWyeGmNJcpIwFeRYRUA==", + "dev": true, + "requires": { + "get-stdin": "^4.0.1" + } + }, + "sudo": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sudo/-/sudo-1.0.3.tgz", + "integrity": "sha512-3xMsaPg+8Xm+4LQm0b2V+G3lz3YxtDBzlqiU8CXw2AOIIDSvC1kBxIxBjnoCTq8dTTXAy23m58g6mdClUocpmQ==", + "dev": true, + "requires": { + "inpath": "~1.0.2", + "pidof": "~1.0.2", + "read": "~1.0.3" + } + }, + "superagent": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.3.tgz", + "integrity": "sha512-GLQtLMCoEIK4eDv6OGtkOoSMt3D+oq0y3dsxMuYuDvaNUvuT8eFBuLmfR0iYYzHC1e8hpzC6ZsxbuP6DIalMFA==", + "dev": true, + "requires": { + "component-emitter": "^1.2.0", + "cookiejar": "^2.1.0", + "debug": "^3.1.0", + "extend": "^3.0.0", + "form-data": "^2.3.1", + "formidable": "^1.2.0", + "methods": "^1.1.1", + "mime": "^1.4.1", + "qs": "^6.5.1", + "readable-stream": "^2.3.5" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, + "svgo": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-0.7.2.tgz", + "integrity": "sha512-jT/g9FFMoe9lu2IT6HtAxTA7RR2XOrmcrmCtGnyB/+GQnV6ZjNn+KOHZbZ35yL81+1F/aB6OeEsJztzBQ2EEwA==", + "dev": true, + "requires": { + "coa": "~1.0.1", + "colors": "~1.1.2", + "csso": "~2.3.1", + "js-yaml": "~3.7.0", + "mkdirp": "~0.5.1", + "sax": "~1.2.1", + "whet.extend": "~0.9.9" + }, + "dependencies": { + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha512-ENwblkFQpqqia6b++zLD/KUWafYlVY/UNnAp7oz7LY7E924wmpye416wBOmvv/HMWzl8gL1kJlfvId/1Dg176w==", + "dev": true + }, + "esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha512-OarPfz0lFCiW4/AV2Oy1Rp9qu0iusTKqykwTspGCZtPxmF81JR4MmIebvF1F9+UOKth2ZubLQ4XGGaU+hSn99A==", + "dev": true + }, + "js-yaml": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz", + "integrity": "sha512-eIlkGty7HGmntbV6P/ZlAsoncFLGsNoM27lkTzS+oneY/EiNhj+geqD9ezg/ip+SW6Var0BJU2JtV0vEUZpWVQ==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^2.6.0" + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + } + } + }, + "symbol": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/symbol/-/symbol-0.2.3.tgz", + "integrity": "sha512-IUW+ek7apEaW5bFhS6WpYoNtVpNTlNoqB/PH7YiMWQTxSPeXCzG4PILVakwXivJt3ZXWeO1fIJnUd/L9A/VeGA==", + "dev": true + }, + "symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, + "tapable": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.2.9.tgz", + "integrity": "sha512-2wsvQ+4GwBvLPLWsNfLCDYGsW6xb7aeC6utq2Qh0PFwgEy7K7dsma9Jsmb2zSQj7GvYAyUGSntLtsv++GmgL1A==", + "dev": true + }, + "tar": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz", + "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==", + "dev": true, + "requires": { + "block-stream": "*", + "fstream": "^1.0.12", + "inherits": "2" + } + }, + "ternary-stream": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ternary-stream/-/ternary-stream-2.1.1.tgz", + "integrity": "sha512-j6ei9hxSoyGlqTmoMjOm+QNvUKDOIY6bNl4Uh1lhBvl6yjPW2iLqxDUYyfDPZknQ4KdRziFl+ec99iT4l7g0cw==", + "dev": true, + "requires": { + "duplexify": "^3.5.0", + "fork-stream": "^0.0.4", + "merge-stream": "^1.0.0", + "through2": "^2.0.1" + } + }, + "test-exclude": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.2.3.tgz", + "integrity": "sha512-SYbXgY64PT+4GAL2ocI3HwPa4Q4TBKm0cwAVeKOt/Aoc0gSpNRjJX8w0pA1LMKZ3LBmd8pYBqApFNQLII9kavA==", + "dev": true, + "requires": { + "arrify": "^1.0.1", + "micromatch": "^2.3.11", + "object-assign": "^4.1.0", + "read-pkg-up": "^1.0.1", + "require-main-filename": "^1.0.1" + }, + "dependencies": { + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha512-dtXTVMkh6VkEEA7OhXnN1Ecb8aAGFdZ1LFxtOCoqj4qkyOJMt7+qs6Ahdy6p/NQCPYsRSXXivhSB/J5E9jmYKA==", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1" + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha512-G2n5bG5fSUCpnsXz4+8FUkYsGPkNfLn9YvS66U5qbTIXI2Ynnlo4Bi42bWv+omKUCqz+ejzfClwne0alJWJPhg==", + "dev": true + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha512-xU7bpz2ytJl1bH9cgIurjpg/n8Gohy9GTw81heDYLJQ4RU60dlyJsa+atVF2pI0yMMvKxI9HkKwjePCj5XI1hw==", + "dev": true, + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha512-hxx03P2dJxss6ceIeri9cmYOT4SRs3Zk3afZwWpOsRqLqprhTR8u++SlC+sFGsQr7WGFPdMF7Gjc1njDLDK6UA==", + "dev": true, + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha512-1FOj1LOwn42TMrruOHGt18HemVnbwAmAak7krWk+wa93KXxGbK+2jpezm+ytJYDaBX0/SPLZFHKM7m+tKobWGg==", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha512-LnU2XFEk9xxSJ6rfgAry/ty5qwUTyHYOBU0g4R6tIw5ljwgGIBmiKhRWLw5NpMOnrgUNcDJ4WMp8rl3sYVHLNA==", + "dev": true, + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + } + } + } + }, + "textextensions": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/textextensions/-/textextensions-1.0.2.tgz", + "integrity": "sha512-jm9KjEWiDmtGLBrTqXEduGzlYTTlPaoDKdq5YRQhD0rYjo61ZNTYKZ/x5J4ajPSBH9wIYY5qm9GNG5otIKjtOA==", + "dev": true + }, + "throat": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-3.2.0.tgz", + "integrity": "sha512-/EY8VpvlqJ+sFtLPeOgc8Pl7kQVOWv0woD87KTXVHPIAE842FGT+rokxIhe8xIUP1cfgrkt0as0vDLjDiMtr8w==", + "dev": true + }, + "throttleit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.1.tgz", + "integrity": "sha512-vDZpf9Chs9mAdfY046mcPt8fg5QSZr37hEH4TXYBnDF+izxgrbRGUAAaBvIk/fJm9aOFCGFd1EsNg5AZCbnQCQ==", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "through2-filter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-2.0.0.tgz", + "integrity": "sha512-miwWajb1B80NvIVKXFPN/o7+vJc4jYUvnZCwvhicRAoTxdD9wbcjri70j+BenCrN/JXEPKDjhpw4iY7yiNsCGg==", + "dev": true, + "requires": { + "through2": "~2.0.0", + "xtend": "~4.0.0" + } + }, + "tildify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/tildify/-/tildify-1.2.0.tgz", + "integrity": "sha512-Y9q1GaV/BO65Z9Yf4NOGMuwt3SGdptkZBnaaKfTQakrDyCLiuO1Kc5wxW4xLdsjzunRtqtOdhekiUFmZbklwYQ==", + "dev": true, + "requires": { + "os-homedir": "^1.0.0" + } + }, + "time-stamp": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", + "integrity": "sha512-gLCeArryy2yNTRzTGKbZbloctj64jkZ57hj5zdraXue6aFgd6PmvVtEyiUU+hvU0v7q08oVv8r8ev0tRo6bvgw==", + "dev": true + }, + "timers-browserify": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", + "dev": true, + "requires": { + "setimmediate": "^1.0.4" + } + }, + "tiny-lr": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tiny-lr/-/tiny-lr-0.2.1.tgz", + "integrity": "sha512-cmC4iw/nymXg+dc57AQ8Xv3bHxNQOGyQC3Ht5xLN67hksk6ucshrLk/VKiXuMbnZgToQ2NbnICxYj63xVw+Qbw==", + "dev": true, + "requires": { + "body-parser": "~1.14.0", + "debug": "~2.2.0", + "faye-websocket": "~0.10.0", + "livereload-js": "^2.2.0", + "parseurl": "~1.3.0", + "qs": "~5.1.0" + }, + "dependencies": { + "body-parser": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.14.2.tgz", + "integrity": "sha512-6D9uiWn7dbnDAhlDikccybuqKCmsoest0es3VSQO8Doz/fzx6Ls7kJNxKBYTjbzu4/RzNsf9zuACnS3UYjVH8Q==", + "dev": true, + "requires": { + "bytes": "2.2.0", + "content-type": "~1.0.1", + "debug": "~2.2.0", + "depd": "~1.1.0", + "http-errors": "~1.3.1", + "iconv-lite": "0.4.13", + "on-finished": "~2.3.0", + "qs": "5.2.0", + "raw-body": "~2.1.5", + "type-is": "~1.6.10" + }, + "dependencies": { + "qs": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-5.2.0.tgz", + "integrity": "sha512-VH4FeG98gs6AkHivaW2O14vsOPBL9E80Sj7fITunoDijiYQ1lsVwJYmm1CSL+oLyO2N5HPdo23GXAG64uKOAZQ==", + "dev": true + } + } + }, + "bytes": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.2.0.tgz", + "integrity": "sha512-zGRpnr2l5w/s8PxkrquUJoVeR06KvqPelrYqiSyQV7QEBqCYivpb6UzXYWC6JDBVtNFOT0rzJRFhkfJgxzmILA==", + "dev": true + }, + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha512-X0rGvJcskG1c3TgSCPqHJ0XJgwlcvOC7elJ5Y0hYuKBZoVqWpAMfLOeIh2UI/DCQ5ruodIjvsugZtjUYUw2pUw==", + "dev": true, + "requires": { + "ms": "0.7.1" + } + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true + }, + "http-errors": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz", + "integrity": "sha512-gMygNskMurDCWfoCdyh1gOeDfSbkAHXqz94QoPj5IHIUjC/BG8/xv7FSEUr7waR5RcAya4j58bft9Wu/wHNeXA==", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "statuses": "1" + } + }, + "iconv-lite": { + "version": "0.4.13", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz", + "integrity": "sha512-QwVuTNQv7tXC5mMWFX5N5wGjmybjNBBD8P3BReTkPmipoxTUFgWM2gXNvldHQr6T14DH0Dh6qBVg98iJt7u4mQ==", + "dev": true + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha512-lRLiIR9fSNpnP6TC4v8+4OU7oStC01esuNowdQ34L+Gk8e5Puoc88IqJ+XAY/B3Mn2ZKis8l8HX90oU8ivzUHg==", + "dev": true + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "qs": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-5.1.0.tgz", + "integrity": "sha512-SGDM48EwFLWnYYpNlOkEIRJb4wil5FKJxpR6NVfQjz6qJmX53ki7Xj1cLNEAkb70vUfJmdVLOwODyABgZyDMZw==", + "dev": true + }, + "raw-body": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.1.7.tgz", + "integrity": "sha512-x4d27vsIG04gZ1imkuDXB9Rd/EkAx5kYzeMijIYw1PAor0Ld3nTlkQQwDjKu42GdRUFCX1AfGnTSQB4O57eWVg==", + "dev": true, + "requires": { + "bytes": "2.4.0", + "iconv-lite": "0.4.13", + "unpipe": "1.0.0" + }, + "dependencies": { + "bytes": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.4.0.tgz", + "integrity": "sha512-SvUX8+c/Ga454a4fprIdIUzUN9xfd1YTvYh7ub5ZPJ+ZJ/+K2Bp6IpWGmnw8r3caLTsmhvJAKZz3qjIo9+XuCQ==", + "dev": true + } + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true + } + } + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true + }, + "to-absolute-glob": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-0.1.1.tgz", + "integrity": "sha512-Vvl5x6zNf9iVG1QTWeknmWrKzZxaeKfIDRibrZCR3b2V/2NlFJuD2HV7P7AVjaKLZNqLPHqyr0jGrW0fTcxCPQ==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "to-array": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", + "integrity": "sha512-LhVdShQD/4Mk4zXNroIQZJC+Ap3zgLcDuwEdcmLv9CCO73NWockQDwyUnW/m8VX/EElfL6FcYx7EeutN4HJA6A==", + "dev": true + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==", + "dev": true + }, + "to-buffer": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.2.2.tgz", + "integrity": "sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw==", + "dev": true, + "requires": { + "isarray": "^2.0.5", + "safe-buffer": "^5.2.1", + "typed-array-buffer": "^1.0.3" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og==", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha512-Nm4cF79FhSTzrLKGDMi3I4utBtFv8qKy4sq1enftf2gMdpqI8oVQTAfySkTz5r49giVzDj88SVZXP4CeYQwjaw==", + "dev": true + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha512-WZGXGstmCWgeevgTL54hrCuw1dyMQIzWy7ZfqRJfSmJZBwklI15egmQytFP6bPidmw3M8d5yEowl1niq4vmqZw==", + "dev": true + }, + "true-case-path": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz", + "integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==", + "dev": true, + "requires": { + "glob": "^7.1.2" + } + }, + "try-json-parse": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/try-json-parse/-/try-json-parse-0.1.1.tgz", + "integrity": "sha512-igaSiuwBR2+OCvNtXrck27twmITzfwUoNhm07L1azno7/czZAEpsnRBnJ3EMLrlL3Jy7ZhuPWJA5wVXa+XAfxA==", + "dev": true + }, + "tslib": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.8.1.tgz", + "integrity": "sha512-13/fEL8ro991mjA1w35XI/FSHF4dI2L+zNxkJJnGUcjFG4Ht+3ztBusOmg/DFiOks5NKJX3wXSG+q/nKUmhe5g==" + }, + "tslint": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.6.0.tgz", + "integrity": "sha512-n62jgnYbtsRiUXZAPomi3+z1p1CUvy6UcT6sfr9I0zo28Ut9cmJsxd2mG5DKNl+9qdIF4x0jOki5wWbOijcPZg==", + "dev": true, + "requires": { + "babel-code-frame": "^6.22.0", + "colors": "^1.1.2", + "commander": "^2.9.0", + "diff": "^3.2.0", + "glob": "^7.1.1", + "minimatch": "^3.0.4", + "resolve": "^1.3.2", + "semver": "^5.3.0", + "tslib": "^1.7.1", + "tsutils": "^2.7.1" + } + }, + "tslint-microsoft-contrib": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/tslint-microsoft-contrib/-/tslint-microsoft-contrib-5.0.3.tgz", + "integrity": "sha512-5AnfTGlfpUzpRHLmoojPBKFTTmbjnwgdaTHMdllausa4GBPya5u36i9ddrTX4PhetGZvd4JUYIpAmgHqVnsctg==", + "dev": true, + "requires": { + "tsutils": "^2.12.1" + } + }, + "tsscmp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.5.tgz", + "integrity": "sha512-aP/vy9xYiYGvtpW4xBkxdoeqbT+nNeo/37cdQk3iSiGz0xKb20XwOgBSqYo1DzEqt1ycPubEfPU3oHgzsRRL3g==", + "dev": true + }, + "tsutils": { + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", + "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "dev": true + }, + "type": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.3.tgz", + "integrity": "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==", + "dev": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-detect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-1.0.0.tgz", + "integrity": "sha512-f9Uv6ezcpvCQjJU0Zqbg+65qdcszv3qUQsZfjdRbWiZ7AMenrX1u0lNk9EoWWX6e1F+NULyg27mtdeZ5WhpljA==", + "dev": true + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "dev": true, + "requires": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "dev": true + }, + "typescript": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.4.2.tgz", + "integrity": "sha512-a6qhFjx88CqXM92QX6e5zwbYavxaknEdFhh/ZrBmuHEP+r2ye102uvhCkWdian4u5Ee17W+8fAN7xtdM8KeQ7A==", + "dev": true + }, + "ua-parser-js": { + "version": "0.7.41", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.41.tgz", + "integrity": "sha512-O3oYyCMPYgNNHuO7Jjk3uacJWZF8loBgwrfd/5LE/HyZ3lUIOdniQ7DNXJcIgZbwioZxk0fLfI4EVnetdiX5jg==" + }, + "uglify-js": { + "version": "3.19.3", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", + "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", + "dev": true, + "optional": true + }, + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha512-vb2s1lYx2xBtUgy+ta+b2J/GLVUR+wmpINwHePmPRhOsIVCG2wDzKJ0n14GslH1BifsqVzSOwQhRaCAsZ/nI4Q==", + "dev": true, + "optional": true + }, + "uglifyjs-webpack-plugin": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz", + "integrity": "sha512-TNM20HMW67kxHRNCZdvLyiwE1ST6WyY5Ae+TG55V81NpvNwJ9+V4/po4LHA1R9afV/WrqzfedG2UJCk2+swirw==", + "dev": true, + "requires": { + "source-map": "^0.5.6", + "uglify-js": "^2.8.29", + "webpack-sources": "^1.0.1" + }, + "dependencies": { + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha512-wzLkDa4K/mzI1OSITC+DUyjgIl/ETNHE9QvYgy6J6Jvqyyz4C0Xfd+lQhb19sX2jMpZV4IssUn0VDVmglV+s4g==", + "dev": true + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha512-GIOYRizG+TGoc7Wgc1LiOTLare95R3mzKgoln+Q/lE4ceiYH19gUpl0l0Ffq4lJDEf3FxujMe6IBfOCs7pfqNA==", + "dev": true, + "requires": { + "center-align": "^0.1.1", + "right-align": "^0.1.1", + "wordwrap": "0.0.2" + } + }, + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha512-qLq/4y2pjcU3vhlhseXGGJ7VbFO4pBANu0kwl8VCa9KEI0V8VfZIx2Fy3w01iSTA/pGwKZSmu/+I4etLNDdt5w==", + "dev": true, + "requires": { + "source-map": "~0.5.1", + "uglify-to-browserify": "~1.0.0", + "yargs": "~3.10.0" + } + }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha512-1pTPQDKTdd61ozlKGNCjhNRd+KPmgLSGa3mZTHoOliaGcESD8G1PXhh7c1fgiPjVbNVfgy2Faw4BI8/m0cC8Mg==", + "dev": true + }, + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha512-xSBsCeh+g+dinoBv3GAOWM4LcVVO68wLXRanibtBSdUvkGWQRGeE9P7IwU9EmDDi4jA6L44lz15CGMwdw9N5+Q==", + "dev": true + }, + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha512-QFzUah88GAGy9lyDKGBqZdkYApt63rCXYBGYnEP4xDJPXNqXXnBDACnbrXnViV6jRSqAePwrATi2i8mfYm4L1A==", + "dev": true, + "requires": { + "camelcase": "^1.0.2", + "cliui": "^2.1.0", + "decamelize": "^1.0.0", + "window-size": "0.1.0" + } + } + } + }, + "uid-safe": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.4.tgz", + "integrity": "sha512-MHTGzIDNPv1XhDK0MyKvEroobUhtpMa649/9SIFbTRO2dshLctD3zxOwQw+gQ+Mlp5osfMdUU1sjcO6Fw4rvCA==", + "dev": true, + "requires": { + "random-bytes": "~1.0.0" + } + }, + "ultron": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz", + "integrity": "sha512-QMpnpVtYaWEeY+MwKDN/UdKlE/LsFZXM5lO1u7GaZzNgmIbGixHEmVMIKT+vqYOALu3m5GYQy9kz4Xu4IVn7Ow==", + "dev": true + }, + "unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==", + "dev": true + }, + "underscore": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.4.4.tgz", + "integrity": "sha512-ZqGrAgaqqZM7LGRzNjLnw5elevWb5M8LEoDMadxIW3OWbcv72wMMgKdwOKpd5Fqxe8choLD8HN3iSj3TUh/giQ==", + "dev": true + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==", + "dev": true + }, + "uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha512-mZdDpf3vBV5Efh29kMw5tXoup/buMgxLzOt/XKFKcVmi+15ManNQWr6HfZ2aiZTYlYixbdNJ0KFmIZIv52tHSQ==", + "dev": true + }, + "unique-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-1.0.0.tgz", + "integrity": "sha512-L8KM6TdpsoBk6TJTXevbmpub3bATS06Znu3BcfVPVQkFtnh1MFeCZ3gFKCQcji7f7YYiigsO5OR99vqhoNT8nQ==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + } + } + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true, + "optional": true + }, + "upper-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", + "integrity": "sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==", + "dev": true + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", + "dev": true + }, + "url": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.4.tgz", + "integrity": "sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==", + "dev": true, + "requires": { + "punycode": "^1.4.1", + "qs": "^6.12.3" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "dev": true + }, + "qs": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", + "dev": true, + "requires": { + "side-channel": "^1.1.0" + } + } + } + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "user-home": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", + "integrity": "sha512-aggiKfEEubv3UwRNqTzLInZpAOmKzwdHqEBmW/hBA/mt99eg+b4VrX6i+IRLxU8+WJYfa33rGwRseg4eElUgsQ==", + "dev": true + }, + "useragent": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.3.0.tgz", + "integrity": "sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw==", + "dev": true, + "requires": { + "lru-cache": "4.1.x", + "tmp": "0.0.x" + }, + "dependencies": { + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + } + } + }, + "util": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + }, + "v8flags": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz", + "integrity": "sha512-SKfhk/LlaXzvtowJabLZwD4K6SGRYeoxA7KJeISlUMAB/NT4CBkZjMq3WceX2Ckm4llwqYVo8TICgsDYCBU2tA==", + "dev": true, + "requires": { + "user-home": "^1.1.1" + } + }, + "vali-date": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/vali-date/-/vali-date-1.0.0.tgz", + "integrity": "sha512-sgECfZthyaCKW10N0fm27cg8HYTFK5qMWgypqkXMQ4Wbl/zZKx7xZICgcoxIIE+WFAP/MBL2EFwC/YvLxw3Zeg==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "validate-npm-package-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", + "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==", + "dev": true, + "requires": { + "builtins": "^1.0.3" + } + }, + "validator": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-8.2.0.tgz", + "integrity": "sha512-Yw5wW34fSv5spzTXNkokD6S6/Oq92d8q/t14TqsS3fAiA1RYnxSFSIZ+CY3n6PGGRCq5HhJTSepQvFUS2QUDxA==" + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true + }, + "vendors": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", + "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + }, + "dependencies": { + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "dev": true + } + } + }, + "vhost": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/vhost/-/vhost-3.0.2.tgz", + "integrity": "sha512-S3pJdWrpFWrKMboRU4dLYgMrTgoPALsmYwOvyebK2M6X95b9kQrjZy5rwl3uzzpfpENe/XrNYu/2U+e7/bmT5g==", + "dev": true + }, + "vinyl": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz", + "integrity": "sha512-P5zdf3WB9uzr7IFoVQ2wZTmUwHL8cMZWJGzLBNCHNZ3NB6HTMsYABtt7z8tAGIINLXyAob9B9a1yzVGMFOYKEA==", + "dev": true, + "requires": { + "clone": "^1.0.0", + "clone-stats": "^0.0.1", + "replace-ext": "0.0.1" + } + }, + "vinyl-fs": { + "version": "0.3.14", + "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-0.3.14.tgz", + "integrity": "sha512-9CTKjt8378nhdydwFDTwywKio0n8aqq6xA70g0uypcnTNSCow/gQOwv0L9E2GaKd7EQ3kZl/diBxPSCgcBXESw==", + "dev": true, + "requires": { + "defaults": "^1.0.0", + "glob-stream": "^3.1.5", + "glob-watcher": "^0.0.6", + "graceful-fs": "^3.0.0", + "mkdirp": "^0.5.0", + "strip-bom": "^1.0.0", + "through2": "^0.6.1", + "vinyl": "^0.4.0" + }, + "dependencies": { + "clone": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz", + "integrity": "sha512-g62n3Kb9cszeZvmvBUqP/dsEJD/+80pDA8u8KqHnAPrVnQ2Je9rVV6opxkhuWCd1kCn2gOibzDKxCtBvD3q5kA==", + "dev": true + }, + "graceful-fs": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.12.tgz", + "integrity": "sha512-J55gaCS4iTTJfTXIxSVw3EMQckcqkpdRv3IR7gu6sq0+tbC363Zx6KH/SEwXASK9JRbhyZmVjJEVJIOxYsB3Qg==", + "dev": true, + "requires": { + "natives": "^1.1.3" + } + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha512-RkK/CCESdTKQZHdmKICijdKKsCRVHs5KsLZ6pACAmF/1GPUQhonHSXWNERctxEp7RmvjdNbZTL5z9V7nSCXKcg==", + "dev": true, + "requires": { + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" + } + }, + "vinyl": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", + "integrity": "sha512-pmza4M5VA15HOImIQYWhoXGlGNafCm0QK5BpBUXkzzEwrRxKqBsbAhTfkT2zMcJhUX1G1Gkid0xaV8WjOl7DsA==", + "dev": true, + "requires": { + "clone": "^0.2.0", + "clone-stats": "^0.0.1" + } + } + } + }, + "vinyl-sourcemaps-apply": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz", + "integrity": "sha512-+oDh3KYZBoZC8hfocrbrxbLUeaYtQK7J5WU5Br9VqWqmCll3tFJqKp97GC9GmMsVIL0qnx2DgEDVxdo5EZ5sSw==", + "dev": true, + "requires": { + "source-map": "^0.5.1" + } + }, + "vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true + }, + "void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", + "integrity": "sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==", + "dev": true + }, + "walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "requires": { + "makeerror": "1.0.12" + } + }, + "watch": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/watch/-/watch-0.10.0.tgz", + "integrity": "sha512-FAk18nzhYggg939xgRRLJjvqmAKZciO24wr8neoxNPl87w8J3m784wxL4zFBwME+0gNQ2Sv/vfsCrUxPxU2Dmg==", + "dev": true + }, + "watchpack": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", + "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", + "dev": true, + "requires": { + "chokidar": "^3.4.1", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0", + "watchpack-chokidar2": "^2.0.1" + }, + "dependencies": { + "anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "optional": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "optional": true + }, + "braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "optional": true, + "requires": { + "fill-range": "^7.1.1" + } + }, + "chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "optional": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, + "fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "optional": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "optional": true + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "optional": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "optional": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "optional": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "optional": true + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "optional": true + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "optional": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "optional": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "watchpack-chokidar2": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz", + "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==", + "dev": true, + "optional": true, + "requires": { + "chokidar": "^2.1.8" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "optional": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "optional": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "optional": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", + "dev": true, + "optional": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dev": true, + "optional": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "optional": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "optional": true + } + } + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "webpack": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.6.0.tgz", + "integrity": "sha512-OsHT3D0W0KmPPh60tC7asNnOmST6bKTiR90UyEdT9QYoaJ4OYN4Gg7WK1k3VxHK07ZoiYWPsKvlS/gAjwL/vRA==", + "dev": true, + "requires": { + "acorn": "^5.0.0", + "acorn-dynamic-import": "^2.0.0", + "ajv": "^5.1.5", + "ajv-keywords": "^2.0.0", + "async": "^2.1.2", + "enhanced-resolve": "^3.4.0", + "escope": "^3.6.0", + "interpret": "^1.0.0", + "json-loader": "^0.5.4", + "json5": "^0.5.1", + "loader-runner": "^2.3.0", + "loader-utils": "^1.1.0", + "memory-fs": "~0.4.1", + "mkdirp": "~0.5.0", + "node-libs-browser": "^2.0.0", + "source-map": "^0.5.3", + "supports-color": "^4.2.1", + "tapable": "^0.2.7", + "uglifyjs-webpack-plugin": "^0.4.6", + "watchpack": "^1.4.0", + "webpack-sources": "^1.0.1", + "yargs": "^8.0.2" + }, + "dependencies": { + "acorn": { + "version": "5.7.4", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", + "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", + "dev": true + }, + "ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw==", + "dev": true + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha512-P+1n3MnwjR/Epg9BBo1KT8qbye2g2Ou4sFumihwt6I4tsUX7jnLcX4BTOSKg/B1ZrIYMN9FcEnG4x5a7NB8Eng==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha512-3p6ZOGNbiX4CdvEd1VcE6yi78UrGNpjHO33noGwHCnT/o2fyllJDepsm8+mFFv/DvtwFHht5HIHSyOy5a+ChVQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + } + }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "dev": true, + "requires": { + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" + } + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha512-dUnb5dXUf+kzhC/W/F4e5/SkluXIFf5VUHolW1Eg1irn1hGWjPGdsRcvYJ1nD6lhk8Ir7VM0bHJKsYTx8Jx9OQ==", + "dev": true, + "requires": { + "pify": "^2.0.0" + } + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha512-eFIBOPW7FGjzBuk3hdXEuNSiTZS/xEMlH49HxMyzb0hyPfu4EhVjT2DH32K1hSSmVq4sebAWnZuuY5auISUTGA==", + "dev": true, + "requires": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha512-1orxQfbWGUiTn9XsPlChs6rLie/AV9jwZTGmu2NZw/CUDJQchXJFYE0Fq5j7+n558T1JhDWLdhyd1Zj+wLY//w==", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha512-ycQR/UbvI9xIlEdQT1TQqwoXtEldExbCEAJgRo5YXlmSKjv6ThHnP9/vwGa1gr19Gfw+LkFd7KqYMhzrRC5JYw==", + "dev": true, + "requires": { + "has-flag": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", + "dev": true + }, + "yargs": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz", + "integrity": "sha512-3RiZrpLpjrzIAKgGdPktBcMP/eG5bDFlkI+PHle1qwzyVXyDQL+pD/eZaMoOOO0Y7LLBfjpucObuUm/icvbpKQ==", + "dev": true, + "requires": { + "camelcase": "^4.1.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^2.0.0", + "read-pkg-up": "^2.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^7.0.0" + } + }, + "yargs-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", + "integrity": "sha512-WhzC+xgstid9MbVUktco/bf+KJG+Uu6vMX0LN1sLJvwmbCQVxb4D8LzogobonKycNasCZLdOzTAk1SK7+K7swg==", + "dev": true, + "requires": { + "camelcase": "^4.1.0" + } + } + } + }, + "webpack-dev-middleware": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-1.12.2.tgz", + "integrity": "sha512-FCrqPy1yy/sN6U/SaEZcHKRXGlqU0DUaEBL45jkUYoB8foVb6wCnbIJ1HKIx+qUFTW+3JpVcCJCxZ8VATL4e+A==", + "dev": true, + "requires": { + "memory-fs": "~0.4.1", + "mime": "^1.5.0", + "path-is-absolute": "^1.0.0", + "range-parser": "^1.0.3", + "time-stamp": "^2.0.0" + }, + "dependencies": { + "time-stamp": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-2.2.0.tgz", + "integrity": "sha512-zxke8goJQpBeEgD82CXABeMh0LSJcj7CXEd0OHOg45HgcofF7pxNwZm9+RknpxpDhwN4gFpySkApKfFYfRQnUA==", + "dev": true + } + } + }, + "webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dev": true, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "webpack-stream": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/webpack-stream/-/webpack-stream-4.0.3.tgz", + "integrity": "sha512-Tx7ks7Of/JiPz7/tUM4WqSg4OcXF4m4OzNSaEzNA1TNXQaiTHIjiKqUoL79wGXbFt2q1IP8VG5DcEdaxifY5Ew==", + "dev": true, + "requires": { + "fancy-log": "^1.3.2", + "lodash.clone": "^4.3.2", + "lodash.some": "^4.2.2", + "memory-fs": "^0.4.1", + "plugin-error": "^1.0.1", + "supports-color": "^5.3.0", + "through": "^2.3.8", + "vinyl": "^2.1.0", + "webpack": "^3.4.1" + }, + "dependencies": { + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "dev": true + }, + "clone-stats": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "replace-ext": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", + "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "vinyl": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz", + "integrity": "sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==", + "dev": true, + "requires": { + "clone": "^2.1.1", + "clone-buffer": "^1.0.0", + "clone-stats": "^1.0.0", + "cloneable-readable": "^1.0.0", + "remove-trailing-separator": "^1.0.1", + "replace-ext": "^1.0.0" + } + } + } + }, + "websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "requires": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true + }, + "whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, + "requires": { + "iconv-lite": "0.4.24" + }, + "dependencies": { + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + } + } + }, + "whatwg-fetch": { + "version": "3.6.20", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz", + "integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==" + }, + "whatwg-url": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-4.7.1.tgz", + "integrity": "sha512-7rwLuNiZQbujtIu7Ibp7mq9X/Swqq90X0+zOWESoViRYcIOoQWtThlRX9K2YQHZLwGZv4CBOdTc4N3/SzAdb6w==", + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "whet.extend": { + "version": "0.9.9", + "resolved": "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz", + "integrity": "sha512-mmIPAft2vTgEILgPeZFqE/wWh24SEsR/k+N9fJ3Jxrz44iDFy9aemCxdksfURSHYFCLmvs/d/7Iso5XjPpNfrA==", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ==", + "dev": true + }, + "which-typed-array": { + "version": "1.1.19", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", + "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + } + }, + "wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dev": true, + "requires": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "window-size": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz", + "integrity": "sha512-UD7d8HFA2+PZsbKyaOCEy8gMh1oDtHgJh1LfgjQ4zVXmYjAT/kvz3PueITKuqDiIXQe7yzpPnxX3lNc+AhQMyw==", + "dev": true + }, + "word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true + }, + "worker-farm": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", + "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", + "dev": true, + "requires": { + "errno": "~0.1.7" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "ws": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.5.tgz", + "integrity": "sha512-o3KqipXNUdS7wpQzBHSe180lBGO60SoK0yVo3CYJgb2MkobuWuBX6dhkYP5ORCLd55y+SaflMOV5fqAB53ux4w==", + "dev": true, + "requires": { + "options": ">=0.0.5", + "ultron": "1.0.x" + } + }, + "wtf-8": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wtf-8/-/wtf-8-1.0.0.tgz", + "integrity": "sha512-qfR6ovmRRMxNHgUNYI9LRdVofApe/eYrv4ggNOvvCP+pPdEo9Ym93QN4jUceGD6PignBbp2zAzgoE7GibAdq2A==", + "dev": true + }, + "xml": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/xml/-/xml-1.0.1.tgz", + "integrity": "sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw==", + "dev": true + }, + "xml-name-validator": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-2.0.1.tgz", + "integrity": "sha512-jRKe/iQYMyVJpzPH+3HL97Lgu5HrCfii+qSo+TfjKHtOnvbnvdVfMYrn9Q34YV81M2e5sviJlI6Ko9y+nByzvA==", + "dev": true + }, + "xml2js": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.2.7.tgz", + "integrity": "sha512-/MpJJ5ZM6U6SLqYgcVOawrYOh9JUPkgFQal7a3oBq2KJdjss+7XW7Fj0grWCGAsVxtQv7IGGK3BnpN8uvXPLgw==", + "dev": true, + "requires": { + "sax": "0.5.2" + }, + "dependencies": { + "sax": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/sax/-/sax-0.5.2.tgz", + "integrity": "sha512-C1SZ6m6CbGBMGPPDfmx/lsgvtQqfLwPq4aRJmrlusZ27CYPaza0IK0/c+uCdvYvyKAsAg0eJFoQwSES7xj4XqA==", + "dev": true + } + } + }, + "xmlbuilder": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-0.4.3.tgz", + "integrity": "sha512-t3QW+VdXvxcy214Wf5Mvb+38RPW6EUG1RpMjjtG+esbAFh+/50PdXz1iGywefNl70DW2ucNWTXBw5buTgzDWyw==", + "dev": true + }, + "xmlhttprequest-ssl": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.6.3.tgz", + "integrity": "sha512-3XfeQE/wNkvrIktn2Kf0869fC0BN6UpydVasGIeSm2B1Llihf7/0UfZM+eCkOw3P7bP4+qPgqhm7ZoxuJtFU0Q==", + "dev": true + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + }, + "y18n": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", + "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", + "dev": true + }, + "yargs": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-4.6.0.tgz", + "integrity": "sha512-KmjJbWBkYiSRUChcOSa4rtBxDXf0j4ISz+tpeNa4LKIBllgKnkemJ3x4yo4Yydp3wPU4/xJTaKTLLZ8V7zhI7A==", + "dev": true, + "requires": { + "camelcase": "^2.0.1", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "lodash.assign": "^4.0.3", + "os-locale": "^1.4.0", + "pkg-conf": "^1.1.2", + "read-pkg-up": "^1.0.1", + "require-main-filename": "^1.0.1", + "string-width": "^1.0.1", + "window-size": "^0.2.0", + "y18n": "^3.2.1", + "yargs-parser": "^2.4.0" + }, + "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw==", + "dev": true + }, + "yargs-parser": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-2.4.1.tgz", + "integrity": "sha512-9pIKIJhnI5tonzG6OnCFlz/yln8xHYcGl+pn3xR0Vzff0vzN1PbNRaelgfgRUwZ3s4i3jvxT9WhmUGL4whnasA==", + "dev": true, + "requires": { + "camelcase": "^3.0.0", + "lodash.assign": "^4.0.6" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg==", + "dev": true + } + } + } + } + }, + "yargs-parser": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.1.tgz", + "integrity": "sha512-wpav5XYiddjXxirPoCTUPbqM0PXvJ9hiBMvuJgInvo4/lAOTZzUprArw17q2O1P2+GHhbBr18/iQwjL5Z9BqfA==", + "dev": true, + "requires": { + "camelcase": "^3.0.0", + "object.assign": "^4.1.0" + } + }, + "yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dev": true, + "requires": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "yeast": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", + "integrity": "sha512-8HFIh676uyGYP6wP13R/j6OJ/1HwJ46snpvzE7aHAN3Ryqh2yX6Xox2B4CUmTwwOIzlG3Bs7ocsP5dZH/R1Qbg==", + "dev": true + }, + "z-schema": { + "version": "3.18.4", + "resolved": "https://registry.npmjs.org/z-schema/-/z-schema-3.18.4.tgz", + "integrity": "sha512-DUOKC/IhbkdLKKiV89gw9DUauTV8U/8yJl1sjf6MtDmzevLKOF2duNJ495S3MFVjqZarr+qNGCPbkg4mu4PpLw==", + "requires": { + "commander": "^2.7.1", + "lodash.get": "^4.0.0", + "lodash.isequal": "^4.0.0", + "validator": "^8.0.0" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..265b7a9 --- /dev/null +++ b/package.json @@ -0,0 +1,39 @@ +{ + "name": "mega-menu", + "version": "1.0.4", + "private": true, + "main": "lib/index.js", + "engines": { + "node": ">=0.10.0" + }, + "scripts": { + "build": "gulp bundle", + "clean": "gulp clean", + "test": "gulp test" + }, + "dependencies": { + "@microsoft/decorators": "~1.4.1", + "@microsoft/sp-application-base": "~1.4.1", + "@microsoft/sp-core-library": "~1.4.1", + "@microsoft/sp-dialog": "~1.4.0", + "@microsoft/sp-office-ui-fabric-core": "^1.4.1", + "@pnp/common": "^1.3.11", + "@pnp/logging": "^1.3.11", + "@pnp/odata": "^1.3.11", + "@pnp/sp": "^1.3.11", + "@pnp/sp-clientsvc": "^1.3.11", + "@pnp/sp-taxonomy": "^1.3.11", + "@pnp/telemetry-js": "^2.0.0", + "@types/es6-promise": "0.0.33", + "@types/webpack-env": "1.13.1" + }, + "devDependencies": { + "@microsoft/sp-build-web": "~1.4.1", + "@microsoft/sp-module-interfaces": "~1.4.1", + "@microsoft/sp-webpart-workbench": "~1.4.1", + "gulp": "~3.9.1", + "@types/chai": "3.4.34", + "@types/mocha": "2.2.38", + "ajv": "~5.2.2" + } +} diff --git a/src/extensions/megaMenu/MegaMenu.module.scss b/src/extensions/megaMenu/MegaMenu.module.scss new file mode 100644 index 0000000..ad87c94 --- /dev/null +++ b/src/extensions/megaMenu/MegaMenu.module.scss @@ -0,0 +1,474 @@ +@import '~@microsoft/sp-office-ui-fabric-core/dist/sass/SPFabricCore.scss'; + +/* +Global override example: +:root { + --themePrimary: #00407f; + --themeLighterAlt: #f0f5fa; + --themeLighter: #c5d8eb; + --themeLight: #98b8d9; + --themeTertiary: #477db3; + --themeSecondary: #11508f; + --themeDarkAlt: #003973; + --themeDark: #003061; + --themeDarker: #002447; + --neutralLighterAlt: #faf9f8; + --neutralLighter: #f3f2f1; + --neutralLight: #edebe9; + --neutralQuaternaryAlt: #e1dfdd; + --neutralQuaternary: #d0d0d0; + --neutralTertiaryAlt: #c8c6c4; + --neutralTertiary: #a19f9d; + --neutralSecondary: #605e5c; + --neutralSecondaryAlt: #8a8886; + --neutralPrimaryAlt: #3b3a39; + --neutralPrimary: #323130; + --neutralDark: #201f1e; + --black: #000000; + --white: #ffffff; + + --megaMenuNavBackground: #5f6f74; + --megaMenuNavHoverBackground: #6f8085; + --megaMenuNavOpenBackground: #728388; + --megaMenuNavTextColor: #ffffff; + --megaMenuNavDividerColor: rgba(255, 255, 255, 0.22); + --megaMenuPanelWidth: 1280px; + --megaMenuZIndex: 6000; +} +*/ + +$mm-white: var(--white, #{$ms-color-white}); +$mm-panel-surface: var(--white, #{$ms-color-white}); +$mm-panel-border: var(--neutralLight, #{$ms-color-neutralLight}); +$mm-panel-divider: var(--neutralQuaternaryAlt, #{$ms-color-neutralQuaternaryAlt}); +$mm-text: var(--neutralPrimary, #{$ms-color-neutralPrimary}); +$mm-text-muted: var(--neutralSecondary, #{$ms-color-neutralSecondary}); +$mm-nav-background: var(--megaMenuNavBackground, #5f6f74); +$mm-nav-hover-background: var(--megaMenuNavHoverBackground, #6f8085); +$mm-nav-open-background: var(--megaMenuNavOpenBackground, #728388); +$mm-nav-divider: var(--megaMenuNavDividerColor, rgba(255, 255, 255, 0.22)); +$mm-nav-text: var(--megaMenuNavTextColor, #ffffff); +$mm-focus-accent: var(--themePrimary, #{$ms-color-themePrimary}); +$mm-focus-soft: var(--themeLighterAlt, #{$ms-color-themeLighterAlt}); +$mm-panel-shadow: var(--megaMenuPanelShadow, 0 14px 28px rgba(0, 0, 0, 0.18)); +$mm-panel-width: var(--megaMenuPanelWidth, 1280px); +$mm-nav-height: var(--megaMenuTopNavHeight, 34px); +$mm-nav-inline-padding: var(--megaMenuNavInlinePadding, 8px); +$mm-item-inline-padding: var(--megaMenuItemInlinePadding, 12px); +$mm-column-padding-x: var(--megaMenuColumnPaddingX, 18px); +$mm-column-padding-y: var(--megaMenuColumnPaddingY, 16px); +$mm-link-radius: var(--megaMenuLinkRadius, 2px); +$mm-layer-index: var(--megaMenuZIndex, 6000); + +:global { +:root { + --megaMenuNavBackground: #5f6f74; + --megaMenuNavHoverBackground: #6f8085; + --megaMenuNavOpenBackground: #728388; + --megaMenuNavTextColor: #ffffff; + --megaMenuNavDividerColor: rgba(255, 255, 255, 0.22); + --megaMenuTopNavHeight: 34px; + --megaMenuPanelWidth: 1280px; + --megaMenuPanelShadow: 0 14px 28px rgba(0, 0, 0, 0.18); + --megaMenuZIndex: 6000; + --megaMenuNavInlinePadding: 8px; + --megaMenuItemInlinePadding: 12px; + --megaMenuColumnPaddingX: 18px; + --megaMenuColumnPaddingY: 16px; + --megaMenuLinkRadius: 2px; + --megaMenuColumnCount: 4; +} + +.skip-link { + position: absolute; + top: -40px; + left: 6px; + background: $mm-focus-accent; + color: $mm-white; + padding: 8px 12px; + text-decoration: none; + font-weight: 600; + border-radius: 4px; + z-index: 10000; + transition: top 0.2s ease; +} + +.skip-link:focus { + top: 6px; +} + +#CustomNavigation { + position: relative; + overflow: visible; + z-index: $mm-layer-index; +} + +.mega-menu-main { + position: relative; + width: 100%; + background-color: #5f6f74; + background-color: $mm-nav-background; + border-bottom: 1px solid rgba(0, 0, 0, 0.18); + box-shadow: none; + overflow: visible; + z-index: $mm-layer-index; +} + +.mega-menu-main > ul, +.mega-menu-top-level { + margin: 0 auto; + max-width: $mm-panel-width; + background-color: inherit; + width: 100%; + box-sizing: border-box; + list-style: none; + padding: 0 $mm-nav-inline-padding; + padding-inline-start: $mm-nav-inline-padding; + display: flex; + align-items: stretch; + justify-content: flex-start; + gap: 0; +} + +.mega-menu-main > ul > li, +.mega-menu-top-item { + position: static; + display: flex; + align-items: stretch; + flex: 0 0 auto; + border-right: 1px solid $mm-nav-divider; +} + +.mega-menu-main > ul > li:last-child, +.mega-menu-top-item:last-child { + border-right: 0; +} + +.mega-menu-main > ul > li > a, +.mega-menu-main > ul > li > span[role="menuitem"], +.menu-item-link, +.menu-item-text { + position: relative; + display: flex; + align-items: center; + min-height: $mm-nav-height; + padding: 0 $mm-item-inline-padding; + color: $mm-nav-text; + font-size: 12px; + font-weight: 400; + line-height: 1; + text-decoration: none; + background: transparent; + border: 0; + transition: background-color 0.14s ease, color 0.14s ease; + outline: none; + white-space: nowrap; +} + +.menu-item-text { + cursor: pointer; +} + +.menu-item-has-children::after { + content: ''; + width: 5px; + height: 5px; + margin-left: 8px; + border-right: 1px solid currentColor; + border-bottom: 1px solid currentColor; + transform: translateY(-1px) rotate(45deg); + transition: transform 0.14s ease; +} + +.menu-item-has-children[aria-expanded="true"]::after { + transform: translateY(1px) rotate(-135deg); +} + +.mega-menu-top-item.is-active > a, +.mega-menu-top-item.is-active > span, +.menu-item-link.is-active, +.menu-item-text.is-active { + background: $mm-nav-open-background; +} + +.mega-menu-top-item.is-current > a, +.mega-menu-top-item.is-current > span, +.menu-item-link.is-current, +.menu-item-text.is-current { + font-weight: 600; +} + +.mega-menu-main > ul > li:hover > a, +.mega-menu-main > ul > li:hover > span[role="menuitem"], +.mega-menu-main > ul > li > a[aria-expanded="true"], +.mega-menu-main > ul > li > span[aria-expanded="true"], +.menu-item-link:hover, +.menu-item-text:hover { + color: $mm-nav-text; + background: $mm-nav-hover-background; +} + +.mega-menu-main > ul > li > a[aria-expanded="true"], +.mega-menu-main > ul > li > span[aria-expanded="true"] { + background: $mm-nav-open-background; +} + +.mega-menu-main > ul > li > a:focus, +.mega-menu-main > ul > li > span[role="menuitem"]:focus, +.menu-item-link:focus, +.menu-item-text:focus { + color: $mm-nav-text; + background: $mm-nav-open-background; + box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.65); +} + +.mega-menu { + position: absolute; + left: 0; + right: 0; + top: 100%; + display: none; + visibility: hidden; + opacity: 0; + background-color: #ffffff; + background-color: $mm-panel-surface; + background-image: none; + mix-blend-mode: normal; + border: 1px solid $mm-panel-border; + border-top: 0; + box-shadow: $mm-panel-shadow; + max-height: calc(100vh - #{$mm-nav-height}); + isolation: isolate; + overflow-y: auto; + overflow-x: hidden; + z-index: calc(#{$mm-layer-index} + 1); + transition: opacity 0.16s ease, visibility 0.16s ease; +} + +.mega-menu-main > ul > li:hover .mega-menu, +.mega-menu.js-open { + visibility: visible; + opacity: 1; + display: block; + background-color: #ffffff; + background-color: $mm-panel-surface; + background-image: none; +} + +.mega-menu-grid { + max-width: $mm-panel-width; + background-color: inherit; + margin: 0 auto; + display: grid; + grid-template-columns: repeat(var(--megaMenuColumnCount, 4), minmax(0, 1fr)); + gap: 0; + align-items: start; +} + +.mega-menu-category { + min-width: 0; + padding: $mm-column-padding-y $mm-column-padding-x 14px; + border-right: 1px solid $mm-panel-divider; +} + +.mega-menu-grid > .mega-menu-category:last-child { + border-right: 0; +} + +.mega-menu-category > h3, +.mega-menu-category-title { + margin: 0 0 10px; + padding: 0; + border: 0; +} + +.mega-menu-category > h3 > span, +.mega-menu-category > h3 > a { + display: block; + color: $mm-text; + font-size: 13px; + font-weight: 600; + line-height: 18px; + text-decoration: none; +} + +.mega-menu-category.is-active > h3 > span, +.mega-menu-category.is-active > h3 > a, +.mega-menu-category > h3 > span.is-active, +.mega-menu-category > h3 > a.is-active { + color: $mm-text; +} + +.mega-menu-category.is-current > h3 > a, +.mega-menu-category > h3 > a.is-current { + text-decoration: underline; +} + +.mega-menu-category > h3 > a:hover { + color: $mm-text; + text-decoration: underline; +} + +.mega-menu-category > h3 > a:focus { + background: $mm-focus-soft; + color: $mm-text; + border-radius: 2px; + box-shadow: 0 0 0 2px $mm-focus-accent; + padding: 1px 4px; + margin: -1px -4px; +} + +.mega-menu-category ul, +.mega-menu-links { + list-style: none; + margin: 0; + padding-inline-start: 0; +} + +.mega-menu-category ul li, +.mega-menu-links li { + margin: 0 0 6px; +} + +.mega-menu-category ul li:last-child, +.mega-menu-links li:last-child { + margin-bottom: 0; +} + +.mega-menu-category ul li a, +.mega-menu-links li a { + display: block; + margin: 0; + padding: 1px 2px; + border-radius: $mm-link-radius; + color: $mm-text-muted; + font-size: 12px; + font-weight: 400; + line-height: 18px; + text-decoration: none; + transition: background-color 0.14s ease, color 0.14s ease, box-shadow 0.14s ease; +} + +.mega-menu-category ul li.is-active > a, +.mega-menu-links li.is-active > a, +.mega-menu-category ul li a.is-active, +.mega-menu-links li a.is-active { + color: $mm-text; +} + +.mega-menu-category ul li.is-current > a, +.mega-menu-links li.is-current > a, +.mega-menu-category ul li a.is-current, +.mega-menu-links li a.is-current { + color: $mm-text; + font-weight: 600; + text-decoration: underline; +} + +.mega-menu-category ul li a:hover, +.mega-menu-links li a:hover { + background: transparent; + color: $mm-text; + text-decoration: underline; +} + +.mega-menu-category ul li a:focus, +.mega-menu-links li a:focus { + background: $mm-focus-soft; + color: $mm-text; + box-shadow: 0 0 0 2px $mm-focus-accent; + outline: none; +} + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border: 0; +} + +@media (max-width: 1024px) { + .mega-menu-grid { + grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); + } + + .mega-menu-category { + padding: 14px 16px 12px; + } +} + +@media (max-width: 767px) { + .mega-menu-main > ul, + .mega-menu-top-level { + padding: 0 6px; + padding-inline-start: 6px; + flex-wrap: wrap; + } + + .mega-menu-main > ul > li, + .mega-menu-top-item { + border-right: 0; + } + + .mega-menu-main > ul > li > a, + .mega-menu-main > ul > li > span[role="menuitem"], + .menu-item-link, + .menu-item-text { + min-height: 36px; + padding: 0 10px; + font-size: 12px; + } + + .mega-menu { + border-left: 0; + border-right: 0; + } + + .mega-menu-grid { + grid-template-columns: 1fr; + } + + .mega-menu-category { + padding: 14px 12px; + border-right: 0; + border-bottom: 1px solid $mm-panel-divider; + } + + .mega-menu-grid > .mega-menu-category:last-child { + border-bottom: 0; + } +} + +@media (prefers-reduced-motion: reduce) { + .skip-link, + .menu-item-has-children::after, + .mega-menu-main > ul > li > a, + .mega-menu-main > ul > li > span[role="menuitem"], + .menu-item-link, + .menu-item-text, + .mega-menu, + .mega-menu-category ul li a, + .mega-menu-links li a { + transition: none; + } +} + +@media (prefers-contrast: high) { + .mega-menu-main > ul > li > a:focus, + .mega-menu-main > ul > li > span[role="menuitem"]:focus, + .menu-item-link:focus, + .menu-item-text:focus, + .mega-menu-category > h3 > a:focus, + .mega-menu-category ul li a:focus, + .mega-menu-links li a:focus { + outline: 2px solid; + outline-offset: 2px; + box-shadow: none; + } +} +} /* End :global */ diff --git a/src/extensions/megaMenu/MegaMenu.module.scss.ts b/src/extensions/megaMenu/MegaMenu.module.scss.ts new file mode 100644 index 0000000..7efb3c7 --- /dev/null +++ b/src/extensions/megaMenu/MegaMenu.module.scss.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +require('./MegaMenu.module.css'); +const styles = { + mmSlideIn: 'mmSlideIn_09a8e1a7', + mmFadeIn: 'mmFadeIn_09a8e1a7', +}; + +export default styles; +/* tslint:enable */ \ No newline at end of file diff --git a/src/extensions/megaMenu/MegaMenuApplicationCustomizer.manifest.json b/src/extensions/megaMenu/MegaMenuApplicationCustomizer.manifest.json new file mode 100644 index 0000000..fd24ca2 --- /dev/null +++ b/src/extensions/megaMenu/MegaMenuApplicationCustomizer.manifest.json @@ -0,0 +1,17 @@ +{ + "$schema": "https://developer.microsoft.com/json-schemas/spfx/client-side-extension-manifest.schema.json", + + "id": "abc3361f-bb2d-491f-aba3-cd51c19a299b", + "alias": "MegaMenuApplicationCustomizer", + "componentType": "Extension", + "extensionType": "ApplicationCustomizer", + + // The "*" signifies that the version should be taken from the package.json + "version": "*", + "manifestVersion": 2, + + // If true, the component can only be installed on sites where Custom Script is allowed. + // Components that allow authors to embed arbitrary script code should set this to true. + // https://support.office.com/en-us/article/Turn-scripting-capabilities-on-or-off-1f2c515f-5d7e-448a-9fd7-835da935584f + "requiresCustomScript": false +} diff --git a/src/extensions/megaMenu/MegaMenuApplicationCustomizer.ts b/src/extensions/megaMenu/MegaMenuApplicationCustomizer.ts new file mode 100644 index 0000000..4f8d447 --- /dev/null +++ b/src/extensions/megaMenu/MegaMenuApplicationCustomizer.ts @@ -0,0 +1,158 @@ +// tslint:disable:max-line-length +// tslint:disable:match-default-export-name +// tslint:disable:typedef +// tslint:disable:variable-name + +import { override } from '@microsoft/decorators'; +import { + BaseApplicationCustomizer, + PlaceholderContent, + PlaceholderName +} from '@microsoft/sp-application-base'; + +import * as strings from 'MegaMenuApplicationCustomizerStrings'; +import { TaxonomyNavigationService } from '../../services/TaxonomyNavigationService'; +import { MegaMenuRenderer } from './MegaMenuRenderer'; +import { IMenuItem } from '../../services/IMenuItem'; +import { debugError, debugLog, debugWarn } from '../../services/MegaMenuDebug'; + +import './MegaMenu.module.scss'; + +const LOG_SOURCE: string = 'MegaMenuApplicationCustomizer'; +export const UserCustomActionMegaMenuId: string = 'abc3361f-bb2d-491f-aba3-cd51c19a299b'; + +export interface IMegaMenuApplicationCustomizerProperties { + termSetName: string; + cssUrl?: string; + debug?: boolean; +} + +export default class MegaMenuApplicationCustomizer + extends BaseApplicationCustomizer { + + private _topPlaceholder: PlaceholderContent | undefined; + + @override + public onInit(): Promise { + debugLog(this._isDebugEnabled(), LOG_SOURCE, 'Initialized ' + strings.Title); + + if (this.properties.cssUrl) { + this._loadExternalCss(this.properties.cssUrl); + } + + this.context.placeholderProvider.changedEvent.add(this, this._renderPlaceHolders); + this._renderPlaceHolders(); + + return Promise.resolve(); + } + + private _renderPlaceHolders(): void { + const availablePlaceholders: string = this.context.placeholderProvider.placeholderNames + .map(name => PlaceholderName[name]) + .join(', '); + + debugLog(this._isDebugEnabled(), LOG_SOURCE, 'Available placeholders:', availablePlaceholders); + + if (!this._topPlaceholder) { + this._topPlaceholder = this.context.placeholderProvider.tryCreateContent( + PlaceholderName.Top, + { onDispose: this._onDispose } + ); + + if (!this._topPlaceholder) { + debugError(this._isDebugEnabled(), LOG_SOURCE, 'The expected placeholder (Top) was not found.'); + return; + } + + if (!this.properties.termSetName) { + debugWarn(this._isDebugEnabled(), LOG_SOURCE, 'No termSetName configured. Mega Menu rendering is skipped.'); + return; + } + + this._renderMegaMenu(this.properties.termSetName); + } + } + + private async _renderMegaMenu(termSetName: string, debug: boolean = this._isDebugEnabled()): Promise { + if (!this._topPlaceholder) { + return; + } + + try { + const taxonomyService: TaxonomyNavigationService = new TaxonomyNavigationService( + this.context, + termSetName, + debug + ); + + const menuItems: IMenuItem[] = await taxonomyService.getMenuItems(); + + const renderer: MegaMenuRenderer = new MegaMenuRenderer( + menuItems, + debug + ); + + const container = this._getOrCreateContainer('CustomHeader', this._topPlaceholder); + + if (container) { + renderer.render(container); + } else { + renderer.render(this._topPlaceholder.domElement); + } + + debugLog(debug, LOG_SOURCE, 'MegaMenu rendered successfully with ' + menuItems.length + ' top-level items.'); + } catch (error) { + debugError(debug, LOG_SOURCE, 'Error rendering MegaMenu.', error); + } + } + + private _getOrCreateContainer(id: string, placeholder: PlaceholderContent): HTMLElement { + const container = document.getElementById(id); + + if (container) { + const div = document.createElement('div'); + container.appendChild(div); + return div; + } + + return placeholder.domElement; + } + + private _loadExternalCss(cssUrl?: string, debug: boolean = this._isDebugEnabled()): void { + const externalCssLinkId: string = 'mega-menu-additional-css-34FAB720'; + let link: HTMLLinkElement = document.getElementById(externalCssLinkId) as HTMLLinkElement; + + if (cssUrl && cssUrl.trim() !== '') { + if (!link) { + const head: HTMLHeadElement = document.getElementsByTagName('head')[0]; + link = document.createElement('link'); + link.rel = 'stylesheet'; + link.type = 'text/css'; + link.id = externalCssLinkId; + link.onload = () => { + debugLog(debug, LOG_SOURCE, 'External CSS loaded successfully from:', cssUrl); + }; + link.onerror = () => { + debugWarn(debug, LOG_SOURCE, 'Failed to load external CSS from:', cssUrl); + }; + head.appendChild(link); + } + + link.href = cssUrl; + } else if (link) { + link.remove(); + } + } + + private _onDispose = (): void => { + debugLog(this._isDebugEnabled(), LOG_SOURCE, 'Disposed custom top placeholder.'); + } + + private _isDebugEnabled(debugOverride?: boolean): boolean { + if (typeof debugOverride === 'boolean') { + return debugOverride; + } + + return !!(this.properties && this.properties.debug === true); + } +} \ No newline at end of file diff --git a/src/extensions/megaMenu/MegaMenuRenderer.ts b/src/extensions/megaMenu/MegaMenuRenderer.ts new file mode 100644 index 0000000..2a53a66 --- /dev/null +++ b/src/extensions/megaMenu/MegaMenuRenderer.ts @@ -0,0 +1,510 @@ +// tslint:disable:max-line-length +// tslint:disable:match-default-export-name +// tslint:disable:typedef +// tslint:disable:variable-name + +import { IMenuItem } from '../../services/IMenuItem'; +import { debugLog } from '../../services/MegaMenuDebug'; + +import styles from './MegaMenu.module.scss'; // tslint:disable-line:no-unused-variable + +const LOG_SOURCE: string = 'MegaMenuRenderer'; + +export class MegaMenuRenderer { + private static readonly hoverOpenDelayMs: number = 140; + private static readonly hoverCloseDelayMs: number = 180; + + constructor( + private menuItems: IMenuItem[], + private debug: boolean = false + ) { } + + public render(container: HTMLElement) { + container.innerHTML = ''; + container.id = 'CustomNavigation'; + + const nav = document.createElement('nav'); + nav.id = 'Mega-Menu'; + nav.className = 'mega-menu-main'; + nav.setAttribute('role', 'navigation'); + nav.setAttribute('aria-label', 'Hauptnavigation'); + + const topLevelUl = document.createElement('ul'); + topLevelUl.className = 'mega-menu-top-level'; + topLevelUl.setAttribute('role', 'menubar'); + + this.menuItems.forEach(topLevelItem => { + const topLevelLi = this.createTopLevelItem(topLevelItem); + topLevelUl.appendChild(topLevelLi); + }); + + nav.appendChild(topLevelUl); + container.appendChild(nav); + + this.attachEventListeners(); + this.createScreenReaderAnnouncer(); + } + + private createTopLevelItem(item: IMenuItem): HTMLLIElement { + const li = document.createElement('li'); + const hasChildren = item.hasChildren() && item.items && item.items.length > 0; + const isActive = this.isItemActive(item); + const isCurrent = this.isCurrentUrl(item.url); + + li.className = this.joinClasses( + 'mega-menu-top-item', + hasChildren ? 'has-children' : undefined, + isActive ? 'is-active' : undefined, + isCurrent ? 'is-current' : undefined + ); + li.setAttribute('role', 'none'); + + const topElement = this.createTopLevelElement(item, hasChildren, isActive, isCurrent); + li.appendChild(topElement); + + if (hasChildren) { + const megaMenu = this.createMegaMenu(item); + li.appendChild(megaMenu); + } + + return li; + } + + private createTopLevelElement(item: IMenuItem, hasChildren: boolean, isActive: boolean, isCurrent: boolean): HTMLElement { + let element: HTMLElement; + + if (item.url) { + element = document.createElement('a'); + (element as HTMLAnchorElement).href = item.url; + element.className = 'menu-item-link'; + } else { + element = document.createElement('span'); + element.className = 'menu-item-text'; + element.setAttribute('tabindex', '0'); + } + + element.setAttribute('role', 'menuitem'); + element.textContent = item.label; + element.className = this.joinClasses( + element.className, + hasChildren ? 'menu-item-has-children' : undefined, + isActive ? 'is-active' : undefined, + isCurrent ? 'is-current' : undefined + ); + + if (hasChildren) { + element.setAttribute('aria-haspopup', 'true'); + element.setAttribute('aria-expanded', 'false'); + } + + if (isCurrent && item.url) { + element.setAttribute('aria-current', 'page'); + } + + if (item.hoverText) { + element.title = item.hoverText; + } + + return element; + } + + private createMegaMenu(parentItem: IMenuItem): HTMLDivElement { + const megaMenuDiv = document.createElement('div'); + megaMenuDiv.className = 'mega-menu'; + megaMenuDiv.setAttribute('role', 'menu'); + megaMenuDiv.setAttribute('aria-expanded', 'false'); + megaMenuDiv.setAttribute('aria-label', parentItem.label + ' Unterkategorien'); + + const gridDiv = document.createElement('div'); + gridDiv.className = 'mega-menu-grid'; + gridDiv.style.setProperty('--megaMenuColumnCount', this.getColumnCount(parentItem.items)); + + if (parentItem.items) { + parentItem.items.forEach(secondLevelItem => { + const categoryDiv = this.createCategorySection(secondLevelItem); + gridDiv.appendChild(categoryDiv); + }); + } + + megaMenuDiv.appendChild(gridDiv); + return megaMenuDiv; + } + + private createCategorySection(item: IMenuItem): HTMLDivElement { + const categoryDiv = document.createElement('div'); + const isActive = this.isItemActive(item); + const isCurrent = this.isCurrentUrl(item.url); + categoryDiv.className = this.joinClasses( + 'mega-menu-category', + isActive ? 'is-active' : undefined, + isCurrent ? 'is-current' : undefined + ); + + const h3 = document.createElement('h3'); + h3.className = 'mega-menu-category-title'; + + if (item.url) { + const link = document.createElement('a'); + link.href = item.url; + link.textContent = item.label; + link.className = this.joinClasses( + isActive ? 'is-active' : undefined, + isCurrent ? 'is-current' : undefined + ); + if (isCurrent) { + link.setAttribute('aria-current', 'page'); + } + if (item.hoverText) { + link.title = item.hoverText; + } + h3.appendChild(link); + } else { + const span = document.createElement('span'); + span.textContent = item.label; + span.className = this.joinClasses( + isActive ? 'is-active' : undefined + ); + if (item.hoverText) { + span.title = item.hoverText; + } + h3.appendChild(span); + } + + categoryDiv.appendChild(h3); + + if (item.hasChildren() && item.items && item.items.length > 0) { + const ul = document.createElement('ul'); + ul.className = 'mega-menu-links'; + + item.items.forEach(thirdLevelItem => { + const li = document.createElement('li'); + const link = document.createElement('a'); + const isLinkActive = this.isItemActive(thirdLevelItem); + const isLinkCurrent = this.isCurrentUrl(thirdLevelItem.url); + + li.className = this.joinClasses( + isLinkActive ? 'is-active' : undefined, + isLinkCurrent ? 'is-current' : undefined + ); + + link.href = thirdLevelItem.url || '#'; + link.textContent = thirdLevelItem.label; + link.className = this.joinClasses( + isLinkActive ? 'is-active' : undefined, + isLinkCurrent ? 'is-current' : undefined + ); + + if (isLinkCurrent && thirdLevelItem.url) { + link.setAttribute('aria-current', 'page'); + } + + if (thirdLevelItem.hoverText) { + link.title = thirdLevelItem.hoverText; + } + + li.appendChild(link); + ul.appendChild(li); + }); + + categoryDiv.appendChild(ul); + } + + return categoryDiv; + } + + private attachEventListeners(): void { + const headings = document.querySelectorAll('#Mega-Menu > ul > li > a, #Mega-Menu > ul > li > span[role="menuitem"]'); + + for (let i = 0; i < headings.length; i++) { + const heading = headings[i] as HTMLElement; + const megaMenu = heading.nextElementSibling as HTMLElement; + + if (megaMenu && megaMenu.classList.contains('mega-menu')) { + this.attachKeyboardNavigation(heading, megaMenu); + this.attachMouseEvents(heading, megaMenu); + this.attachFocusManagement(heading, megaMenu); + } + } + + this.attachGlobalKeyboardNavigation(); + } + + private attachKeyboardNavigation(heading: HTMLElement, megaMenu: HTMLElement): void { + heading.addEventListener('keydown', (e: KeyboardEvent) => { + if (e.key === 'Enter') { + if (heading.tagName === 'A') { + return; + } + + e.preventDefault(); + this.toggleMegaMenu(heading, megaMenu); + } else if (e.key === ' ') { + e.preventDefault(); + this.toggleMegaMenu(heading, megaMenu); + } else if (e.key === 'ArrowDown') { + e.preventDefault(); + this.openMegaMenu(heading, megaMenu); + this.focusFirstLink(megaMenu); + } else if (e.key === 'ArrowUp') { + e.preventDefault(); + this.closeMegaMenu(heading, megaMenu); + } else if (e.key === 'Escape') { + e.preventDefault(); + this.closeMegaMenu(heading, megaMenu); + heading.focus(); + } + }); + + if (heading.tagName === 'A') { + heading.addEventListener('click', () => { + debugLog(this.debug, LOG_SOURCE, 'Link clicked:', (heading as HTMLAnchorElement).href); + }); + } + + heading.addEventListener('focus', () => { + debugLog(this.debug, LOG_SOURCE, 'Focus moved to:', heading.textContent); + }); + } + + private attachMouseEvents(heading: HTMLElement, megaMenu: HTMLElement): void { + const parentLi = heading.parentElement as HTMLElement; + let openTimeout: number | undefined; + let closeTimeout: number | undefined; + + const clearOpenTimeout = () => { + if (typeof openTimeout === 'number') { + window.clearTimeout(openTimeout); + openTimeout = undefined; + } + }; + + const clearCloseTimeout = () => { + if (typeof closeTimeout === 'number') { + window.clearTimeout(closeTimeout); + closeTimeout = undefined; + } + }; + + parentLi.addEventListener('mouseenter', () => { + clearCloseTimeout(); + + if (megaMenu.classList.contains('js-open')) { + return; + } + + clearOpenTimeout(); + openTimeout = window.setTimeout(() => { + this.openMegaMenu(heading, megaMenu); + openTimeout = undefined; + }, MegaMenuRenderer.hoverOpenDelayMs); + }); + + parentLi.addEventListener('mouseleave', () => { + clearOpenTimeout(); + clearCloseTimeout(); + closeTimeout = window.setTimeout(() => { + this.closeMegaMenu(heading, megaMenu); + closeTimeout = undefined; + }, MegaMenuRenderer.hoverCloseDelayMs); + }); + + heading.addEventListener('focus', () => { + clearCloseTimeout(); + }); + + megaMenu.addEventListener('mouseenter', () => { + clearCloseTimeout(); + }); + } + + private attachFocusManagement(heading: HTMLElement, megaMenu: HTMLElement): void { + megaMenu.addEventListener('focusout', () => { + setTimeout(() => { + const focusedElement = document.activeElement as HTMLElement; + const isInsideThisMenu = megaMenu.contains(focusedElement); + const isOnThisTrigger = focusedElement === heading; + const isInAnyMegaMenu = focusedElement.closest('.mega-menu'); + const isOnAnyTopLevel = focusedElement.closest('#Mega-Menu > ul > li > a, #Mega-Menu > ul > li > span'); + + if (!isInsideThisMenu && !isOnThisTrigger && !isInAnyMegaMenu && !isOnAnyTopLevel) { + debugLog(this.debug, LOG_SOURCE, 'Closing menu because focus left the navigation.'); + this.closeMegaMenu(heading, megaMenu); + } + }, 150); + }); + } + + private attachGlobalKeyboardNavigation(): void { + document.addEventListener('keydown', (e: KeyboardEvent) => { + const activeElement = document.activeElement as HTMLElement; + + if (e.key === 'Escape') { + const openMenu = document.querySelector('.mega-menu[aria-expanded="true"]') as HTMLElement; + if (openMenu) { + const triggerLink = openMenu.previousElementSibling as HTMLElement; + this.closeMegaMenu(triggerLink, openMenu); + triggerLink.focus(); + } + } + + if (e.key === 'Tab') { + if (!e.shiftKey) { + const currentTopLevel = activeElement.closest('#Mega-Menu > ul > li > a, #Mega-Menu > ul > li > span') as HTMLElement; + if (currentTopLevel) { + const parentLi = currentTopLevel.closest('li') as HTMLElement; + const megaMenu = parentLi.querySelector('.mega-menu.js-open') as HTMLElement; + if (megaMenu) { + e.preventDefault(); + const firstLink = megaMenu.querySelector('a') as HTMLElement; + if (firstLink) { + firstLink.focus(); + } + return; + } + } + } + + if (e.shiftKey) { + const megaMenu = activeElement.closest('.mega-menu') as HTMLElement; + if (megaMenu && megaMenu.classList.contains('js-open')) { + const allLinksInMenu = megaMenu.querySelectorAll('a'); + const firstLinkInMenu = allLinksInMenu[0] as HTMLElement; + + if (activeElement === firstLinkInMenu) { + e.preventDefault(); + const triggerElement = megaMenu.previousElementSibling as HTMLElement; + triggerElement.focus(); + return; + } + } + } + } + }); + } + + private openMegaMenu(trigger: HTMLElement, menu: HTMLElement): void { + this.closeAllMegaMenus(menu); + trigger.setAttribute('aria-expanded', 'true'); + menu.setAttribute('aria-expanded', 'true'); + menu.classList.add('js-open'); + debugLog(this.debug, LOG_SOURCE, 'Menu opened:', trigger.textContent); + } + + private closeMegaMenu(trigger: HTMLElement, menu: HTMLElement): void { + trigger.setAttribute('aria-expanded', 'false'); + menu.setAttribute('aria-expanded', 'false'); + menu.classList.remove('js-open'); + debugLog(this.debug, LOG_SOURCE, 'Menu closed:', trigger.textContent); + } + + private toggleMegaMenu(trigger: HTMLElement, menu: HTMLElement): void { + const isOpen = trigger.getAttribute('aria-expanded') === 'true'; + if (isOpen) { + this.closeMegaMenu(trigger, menu); + } else { + this.openMegaMenu(trigger, menu); + } + } + + private closeAllMegaMenus(exceptMenu?: HTMLElement): void { + const allTriggers = document.querySelectorAll('#Mega-Menu > ul > li > a[aria-expanded="true"], #Mega-Menu > ul > li > span[aria-expanded="true"]'); + for (let i = 0; i < allTriggers.length; i++) { + const trigger = allTriggers[i] as HTMLElement; + const menu = trigger.nextElementSibling as HTMLElement; + if (menu && menu !== exceptMenu) { + this.closeMegaMenu(trigger, menu); + } + } + } + + private focusFirstLink(megaMenu: HTMLElement): void { + const firstLink = megaMenu.querySelector('a') as HTMLElement; + if (firstLink) { + firstLink.focus(); + } + } + + private isItemActive(item: IMenuItem): boolean { + if (this.isCurrentUrl(item.url)) { + return true; + } + + if (!item.items || item.items.length === 0) { + return false; + } + + for (let i = 0; i < item.items.length; i++) { + if (this.isItemActive(item.items[i])) { + return true; + } + } + + return false; + } + + private isCurrentUrl(url?: string): boolean { + const currentPath = this.normalizePath(window.location.href); + const itemPath = this.normalizePath(url); + + if (!currentPath || !itemPath) { + return false; + } + + if (itemPath === '/') { + return currentPath === '/'; + } + + if (currentPath === itemPath) { + return true; + } + + return currentPath.indexOf(itemPath + '/') === 0; + } + + private normalizePath(url?: string): string { + if (!url) { + return ''; + } + + try { + const parsedUrl = new URL(url, window.location.origin); + const pathname = (parsedUrl.pathname || '/').replace(/\/+$/, ''); + return (pathname || '/').toLowerCase(); + } catch (error) { + return ''; + } + } + + private getColumnCount(items?: IMenuItem[]): string { + const itemCount = items ? items.length : 0; + const columnCount = Math.min(Math.max(itemCount, 1), 4); + return columnCount.toString(); + } + + private joinClasses(...classNames: Array): string { + const filteredClassNames: string[] = []; + + for (let i = 0; i < classNames.length; i++) { + if (classNames[i]) { + filteredClassNames.push(classNames[i] as string); + } + } + + return filteredClassNames.join(' '); + } + + private createScreenReaderAnnouncer(): void { + if (document.getElementById('mega-menu-sr-announcer')) { + return; + } + + const srAnnouncer = document.createElement('div'); + srAnnouncer.id = 'mega-menu-sr-announcer'; + srAnnouncer.setAttribute('aria-live', 'polite'); + srAnnouncer.setAttribute('aria-atomic', 'true'); + srAnnouncer.className = 'sr-only'; + document.body.appendChild(srAnnouncer); + + debugLog(this.debug, LOG_SOURCE, 'Screen reader announcer is ready.'); + } +} diff --git a/src/extensions/megaMenu/MegaMenuSettings.ts b/src/extensions/megaMenu/MegaMenuSettings.ts new file mode 100644 index 0000000..9de93f6 --- /dev/null +++ b/src/extensions/megaMenu/MegaMenuSettings.ts @@ -0,0 +1,210 @@ +// tslint:disable:max-line-length export-name + +import { ApplicationCustomizerContext } from '@microsoft/sp-application-base'; +import { IMegaMenuApplicationCustomizerProperties, UserCustomActionMegaMenuId } from './MegaMenuApplicationCustomizer'; +import { UserCustomActionService } from '../../services/UserCustomActionService/UserCustomActionService'; +import { UserCustomActionScope } from '../../services/UserCustomActionService/UserCustomActionScope'; +import { IUserCustomActionProps } from '../../services/UserCustomActionService/IUserCustomActionProps'; +import { debugError } from '../../services/MegaMenuDebug'; + +const LOG_SOURCE: string = 'MegaMenuSettingsPanel'; + +export class MegaMenuSettingsPanel { + private _service: UserCustomActionService; + private _ucaId: string; + private _panelElement: HTMLElement | undefined = undefined; + private _overlayElement: HTMLElement | undefined = undefined; + + constructor( + private context: ApplicationCustomizerContext, + private dataUpdated: (data: IMegaMenuApplicationCustomizerProperties) => void, + private debug: boolean = false + ) { + this._service = new UserCustomActionService(this.context, this.debug); + } + + public async open(): Promise { + if (this._panelElement) { + return; + } + + const currentProps: IMegaMenuApplicationCustomizerProperties = await this.readApplicationCustomizerProps(); + this._createPanel(currentProps); + } + + public close(): void { + if (this._panelElement) { + this._panelElement.remove(); + this._panelElement = undefined; + } + + if (this._overlayElement) { + this._overlayElement.remove(); + this._overlayElement = undefined; + } + + document.body.focus(); + document.body.blur(); + } + + private async readApplicationCustomizerProps(): Promise { + const ucas: IUserCustomActionProps[] = await this._service.getUserCustomActions(UserCustomActionScope.Site); + const candidates: IUserCustomActionProps[] = ucas.filter(uca => uca.ClientSideComponentId === UserCustomActionMegaMenuId); + + if (candidates.length) { + const uca: IUserCustomActionProps = candidates[0]; + this._ucaId = uca.Id; + + if (uca.ClientSideComponentProperties) { + return JSON.parse(uca.ClientSideComponentProperties) as IMegaMenuApplicationCustomizerProperties; + } + + return { + termSetName: '', + cssUrl: '', + debug: false + }; + } + + debugError(this.debug, LOG_SOURCE, 'UserCustomAction for the MegaMenu was not found.'); + return { + termSetName: '', + cssUrl: '', + debug: false + }; + } + + private async saveApplicationCustomizerProps(componentProps: IMegaMenuApplicationCustomizerProperties): Promise { + try { + const newUserCustomActionsProperty: {} = { + ClientSideComponentProperties: JSON.stringify(componentProps) + }; + + await this._service.updateUserCustomAction(UserCustomActionScope.Site, this._ucaId, newUserCustomActionsProperty); + this.debug = componentProps.debug === true; + this._service = new UserCustomActionService(this.context, this.debug); + this.dataUpdated(componentProps); + } catch (e) { + debugError(this.debug, LOG_SOURCE, 'Error saving MegaMenu settings.', e); + } + } + + private _createPanel(props: IMegaMenuApplicationCustomizerProperties): void { + const overlay: HTMLElement = document.createElement('div'); + overlay.className = 'mm-settings-overlay'; + overlay.tabIndex = -1; + overlay.onclick = () => this.close(); + this._overlayElement = overlay; + + const panel: HTMLElement = document.createElement('div'); + panel.className = 'mm-settings-panel'; + panel.setAttribute('role', 'dialog'); + panel.setAttribute('aria-modal', 'true'); + panel.setAttribute('aria-label', 'MegaMenu Einstellungen'); + panel.innerHTML = this._getMarkup(props.termSetName, props.cssUrl || '', props.debug === true); + this._panelElement = panel; + + document.body.appendChild(overlay); + document.body.appendChild(panel); + + const closeBtn: HTMLButtonElement = panel.querySelector('.mm-settings-close') as HTMLButtonElement; + const cancelBtn: HTMLButtonElement = panel.querySelector('.mm-settings-cancel') as HTMLButtonElement; + const saveBtn: HTMLButtonElement = panel.querySelector('.mm-settings-save') as HTMLButtonElement; + const firstInput: HTMLInputElement = panel.querySelector('#mm-setting-termset') as HTMLInputElement; + + if (closeBtn) { closeBtn.onclick = () => this.close(); } + if (cancelBtn) { cancelBtn.onclick = () => this.close(); } + if (saveBtn) { saveBtn.onclick = () => this._save(); } + + panel.addEventListener('keydown', (e: KeyboardEvent) => { + if (e.key === 'Escape') { + e.preventDefault(); + this.close(); + } else if (e.key === 'Tab') { + this._trapFocus(e); + } + }); + + setTimeout(() => { + if (firstInput) { + firstInput.focus(); + } + }, 0); + } + + private _getMarkup(termSet: string, cssUrl: string, debug: boolean): string { + return `
+

Einstellungen

+ +
+
+
+ + +
+
+ + +
+
+ +
+
+ `; + } + + private _save(): void { + if (!this._panelElement) { + return; + } + + const termSetInput: HTMLInputElement = this._panelElement.querySelector('#mm-setting-termset') as HTMLInputElement; + const cssInput: HTMLInputElement = this._panelElement.querySelector('#mm-setting-css') as HTMLInputElement; + const debugInput: HTMLInputElement = this._panelElement.querySelector('#mm-setting-debug') as HTMLInputElement; + + this.saveApplicationCustomizerProps({ + termSetName: termSetInput && termSetInput.value ? termSetInput.value : '', + cssUrl: cssInput && cssInput.value ? cssInput.value : '', + debug: !!(debugInput && debugInput.checked) + }); + + this.close(); + } + + private _trapFocus(e: KeyboardEvent): void { + if (!this._panelElement) { + return; + } + + const focusable: NodeListOf = this._panelElement.querySelectorAll('button, input'); + if (!focusable || focusable.length === 0) { + return; + } + + const first: HTMLElement = focusable[0] as HTMLElement; + const last: HTMLElement = focusable[focusable.length - 1] as HTMLElement; + const active: HTMLElement = document.activeElement as HTMLElement; + + if (e.shiftKey && active === first) { + e.preventDefault(); + last.focus(); + } else if (!e.shiftKey && active === last) { + e.preventDefault(); + first.focus(); + } + } + + private _escape(value: string): string { + if (value) { + return value.replace(/&/g, '&').replace(/"/g, '"').replace(//g, '>'); + } + + return ''; + } +} \ No newline at end of file diff --git a/src/extensions/megaMenu/loc/en-us.js b/src/extensions/megaMenu/loc/en-us.js new file mode 100644 index 0000000..c400e06 --- /dev/null +++ b/src/extensions/megaMenu/loc/en-us.js @@ -0,0 +1,5 @@ +define([], function() { + return { + "Title": "MegaMenuApplicationCustomizer" + } +}); \ No newline at end of file diff --git a/src/extensions/megaMenu/loc/myStrings.d.ts b/src/extensions/megaMenu/loc/myStrings.d.ts new file mode 100644 index 0000000..41ad449 --- /dev/null +++ b/src/extensions/megaMenu/loc/myStrings.d.ts @@ -0,0 +1,8 @@ +declare interface IMegaMenuApplicationCustomizerStrings { + Title: string; +} + +declare module 'MegaMenuApplicationCustomizerStrings' { + const myStrings: IMegaMenuApplicationCustomizerStrings; + export = myStrings; +} diff --git a/src/index.ts b/src/index.ts new file mode 100644 index 0000000..78268f5 --- /dev/null +++ b/src/index.ts @@ -0,0 +1,20 @@ +// tslint:disable:max-line-length no-any +// A file is required to be in the root of the /src directory by the TypeScript compiler + +// Export services for classic SharePoint usage +export { TaxonomyNavigationService } from './services/TaxonomyNavigationService'; +export { MegaMenuRenderer } from './extensions/megaMenu/MegaMenuRenderer'; +export { UserCustomActionService } from './services/UserCustomActionService/UserCustomActionService'; +export { UserCustomActionScope } from './services/UserCustomActionService/UserCustomActionScope'; + +// Expose services globally for classic JavaScript consumption +declare var window: any; + +if (typeof window !== 'undefined') { + window.__megaMenuServices = { + TaxonomyNavigationService: require('./services/TaxonomyNavigationService').TaxonomyNavigationService, + MegaMenuRenderer: require('./extensions/megaMenu/MegaMenuRenderer').MegaMenuRenderer, + UserCustomActionService: require('./services/UserCustomActionService/UserCustomActionService').UserCustomActionService, + UserCustomActionScope: require('./services/UserCustomActionService/UserCustomActionScope').UserCustomActionScope + }; +} diff --git a/src/services/IMenuItem.ts b/src/services/IMenuItem.ts new file mode 100644 index 0000000..23bcbb9 --- /dev/null +++ b/src/services/IMenuItem.ts @@ -0,0 +1,10 @@ +export interface IMenuItem { + id: string; // Guid; + label: string; + icon?: string; + hoverText: string; + url?: string; + pathDepth: number; + items?: IMenuItem[]; + hasChildren: () => boolean; +} diff --git a/src/services/IPickerTerm.ts b/src/services/IPickerTerm.ts new file mode 100644 index 0000000..2b1ae31 --- /dev/null +++ b/src/services/IPickerTerm.ts @@ -0,0 +1,9 @@ +export interface IPickerTerm { + name: string; + key: string; + path: string; + termSet: string; + termSetName?: string; +} + +export interface IPickerTerms extends Array { } diff --git a/src/services/ISPTermStorePickerService.ts b/src/services/ISPTermStorePickerService.ts new file mode 100644 index 0000000..23b334b --- /dev/null +++ b/src/services/ISPTermStorePickerService.ts @@ -0,0 +1,94 @@ +// tslint:disable:no-any +/** + * Interfaces for Term store, groups and term sets + * This code is a copy from the library @pnp/sp-dev-fx-controls-react + */ +export interface ITermStore { + _ObjectType_: string; // SP.Taxonomy.TermStore + _ObjectIdentity_: string; + Id: string; + Name: string; + Groups: IGroups; +} + +export interface IGroups { + _ObjectType_: string; // SP.Taxonomy.TermGroupCollection + _Child_Items_: IGroup[]; +} + +export interface IGroup { + _ObjectType_: string; // SP.Taxonomy.TermGroup + _ObjectIdentity_: string; + TermSets: ITermSets; + Id: string; + Name: string; + IsSystemGroup: boolean; +} + +export interface ITermSets { + _ObjectType_: string; // SP.Taxonomy.TermSetCollection + _Child_Items_: ITermSet[]; +} + +export interface ITermSet { + _ObjectType_: string; // SP.Taxonomy.TermSet + _ObjectIdentity_: string; + Id: string; + CustomSortOrder?: string; + Name: string; + Description: string; + Names: ITermSetNames; + Terms?: ITerm[]; +} + +export interface ITermSetMinimal { + _ObjectType_?: string; // SP.Taxonomy.TermSet + _ObjectIdentity_?: string; + Id: string; + Name: string; +} + +export interface ITermSetNames { + [locale: string]: string; +} + +/** + * Interfaces for the terms + */ +export interface ITerms { + _ObjectType_: string; // SP.Taxonomy.TermCollection + _Child_Items_: ITerm[]; +} + +/** + * Term + */ +export interface ITerm { + _ObjectType_: string; // SP.Taxonomy.Term + _ObjectIdentity_: string; + Id: string; + Name: string; + Description: string; + IsDeprecated: boolean; + IsAvailableForTagging: boolean; + IsRoot: boolean; + PathOfTerm: string; + TermSet: ITermSetMinimal; + CustomSortOrderIndex?: number; + PathDepth?: number; + ParentId?: string; + TermsCount?: number; + LocalCustomProperties?: { + [property: string]: any + }; +} + +export interface ISuggestTerm { + Id: string; + DefaultLabel: string; + Description: string; + IsKeyword: boolean; + IsSynonym: boolean; + Paths: Array; + Synonyms: string; +} diff --git a/src/services/ISPTermStorePickerServiceProps.ts b/src/services/ISPTermStorePickerServiceProps.ts new file mode 100644 index 0000000..d6c3419 --- /dev/null +++ b/src/services/ISPTermStorePickerServiceProps.ts @@ -0,0 +1,7 @@ +export interface ISPTermStorePickerServiceProps { + termsetNameOrID: string; + useSessionStorage: boolean; + hideDeprecatedTags: boolean; + hideTagsNotAvailableForTagging: boolean; + anchorId: string; +} \ No newline at end of file diff --git a/src/services/ITaxonomyNavigationService.ts b/src/services/ITaxonomyNavigationService.ts new file mode 100644 index 0000000..89b0e87 --- /dev/null +++ b/src/services/ITaxonomyNavigationService.ts @@ -0,0 +1,5 @@ +import { IMenuItem } from './IMenuItem'; + +export interface ITaxonomyNavigationService { + getMenuItems(): Promise; +} \ No newline at end of file diff --git a/src/services/ItemDictionary.ts b/src/services/ItemDictionary.ts new file mode 100644 index 0000000..70d2ea4 --- /dev/null +++ b/src/services/ItemDictionary.ts @@ -0,0 +1,9 @@ +export class ItemDictionary { + public Get(key: string): T { + return this[key]; + } + + public Add(key: string, value: T): void { + this[key] = value; + } +} diff --git a/src/services/MegaMenuDebug.ts b/src/services/MegaMenuDebug.ts new file mode 100644 index 0000000..e876ef9 --- /dev/null +++ b/src/services/MegaMenuDebug.ts @@ -0,0 +1,26 @@ +export function debugLog(enabled: boolean, source: string, message: string, ...args: any[]): void { + if (!enabled) { + return; + } + + const output: any[] = ['[' + source + '] ' + message].concat(args || []); + console.log.apply(console, output); +} + +export function debugWarn(enabled: boolean, source: string, message: string, ...args: any[]): void { + if (!enabled) { + return; + } + + const output: any[] = ['[' + source + '] ' + message].concat(args || []); + console.warn.apply(console, output); +} + +export function debugError(enabled: boolean, source: string, message: string, ...args: any[]): void { + if (!enabled) { + return; + } + + const output: any[] = ['[' + source + '] ' + message].concat(args || []); + console.error.apply(console, output); +} \ No newline at end of file diff --git a/src/services/MenuItem.ts b/src/services/MenuItem.ts new file mode 100644 index 0000000..3c858af --- /dev/null +++ b/src/services/MenuItem.ts @@ -0,0 +1,37 @@ +// tslint:disable:no-any no-string-literal max-line-length + +import { IMenuItem } from './IMenuItem'; +import { ITerm } from './ISPTermStorePickerService'; + +export class MenuItem implements IMenuItem { + public id: string; + public label: string; + public hoverText: string; + public pathDepth: number; + public url?: string; + public items?: IMenuItem[]; + + constructor(term: ITerm, public level: number, siteCollectionUrl?: string) { + this.id = term.Id; + this.label = term.Name; + this.hoverText = term.LocalCustomProperties['_Sys_Nav_HoverText']; + this.pathDepth = term.PathDepth; + const rawUrl: string = term.LocalCustomProperties['_Sys_Nav_SimpleLinkUrl'] || term.LocalCustomProperties['_Sys_Nav_TargetUrl']; + if (rawUrl) { + this.url = siteCollectionUrl && rawUrl.indexOf('~sitecollection') === 0 + ? siteCollectionUrl + rawUrl.substring('~sitecollection'.length) + : rawUrl; + } + this.items = []; + } + + public hasChildren(): boolean { + return this.items && this.items.length > 0; + } + + public command(): void { + if (this.url) { + (window as any).location.href = this.url; + } + } +} diff --git a/src/services/MockTaxonomyNavigationService.ts b/src/services/MockTaxonomyNavigationService.ts new file mode 100644 index 0000000..5797e1b --- /dev/null +++ b/src/services/MockTaxonomyNavigationService.ts @@ -0,0 +1,106 @@ +import { IMenuItem } from './IMenuItem'; +import { ITaxonomyNavigationService } from './ITaxonomyNavigationService'; +import * as uuid from 'uuid'; + +export default class MockTaxonomyNavigationService implements ITaxonomyNavigationService { + public getMenuItems(): Promise { + return new Promise((resolve) => { + resolve([ + { + id: uuid.v4(), + label: 'Menu Item 1', + url: 'https://www.bing.com', + hoverText: 'Hover me!', + pathDepth: 1, + hasChildren: () => true, + items: [ + { + id: uuid.v4(), + label: 'Submenu Item 1', + hoverText: 'Huch!', + url: 'https://www.bing.com', + pathDepth: 2, + hasChildren: () => false + }, + { + id: uuid.v4(), + label: 'Submenu Item 2', + hoverText: 'Huch!', + url: 'https://www.bing.com', + pathDepth: 2, + hasChildren: () => false + } + ] + }, + { + id: uuid.v4(), + label: 'Menu Item 2', + hoverText: 'Huch!', + url: 'https://www.bing.com', + pathDepth: 1, + hasChildren: () => false + }, + { + id: uuid.v4(), + label: 'Menu Item 3', + hoverText: 'Huch!', + url: 'https://www.bing.com', + pathDepth: 1, + hasChildren: () => true, + items: [ + { + id: uuid.v4(), + label: 'Submenu Item 1', + hoverText: 'Huch!', + url: 'https://www.bing.com', + pathDepth: 2, + hasChildren: () => false + }, + { + id: uuid.v4(), + label: 'Submenu Item 2', + hoverText: 'Huch!', + url: 'https://www.bing.com', + pathDepth: 2, + hasChildren: () => true, + items: [ + { + id: uuid.v4(), + label: 'Submenu Item 1', + hoverText: 'Huch!', + url: 'https://www.bing.com', + pathDepth: 3, + hasChildren: () => false + }, + { + id: uuid.v4(), + label: 'Submenu Item 2', + hoverText: 'Huch!', + url: 'https://www.bing.com', + pathDepth: 3, + hasChildren: () => false + } + ] + }, + { + id: uuid.v4(), + label: 'Submenu Item 3', + hoverText: 'Huch!', + url: 'https://www.bing.com', + pathDepth: 2, + hasChildren: () => false + }, + { + id: uuid.v4(), + label: 'Submenu Item 4', + hoverText: 'Huch!', + url: 'https://www.bing.com', + pathDepth: 2, + hasChildren: () => false + } + ] + } + ]); + }); + } +} \ No newline at end of file diff --git a/src/services/SPTermStorePickerService.ts b/src/services/SPTermStorePickerService.ts new file mode 100644 index 0000000..93c7b08 --- /dev/null +++ b/src/services/SPTermStorePickerService.ts @@ -0,0 +1,532 @@ +/* tslint:disable:no-null-keyword max-line-length typedef no-any no-string-literal variable-name */ +/** + * This code is a copy from the library @pnp/sp-dev-fx-controls-react + */ + +import { SPHttpClient, SPHttpClientResponse, ISPHttpClientOptions } from '@microsoft/sp-http'; +import { ITermStore, ITerms, ITerm, IGroup, ITermSet, ISuggestTerm } from './ISPTermStorePickerService'; +import { findIndex } from '@microsoft/sp-lodash-subset'; +import { ISPTermStorePickerServiceProps } from './ISPTermStorePickerServiceProps'; +import { IPickerTerm } from './IPickerTerm'; +import { ApplicationCustomizerContext } from '@microsoft/sp-application-base'; +import { debugError } from './MegaMenuDebug'; + +const EmptyGuid: string = '00000000-0000-0000-0000-000000000000'; + +/** + * Service implementation to manage term stores in SharePoint + */ +export default class SPTermStorePickerService { + private clientServiceUrl: string; + private suggestionServiceUrl: string; + + /** + * Service constructor + */ + constructor(private props: ISPTermStorePickerServiceProps, private context: ApplicationCustomizerContext, private debug: boolean = false) { + this.clientServiceUrl = this.context.pageContext.web.absoluteUrl + '/_vti_bin/client.svc/ProcessQuery'; + this.suggestionServiceUrl = this.context.pageContext.web.absoluteUrl + '/_vti_bin/TaxonomyInternalService.json/GetSuggestions'; + } + + public async getTermLabels(termId: string): Promise { + let result: string[] = null; + try { + const data = `${termId}`; + + const reqHeaders = new Headers(); + reqHeaders.append('accept', 'application/json'); + reqHeaders.append('content-type', 'application/xml'); + + const httpPostOptions: ISPHttpClientOptions = { + headers: reqHeaders, + body: data + }; + + const callResult = await this.context.spHttpClient.post(this.clientServiceUrl, SPHttpClient.configurations.v1, httpPostOptions); + const jsonResult = await callResult.json(); + + const node = jsonResult.find(x => x._ObjectType_ === 'SP.Taxonomy.Term'); + if (node && node.Labels && node.Labels._Child_Items_) { + result = node.Labels._Child_Items_.map(termLabel => termLabel.Value); + } + } catch (error) { + result = null; + debugError(this.debug, 'SPTermStorePickerService', 'Error reading term labels.', error); + } + return result; + } + + /** + * Gets the collection of term stores in the current SharePoint env + */ + public getTermStores(): Promise { + // Retrieve the term store name, groups, and term sets + const data = ''; + + const reqHeaders = new Headers(); + reqHeaders.append('accept', 'application/json'); + reqHeaders.append('content-type', 'application/xml'); + + const httpPostOptions: ISPHttpClientOptions = { + headers: reqHeaders, + body: data + }; + + return this.context.spHttpClient.post(this.clientServiceUrl, SPHttpClient.configurations.v1, httpPostOptions).then((serviceResponse: SPHttpClientResponse) => { + return serviceResponse.json().then((serviceJSONResponse: any) => { + // Construct results + const termStoreResult: ITermStore[] = serviceJSONResponse.filter((r: { [x: string]: string; }) => r['_ObjectType_'] === 'SP.Taxonomy.TermStore'); + // Check if term store was retrieved + if (termStoreResult.length > 0) { + // Check if the termstore needs to be filtered or limited + if (this.props.termsetNameOrID) { + return termStoreResult.map(termstore => { + let termGroups = termstore.Groups._Child_Items_; + + // Check if the groups have to be limited to a specific term set + if (this.props.termsetNameOrID) { + const termsetNameOrId = this.props.termsetNameOrID; + termGroups = termGroups.map((group: IGroup) => { + group.TermSets._Child_Items_ = group.TermSets._Child_Items_.filter((termSet: ITermSet) => termSet.Name === termsetNameOrId || this.cleanGuid(termSet.Id).toLowerCase() === this.cleanGuid(termsetNameOrId).toLowerCase()); + return group; + }); + } + + // Filter out all systen groups + termGroups = termGroups.filter(group => !group.IsSystemGroup); + + // Filter out empty groups + termGroups = termGroups.filter((group: IGroup) => group.TermSets._Child_Items_.length > 0); + + // Map the new groups + termstore.Groups._Child_Items_ = termGroups; + return termstore; + }); + } + + // Return the term store results + return termStoreResult; + } + return []; + }); + }); + } + + /** + * Gets the current term set + */ + public async getTermSet(): Promise { + const termStore = await this.getTermStores(); + return this.getTermSetId(termStore, this.props.termsetNameOrID); + } + + /** + * Retrieve all terms for the given term set + * @param termset + */ + public async getAllTerms(termset: string, hideDeprecatedTags?: boolean, hideTagsNotAvailableForTagging?: boolean, useSessionStorage: boolean = true): Promise { + let termsetId: string = termset; + // Check if the provided term set property is a GUID or string + if (!this.isGuid(termset)) { + // Fetch the term store information + const termStore = await this.getTermStores(); + // Get the ID of the provided term set name + const crntTermSet = this.getTermSetId(termStore, termset); + if (crntTermSet) { + termsetId = this.cleanGuid(crntTermSet.Id); + } else { + return null; + } + } + + const childTerms = this.getTermsById(termsetId, useSessionStorage); + + if (childTerms) { + return childTerms; + } + + // Request body to retrieve all terms for the given term set + const data = `${termsetId}`; + + const reqHeaders = new Headers(); + reqHeaders.append('accept', 'application/json'); + reqHeaders.append('content-type', 'application/xml'); + + const httpPostOptions: ISPHttpClientOptions = { + headers: reqHeaders, + body: data + }; + + return this.context.spHttpClient.post(this.clientServiceUrl, SPHttpClient.configurations.v1, httpPostOptions).then((serviceResponse: SPHttpClientResponse) => { + return serviceResponse.json().then((serviceJSONResponse: any) => { + const termStoreResultTermSets: ITermSet[] = serviceJSONResponse.filter((r: { [x: string]: string; }) => r['_ObjectType_'] === 'SP.Taxonomy.TermSet'); + + if (termStoreResultTermSets.length > 0) { + const termStoreResultTermSet = termStoreResultTermSets[0]; + termStoreResultTermSet.Terms = []; + // Retrieve the term collection results + const termStoreResultTerms: ITerms[] = serviceJSONResponse.filter((r: { [x: string]: string; }) => r['_ObjectType_'] === 'SP.Taxonomy.TermCollection'); + if (termStoreResultTerms.length > 0) { + // Retrieve all terms + let terms = termStoreResultTerms[0]._Child_Items_; + + if (hideDeprecatedTags === true) { + terms = terms.filter(d => d.IsDeprecated === false); + } + + if (hideTagsNotAvailableForTagging === true) { + terms = terms.filter(d => d.IsAvailableForTagging === true); + } + + // Clean the term ID and specify the path depth + terms = terms.map(term => { + if (term.IsRoot) { + term.CustomSortOrderIndex = (termStoreResultTermSet.CustomSortOrder) ? termStoreResultTermSet.CustomSortOrder.split(':').indexOf(this.cleanGuid(term.Id)) : -1; + } else { + term.CustomSortOrderIndex = (term['Parent'].CustomSortOrder) ? term['Parent'].CustomSortOrder.split(':').indexOf(this.cleanGuid(term.Id)) : -1; + } + term.Id = this.cleanGuid(term.Id); + term['PathDepth'] = term.PathOfTerm.split(';').length; + term.TermSet = { Id: this.cleanGuid(termStoreResultTermSet.Id), Name: termStoreResultTermSet.Name }; + if (term['Parent']) { + term.ParentId = this.cleanGuid(term['Parent'].Id); + } + return term; + }); + // Check if the term set was not empty + if (terms.length > 0) { + // Sort the terms by PathOfTerm and their depth + terms = this.sortTerms(terms); + termStoreResultTermSet.Terms = terms; + } + } + + try { + if (useSessionStorage && window.sessionStorage) { + window.sessionStorage.setItem(termsetId, JSON.stringify(termStoreResultTermSet)); + } + } catch (error) { + // Do nothing, sometimes "storage quota exceeded" error if too many items + } + return termStoreResultTermSet; + } + return null; + }); + }); + } + + /** + * Retrieve all terms that starts with the searchText + * @param searchText + */ + public searchTermsByName(searchText: string): Promise { + return this.searchTermsByTermSet(searchText); + } + + public async searchTermsByTermId(searchText: string, termId: string): Promise { + const { useSessionStorage } = this.props; + const childTerms = this.getTermsById(termId, useSessionStorage); + if (childTerms) { + return this.searchTermsBySearchText(childTerms, searchText); + } else { + const { + termsetNameOrID, + hideDeprecatedTags, + hideTagsNotAvailableForTagging + } = this.props; + + const terms = await this.getAllTermsByAnchorId( + termsetNameOrID, + termId, + hideDeprecatedTags, + hideTagsNotAvailableForTagging, + useSessionStorage); + + if (terms) { + return this.searchTermsBySearchText(terms, searchText); + } + } + + return null; + } + + /** + * Retrieve all terms for the given term set and anchorId + */ + public async getAllTermsByAnchorId(termsetNameOrID: string, anchorId: string, hideDeprecatedTags?: boolean, hideTagsNotAvailableForTagging?: boolean, useSessionStorage: boolean = true): Promise { + + const returnTerms: IPickerTerm[] = []; + + const childTerms = this.getTermsById(anchorId, useSessionStorage); + if (childTerms) { + return childTerms; + } + + const termSet = await this.getAllTerms(termsetNameOrID, hideDeprecatedTags, hideTagsNotAvailableForTagging); + const terms = termSet.Terms; + if (anchorId) { + const anchorTerm = terms.filter(t => t.Id.toLowerCase() === anchorId.toLowerCase()).shift(); + if (anchorTerm) { + // Append ';' separator, as a suffix to anchor term path. + const anchorTermPath = `${anchorTerm.PathOfTerm};`; + const anchorTerms: ITerm[] = terms.filter(t => t.PathOfTerm.substring(0, anchorTermPath.length) === anchorTermPath && t.Id !== anchorTerm.Id); + + anchorTerms.forEach(term => { + returnTerms.push(this.convertTermToPickerTerm(term)); + }); + + try { + if (useSessionStorage && window.sessionStorage) { + window.sessionStorage.setItem(anchorId, JSON.stringify(returnTerms)); + } + } catch (error) { + // Do nothing + } + } + } else { + terms.forEach(term => { + returnTerms.push(this.convertTermToPickerTerm(term)); + }); + } + + return returnTerms; + } + + /** + * Clean the Guid from the Web Service response + * @param guid + */ + public cleanGuid(guid: string): string { + if (guid !== undefined) { + return guid.replace('/Guid(', '').replace('/', '').replace(')', ''); + } else { + return ''; + } + } + + /** + * Get the term set ID by its name + * @param termstore + * @param termset + */ + private getTermSetId(termstore: ITermStore[], termsetName: string): ITermSet { + if (termstore && termstore.length > 0 && termsetName) { + // Get the first term store + const ts = termstore[0]; + // Check if the term store contains groups + if (ts.Groups && ts.Groups._Child_Items_) { + for (const group of ts.Groups._Child_Items_) { + // Check if the group contains term sets + if (group.TermSets && group.TermSets._Child_Items_) { + for (const termSet of group.TermSets._Child_Items_) { + // Check if the term set is found + if (termSet.Name === termsetName) { + return termSet; + } + } + } + } + } + } + + return null; + } + + private getTermsById(termId, useSessionStorage: boolean = true) { + try { + if (useSessionStorage && window.sessionStorage) { + const terms = window.sessionStorage.getItem(termId); + if (terms) { + return JSON.parse(terms); + } else { + return null; + } + } else { + return null; + } + } catch (error) { + return null; + } + } + + private searchTermsBySearchText(terms, searchText) { + if (terms) { + return terms.filter((t) => { return t.name.toLowerCase().indexOf(searchText.toLowerCase()) > -1; }); + } else { + return []; + } + } + + /** + * Searches terms for the given term set + * @param searchText + * @param termsetId + */ + private searchTermsByTermSet(searchText: string): Promise { + return new Promise(resolve => { + this.getTermStores().then(termStore => { + let termSetId = this.props.termsetNameOrID; + if (!this.isGuid(termSetId)) { + // Get the ID of the provided term set name + const crntTermSet = this.getTermSetId(termStore, termSetId); + if (crntTermSet) { + termSetId = this.cleanGuid(crntTermSet.Id); + } else { + resolve(null); + return; + } + } + if (termStore === undefined || termStore.length === 0) { + resolve(null); + return; + } + const loc: number = this.context.pageContext.cultureInfo.currentUICultureName === 'de-de' ? 1031 : 1033; + const data: any = { + start: searchText, + lcid: loc !== 0 ? loc : this.context.pageContext.web.language, + sspList: this.cleanGuid(termStore[0].Id), + termSetList: termSetId, + anchorId: this.props.anchorId ? this.props.anchorId : EmptyGuid, + isSpanTermStores: false, + isSpanTermSets: false, + isIncludeUnavailable: this.props.hideTagsNotAvailableForTagging === true, + isIncludeDeprecated: this.props.hideDeprecatedTags === true, + isAddTerms: false, + isIncludePathData: false, + excludeKeyword: false, + excludedTermset: EmptyGuid + }; + + const reqHeaders: Headers = new Headers(); + reqHeaders.append('accept', 'application/json'); + reqHeaders.append('content-type', 'application/json'); + + const httpPostOptions: ISPHttpClientOptions = { + headers: reqHeaders, + body: JSON.stringify(data) + }; + + return this.context.spHttpClient.post(this.suggestionServiceUrl, SPHttpClient.configurations.v1, httpPostOptions).then((serviceResponse: SPHttpClientResponse) => { + return serviceResponse.json().then((serviceJSONResponse: any) => { + const groups = serviceJSONResponse.d.Groups; + if (groups && groups.length > 0) { + // Retrieve the term collection results + const terms: ISuggestTerm[] = groups[0].Suggestions; + if (terms.length > 0) { + // Retrieve all terms + + const returnTerms: IPickerTerm[] = terms.map((term: ISuggestTerm) => this.convertSuggestTermToPickerTerm(term)); + resolve(returnTerms); + return; + } + + } + + resolve([]); + }); + }); + }); + }); + } + + private isGuid(strGuid: string): boolean { + return /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/.test(strGuid); + } + + /** + * Sorting terms based on their path and depth + * + * @param terms + */ + private sortTerms(terms: ITerm[]) { + // Start sorting by depth + let newTermsOrder: ITerm[] = []; + let itemsToSort: boolean = true; + let pathLevel: number = 1; + while (itemsToSort) { + // Get terms for the current level + let crntTerms = terms.filter(term => term.PathDepth === pathLevel); + if (crntTerms && crntTerms.length > 0) { + crntTerms = crntTerms.sort(this.sortTermByPath); + + if (pathLevel !== 1) { + crntTerms = crntTerms.reverse(); + for (const crntTerm of crntTerms) { + const pathElms: string[] = crntTerm.PathOfTerm.split(';'); + // Last item is not needed for parent path + pathElms.pop(); + // Find the parent item and add the new item + const idx: number = findIndex(newTermsOrder, term => term.PathOfTerm === pathElms.join(';')); + if (idx !== -1) { + newTermsOrder.splice(idx + 1, 0, crntTerm); + } else { + // Push the item at the end if the parent couldn't be found + newTermsOrder.push(crntTerm); + } + } + } else { + newTermsOrder = crntTerms; + } + + ++pathLevel; + } else { + itemsToSort = false; + } + } + return newTermsOrder; + } + + /** + * Sort the terms by their path + * + * @param a term 2 + * @param b term 2 + */ + private sortTermByPath(a: ITerm, b: ITerm) { + if (a.CustomSortOrderIndex === -1) { + if (a.PathOfTerm.toLowerCase() < b.PathOfTerm.toLowerCase()) { + return -1; + } + if (a.PathOfTerm.toLowerCase() > b.PathOfTerm.toLowerCase()) { + return 1; + } + return 0; + } else { + if (a.CustomSortOrderIndex < b.CustomSortOrderIndex) { + return -1; + } + if (a.CustomSortOrderIndex > b.CustomSortOrderIndex) { + return 1; + } + return 0; + } + } + + private convertTermToPickerTerm(term: ITerm): IPickerTerm { + return { + key: this.cleanGuid(term.Id), + name: term.Name, + path: term.PathOfTerm, + termSet: this.cleanGuid(term.TermSet.Id), + termSetName: term.TermSet.Name + }; + } + + private convertSuggestTermToPickerTerm(term: ISuggestTerm): IPickerTerm { + let path: string = ''; + let termSetName: string = ''; + if (term.Paths && term.Paths.length > 0) { + const fullPath: string = term.Paths[0].replace(/^\[/, '').replace(/\]$/, ''); + const fullPathParts: string[] = fullPath.split(':'); + path = fullPathParts.join(';') + ';' + term.DefaultLabel; + termSetName = fullPathParts[0]; + } + return { + key: this.cleanGuid(term.Id), + name: term.DefaultLabel, + path: path, + termSet: EmptyGuid, // TermSet Guid is not given with suggestion + termSetName: termSetName + }; + } +} diff --git a/src/services/TaxonomyNavigationService.ts b/src/services/TaxonomyNavigationService.ts new file mode 100644 index 0000000..702c5af --- /dev/null +++ b/src/services/TaxonomyNavigationService.ts @@ -0,0 +1,83 @@ +import { ITaxonomyNavigationService } from './ITaxonomyNavigationService'; +import { IMenuItem } from './IMenuItem'; +import { sp } from '@pnp/sp'; +import { MenuItem } from './MenuItem'; +import { ApplicationCustomizerContext } from '@microsoft/sp-application-base'; +import SPTermStorePickerService from './SPTermStorePickerService'; +import { ITerm, ITermSet } from './ISPTermStorePickerService'; +import { ItemDictionary } from './ItemDictionary'; +import { debugWarn } from './MegaMenuDebug'; + +const LOG_SOURCE: string = 'TaxonomyNavigationService'; + +export class TaxonomyNavigationService implements ITaxonomyNavigationService { + private _taxonomyPickerService: SPTermStorePickerService; + private _noTerm: ITerm = { + _ObjectType_: '', + _ObjectIdentity_: '', + CustomSortOrderIndex: 0, + Description: '', + Id: '', + IsAvailableForTagging: false, + IsDeprecated: false, + IsRoot: true, + LocalCustomProperties: { + _Sys_Nav_HoverText: 'Es wurden keine Terms gefunden. Bitte ueberpruefen Sie Ihre Einstellungen.', + _Sys_Nav_ExcludedProviders: undefined, + _Sys_Nav_SimpleLinkUrl: undefined + }, + Name: 'Es wurden keine Terms gefunden. Bitte ueberpruefen Sie Ihre Einstellungen.', + PathOfTerm: '', + TermSet: undefined + }; + + constructor( + private context: ApplicationCustomizerContext, + private termSetName: string, + private debug: boolean = false + ) { + sp.setup({ + spfxContext: context + }); + this._taxonomyPickerService = new SPTermStorePickerService( + { + anchorId: '', + termsetNameOrID: termSetName, + useSessionStorage: true, + hideDeprecatedTags: true, + hideTagsNotAvailableForTagging: false + }, + this.context, + this.debug + ); + } + + public async getMenuItems(): Promise { + const siteCollectionUrl: string = this.context.pageContext.site.absoluteUrl; + const termset: ITermSet = await this._taxonomyPickerService.getAllTerms(this.termSetName); + const itemsDict: ItemDictionary = new ItemDictionary(); + const menuItems: IMenuItem[] = []; + + if (!termset || !termset.Terms) { + debugWarn(this.debug, LOG_SOURCE, 'No terms found in the term set.'); + return [new MenuItem(this._noTerm, 0, siteCollectionUrl)]; + } + + termset.Terms.forEach((term: ITerm) => { + const menuItem: IMenuItem = new MenuItem(term, 0, siteCollectionUrl); + itemsDict.Add(term.Id, menuItem); + if (menuItem.pathDepth === 1) { + menuItems.push(menuItem); + } else { + const parentItem: IMenuItem = itemsDict.Get(term.ParentId); + if (parentItem) { + parentItem.items.push(menuItem); + } else { + debugWarn(this.debug, LOG_SOURCE, 'Item without parent:', term.PathOfTerm); + } + } + }); + + return menuItems; + } +} \ No newline at end of file diff --git a/src/services/UserCustomActionService/IUserCustomActionProps.ts b/src/services/UserCustomActionService/IUserCustomActionProps.ts new file mode 100644 index 0000000..feb9c60 --- /dev/null +++ b/src/services/UserCustomActionService/IUserCustomActionProps.ts @@ -0,0 +1,21 @@ + +export interface IUserCustomActionProps { + Id?: string; + Title: string; + Name?: string; + Description?: string; + Location: string; + ScriptSrc?: string; + ScriptBlock?: string; + Url?: string; + Sequence?: number; + Group?: string; + ImageUrl?: string; + CommandUIExtension?: string; + RegistrationType?: number; + RegistrationId?: string; + Rights?: {}; + Scope?: number; + ClientSideComponentId?: string; + ClientSideComponentProperties?: string; +} \ No newline at end of file diff --git a/src/services/UserCustomActionService/IUserCustomActionService.ts b/src/services/UserCustomActionService/IUserCustomActionService.ts new file mode 100644 index 0000000..48288d2 --- /dev/null +++ b/src/services/UserCustomActionService/IUserCustomActionService.ts @@ -0,0 +1,12 @@ +/* tslint:disable:max-line-length */ +import { UserCustomActionScope } from './UserCustomActionScope'; +import { IUserCustomActionProps } from './IUserCustomActionProps'; +import { UserCustomActionAddResult, UserCustomActionUpdateResult } from '@pnp/sp'; + +export interface IUserCustomActionService { + getUserCustomActions(scope: UserCustomActionScope, listId?: string): Promise; + getUserCustomActionById(scope: UserCustomActionScope, id: string, listId?: string): Promise; + addUserCustomAction(scope: UserCustomActionScope, customAction: IUserCustomActionProps, listId?: string): Promise; + updateUserCustomAction(scope: UserCustomActionScope, id: string, props: {}, listId?: string): Promise; + deleteUserCustomAction(scope: UserCustomActionScope, customAction: IUserCustomActionProps, listId?: string): Promise; +} \ No newline at end of file diff --git a/src/services/UserCustomActionService/UserCustomActionScope.ts b/src/services/UserCustomActionService/UserCustomActionScope.ts new file mode 100644 index 0000000..acd6710 --- /dev/null +++ b/src/services/UserCustomActionService/UserCustomActionScope.ts @@ -0,0 +1,5 @@ +export enum UserCustomActionScope { + Web = 'web', + Site = 'site', + List = 'list' +} diff --git a/src/services/UserCustomActionService/UserCustomActionService.ts b/src/services/UserCustomActionService/UserCustomActionService.ts new file mode 100644 index 0000000..b5caf1b --- /dev/null +++ b/src/services/UserCustomActionService/UserCustomActionService.ts @@ -0,0 +1,134 @@ +// tslint:disable:max-line-length +// tslint:disable:export-name +import { UserCustomActionAddResult, UserCustomActions, UserCustomActionUpdateResult } from '@pnp/sp/src/usercustomactions'; +import { IUserCustomActionService } from './IUserCustomActionService'; +import { sp } from '@pnp/sp'; +import { UserCustomActionScope } from './UserCustomActionScope'; +import { IUserCustomActionProps } from './IUserCustomActionProps'; +import { ApplicationCustomizerContext } from '@microsoft/sp-application-base'; +import { debugError } from '../MegaMenuDebug'; + +const LOG_SOURCE: string = 'UserCustomActionService'; + +export class UserCustomActionService implements IUserCustomActionService { + constructor(context: ApplicationCustomizerContext, private debug: boolean = false) { + sp.setup({ + spfxContext: context + }); + } + + public async getUserCustomActions(scope: UserCustomActionScope, listId?: string): Promise { + try { + let actions: UserCustomActions | IUserCustomActionProps[]; + switch (scope) { + case UserCustomActionScope.Web: + actions = await sp.web.userCustomActions.get(); + break; + case UserCustomActionScope.Site: + actions = await sp.site.userCustomActions.get(); + break; + case UserCustomActionScope.List: + if (!listId) { + throw new Error('List ID is required for List scope'); + } + actions = await sp.web.lists.getById(listId).userCustomActions.get(); + break; + default: + throw new Error('Invalid scope'); + } + return actions as IUserCustomActionProps[]; + } catch (error) { + debugError(this.debug, LOG_SOURCE, 'Error getting user custom actions.', error); + throw error; + } + } + + public async getUserCustomActionById(scope: UserCustomActionScope, id: string, listId?: string): Promise { + try { + switch (scope) { + case UserCustomActionScope.Web: + return sp.web.userCustomActions.getById(id) as {} as IUserCustomActionProps; + case UserCustomActionScope.Site: + return sp.site.userCustomActions.getById(id) as {} as IUserCustomActionProps; + case UserCustomActionScope.List: + if (!listId) { + throw new Error('List ID is required for List scope'); + } + return sp.web.lists.getById(listId).userCustomActions.getById(id) as {} as IUserCustomActionProps; + default: + throw new Error('Invalid scope'); + } + } catch (error) { + debugError(this.debug, LOG_SOURCE, 'Error getting user custom action by ID.', error); + throw error; + } + } + + public async addUserCustomAction(scope: UserCustomActionScope, customAction: IUserCustomActionProps, listId?: string): Promise { + try { + switch (scope) { + case UserCustomActionScope.Web: + return sp.web.userCustomActions.add(customAction); + case UserCustomActionScope.Site: + return sp.site.userCustomActions.add(customAction); + case UserCustomActionScope.List: + if (!listId) { + throw new Error('List ID is required for List scope'); + } + return sp.web.lists.getById(listId).userCustomActions.add(customAction); + default: + throw new Error('Invalid scope'); + } + } catch (error) { + debugError(this.debug, LOG_SOURCE, 'Error adding user custom action.', error); + throw error; + } + } + + public async updateUserCustomAction(scope: UserCustomActionScope, id: string, props: {}, listId?: string): Promise { + try { + let result: UserCustomActionUpdateResult; + switch (scope) { + case UserCustomActionScope.Web: + result = await sp.web.userCustomActions.getById(id).update(props); + break; + case UserCustomActionScope.Site: + result = await sp.site.userCustomActions.getById(id).update(props); + break; + case UserCustomActionScope.List: + if (!listId) { + throw new Error('List ID is required for List scope'); + } + result = await sp.web.lists.getById(listId).userCustomActions.getById(id).update(props); + break; + default: + throw new Error('Invalid scope'); + } + return result; + } catch (error) { + debugError(this.debug, LOG_SOURCE, 'Error updating user custom action.', error); + throw error; + } + } + + public async deleteUserCustomAction(scope: UserCustomActionScope, customAction: IUserCustomActionProps, listId?: string): Promise { + try { + switch (scope) { + case UserCustomActionScope.Web: + return sp.web.userCustomActions.getById(customAction.Id).delete(); + case UserCustomActionScope.Site: + return sp.site.userCustomActions.getById(customAction.Id).delete(); + case UserCustomActionScope.List: + if (!listId) { + throw new Error('List ID is required for List scope'); + } + return sp.web.lists.getById(listId).userCustomActions.getById(customAction.Id).delete(); + default: + throw new Error('Invalid scope'); + } + } catch (error) { + debugError(this.debug, LOG_SOURCE, 'Error deleting user custom action.', error); + throw error; + } + } +} \ No newline at end of file diff --git a/temp/deploy/abc3361f-bb2d-491f-aba3-cd51c19a299b.json b/temp/deploy/abc3361f-bb2d-491f-aba3-cd51c19a299b.json new file mode 100644 index 0000000..ed441a4 --- /dev/null +++ b/temp/deploy/abc3361f-bb2d-491f-aba3-cd51c19a299b.json @@ -0,0 +1 @@ +{"id":"abc3361f-bb2d-491f-aba3-cd51c19a299b","alias":"MegaMenuApplicationCustomizer","componentType":"Extension","extensionType":"ApplicationCustomizer","version":"1.0.4","manifestVersion":2,"requiresCustomScript":false,"loaderConfig":{"entryModuleId":"mega-menu-application-customizer","internalModuleBaseUrls":["/"],"scriptResources":{"mega-menu-application-customizer":{"type":"path","path":"mega-menu-application-customizer_a8c5b6b10667569479c9117e39176bd7.js"},"MegaMenuApplicationCustomizerStrings":{"defaultPath":"megamenu-megamenuapplicationcustomizerstrings_en-us_6adac6d498d12e2a464a299b650578f1.js","type":"localizedPath","paths":{}},"@microsoft/decorators":{"type":"component","version":"1.4.1","id":"f97266fb-ccb7-430e-9384-4124d05295d3"},"@microsoft/sp-core-library":{"type":"component","version":"1.4.1","id":"7263c7d0-1d6a-45ec-8d85-d4d1d234171b"},"@microsoft/sp-application-base":{"type":"component","version":"1.4.1","id":"4df9bb86-ab0a-4aab-ab5f-48bf167048fb"},"@microsoft/sp-http":{"type":"component","version":"1.4.1","id":"c07208f0-ea3b-4c1a-9965-ac1b825211a6"},"@microsoft/sp-lodash-subset":{"type":"component","version":"1.4.1","id":"73e1dc6c-8441-42cc-ad47-4bd3659f8a3a"},"@microsoft/sp-page-context":{"type":"component","version":"1.4.1","id":"1c4541f7-5c31-41aa-9fa8-fbc9dc14c0a8"}}}} \ No newline at end of file diff --git a/temp/deploy/mega-menu-application-customizer_392adab1c3d9b92b7b82b0eaa3c10004.js b/temp/deploy/mega-menu-application-customizer_392adab1c3d9b92b7b82b0eaa3c10004.js new file mode 100644 index 0000000..1473dfd --- /dev/null +++ b/temp/deploy/mega-menu-application-customizer_392adab1c3d9b92b7b82b0eaa3c10004.js @@ -0,0 +1,11 @@ +define("abc3361f-bb2d-491f-aba3-cd51c19a299b_1.0.4",["@microsoft/decorators","@microsoft/sp-core-library","@microsoft/sp-application-base","MegaMenuApplicationCustomizerStrings","@microsoft/sp-http","@microsoft/sp-lodash-subset","@microsoft/sp-page-context"],function(e,t,n,r,o,i,s){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=2)}([function(e,t,n){"use strict";(function(e){function r(e,t){function n(){this.constructor=e}T(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}function o(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s}function i(e,t,n,r){return new(n||(n=Promise))(function(o,i){function s(e){try{u(r.next(e))}catch(e){i(e)}}function a(e){try{u(r.throw(e))}catch(e){i(e)}}function u(e){e.done?o(e.value):new n(function(t){t(e.value)}).then(s,a)}u((r=r.apply(e,t||[])).next())})}function s(e,t){function n(e){return function(t){return r([e,t])}}function r(n){if(o)throw new TypeError("Generator is already executing.");for(;u;)try{if(o=1,i&&(s=2&n[0]?i.return:n[0]?i.throw||((s=i.return)&&s.call(i),0):i.next)&&!(s=s.call(i,n[1])).done)return s;switch(i=0,s&&(n=[2&n[0],s.value]),n[0]){case 0:case 1:s=n;break;case 4:return u.label++,{value:n[1],done:!1};case 5:u.label++,i=n[1],n=[0];continue;case 7:n=u.ops.pop(),u.trys.pop();continue;default:if(s=u.trys,!(s=s.length>0&&s[s.length-1])&&(6===n[0]||2===n[0])){u=0;continue}if(3===n[0]&&(!s||n[1]>s[0]&&n[1]-1?e.substr(0,t):e}function u(e){var t=[],n=["odata.type","odata.editLink","__metadata","odata.metadata"];return Object(g.j)(e,n[0])&&"SP.Web"===e[n[0]]?Object(g.j)(e,n[1])?t.push(e[n[1]]):Object(g.j)(e,n[2])&&t.push(e.__metadata.uri):Object(g.j)(e,n[3])&&Object(g.j)(e,n[1])?t.push(a(e[n[3]]),"_api",e[n[1]]):Object(g.j)(e,n[1])?t.push("_api",e[n[1]]):Object(g.j)(e,n[2])&&t.push(e.__metadata.uri),t.length<1?(b.a.write("No uri information found in ODataEntity parsing, chaining will fail for this object.",2),""):g.d.apply(void 0,t)}function c(e){return new O(e)}function l(e){g.c.extend(e)}function p(e){return new Promise(function(t){if(Object(g.m)(e))return t(e);if(null!==I.baseUrl)return t(Object(g.d)(I.baseUrl,e));if(void 0!==x._spPageContextInfo){if(Object(g.j)(x._spPageContextInfo,"webAbsoluteUrl"))return t(Object(g.d)(x._spPageContextInfo.webAbsoluteUrl,e));if(Object(g.j)(x._spPageContextInfo,"webServerRelativeUrl"))return t(Object(g.d)(x._spPageContextInfo.webServerRelativeUrl,e))}if(void 0!==x.location){var n=x.location.toString().toLowerCase();["/_layouts/","/siteassets/"].forEach(function(r){var o=n.indexOf(r);if(o>0)return t(Object(g.d)(n.substr(0,o),e))})}return t(e)})}function d(e){return{__metadata:{type:e}}}function h(e){return function(t){return function(t){function n(){for(var n=[],r=0;r1&&void 0!==n[1]?n[1]:e)||this}return r(n,t),n}(t)}}function f(e){return e.length<1?1:Math.max.apply(null,e.map(function(e){return e.order}))+1}function y(e){for(var t=0;tt.lastIndexOf("(")){var o=t.lastIndexOf("/");r._parentUrl=t.slice(0,o),n=Object(g.d)(t.slice(o),n),r._url=Object(g.d)(r._parentUrl,n)}else{var o=t.lastIndexOf("(");r._parentUrl=t.slice(0,o),r._url=Object(g.d)(t,n)}else{r.extend(t,n);var i=t.query.get("@target");void 0!==i&&r.query.set("@target",i)}return r}return r(t,e),t.prototype.as=function(e){var t=new e(this._url,null);return Object(g.f)(t,this,!0)},t.prototype.toUrlAndQuery=function(){var e=new Map(this.query),t=this.toUrl().replace(/'!(@.*?)::(.*?)'/gi,function(t,n,r){return b.a.write("Rewriting aliased parameter from match "+t+" to label: "+n+" value: "+r,0),e.set(n,"'"+r+"'"),n});if(e.size>0){t+=""+(t.indexOf("?")>-1?"&":"?")+Array.from(e).map(function(e){return e[0]+"="+e[1]}).join("&")}return t},t.prototype.select=function(){for(var e=[],t=0;t0&&this.query.set("$select",e.join(",")),this},t.prototype.expand=function(){for(var e=[],t=0;t0&&this.query.set("$expand",e.join(",")),this},t.prototype.getParent=function(e,t,n,r){void 0===t&&(t=this.parentUrl);var o=new e(t,n).configureFrom(this),i="@target";return this.query.has(i)&&o.query.set(i,this.query.get(i)),void 0!==r&&(o=o.inBatch(r)),o},t.prototype.clone=function(t,n,r){void 0===r&&(r=!0);var o=e.prototype._clone.call(this,new t(this,n),{includeBatch:r}),i="@target";return this.query.has(i)&&o.query.set(i,this.query.get(i)),o},t.prototype.toRequestContext=function(e,t,n,r){var o=this;void 0===t&&(t={});var i=this.hasBatch?this._batchDependency:function(){};return p(this.toUrlAndQuery()).then(function(s){return Object(g.p)(t,o._options),{batch:o.batch,batchDependency:i,cachingOptions:o._cachingOptions,clientFactory:function(){return new E},isBatched:o.hasBatch,isCached:o._forceCaching||o._useCaching&&/^get$/i.test(e),options:t,parser:n,pipeline:r,requestAbsoluteUrl:s,requestId:Object(g.h)(),verb:e}})},t}(v.h),j=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.filter=function(e){return this.query.set("$filter",e),this},t.prototype.orderBy=function(e,t){void 0===t&&(t=!0);var n="$orderby",r=this.query.has(n)?this.query.get(n).split(","):[];return r.push(e+" "+(t?"asc":"desc")),this.query.set(n,r.join(",")),this},t.prototype.skip=function(e){return this.query.set("$skip",e.toString()),this},t.prototype.top=function(e){return this.query.set("$top",e.toString()),this},t}(N),R=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype._update=function(e,t){var n=this;return function(r){return n.postCore({body:Object(g.n)(Object(g.f)(d(e),r)),headers:{"X-HTTP-Method":"MERGE"}}).then(function(e){return t(e,r)})}},t.prototype._delete=function(){return this.postCore({headers:{"X-HTTP-Method":"DELETE"}})},t.prototype._deleteWithETag=function(e){return void 0===e&&(e="*"),this.postCore({headers:{"IF-Match":e,"X-HTTP-Method":"DELETE"}})},t}(N),A=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,t.prototype.getById=function(e){return new k(this,"getById("+e+")")},t.prototype.getByEmail=function(e){return new k(this,"getByEmail('"+e+"')")},t.prototype.getByLoginName=function(e){var t=new k(this);return t.concat("('!@v::"+encodeURIComponent(e)+"')"),t},t.prototype.removeById=function(e){return this.clone(n,"removeById("+e+")").postCore()},t.prototype.removeByLoginName=function(e){var t=this.clone(n,"removeByLoginName(@v)");return t.query.set("@v","'"+encodeURIComponent(e)+"'"),t.postCore()},t.prototype.add=function(e){var t=this;return this.clone(n,null).postCore({body:Object(g.n)(Object(g.f)(d("SP.User"),{LoginName:e}))}).then(function(){return t.getByLoginName(e)})};var n;return t=n=o([h("siteusers")],t)}(j),U=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),Object.defineProperty(t.prototype,"groups",{get:function(){return new F(this,"groups")},enumerable:!0,configurable:!0}),t}(R),k=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.update=t._update("SP.User",function(e){return{data:e,user:t}}),t.delete=t._delete,t}return r(t,e),t}(U),L=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t=o([h("currentuser")],t)}(U);!function(e){e[e.None=0]="None",e[e.User=1]="User",e[e.DistributionList=2]="DistributionList",e[e.SecurityGroup=4]="SecurityGroup",e[e.SharePointGroup=8]="SharePointGroup",e[e.All=15]="All"}(m||(m={}));var D,F=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,t.prototype.getById=function(e){var t=new M(this);return t.concat("("+e+")"),t},t.prototype.add=function(e){var t=this,n=Object(g.n)(Object(g.f)(d("SP.Group"),e));return this.postCore({body:n}).then(function(e){return{data:e,group:t.getById(e.Id)}})},t.prototype.getByName=function(e){return new M(this,"getByName('"+e+"')")},t.prototype.removeById=function(e){return this.clone(n,"removeById('"+e+"')").postCore()},t.prototype.removeByLoginName=function(e){return this.clone(n,"removeByLoginName('"+e+"')").postCore()};var n;return t=n=o([h("sitegroups")],t)}(j),M=function(e){function t(){var n=null!==e&&e.apply(this,arguments)||this;return n.update=n._update("SP.Group",function(e,r){var o=n;return Object(g.j)(r,"Title")&&(o=n.getParent(t,n.parentUrl,"getByName('"+r.Title+"')")),{data:e,group:o}}),n}return r(t,e),Object.defineProperty(t.prototype,"users",{get:function(){return new A(this,"users")},enumerable:!0,configurable:!0}),t.prototype.setUserAsOwner=function(e){return i(this,void 0,void 0,function(){return s(this,function(n){return[2,this.clone(t,"SetUserAsOwner("+e+")").postCore()]})})},t}(R),B=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,t.prototype.getById=function(e){var t=new q(this);return t.concat("("+e+")"),t},t.prototype.add=function(e,t){return this.clone(n,"addroleassignment(principalid="+e+", roledefid="+t+")").postCore()},t.prototype.remove=function(e,t){return this.clone(n,"removeroleassignment(principalid="+e+", roledefid="+t+")").postCore()};var n;return t=n=o([h("roleassignments")],t)}(j),q=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.delete=t._delete,t}return r(t,e),Object.defineProperty(t.prototype,"groups",{get:function(){return new F(this,"groups")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"bindings",{get:function(){return new H(this)},enumerable:!0,configurable:!0}),t}(R),G=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.getById=function(e){return new W(this,"getById("+e+")")},t.prototype.getByName=function(e){return new W(this,"getbyname('"+e+"')")},t.prototype.getByType=function(e){return new W(this,"getbytype("+e+")")},t.prototype.add=function(e,t,n,r){var o=this,i=Object(g.n)({BasePermissions:{High:r.High.toString(),Low:r.Low.toString()},Description:t,Name:e,Order:n,__metadata:{type:"SP.RoleDefinition"}});return this.postCore({body:i}).then(function(e){return{data:e,definition:o.getById(e.Id)}})},t=o([h("roledefinitions")],t)}(j),W=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.delete=t._delete,t}return r(t,e),t.prototype.update=function(e){var t=this;void 0!==Object(g.j)(e,"BasePermissions")&&(e.BasePermissions=Object(g.f)({__metadata:{type:"SP.BasePermissions"}},{High:e.BasePermissions.High.toString(),Low:e.BasePermissions.Low.toString()}));var n=Object(g.n)(Object(g.f)(d("SP.RoleDefinition"),e));return this.postCore({body:n,headers:{"X-HTTP-Method":"MERGE"}}).then(function(n){var r=t;if(Object(g.j)(e,"Name")){r=t.getParent(G,t.parentUrl,"").getByName(e.Name)}return{data:n,definition:r}})},t}(R),H=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t=o([h("roledefinitionbindings")],t)}(j);!function(e){e[e.Display=1]="Display",e[e.Edit=2]="Edit",e[e.New=3]="New"}(D||(D={}));var K;!function(e){e[e.Invalid=0]="Invalid",e[e.Integer=1]="Integer",e[e.Text=2]="Text",e[e.Note=3]="Note",e[e.DateTime=4]="DateTime",e[e.Counter=5]="Counter",e[e.Choice=6]="Choice",e[e.Lookup=7]="Lookup",e[e.Boolean=8]="Boolean",e[e.Number=9]="Number",e[e.Currency=10]="Currency",e[e.URL=11]="URL",e[e.Computed=12]="Computed",e[e.Threading=13]="Threading",e[e.Guid=14]="Guid",e[e.MultiChoice=15]="MultiChoice",e[e.GridChoice=16]="GridChoice",e[e.Calculated=17]="Calculated",e[e.File=18]="File",e[e.Attachments=19]="Attachments",e[e.User=20]="User",e[e.Recurrence=21]="Recurrence",e[e.CrossProjectLink=22]="CrossProjectLink",e[e.ModStat=23]="ModStat",e[e.Error=24]="Error",e[e.ContentTypeId=25]="ContentTypeId",e[e.PageSeparator=26]="PageSeparator",e[e.ThreadIndex=27]="ThreadIndex",e[e.WorkflowStatus=28]="WorkflowStatus",e[e.AllDayEvent=29]="AllDayEvent",e[e.WorkflowEventType=30]="WorkflowEventType"}(K||(K={}));var V;!function(e){e[e.DateOnly=0]="DateOnly",e[e.DateTime=1]="DateTime"}(V||(V={}));var Q;!function(e){e[e.Unspecified=0]="Unspecified",e[e.Disabled=1]="Disabled",e[e.Relative=2]="Relative"}(Q||(Q={}));var z;!function(e){e[e.DefaultValue=0]="DefaultValue",e[e.AddToDefaultContentType=1]="AddToDefaultContentType",e[e.AddToNoContentType=2]="AddToNoContentType",e[e.AddToAllContentTypes=4]="AddToAllContentTypes",e[e.AddFieldInternalNameHint=8]="AddFieldInternalNameHint",e[e.AddFieldToDefaultView=16]="AddFieldToDefaultView",e[e.AddFieldCheckDisplayName=32]="AddFieldCheckDisplayName"}(z||(z={}));var X;!function(e){e[e.Gregorian=1]="Gregorian",e[e.Japan=3]="Japan",e[e.Taiwan=4]="Taiwan",e[e.Korea=5]="Korea",e[e.Hijri=6]="Hijri",e[e.Thai=7]="Thai",e[e.Hebrew=8]="Hebrew",e[e.GregorianMEFrench=9]="GregorianMEFrench",e[e.GregorianArabic=10]="GregorianArabic",e[e.GregorianXLITEnglish=11]="GregorianXLITEnglish",e[e.GregorianXLITFrench=12]="GregorianXLITFrench",e[e.KoreaJapanLunar=14]="KoreaJapanLunar",e[e.ChineseLunar=15]="ChineseLunar",e[e.SakaEra=16]="SakaEra",e[e.UmAlQura=23]="UmAlQura"}(X||(X={}));var J;!function(e){e[e.Hyperlink=0]="Hyperlink",e[e.Image=1]="Image"}(J||(J={}));var Y;!function(e){e[e.EmptyMask=0]="EmptyMask",e[e.ViewListItems=1]="ViewListItems",e[e.AddListItems=2]="AddListItems",e[e.EditListItems=3]="EditListItems",e[e.DeleteListItems=4]="DeleteListItems",e[e.ApproveItems=5]="ApproveItems",e[e.OpenItems=6]="OpenItems",e[e.ViewVersions=7]="ViewVersions",e[e.DeleteVersions=8]="DeleteVersions",e[e.CancelCheckout=9]="CancelCheckout",e[e.ManagePersonalViews=10]="ManagePersonalViews",e[e.ManageLists=12]="ManageLists",e[e.ViewFormPages=13]="ViewFormPages",e[e.AnonymousSearchAccessList=14]="AnonymousSearchAccessList",e[e.Open=17]="Open",e[e.ViewPages=18]="ViewPages",e[e.AddAndCustomizePages=19]="AddAndCustomizePages",e[e.ApplyThemeAndBorder=20]="ApplyThemeAndBorder",e[e.ApplyStyleSheets=21]="ApplyStyleSheets",e[e.ViewUsageData=22]="ViewUsageData",e[e.CreateSSCSite=23]="CreateSSCSite",e[e.ManageSubwebs=24]="ManageSubwebs",e[e.CreateGroups=25]="CreateGroups",e[e.ManagePermissions=26]="ManagePermissions",e[e.BrowseDirectories=27]="BrowseDirectories",e[e.BrowseUserInfo=28]="BrowseUserInfo",e[e.AddDelPrivateWebParts=29]="AddDelPrivateWebParts",e[e.UpdatePersonalWebParts=30]="UpdatePersonalWebParts",e[e.ManageWeb=31]="ManageWeb",e[e.AnonymousSearchAccessWebLists=32]="AnonymousSearchAccessWebLists",e[e.UseClientIntegration=37]="UseClientIntegration",e[e.UseRemoteAPIs=38]="UseRemoteAPIs",e[e.ManageAlerts=39]="ManageAlerts",e[e.CreateAlerts=40]="CreateAlerts",e[e.EditMyUserInfo=41]="EditMyUserInfo",e[e.EnumeratePermissions=63]="EnumeratePermissions",e[e.FullMask=65]="FullMask"}(Y||(Y={}));var $;!function(e){e[e.None=0]="None",e[e.User=1]="User",e[e.DistributionList=2]="DistributionList",e[e.SecurityGroup=4]="SecurityGroup",e[e.SharePointGroup=8]="SharePointGroup",e[e.All=15]="All"}($||($={}));var Z;!function(e){e[e.None=0]="None",e[e.UserInfoList=1]="UserInfoList",e[e.Windows=2]="Windows",e[e.MembershipProvider=4]="MembershipProvider",e[e.RoleProvider=8]="RoleProvider",e[e.All=15]="All"}(Z||(Z={}));var ee;!function(e){e[e.None=0]="None",e[e.Guest=1]="Guest",e[e.Reader=2]="Reader",e[e.Contributor=3]="Contributor",e[e.WebDesigner=4]="WebDesigner",e[e.Administrator=5]="Administrator"}(ee||(ee={}));var te;!function(e){e[e.Invalid=-1]="Invalid",e[e.DefaultView=0]="DefaultView",e[e.NormalView=1]="NormalView",e[e.DialogView=2]="DialogView",e[e.View=3]="View",e[e.DisplayForm=4]="DisplayForm",e[e.DisplayFormDialog=5]="DisplayFormDialog",e[e.EditForm=6]="EditForm",e[e.EditFormDialog=7]="EditFormDialog",e[e.NewForm=8]="NewForm",e[e.NewFormDialog=9]="NewFormDialog",e[e.SolutionForm=10]="SolutionForm",e[e.PAGE_MAXITEMS=11]="PAGE_MAXITEMS"}(te||(te={}));var ne;!function(e){e[e.Uninitialized=0]="Uninitialized",e[e.Direct=1]="Direct",e[e.OrganizationView=2]="OrganizationView",e[e.OrganizationEdit=3]="OrganizationEdit",e[e.AnonymousView=4]="AnonymousView",e[e.AnonymousEdit=5]="AnonymousEdit",e[e.Flexible=6]="Flexible"}(ne||(ne={}));var re;!function(e){e[e.None=0]="None",e[e.View=1]="View",e[e.Edit=2]="Edit",e[e.Owner=3]="Owner"}(re||(re={}));var oe;!function(e){e[e.CompletedSuccessfully=0]="CompletedSuccessfully",e[e.AccessRequestsQueued=1]="AccessRequestsQueued",e[e.NoResolvedUsers=-1]="NoResolvedUsers",e[e.AccessDenied=-2]="AccessDenied",e[e.CrossSiteRequestNotSupported=-3]="CrossSiteRequestNotSupported",e[e.UnknowError=-4]="UnknowError",e[e.EmailBodyTooLong=-5]="EmailBodyTooLong",e[e.ListUniqueScopesExceeded=-6]="ListUniqueScopesExceeded",e[e.CapabilityDisabled=-7]="CapabilityDisabled",e[e.ObjectNotSupported=-8]="ObjectNotSupported",e[e.NestedGroupsNotSupported=-9]="NestedGroupsNotSupported"}(oe||(oe={}));var ie;!function(e){e[e.Unknown=0]="Unknown",e[e.File=1]="File",e[e.Folder=2]="Folder",e[e.Item=3]="Item",e[e.List=4]="List",e[e.Web=5]="Web",e[e.Max=6]="Max"}(ie||(ie={}));var se;!function(e){e[e.None=0]="None",e[e.AllowList=1]="AllowList",e[e.BlockList=2]="BlockList"}(se||(se={}));var ae;!function(e){e[e.None=0]="None",e[e.ContextInfo=1]="ContextInfo",e[e.ListData=2]="ListData",e[e.ListSchema=4]="ListSchema",e[e.MenuView=8]="MenuView",e[e.ListContentType=16]="ListContentType",e[e.FileSystemItemId=32]="FileSystemItemId",e[e.ClientFormSchema=64]="ClientFormSchema",e[e.QuickLaunch=128]="QuickLaunch",e[e.Spotlight=256]="Spotlight",e[e.Visualization=512]="Visualization",e[e.ViewMetadata=1024]="ViewMetadata",e[e.DisableAutoHyperlink=2048]="DisableAutoHyperlink",e[e.EnableMediaTAUrls=4096]="EnableMediaTAUrls",e[e.ParentInfo=8192]="ParentInfo",e[e.PageContextInfo=16384]="PageContextInfo",e[e.ClientSideComponentManifest=32768]="ClientSideComponentManifest"}(ae||(ae={}));var ue;!function(e){e[e.PeopleAndGroups=1]="PeopleAndGroups",e[e.PeopleOnly=0]="PeopleOnly"}(ue||(ue={}));var ce;!function(e){e[e.Dropdown=0]="Dropdown",e[e.RadioButtons=1]="RadioButtons"}(ce||(ce={}));var le;!function(e){e[e.DefaultZone=0]="DefaultZone",e[e.Intranet=1]="Intranet",e[e.Internet=2]="Internet",e[e.Custom=3]="Custom",e[e.Extranet=4]="Extranet"}(le||(le={}));var pe,de=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),Object.defineProperty(t.prototype,"roleAssignments",{get:function(){return new B(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"firstUniqueAncestorSecurableObject",{get:function(){return new R(this,"FirstUniqueAncestorSecurableObject")},enumerable:!0,configurable:!0}),t.prototype.getUserEffectivePermissions=function(e){var t=this.clone(N,"getUserEffectivePermissions(@user)");return t.query.set("@user","'"+encodeURIComponent(e)+"'"),t.get().then(function(e){return Object(g.j)(e,"GetUserEffectivePermissions")?e.GetUserEffectivePermissions:e})},t.prototype.getCurrentUserEffectivePermissions=function(){return this.clone(N,"EffectiveBasePermissions").get().then(function(e){return Object(g.j)(e,"EffectiveBasePermissions")?e.EffectiveBasePermissions:e})},t.prototype.breakRoleInheritance=function(e,n){return void 0===e&&(e=!1),void 0===n&&(n=!1),this.clone(t,"breakroleinheritance(copyroleassignments="+e+", clearsubscopes="+n+")").postCore()},t.prototype.resetRoleInheritance=function(){return this.clone(t,"resetroleinheritance").postCore()},t.prototype.userHasPermissions=function(e,t){var n=this;return this.getUserEffectivePermissions(e).then(function(e){return n.hasPermissions(e,t)})},t.prototype.currentUserHasPermissions=function(e){var t=this;return this.getCurrentUserEffectivePermissions().then(function(n){return t.hasPermissions(n,e)})},t.prototype.hasPermissions=function(e,t){if(!t)return!0;if(t===Y.FullMask)return 32767==(32767&e.High)&&65535===e.Low;t-=1;var n=1;return t>=0&&t<32?(n<<=t,0!=(e.Low&n)):t>=32&&t<64&&(n<<=t-32,0!=(e.High&n))},t}(R),he=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.getShareLink=function(e,n){void 0===n&&(n=null);var r=null!==n?n.toISOString():null;return this.clone(t,"shareLink").postCore({body:Object(g.n)({request:{createLink:!0,emailData:null,settings:{expiration:r,linkKind:e}}})})},t.prototype.shareWith=function(e,n,r,o,i){var s=this;void 0===r&&(r=!1),void 0===o&&(o=!1),Array.isArray(e)||(e=[e]);var a=Object(g.n)(e.map(function(e){return{Key:e}})),u=n===re.Edit?ee.Contributor:ee.Reader;return new j("_api/web","roledefinitions").select("Id").filter("RoleTypeKind eq "+u).get().then(function(e){if(!Array.isArray(e)||e.length<1)throw Error("Could not locate a role defintion with RoleTypeKind "+u);var n={includeAnonymousLinkInEmail:r,peoplePickerInput:a,propagateAcl:o,roleValue:"role:"+e[0].Id,useSimplifiedRoles:!0};return void 0!==i&&(n=Object(g.f)(n,{emailBody:i.body,emailSubject:void 0!==i.subject?i.subject:"",sendEmail:!0})),s.clone(t,"shareObject").postCore({body:Object(g.n)(n)})})},t.prototype.shareObject=function(e,t){var n=this;return void 0===t&&(t=!1),t?this.sendShareObjectRequest(e):(e=Object(g.f)(e,{group:null,includeAnonymousLinkInEmail:!1,propagateAcl:!1,useSimplifiedRoles:!0},!0),this.getRoleValue(e.role,e.group).then(function(t){Array.isArray(e.loginNames)||(e.loginNames=[e.loginNames]);var r=Object(g.n)(e.loginNames.map(function(e){return{Key:e}})),o={peoplePickerInput:r,roleValue:t,url:e.url};return void 0!==e.emailData&&null!==e.emailData&&(o=Object(g.f)(o,{emailBody:e.emailData.body,emailSubject:void 0!==e.emailData.subject?e.emailData.subject:"Shared with you.",sendEmail:!0})),n.sendShareObjectRequest(o)}))},t.prototype.unshareObjectWeb=function(e){return this.clone(t,"unshareObject").postCore({body:Object(g.n)({url:e})})},t.prototype.checkPermissions=function(e){return this.clone(t,"checkPermissions").postCore({body:Object(g.n)({recipients:e})})},t.prototype.getSharingInformation=function(e,n){void 0===e&&(e=null);var r=this.clone(t,"getSharingInformation");return r.expand.apply(r,n).postCore({body:Object(g.n)({request:e})})},t.prototype.getObjectSharingSettings=function(e){return void 0===e&&(e=!0),this.clone(t,"getObjectSharingSettings").postCore({body:Object(g.n)({useSimplifiedRoles:e})})},t.prototype.unshareObject=function(){return this.clone(t,"unshareObject").postCore()},t.prototype.deleteLinkByKind=function(e){return this.clone(t,"deleteLinkByKind").postCore({body:Object(g.n)({linkKind:e})})},t.prototype.unshareLink=function(e,n){return void 0===n&&(n="00000000-0000-0000-0000-000000000000"),this.clone(t,"unshareLink").postCore({body:Object(g.n)({linkKind:e,shareId:n})})},t.prototype.getRoleValue=function(e,t){if(void 0===t||null===t){var n=e===re.Edit?ee.Contributor:ee.Reader;return new j("_api/web","roledefinitions").select("Id").top(1).filter("RoleTypeKind eq "+n).get().then(function(e){if(e.length<1)throw Error("Could not locate associated role definition for supplied role. Edit and View are supported");return"role: "+e[0].Id})}switch(t){case ee.Contributor:return new R("_api/web","associatedmembergroup").select("Id").get().then(function(e){return"group: "+e.Id});case ee.Reader:case ee.Guest:return new R("_api/web","associatedvisitorgroup").select("Id").get().then(function(e){return"group: "+e.Id});default:throw Error("Could not determine role value for supplied value. Contributor, Reader, and Guest are supported")}},t.prototype.getShareObjectWeb=function(e){return Promise.resolve(new R(a(e),"/_api/SP.Web.ShareObject"))},t.prototype.sendShareObjectRequest=function(e){return this.getShareObjectWeb(this.toUrl()).then(function(n){return n.expand("UsersWithAccessRequests","GroupsSharedWith").as(t).postCore({body:Object(g.n)(e)})})},t}(N),fe=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.shareWith=function(e,t,n){var r=this;void 0===t&&(t=re.View);var o=this.addBatchDependency();return new R(a(this.toUrl()),"/_api/web/url").get().then(function(i){return o(),r.shareObject(Object(g.d)(i,"/_layouts/15/aclinv.aspx?forSharing=1&mbypass=1"),e,t,n)})},t.prototype.shareObject=function(e,t,n,r,o,i,s,a){return void 0===i&&(i=!1),void 0===s&&(s=!1),void 0===a&&(a=!0),this.clone(he,null).shareObject({emailData:r,group:o,includeAnonymousLinkInEmail:s,loginNames:t,propagateAcl:i,role:n,url:e,useSimplifiedRoles:a})},t.prototype.shareObjectRaw=function(e){return this.clone(he,null).shareObject(e,!0)},t.prototype.unshareObject=function(e){return this.clone(he,null).unshareObjectWeb(e)},t}(de),ye=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.getShareLink=function(e,t){return void 0===e&&(e=ne.OrganizationView),void 0===t&&(t=null),this.clone(he,null).getShareLink(e,t)},t.prototype.shareWith=function(e,t,n,r){return void 0===t&&(t=re.View),void 0===n&&(n=!1),this.clone(he,null).shareWith(e,t,n,!1,r)},t.prototype.checkSharingPermissions=function(e){return this.clone(he,null).checkPermissions(e)},t.prototype.getSharingInformation=function(e,t){return void 0===e&&(e=null),this.clone(he,null).getSharingInformation(e,t)},t.prototype.getObjectSharingSettings=function(e){return void 0===e&&(e=!0),this.clone(he,null).getObjectSharingSettings(e)},t.prototype.unshare=function(){return this.clone(he,null).unshareObject()},t.prototype.deleteSharingLinkByKind=function(e){return this.clone(he,null).deleteLinkByKind(e)},t.prototype.unshareLink=function(e,t){return this.clone(he,null).unshareLink(e,t)},t}(de),me=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.getShareLink=function(e,t){void 0===e&&(e=ne.OrganizationView),void 0===t&&(t=null);var n=this.addBatchDependency();return this.getShareable().then(function(r){return n(),r.getShareLink(e,t)})},t.prototype.checkSharingPermissions=function(e){var t=this.addBatchDependency();return this.getShareable().then(function(n){return t(),n.checkPermissions(e)})},t.prototype.getSharingInformation=function(e,t){void 0===e&&(e=null);var n=this.addBatchDependency();return this.getShareable().then(function(r){return n(),r.getSharingInformation(e,t)})},t.prototype.getObjectSharingSettings=function(e){void 0===e&&(e=!0);var t=this.addBatchDependency();return this.getShareable().then(function(n){return t(),n.getObjectSharingSettings(e)})},t.prototype.unshare=function(){var e=this.addBatchDependency();return this.getShareable().then(function(t){return e(),t.unshareObject()})},t.prototype.deleteSharingLinkByKind=function(e){var t=this.addBatchDependency();return this.getShareable().then(function(n){return t(),n.deleteLinkByKind(e)})},t.prototype.unshareLink=function(e,t){var n=this.addBatchDependency();return this.getShareable().then(function(r){return n(),r.unshareLink(e,t)})},t.prototype.getShareable=function(){var e=this;return this.clone(ge,"listItemAllFields",!1).select("odata.id").get().then(function(t){var n=new he(u(t));return e.hasBatch&&(n=n.inBatch(e.batch)),n})},t}(R),ge=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.shareWith=function(e,t,n,r){void 0===t&&(t=re.View),void 0===n&&(n=!1);var o=this.addBatchDependency();return this.getShareable().then(function(i){return o(),i.shareWith(e,t,n,!1,r)})},t}(me),be=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.shareWith=function(e,t,n,r,o){void 0===t&&(t=re.View),void 0===n&&(n=!1),void 0===r&&(r=!1);var i=this.addBatchDependency();return this.getShareable().then(function(s){return i(),s.shareWith(e,t,n,r,o)})},t}(me),ve=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),Object.defineProperty(t.prototype,"webparts",{get:function(){return new Se(this,"webparts")},enumerable:!0,configurable:!0}),t.prototype.export=function(e){return this.clone(t,"ExportWebPart").postCore({body:Object(g.n)({webPartId:e})})},t.prototype.import=function(e){return this.clone(t,"ImportWebPart").postCore({body:Object(g.n)({webPartXml:e})})},t}(N),Se=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.getById=function(e){return new Te(this,"getbyid('"+e+"')")},t.prototype.getByControlId=function(e){return new Te(this,"getByControlId('"+e+"')")},t}(j),Te=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),Object.defineProperty(t.prototype,"webpart",{get:function(){return new Oe(this)},enumerable:!0,configurable:!0}),t.prototype.saveChanges=function(){return this.clone(t,"SaveWebPartChanges").postCore()},t.prototype.moveTo=function(e,n){return this.clone(t,"MoveWebPartTo(zoneID='"+e+"', zoneIndex="+n+")").postCore()},t.prototype.close=function(){return this.clone(t,"CloseWebPart").postCore()},t.prototype.open=function(){return this.clone(t,"OpenWebPart").postCore()},t.prototype.delete=function(){return this.clone(t,"DeleteWebPart").postCore()},t}(R),Oe=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t=o([h("webpart")],t)}(R),we=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,t.prototype.getByName=function(e){var t=new Ie(this);return t.concat("('"+e+"')"),t},t.prototype.add=function(e){var t=this;return this.clone(n,"add('"+e+"')").postCore().then(function(n){return{data:n,folder:t.getByName(e)}})},t.prototype.addUsingPath=function(e,t){var r=this;return void 0===t&&(t=!1),this.clone(n,"addUsingPath(DecodedUrl='"+e+"',overwrite="+t+")").postCore().then(function(t){return{data:t,folder:new Ie(a(r.toUrl()),"_api/web/getFolderByServerRelativePath(decodedUrl='"+e+"')")}})};var n;return t=n=o([h("folders")],t)}(j),Ie=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.update=t._update("SP.Folder",function(e){return{data:e,folder:t}}),t}return r(t,e),Object.defineProperty(t.prototype,"contentTypeOrder",{get:function(){return new j(this,"contentTypeOrder")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"files",{get:function(){return new et(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"folders",{get:function(){return new we(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"listItemAllFields",{get:function(){return new R(this,"listItemAllFields")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"parentFolder",{get:function(){return new t(this,"parentFolder")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"properties",{get:function(){return new R(this,"properties")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"serverRelativeUrl",{get:function(){return new N(this,"serverRelativeUrl")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"uniqueContentTypeOrder",{get:function(){return new j(this,"uniqueContentTypeOrder")},enumerable:!0,configurable:!0}),t.prototype.delete=function(e){return void 0===e&&(e="*"),this.clone(t,null).postCore({headers:{"IF-Match":e,"X-HTTP-Method":"DELETE"}})},t.prototype.recycle=function(){return this.clone(t,"recycle").postCore()},t.prototype.getItem=function(){for(var e=[],t=0;t0&&r.forEach(function(e,t){return i.query.set(t,e)}),i.postCore({body:Object(g.n)(o)})},t.prototype.renderListFormData=function(e,n,r){return this.clone(t,"renderlistformdata(itemid="+e+", formid='"+n+"', mode='"+r+"')").postCore().then(function(e){return JSON.parse(Object(g.j)(e,"RenderListFormData")?e.RenderListFormData:e)})},t.prototype.reserveListItemId=function(){return this.clone(t,"reservelistitemid").postCore().then(function(e){return Object(g.j)(e,"ReserveListItemId")?e.ReserveListItemId:e})},t.prototype.getListItemEntityTypeFullName=function(){return this.clone(t,null,!1).select("ListItemEntityTypeFullName").get().then(function(e){return e.ListItemEntityTypeFullName})},t.prototype.addValidateUpdateItemUsingPath=function(e,n,r,o){return void 0===r&&(r=!1),this.clone(t,"AddValidateUpdateItemUsingPath()").postCore({body:Object(g.n)({bNewDocumentUpdate:r,checkInComment:o,formValues:e,listItemCreateInfo:{FolderPath:{DecodedUrl:n,__metadata:{type:"SP.ResourcePath"}},__metadata:{type:"SP.ListItemCreationInformationUsingPath"}}})}).then(function(e){return void 0!==e.AddValidateUpdateItemUsingPath?e.AddValidateUpdateItemUsingPath.results:e})},t.prototype.getSiteScript=function(){return i(this,void 0,void 0,function(){var e,n;return s(this,function(r){switch(r.label){case 0:return[4,this.clone(t).rootFolder.select("ServerRelativeUrl").get()];case 1:return e=r.sent(),[4,p(e.ServerRelativeUrl)];case 2:return n=r.sent(),[2,new S.a(this,"").getSiteScriptFromList(n)]}})})},t}(de),He=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,t.prototype.add=function(e){var t=this;"string"==typeof e&&(e={text:e});var r=Object(g.n)(Object(g.f)(d("Microsoft.SharePoint.Comments.comment"),e));return this.clone(n,null).postCore({body:r}).then(function(e){return Object(g.f)(t.getById(e.id),e)})},t.prototype.getById=function(e){var t=new Ke(this);return t.concat("("+e+")"),t},t.prototype.clear=function(){return this.clone(n,"DeleteAll").postCore()};var n;return t=n=o([h("comments")],t)}(j),Ke=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),Object.defineProperty(t.prototype,"replies",{get:function(){return new Ve(this)},enumerable:!0,configurable:!0}),t.prototype.like=function(){return this.clone(t,"Like").postCore()},t.prototype.unlike=function(){return this.clone(t,"Unlike").postCore()},t.prototype.delete=function(){return this.deleteCore()},t}(R),Ve=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,t.prototype.add=function(e){"string"==typeof e&&(e={text:e});var t=Object(g.n)(Object(g.f)(d("Microsoft.SharePoint.Comments.comment"),e));return this.clone(n,null).postCore({body:t}).then(function(e){return Object(g.f)(new Ke(u(e)),e)})};var n;return t=n=o([h("replies")],t)}(j),Qe=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,t.prototype.getById=function(e){var t=new ze(this);return t.concat("("+e+")"),t},t.prototype.getItemByStringId=function(e){return new ze(this.parentUrl,"getItemByStringId('"+e+"')")},t.prototype.skip=function(e,t){return void 0===t&&(t=!1),t?this.query.set("$skiptoken",encodeURIComponent("Paged=TRUE&PagedPrev=TRUE&p_ID="+e)):this.query.set("$skiptoken",encodeURIComponent("Paged=TRUE&p_ID="+e)),this},t.prototype.getPaged=function(e){return void 0===e&&(e=new v.f),this.get(new $e(this,e))},t.prototype.getAll=function(e,t){void 0===e&&(e=2e3),void 0===t&&(t="application/json;odata=nometadata"),b.a.write("Calling items.getAll should be done sparingly. Ensure this is the correct choice. If you are unsure, it is not.",2);var r=new n(this,"").top(e).configure({headers:{Accept:t}});return this.query.forEach(function(e,t){/^\$select|filter|top|expand$/i.test(t)&&r.query.set(t,e)}),new Promise(function(e,t){var n=[],o=function(r){[].push.apply(n,r.results),r.hasNext?r.getNext().then(o).catch(t):e(n)};r.getPaged().then(o).catch(t)})},t.prototype.add=function(e,t){var r=this;void 0===e&&(e={}),void 0===t&&(t=null);var o=this.addBatchDependency();return this.ensureListItemEntityTypeName(t).then(function(t){var i=Object(g.n)(Object(g.f)(d(t),e)),s=r.clone(n,"").postCore({body:i}).then(function(e){return{data:e,item:r.getById(e.Id)}});return o(),s})},t.prototype.ensureListItemEntityTypeName=function(e){return e?Promise.resolve(e):this.getParent(We).getListItemEntityTypeFullName()};var n;return t=n=o([h("items")],t)}(j),ze=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.delete=t._deleteWithETag,t}return r(t,e),Object.defineProperty(t.prototype,"attachmentFiles",{get:function(){return new xe(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"contentType",{get:function(){return new Pe(this,"ContentType")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"comments",{get:function(){return new He(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"effectiveBasePermissions",{get:function(){return new N(this,"EffectiveBasePermissions")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"effectiveBasePermissionsForUI",{get:function(){return new N(this,"EffectiveBasePermissionsForUI")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"fieldValuesAsHTML",{get:function(){return new R(this,"FieldValuesAsHTML")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"fieldValuesAsText",{get:function(){return new R(this,"FieldValuesAsText")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"fieldValuesForEdit",{get:function(){return new R(this,"FieldValuesForEdit")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"folder",{get:function(){return new Ie(this,"folder")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"file",{get:function(){return new tt(this,"file")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"versions",{get:function(){return new Xe(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"list",{get:function(){return this.getParent(We,this.parentUrl.substr(0,this.parentUrl.lastIndexOf("/")))},enumerable:!0,configurable:!0}),t.prototype.update=function(e,t,n){var r=this;return void 0===t&&(t="*"),void 0===n&&(n=null),new Promise(function(o,i){var s=r.addBatchDependency();return r.ensureListItemEntityTypeName(n).then(function(n){var i=Object(g.n)(Object(g.f)(d(n),e));return s(),r.postCore({body:i,headers:{"IF-Match":t,"X-HTTP-Method":"MERGE"}},new Ze).then(function(e){o({data:e,item:r})})}).catch(function(e){return i(e)})})},t.prototype.getLikedBy=function(){return this.clone(t,"likedBy").postCore()},t.prototype.like=function(){return this.clone(t,"like").postCore()},t.prototype.unlike=function(){return this.clone(t,"unlike").postCore()},t.prototype.recycle=function(){return this.clone(t,"recycle").postCore()},t.prototype.getWopiFrameUrl=function(e){void 0===e&&(e=0);var n=this.clone(t,"getWOPIFrameUrl(@action)");return n.query.set("@action",e),n.postCore().then(function(e){return Object(g.j)(e,"GetWOPIFrameUrl")?e.GetWOPIFrameUrl:e})},t.prototype.validateUpdateListItem=function(e,n){return void 0===n&&(n=!1),this.clone(t,"validateupdatelistitem").postCore({body:Object(g.n)({formValues:e,bNewDocumentUpdate:n})})},t.prototype.getLikedByInformation=function(){return this.clone(t,"likedByInformation").expand("likedby").getCore()},t.prototype.ensureListItemEntityTypeName=function(e){return e?Promise.resolve(e):this.list.getListItemEntityTypeFullName()},t}(ye),Xe=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.getById=function(e){var t=new Je(this);return t.concat("("+e+")"),t},t=o([h("versions")],t)}(j),Je=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.delete=t._deleteWithETag,t}return r(t,e),t}(R),Ye=function(){function e(e,t,n,r){this.parent=e,this.nextUrl=t,this.results=n,this.innerParser=r}return Object.defineProperty(e.prototype,"hasNext",{get:function(){return"string"==typeof this.nextUrl&&this.nextUrl.length>0},enumerable:!0,configurable:!0}),e.prototype.getNext=function(){if(this.hasNext){return new Qe(this.nextUrl,null).configureFrom(this.parent).getPaged(this.innerParser)}return new Promise(function(e){return e(null)})},e}(),$e=function(e){function t(t,n){var r=e.call(this)||this;return r._parent=t,r.innerParser=n,r}return r(t,e),t.prototype.parse=function(e){var t=this;return this.innerParser.parse(e).then(function(e){return i(t,void 0,void 0,function(){var t,n;return s(this,function(r){return t=this.innerParser.rawJson,n=Object(g.j)(t,"d")&&Object(g.j)(t.d,"__next")?t.d.__next:t["odata.nextLink"],[2,new Ye(this._parent,n,e,this.innerParser)]})})})},t}(v.g),Ze=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.parse=function(e){return i(this,void 0,void 0,function(){var t=this;return s(this,function(n){return[2,new Promise(function(n,r){t.handleError(e,r)&&n({"odata.etag":e.headers.get("etag")})})]})})},t}(v.g),et=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,t.prototype.getByName=function(e){var t=new tt(this);return t.concat("('"+e+"')"),t},t.prototype.add=function(e,t,r){var o=this;return void 0===r&&(r=!0),new n(this,"add(overwrite="+r+",url='"+e+"')").postCore({body:t}).then(function(t){return{data:t,file:o.getByName(e)}})},t.prototype.addUsingPath=function(e,t,r){var o=this;void 0===r&&(r={Overwrite:!1});var i=["AddUsingPath(decodedurl='"+e+"'"];return r&&(r.Overwrite&&i.push(",Overwrite=true"),r.AutoCheckoutOnInvalidData&&i.push(",AutoCheckoutOnInvalidData=true"),Object(g.r)(r.XorHash)||i.push(",XorHash="+r.XorHash)),i.push(")"),new n(this,i.join("")).postCore({body:t}).then(function(t){return{data:t,file:o.getByName(e)}})},t.prototype.addChunked=function(e,t,r,o,i){var s=this;return void 0===o&&(o=!0),void 0===i&&(i=10485760),this.clone(n,"add(overwrite = "+o+", url = '"+e+"')",!1).postCore().then(function(){return s.getByName(e)}).then(function(e){return e.setContentChunked(t,r,i)})},t.prototype.addTemplateFile=function(e,t){var r=this;return this.clone(n,"addTemplateFile(urloffile = '"+e+"', templatefiletype = "+t+")",!1).postCore().then(function(t){return{data:t,file:r.getByName(e)}})};var n;return t=n=o([h("files")],t)}(j),tt=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),Object.defineProperty(t.prototype,"listItemAllFields",{get:function(){return new R(this,"listItemAllFields")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"versions",{get:function(){return new nt(this)},enumerable:!0,configurable:!0}),t.prototype.approve=function(e){return void 0===e&&(e=""),this.clone(t,"approve(comment = '"+e+"')").postCore()},t.prototype.cancelUpload=function(e){return this.clone(t,"cancelUpload(uploadId = guid'"+e+"')",!1).postCore()},t.prototype.checkin=function(e,n){if(void 0===e&&(e=""),void 0===n&&(n=pe.Major),e.length>1023)throw Error("The maximum comment length is 1023 characters.");return this.clone(t,"checkin(comment = '"+e+"', checkintype = "+n+")").postCore()},t.prototype.checkout=function(){return this.clone(t,"checkout").postCore()},t.prototype.copyTo=function(e,n){return void 0===n&&(n=!0),this.clone(t,"copyTo(strnewurl = '"+e+"', boverwrite = "+n+")").postCore()},t.prototype.delete=function(e){return void 0===e&&(e="*"),this.clone(t,null).postCore({headers:{"IF-Match":e,"X-HTTP-Method":"DELETE"}})},t.prototype.deny=function(e){if(void 0===e&&(e=""),e.length>1023)throw Error("The maximum comment length is 1023 characters.");return this.clone(t,"deny(comment = '"+e+"')").postCore()},t.prototype.getLimitedWebPartManager=function(e){return void 0===e&&(e=ot.Shared),new ve(this,"getLimitedWebPartManager(scope = "+e+")")},t.prototype.moveTo=function(e,n){return void 0===n&&(n=it.Overwrite),this.clone(t,"moveTo(newurl = '"+e+"', flags = "+n+")").postCore()},t.prototype.publish=function(e){if(void 0===e&&(e=""),e.length>1023)throw Error("The maximum comment length is 1023 characters.");return this.clone(t,"publish(comment = '"+e+"')").postCore()},t.prototype.recycle=function(){return this.clone(t,"recycle").postCore()},t.prototype.undoCheckout=function(){return this.clone(t,"undoCheckout").postCore()},t.prototype.unpublish=function(e){if(void 0===e&&(e=""),e.length>1023)throw Error("The maximum comment length is 1023 characters.");return this.clone(t,"unpublish(comment = '"+e+"')").postCore()},t.prototype.getText=function(){return this.clone(t,"$value",!1).get(new v.i,{headers:{binaryStringResponseBody:"true"}})},t.prototype.getBlob=function(){return this.clone(t,"$value",!1).get(new v.a,{headers:{binaryStringResponseBody:"true"}})},t.prototype.getBuffer=function(){return this.clone(t,"$value",!1).get(new v.b,{headers:{binaryStringResponseBody:"true"}})},t.prototype.getJSON=function(){return this.clone(t,"$value",!1).get(new v.d,{headers:{binaryStringResponseBody:"true"}})},t.prototype.setContent=function(e){var n=this;return this.clone(t,"$value",!1).postCore({body:e,headers:{"X-HTTP-Method":"PUT"}}).then(function(e){return new t(n)})},t.prototype.getItem=function(){for(var e=this,t=[],n=0;n0?"tenantappcatalog":"sitecollectionappcatalog";return new t(a(this.toUrl()),"_api/web/"+o+"/add(overwrite="+r+",url='"+e+"')").postCore({body:n}).then(function(e){return{data:e,file:new tt(u(e))}})},t}(j),ct=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.deploy=function(e){return void 0===e&&(e=!1),this.clone(t,"Deploy("+e+")").postCore()},t.prototype.retract=function(){return this.clone(t,"Retract").postCore()},t.prototype.install=function(){return this.clone(t,"Install").postCore()},t.prototype.uninstall=function(){return this.clone(t,"Uninstall").postCore()},t.prototype.upgrade=function(){return this.clone(t,"Upgrade").postCore()},t.prototype.remove=function(){return this.clone(t,"Remove").postCore()},t}(R),lt=function(e){function t(t){var n=e.call(this)||this;return n.baseUrl=t,n}return r(t,e),t.ParseResponse=function(e){return new Promise(function(t,n){for(var r,o,i=[],s=new RegExp("^HTTP/[0-9.]+ +([0-9]+) +(.*)","i"),a=e.split("\n"),u="batch",c=0;c0&&(o.push("--changeset_"+i+"--\n\n"),i=""),o.push("--batch_"+e.batchId+"\n")):(i.length<1&&(i=Object(g.h)(),o.push("--batch_"+e.batchId+"\n"),o.push('Content-Type: multipart/mixed; boundary="changeset_'+i+'"\n\n')),o.push("--changeset_"+i+"\n")),o.push("Content-Type: application/http\n"),o.push("Content-Transfer-Encoding: binary\n\n");var u=new Headers,c=Object(g.m)(a.url)?a.url:Object(g.d)(r,a.url);if(b.a.write("["+e.batchId+"] ("+(new Date).getTime()+") Adding request "+a.method+" "+c+" to batch.",0),"GET"!==a.method){var l=a.method,p=a.options.headers;Object(g.j)(a,"options")&&Object(g.j)(a.options,"headers")&&void 0!==p["X-HTTP-Method"]&&(l=p["X-HTTP-Method"],delete p["X-HTTP-Method"]),o.push(l+" "+c+" HTTP/1.1\n"),u.set("Content-Type","application/json;odata=verbose;charset=utf-8")}else o.push(a.method+" "+c+" HTTP/1.1\n");Object(g.o)(u,I.headers),a.options&&Object(g.o)(u,a.options.headers),u.has("Accept")||u.append("Accept","application/json"),u.has("Content-Type")||u.append("Content-Type","application/json;odata=verbose;charset=utf-8"),u.has("X-ClientService-ClientTag")||u.append("X-ClientService-ClientTag","PnPCoreJS:@pnp-1.3.11"),u.forEach(function(e,t){o.push(t+": "+e+"\n")}),o.push("\n"),a.options.body&&o.push(a.options.body+"\n\n")}i.length>0&&(o.push("--changeset_"+i+"--\n\n"),i=""),o.push("--batch_"+e.batchId+"--\n");var d={body:o.join(""),headers:{"Content-Type":"multipart/mixed; boundary=batch_"+e.batchId},method:"POST"};return b.a.write("["+e.batchId+"] ("+(new Date).getTime()+") Sending batch request.",1),n.fetch(Object(g.d)(r,"/_api/$batch"),d).then(function(e){return e.text()}).then(t.ParseResponse).then(function(t){if(t.length!==e.requests.length)throw Error("Could not properly parse responses to match requests in batch.");return b.a.write("["+e.batchId+"] ("+(new Date).getTime()+") Resolving batched requests.",1),t.reduce(function(t,n,r){var o=e.requests[r];return b.a.write("["+o.id+"] ("+(new Date).getTime()+") Resolving request in batch "+e.batchId+".",1),t.then(function(e){return o.parser.parse(n).then(o.resolve).catch(o.reject)})},Promise.resolve())})})},t}(v.e),pt=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,t.prototype.add=function(e,t){var r=this;return void 0===t&&(t=!1),this.clone(n,"add").postCore({body:Object(g.n)({featdefScope:0,featureId:e,force:t})}).then(function(t){return{data:t,feature:r.getById(e)}})},t.prototype.getById=function(e){var t=new dt(this);return t.concat("('"+e+"')"),t},t.prototype.remove=function(e,t){return void 0===t&&(t=!1),this.clone(n,"remove").postCore({body:Object(g.n)({featureId:e,force:t})})};var n;return t=n=o([h("features")],t)}(j),dt=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.deactivate=function(e){var n=this;void 0===e&&(e=!1);var r=this.addBatchDependency();return new t(this).select("DefinitionId").get().then(function(t){var o=n.getParent(pt,n.parentUrl,"",n.batch).remove(t.DefinitionId,e);return r(),o})},t}(R),ht=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,Object.defineProperty(t.prototype,"rootWeb",{get:function(){return new Ct(this,"rootweb")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"features",{get:function(){return new pt(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"userCustomActions",{get:function(){return new Be(this)},enumerable:!0,configurable:!0}),t.prototype.getRootWeb=function(){return this.rootWeb.select("Url").get().then(function(e){return new Ct(e.Url)})},t.prototype.getContextInfo=function(){return new n(this.parentUrl,"_api/contextinfo").postCore().then(function(e){if(Object(g.j)(e,"GetContextWebInformation")){var t=e.GetContextWebInformation;return t.SupportedSchemaVersions=t.SupportedSchemaVersions.results,t}return e})},t.prototype.getDocumentLibraries=function(e){var t=new N("","_api/sp.web.getdocumentlibraries(@v)");return t.query.set("@v","'"+e+"'"),t.get().then(function(e){return Object(g.j)(e,"GetDocumentLibraries")?e.GetDocumentLibraries:e})},t.prototype.getWebUrlFromPageUrl=function(e){var t=new N("","_api/sp.web.getweburlfrompageurl(@v)");return t.query.set("@v","'"+e+"'"),t.get().then(function(e){return Object(g.j)(e,"GetWebUrlFromPageUrl")?e.GetWebUrlFromPageUrl:e})},t.prototype.getChanges=function(e){var t=Object(g.n)({query:Object(g.f)({__metadata:{type:"SP.ChangeQuery"}},e)});return this.clone(n,"getchanges").postCore({body:t})},t.prototype.delete=function(){return i(this,void 0,void 0,function(){var e,t;return s(this,function(r){switch(r.label){case 0:return[4,this.clone(n,"").select("Id").get()];case 1:return e=r.sent(),t=new n(this.parentUrl,"_api/SPSiteManager/Delete"),[4,t.postCore({body:Object(g.n)({siteId:e.Id})})];case 2:return r.sent(),[2]}})})},t.prototype.createBatch=function(){return new lt(this.parentUrl)},t.prototype.openWebById=function(e){return this.clone(n,"openWebById('"+e+"')").postCore().then(function(e){return{data:e,web:Ct.fromUrl(e["odata.id"]||e.__metadata.uri)}})},t.prototype.joinHubSite=function(e){return this.clone(n,"joinHubSite('"+e+"')").postCore()},t.prototype.registerHubSite=function(){return this.clone(n,"registerHubSite").postCore()},t.prototype.unRegisterHubSite=function(){return this.clone(n,"unRegisterHubSite").postCore()},t.prototype.createCommunicationSite=function(e,t,n,r,o,a,u,c,l){var p=this;void 0===t&&(t=1033),void 0===n&&(n=!1),void 0===o&&(o=""),void 0===a&&(a=""),void 0===u&&(u="00000000-0000-0000-0000-000000000000"),void 0===c&&(c="00000000-0000-0000-0000-000000000000");var d={Classification:a,Description:o,HubSiteId:c,Lcid:t,Owner:l,ShareByEmailEnabled:n,SiteDesignId:u,Title:e,Url:r,WebTemplate:"SITEPAGEPUBLISHING#0",WebTemplateExtensionId:"00000000-0000-0000-0000-000000000000"},h=Object(g.n)({request:Object(g.f)({__metadata:{type:"Microsoft.SharePoint.Portal.SPSiteCreationRequest"}},d)});return this.getRootWeb().then(function(e){return i(p,void 0,void 0,function(){var t,n;return s(this,function(r){return t=new E,n=e.parentUrl+"/_api/SPSiteManager/Create",[2,t.post(n,{body:h,headers:{Accept:"application/json;odata=verbose","Content-Type":"application/json;odata=verbose;charset=utf-8"}}).then(function(e){return e.json()}).then(function(e){if(Object(g.j)(e,"error"))throw e;return Object(g.j)(e,"d")&&Object(g.j)(e.d,"Create")?e.d.Create:e})]})})})},t.prototype.createModernTeamSite=function(e,t,n,r,o,a,u,c,l){var p=this;void 0===n&&(n=!0),void 0===r&&(r=1033),void 0===o&&(o=""),void 0===a&&(a=""),void 0===c&&(c="00000000-0000-0000-0000-000000000000");var d={alias:t,displayName:e,isPublic:n,optionalParams:{Classification:a,CreationOptions:{results:["SPSiteLanguage:"+r,"HubSiteId:"+c]},Description:o,Owners:{results:u||[]}}};return l&&d.optionalParams.CreationOptions.results.push("implicit_formula_292aa8a00786498a87a5ca52d9f4214a_"+l),this.getRootWeb().then(function(e){return i(p,void 0,void 0,function(){var t,n;return s(this,function(r){return t=new E,n=e.parentUrl+"/_api/GroupSiteManager/CreateGroupEx",[2,t.post(n,{body:Object(g.n)(d),headers:{Accept:"application/json;odata=verbose","Content-Type":"application/json;odata=verbose;charset=utf-8"}}).then(function(e){return e.json()})]})})})};var n;return t=n=o([h("_api/site")],t)}(R),ft=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.getById=function(e){var t=new yt(this);return t.concat("("+e+")"),t},t.prototype.add=function(e,n,r){var o=this;void 0===r&&(r=!0);var i=Object(g.n)(Object(g.f)(d("SP.NavigationNode"),{IsVisible:r,Title:e,Url:n}));return this.clone(t,null).postCore({body:i}).then(function(e){return{data:e,node:o.getById(e.Id)}})},t.prototype.moveAfter=function(e,n){var r=Object(g.n)({nodeId:e,previousNodeId:n});return this.clone(t,"MoveAfter").postCore({body:r})},t}(j),yt=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),Object.defineProperty(t.prototype,"children",{get:function(){return new ft(this,"Children")},enumerable:!0,configurable:!0}),t.prototype.delete=function(){return e.prototype.deleteCore.call(this)},t.prototype.update=function(e){var t=this,n=Object(g.n)(Object(g.f)({__metadata:{type:"SP.NavigationNode"}},e));return this.postCore({body:n,headers:{"X-HTTP-Method":"MERGE"}}).then(function(e){return{data:e,node:t}})},t}(R),mt=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),Object.defineProperty(t.prototype,"quicklaunch",{get:function(){return new ft(this,"quicklaunch")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"topNavigationBar",{get:function(){return new ft(this,"topnavigationbar")},enumerable:!0,configurable:!0}),t=o([h("navigation")],t)}(N),gt=function(e){function t(t,n){return void 0===n&&(n=null),e.call(this,t,n)||this}return r(t,e),t.prototype.getMenuState=function(e,n,r,o){return void 0===e&&(e=null),void 0===n&&(n=10),void 0===r&&(r=null),void 0===o&&(o=null),new t(this,"_api/navigation/MenuState").postCore({body:Object(g.n)({customProperties:o,depth:n,mapProviderName:r,menuNodeKey:e})})},t.prototype.getMenuNodeKey=function(e,n){return void 0===n&&(n=null),new t(this,"_api/navigation/MenuNodeKey").postCore({body:Object(g.n)({currentUrl:e,mapProviderName:n})})},t}(N),bt=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,t.FromUrl=function(e){if(null===e)return new n("");var t=e.indexOf("_api/");return new n(t>-1?e.substr(0,t):e)},t.prototype.getRelatedItems=function(e,t){var r=this.clone(n,null);return r.concat(".GetRelatedItems"),r.postCore({body:Object(g.n)({SourceItemID:t,SourceListName:e})})},t.prototype.getPageOneRelatedItems=function(e,t){var r=this.clone(n,null);return r.concat(".GetPageOneRelatedItems"),r.postCore({body:Object(g.n)({SourceItemID:t,SourceListName:e})})},t.prototype.addSingleLink=function(e,t,r,o,i,s,a){void 0===a&&(a=!1);var u=this.clone(n,null);return u.concat(".AddSingleLink"),u.postCore({body:Object(g.n)({SourceItemID:t,SourceListName:e,SourceWebUrl:r,TargetItemID:i,TargetListName:o,TargetWebUrl:s,TryAddReverseLink:a})})},t.prototype.addSingleLinkToUrl=function(e,t,r,o){void 0===o&&(o=!1);var i=this.clone(n,null);return i.concat(".AddSingleLinkToUrl"),i.postCore({body:Object(g.n)({SourceItemID:t,SourceListName:e,TargetItemUrl:r,TryAddReverseLink:o})})},t.prototype.addSingleLinkFromUrl=function(e,t,r,o){void 0===o&&(o=!1);var i=this.clone(n,null);return i.concat(".AddSingleLinkFromUrl"),i.postCore({body:Object(g.n)({SourceItemUrl:e,TargetItemID:r,TargetListName:t,TryAddReverseLink:o})})},t.prototype.deleteSingleLink=function(e,t,r,o,i,s,a){void 0===a&&(a=!1);var u=this.clone(n,null);return u.concat(".DeleteSingleLink"),u.postCore({body:Object(g.n)({SourceItemID:t,SourceListName:e,SourceWebUrl:r,TargetItemID:i,TargetListName:o,TargetWebUrl:s,TryDeleteReverseLink:a})})};var n;return t=n=o([h("_api/SP.RelatedItemManager")],t)}(N),vt=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),Object.defineProperty(t.prototype,"installedLanguages",{get:function(){return new St(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"globalInstalledLanguages",{get:function(){return new St(this,"globalinstalledlanguages")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"timeZone",{get:function(){return new Tt(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"timeZones",{get:function(){return new Ot(this)},enumerable:!0,configurable:!0}),t=o([h("regionalsettings")],t)}(R),St=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t=o([h("installedlanguages")],t)}(j),Tt=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,t.prototype.utcToLocalTime=function(e){var t;return t="string"==typeof e?e:e.toISOString(),this.clone(n,"utctolocaltime('"+t+"')").postCore().then(function(e){return Object(g.j)(e,"UTCToLocalTime")?e.UTCToLocalTime:e})},t.prototype.localTimeToUTC=function(e){var t;return t="string"==typeof e?e:Object(g.e)(e,"minute",-1*e.getTimezoneOffset()).toISOString(),this.clone(n,"localtimetoutc('"+t+"')").postCore().then(function(e){return Object(g.j)(e,"LocalTimeToUTC")?e.LocalTimeToUTC:e})};var n;return t=n=o([h("timezone")],t)}(R),Ot=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,t.prototype.getById=function(e){return this.clone(n,"GetById("+e+")").postCore({},c(Tt))};var n;return t=n=o([h("timezones")],t)}(j),wt=function(e){function t(n,r){return e.call(this,t.getBaseUrl(n),"_api/Microsoft.Sharepoint.Utilities.WebTemplateExtensions.SiteScriptUtility."+r)||this}return r(t,e),t.getBaseUrl=function(e){if("string"==typeof e)return e;var t=e,n=t.toUrl(),r=n.indexOf("_api/");return r<0?n:n.substr(0,r)},t.prototype.execute=function(e){return this.postCore({body:JSON.stringify(e),headers:{"Content-Type":"application/json;charset=utf-8"}})},t.prototype.createSiteDesign=function(e){return i(this,void 0,void 0,function(){return s(this,function(n){switch(n.label){case 0:return[4,this.clone(t,"CreateSiteDesign").execute({info:e})];case 1:return[2,n.sent()]}})})},t.prototype.applySiteDesign=function(e,n){return i(this,void 0,void 0,function(){return s(this,function(r){switch(r.label){case 0:return[4,this.clone(t,"ApplySiteDesign").execute({siteDesignId:e,webUrl:n})];case 1:return[2,r.sent()]}})})},t.prototype.getSiteDesigns=function(){return i(this,void 0,void 0,function(){return s(this,function(e){switch(e.label){case 0:return[4,this.clone(t,"GetSiteDesigns").execute({})];case 1:return[2,e.sent()]}})})},t.prototype.getSiteDesignMetadata=function(e){return i(this,void 0,void 0,function(){return s(this,function(n){switch(n.label){case 0:return[4,this.clone(t,"GetSiteDesignMetadata").execute({id:e})];case 1:return[2,n.sent()]}})})},t.prototype.updateSiteDesign=function(e){return i(this,void 0,void 0,function(){return s(this,function(n){switch(n.label){case 0:return[4,this.clone(t,"UpdateSiteDesign").execute({updateInfo:e})];case 1:return[2,n.sent()]}})})},t.prototype.deleteSiteDesign=function(e){return i(this,void 0,void 0,function(){return s(this,function(n){switch(n.label){case 0:return[4,this.clone(t,"DeleteSiteDesign").execute({id:e})];case 1:return[2,n.sent()]}})})},t.prototype.getSiteDesignRights=function(e){return i(this,void 0,void 0,function(){return s(this,function(n){switch(n.label){case 0:return[4,this.clone(t,"GetSiteDesignRights").execute({id:e})];case 1:return[2,n.sent()]}})})},t.prototype.grantSiteDesignRights=function(e,n,r){return void 0===r&&(r=1),i(this,void 0,void 0,function(){return s(this,function(o){switch(o.label){case 0:return[4,this.clone(t,"GrantSiteDesignRights").execute({grantedRights:r.toString(),id:e,principalNames:n})];case 1:return[2,o.sent()]}})})},t.prototype.revokeSiteDesignRights=function(e,n){return i(this,void 0,void 0,function(){return s(this,function(r){switch(r.label){case 0:return[4,this.clone(t,"RevokeSiteDesignRights").execute({id:e,principalNames:n})];case 1:return[2,r.sent()]}})})},t.prototype.addSiteDesignTask=function(e,n){return i(this,void 0,void 0,function(){return s(this,function(r){switch(r.label){case 0:return[4,this.clone(t,"AddSiteDesignTask").execute({webUrl:e,siteDesignId:n})];case 1:return[2,r.sent()]}})})},t.prototype.addSiteDesignTaskToCurrentWeb=function(e){return i(this,void 0,void 0,function(){return s(this,function(n){switch(n.label){case 0:return[4,this.clone(t,"AddSiteDesignTaskToCurrentWeb").execute({siteDesignId:e})];case 1:return[2,n.sent()]}})})},t.prototype.getSiteDesignTask=function(e){return i(this,void 0,void 0,function(){var n;return s(this,function(r){switch(r.label){case 0:return[4,this.clone(t,"GetSiteDesignTask").execute({taskId:e})];case 1:return n=r.sent(),[2,Object(g.j)(n,"ID")?n:null]}})})},t.prototype.getSiteDesignRun=function(e,n){return i(this,void 0,void 0,function(){return s(this,function(r){switch(r.label){case 0:return[4,this.clone(t,"GetSiteDesignRun").execute({webUrl:e,siteDesignId:n})];case 1:return[2,r.sent()]}})})},t.prototype.getSiteDesignRunStatus=function(e,n){return i(this,void 0,void 0,function(){return s(this,function(r){switch(r.label){case 0:return[4,this.clone(t,"GetSiteDesignRunStatus").execute({webUrl:e,runId:n})];case 1:return[2,r.sent()]}})})},t}(N),It=function(e){function t(n,r){return e.call(this,t.getBaseUrl(n),"_api/Microsoft.Sharepoint.Utilities.WebTemplateExtensions.SiteScriptUtility."+r)||this}return r(t,e),t.getBaseUrl=function(e){if("string"==typeof e)return e;var t=e,n=t.toUrl(),r=n.indexOf("_api/");return r<0?n:n.substr(0,r)},t.prototype.execute=function(e){return this.postCore({body:JSON.stringify(e)})},t.prototype.getSiteScripts=function(){return this.clone(t,"GetSiteScripts",!0).execute({})},t.prototype.createSiteScript=function(e,n,r){return i(this,void 0,void 0,function(){return s(this,function(o){switch(o.label){case 0:return[4,this.clone(t,"CreateSiteScript(Title=@title,Description=@desc)?@title='"+encodeURIComponent(e)+"'&@desc='"+encodeURIComponent(n)+"'").execute(r)];case 1:return[2,o.sent()]}})})},t.prototype.getSiteScriptMetadata=function(e){return i(this,void 0,void 0,function(){return s(this,function(n){switch(n.label){case 0:return[4,this.clone(t,"GetSiteScriptMetadata").execute({id:e})];case 1:return[2,n.sent()]}})})},t.prototype.deleteSiteScript=function(e){return i(this,void 0,void 0,function(){return s(this,function(n){switch(n.label){case 0:return[4,this.clone(t,"DeleteSiteScript").execute({id:e})];case 1:return n.sent(),[2]}})})},t.prototype.updateSiteScript=function(e,n){return i(this,void 0,void 0,function(){return s(this,function(r){switch(r.label){case 0:return n&&(e.Content=JSON.stringify(n)),[4,this.clone(t,"UpdateSiteScript").execute({updateInfo:e})];case 1:return[2,r.sent()]}})})},t.prototype.getSiteScriptFromList=function(e){return i(this,void 0,void 0,function(){return s(this,function(n){switch(n.label){case 0:return[4,this.clone(t,"GetSiteScriptFromList").execute({listUrl:e})];case 1:return[2,n.sent()]}})})},t.prototype.getSiteScriptFromWeb=function(e,n){return i(this,void 0,void 0,function(){return s(this,function(r){switch(r.label){case 0:return[4,this.clone(t,"getSiteScriptFromWeb").execute({webUrl:e,info:n})];case 1:return[2,r.sent()]}})})},t}(N),_t=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,t.prototype.add=function(e,t,r,o,i,s){void 0===r&&(r=""),void 0===o&&(o="STS"),void 0===i&&(i=1033),void 0===s&&(s=!0);var a={Description:r,Language:i,Title:e,Url:t,UseSamePermissionsAsParentSite:s,WebTemplate:o},c=Object(g.n)({parameters:Object(g.f)({__metadata:{type:"SP.WebCreationInformation"}},a)});return this.clone(n,"add").postCore({body:c}).then(function(e){return{data:e,web:new Ct(u(e).replace(/_api\/web\/?/i,""))}})};var n;return t=n=o([h("webs")],t)}(j),Pt=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t=o([h("webinfos")],t)}(j),Ct=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,t.fromUrl=function(e,t){return new n(a(e),t)},Object.defineProperty(t.prototype,"webs",{get:function(){return new _t(this)},enumerable:!0,configurable:!0}),t.prototype.getParentWeb=function(){var e=this;return this.select("ParentWeb/Id").expand("ParentWeb").get().then(function(t){var n=t.ParentWeb;return n?new ht(e.parentUrl).openWebById(n.Id):null})},t.prototype.getSubwebsFilteredForCurrentUser=function(e,t){return void 0===e&&(e=-1),void 0===t&&(t=-1),this.clone(_t,"getSubwebsFilteredForCurrentUser(nWebTemplateFilter="+e+",nConfigurationFilter="+t+")")},Object.defineProperty(t.prototype,"allProperties",{get:function(){return this.clone(R,"allproperties")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"webinfos",{get:function(){return new Pt(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"contentTypes",{get:function(){return new _e(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"lists",{get:function(){return new Ge(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"fields",{get:function(){return new Ue(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"features",{get:function(){return new pt(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"availablefields",{get:function(){return new Ue(this,"availablefields")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"navigation",{get:function(){return new mt(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"siteUsers",{get:function(){return new A(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"siteGroups",{get:function(){return new F(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"siteUserInfoList",{get:function(){return new We(this,"siteuserinfolist")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"regionalSettings",{get:function(){return new vt(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"currentUser",{get:function(){return new L(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"folders",{get:function(){return new we(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"userCustomActions",{get:function(){return new Be(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"roleDefinitions",{get:function(){return new G(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"relatedItems",{get:function(){return bt.FromUrl(this.toUrl())},enumerable:!0,configurable:!0}),t.prototype.createBatch=function(){return new lt(this.parentUrl)},Object.defineProperty(t.prototype,"rootFolder",{get:function(){return new Ie(this,"rootFolder")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"associatedOwnerGroup",{get:function(){return new M(this,"associatedownergroup")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"associatedMemberGroup",{get:function(){return new M(this,"associatedmembergroup")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"associatedVisitorGroup",{get:function(){return new M(this,"associatedvisitorgroup")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"defaultDocumentLibrary",{get:function(){return new We(this,"DefaultDocumentLibrary")},enumerable:!0,configurable:!0}),t.prototype.getFolderById=function(e){return new Ie(this,"getFolderById('"+e+"')")},t.prototype.getFolderByServerRelativeUrl=function(e){return new Ie(this,"getFolderByServerRelativeUrl('"+e+"')")},t.prototype.getFolderByServerRelativePath=function(e){return new Ie(this,"getFolderByServerRelativePath(decodedUrl='"+e+"')")},t.prototype.getFileById=function(e){return new tt(this,"getFileById('"+e+"')")},t.prototype.getFileByServerRelativeUrl=function(e){return new tt(this,"getFileByServerRelativeUrl('"+e+"')")},t.prototype.getFileByServerRelativePath=function(e){return new tt(this,"getFileByServerRelativePath(decodedUrl='"+e+"')")},t.prototype.getList=function(e){return new We(this,"getList('"+e+"')")},t.prototype.update=function(e){var t=this,n=Object(g.n)(Object(g.f)({__metadata:{type:"SP.Web"}},e));return this.postCore({body:n,headers:{"X-HTTP-Method":"MERGE"}}).then(function(e){return{data:e,web:t}})},t.prototype.delete=function(){return e.prototype.deleteCore.call(this)},t.prototype.applyTheme=function(e,t,r,o){var i=Object(g.n)({backgroundImageUrl:r,colorPaletteUrl:e,fontSchemeUrl:t,shareGenerated:o});return this.clone(n,"applytheme").postCore({body:i})},t.prototype.applyWebTemplate=function(e){var t=this.clone(n,"applywebtemplate");return t.concat("(@t)"),t.query.set("@t",e),t.postCore()},t.prototype.ensureUser=function(e){var t=Object(g.n)({logonName:e});return this.clone(n,"ensureuser").postCore({body:t}).then(function(e){return{data:e,user:new k(u(e))}})},t.prototype.availableWebTemplates=function(e,t){return void 0===e&&(e=1033),void 0===t&&(t=!0),new j(this,"getavailablewebtemplates(lcid="+e+", doincludecrosslanguage="+t+")")},t.prototype.getCatalog=function(e){return this.clone(n,"getcatalog("+e+")").select("Id").get().then(function(e){return new We(u(e))})},t.prototype.getChanges=function(e){var t=Object(g.n)({query:Object(g.f)({__metadata:{type:"SP.ChangeQuery"}},e)});return this.clone(n,"getchanges").postCore({body:t})},Object.defineProperty(t.prototype,"customListTemplate",{get:function(){return new j(this,"getcustomlisttemplates")},enumerable:!0,configurable:!0}),t.prototype.getUserById=function(e){return new k(this,"getUserById("+e+")")},t.prototype.mapToIcon=function(e,t,r){return void 0===t&&(t=0),void 0===r&&(r=""),this.clone(n,"maptoicon(filename='"+e+"', progid='"+r+"', size="+t+")").get()},t.prototype.getStorageEntity=function(e){return this.clone(n,"getStorageEntity('"+e+"')").get()},t.prototype.setStorageEntity=function(e,t,r,o){return void 0===r&&(r=""),void 0===o&&(o=""),this.clone(n,"setStorageEntity").postCore({body:Object(g.n)({comments:o,description:r,key:e,value:t})})},t.prototype.removeStorageEntity=function(e){return this.clone(n,"removeStorageEntity('"+e+"')").postCore()},t.prototype.getAppCatalog=function(e){return new ut(e||this)},t.prototype.getSiteCollectionAppCatalog=function(e){return new ut(e||this,"_api/web/sitecollectionappcatalog/AvailableApps")},t.prototype.getClientSideWebParts=function(){return this.clone(j,"GetClientSideWebParts").get()},t.prototype.addClientSidePage=function(e,t){return void 0===t&&(t=e.replace(/\.[^\/.]+$/,"")),xt.create(this,e,t)},t.prototype.addClientSidePageByPath=function(e,t){return void 0===t&&(t=e.replace(/\.[^\/.]+$/,"")),xt.create(this,e,t)},t.prototype.createDefaultAssociatedGroups=function(e,t,r){var o=this.clone(n,"createDefaultAssociatedGroups(userLogin=@u,userLogin2=@v,groupNameSeed=@s)");return o.query.set("@u","'"+encodeURIComponent(e||"")+"'"),o.query.set("@v","'"+encodeURIComponent(t||"")+"'"),o.query.set("@s","'"+encodeURIComponent(r||"")+"'"),o.postCore()},t.prototype.hubSiteData=function(e){return void 0===e&&(e=!1),i(this,void 0,void 0,function(){return s(this,function(t){return[2,this.clone(n,"hubSiteData("+e+")").get().then(function(e){return JSON.parse(e)})]})})},t.prototype.syncHubSiteTheme=function(){return this.clone(n,"syncHubSiteTheme").postCore()},t.prototype.getSiteDesignRuns=function(e){return new wt(this,"").getSiteDesignRun(void 0,e)},t.prototype.getSiteScript=function(e){return new It(this,"").getSiteScriptFromWeb(void 0,e)},t.prototype.addSiteDesignTask=function(e){return new wt(this,"").addSiteDesignTaskToCurrentWeb(e)},t.prototype.getSiteDesignRunStatus=function(e){return new wt(this,"").getSiteDesignRunStatus(void 0,e)};var n;return t=n=o([h("_api/web")],t)}(fe);!function(e){e[e.NotPromoted=0]="NotPromoted",e[e.PromoteOnPublish=1]="PromoteOnPublish",e[e.Promoted=2]="Promoted"}(at||(at={}));var Et,xt=function(e){function t(n,r,o,i,s,u){void 0===i&&(i=!1),void 0===s&&(s=[]),void 0===u&&(u=!1);var c=e.call(this,n,r)||this;return c.json=o,c.sections=s,c.commentsDisabled=u,c._bannerImageDirty=!1,"string"==typeof n?(c._parentUrl="",c._url=Object(g.d)(a(n),r)):c.extend(t.initFrom(n,null),r),c._pageSettings={controlType:0,pageSettingsSlice:{isDefaultDescription:!0,isDefaultThumbnail:!0}},c._layoutPart=t.getDefaultLayoutPart(),void 0===o||i||c.fromJSON(o),c}return r(t,e),t.create=function(e,n,r,o,a){return void 0===o&&(o="Article"),void 0===a&&(a=0),i(this,void 0,void 0,function(){var i,u;return s(this,function(s){switch(s.label){case 0:return n=n.replace(/\.aspx$/i,""),[4,t.initFrom(e,"_api/sitepages/pages").postCore({body:Object(g.n)(Object.assign(d("SP.Publishing.SitePage"),{PageLayoutType:o,PromotedState:a}))})];case 1:return i=s.sent(),u=new t(e,"",i),u.title=n,[4,u.save(!1)];case 2:return s.sent(),u.title=r,[2,u]}})})},t.fromFile=function(e){return e.getItem().then(function(n){return new t(a(e.toUrl()),"",{Id:n.Id},!0).configureFrom(e).load()})},t.getDefaultLayoutPart=function(){return{dataVersion:"1.4",description:"Title Region Description",id:"cbe7b0a9-3504-44dd-a3a3-0e5cacd07788",instanceId:"cbe7b0a9-3504-44dd-a3a3-0e5cacd07788",properties:{authors:[],layoutType:"FullWidthImage",showPublishDate:!1,showTopicHeader:!1,textAlignment:"Left",title:"",topicHeader:""},serverProcessedContent:{htmlStrings:{},searchablePlainTexts:{},imageSources:{},links:{}},title:"Title area"}},t.initFrom=function(e,n){return new t(a(e.toUrl()),n).configureFrom(e)},Object.defineProperty(t.prototype,"pageLayout",{get:function(){return this.json.PageLayoutType},set:function(e){this.json.PageLayoutType=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"bannerImageUrl",{get:function(){return this.json.BannerImageUrl},set:function(e){this.json.BannerImageUrl=e,this._bannerImageDirty=!0},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"bannerImageSourceType",{get:function(){return this._layoutPart.properties.imageSourceType},set:function(e){this._layoutPart.properties.imageSourceType=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"topicHeader",{get:function(){return Object(g.q)(this.json.TopicHeader)?this.json.TopicHeader:""},set:function(e){this.json.TopicHeader=e,this._layoutPart.properties.topicHeader=e,Object(g.r)(e)&&(this.showTopicHeader=!1)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"title",{get:function(){return this._layoutPart.properties.title},set:function(e){this.json.Title=e,this._layoutPart.properties.title=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"layoutType",{get:function(){return this._layoutPart.properties.layoutType},set:function(e){this._layoutPart.properties.layoutType=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"headerTextAlignment",{get:function(){return this._layoutPart.properties.textAlignment},set:function(e){this._layoutPart.properties.textAlignment=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"showTopicHeader",{get:function(){return this._layoutPart.properties.showTopicHeader},set:function(e){this._layoutPart.properties.showTopicHeader=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"showPublishDate",{get:function(){return this._layoutPart.properties.showPublishDate},set:function(e){this._layoutPart.properties.showPublishDate=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"hasVerticalSection",{get:function(){return this.sections.findIndex(function(e){return 2===e.layoutIndex})>-1},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"verticalSection",{get:function(){return this.hasVerticalSection?this.addVerticalSection():null},enumerable:!0,configurable:!0}),t.prototype.addSection=function(){var e=new Nt(this,f(this.sections),1);return this.sections.push(e),e},t.prototype.addVerticalSection=function(){var e=this.sections.findIndex(function(e){return 2===e.layoutIndex});if(e>-1)return this.sections[e];var t=new Nt(this,f(this.sections),2);return this.sections.push(t),t},t.prototype.fromJSON=function(e){this.json=e;var t=JSON.parse(e.CanvasContent1),n=JSON.parse(e.LayoutWebpartsContent);return n&&n.length>0&&(this._layoutPart=n[0]),this.setControls(t),this},t.prototype.load=function(){var e=this;return this.getItem("Id","CommentsDisabled").then(function(t){return new N(e,"_api/sitepages/pages("+t.Id+")").get().then(function(n){return e.commentsDisabled=t.CommentsDisabled,e.fromJSON(n)})})},t.prototype.save=function(e){var n=this;if(void 0===e&&(e=!0),null===this.json.Id)throw Error("The id for this page is null. If you want to create a new page, please use ClientSidePage.Create");var r=Promise.resolve({});return this._bannerImageDirty&&(r=r.then(function(e){return new Promise(function(e,t){var r=n.json.BannerImageUrl;Object(g.m)(r)&&(r=r.replace(/^https?:\/\/[a-z0-9\.]*?\.[a-z]{2,3}\//i,"/"));var o=new ht(a(n.toUrl())),i=new Ct(a(n.toUrl())),s=i.getFileByServerRelativePath(r),u="",c="",l="",p="",d="";Promise.all([o.select("Id","Url").get().then(function(e){return u=e.Id}),i.select("Id","Url").get().then(function(e){c=e.Id,d=e.Url}),s.listItemAllFields.select("UniqueId","ParentList/Id").expand("ParentList").get().then(function(e){l=e.UniqueId,p=e.ParentList.Id})]).then(function(){var t=new N(d,"_layouts/15/getpreview.ashx");t.query.set("guidSite",""+u),t.query.set("guidWeb",""+c),t.query.set("guidFile",""+l),n.bannerImageUrl=t.toUrlAndQuery(),Object(g.q)(n._layoutPart.serverProcessedContent)||(n._layoutPart.serverProcessedContent={}),n._layoutPart.serverProcessedContent.imageSources={imageSource:r},Object(g.q)(n._layoutPart.serverProcessedContent.customMetadata)||(n._layoutPart.serverProcessedContent.customMetadata={}),n._layoutPart.serverProcessedContent.customMetadata.imageSource={listId:p,siteId:u,uniqueId:l,webId:c},n._layoutPart.properties.webId=c,n._layoutPart.properties.siteId=u,n._layoutPart.properties.listId=p,n._layoutPart.properties.uniqueId=l,e()}).catch(t)})})),this.json.IsPageCheckedOutToCurrentUser||(r=r.then(function(e){return t.initFrom(n,"_api/sitepages/pages("+n.json.Id+")/checkoutpage").postCore()})),r=r.then(function(e){var r=Object.assign(d("SP.Publishing.SitePage"),{AuthorByline:n.json.AuthorByline||[],BannerImageUrl:n.bannerImageUrl,CanvasContent1:n.getCanvasContent1(),LayoutWebpartsContent:n.getLayoutWebpartsContent(),Title:n.title,TopicHeader:n.topicHeader}),o=t.initFrom(n,"_api/sitepages/pages("+n.json.Id+")/savepage");return o.configure({headers:{"if-match":"*"}}),o.postCore({body:Object(g.n)(r)})}),e&&(r=r.then(function(e){return t.initFrom(n,"_api/sitepages/pages("+n.json.Id+")/publish").postCore()}).then(function(e){e&&(n.json.IsPageCheckedOutToCurrentUser=!1)})),r=r.then(function(e){n._bannerImageDirty=!1})},t.prototype.discardPageCheckout=function(){return i(this,void 0,void 0,function(){var e;return s(this,function(n){switch(n.label){case 0:if(null===this.json.Id)throw Error("The id for this page is null. If you want to create a new page, please use ClientSidePage.Create");return[4,t.initFrom(this,"_api/sitepages/pages("+this.json.Id+")/discardPage").postCore({body:Object(g.n)(d("SP.Publishing.SitePage"))})];case 1:return e=n.sent(),this.fromJSON(e),[2]}})})},t.prototype.promoteToNews=function(){return i(this,void 0,void 0,function(){return s(this,function(e){return[2,this.promoteNewsImpl("promoteToNews")]})})},t.prototype.enableComments=function(){var e=this;return this.setCommentsOn(!0).then(function(t){return e.commentsDisabled=!1,t})},t.prototype.disableComments=function(){var e=this;return this.setCommentsOn(!1).then(function(t){return e.commentsDisabled=!0,t})},t.prototype.findControlById=function(e){return this.findControl(function(t){return t.id===e})},t.prototype.findControl=function(e){for(var t=0;t3?{}:{zoneEmphasis:e}},t.prototype.setCommentsOn=function(e){return this.getItem().then(function(t){return new ze(t,"SetCommentsDisabled("+!e+")").update({})})},t.prototype.promoteNewsImpl=function(e){return i(this,void 0,void 0,function(){var n,r;return s(this,function(o){switch(o.label){case 0:return Object(g.r)(this.json.VersionInfo.LastVersionCreatedBy)?(n=new Date(this.json.VersionInfo.LastVersionCreated),n.getFullYear()<2e3?[4,this.save(!0)]:[3,2]):[3,2];case 1:o.sent(),o.label=2;case 2:if(null===this.json.Id)throw Error("The id for this page is null. If you want to create a new page, please use ClientSidePage.Create");return[4,t.initFrom(this,"_api/sitepages/pages("+this.json.Id+")/"+e).postCore({body:Object(g.n)(d("SP.Publishing.SitePage"))})];case 3:return r=o.sent(),[2,r]}})})},t.prototype.mergePartToTree=function(e,t){var n=null,r=12,o=0,i=0,s=1;t&&(Object(g.j)(t,"zoneIndex")&&(i=t.zoneIndex),Object(g.j)(t,"sectionIndex")&&(o=t.sectionIndex),Object(g.j)(t,"sectionFactor")&&(r=t.sectionFactor),Object(g.j)(t,"layoutIndex")&&(s=t.layoutIndex));var a=e.data&&e.data.emphasis&&e.data.emphasis.zoneEmphasis?e.data.emphasis.zoneEmphasis:0,u=this.getOrCreateSection(i,s,a),c=u.columns.filter(function(e){return e.order===o});n=c.length<1?u.addColumn(r,s):c[0],e.column=n,n.addControl(e)},t.prototype.mergeColumnToTree=function(e){var t=Object(g.j)(e.data,"position")&&Object(g.j)(e.data.position,"zoneIndex")?e.data.position.zoneIndex:0,n=Object(g.j)(e.data,"position")&&Object(g.j)(e.data.position,"layoutIndex")?e.data.position.layoutIndex:1,r=this.getOrCreateSection(t,n,e.data.emphasis.zoneEmphasis||0);e.section=r,r.columns.push(e)},t.prototype.getOrCreateSection=function(e,t,n){var r=null,o=this.sections.filter(function(n){return n.order===e&&n.layoutIndex===t});return o.length<1?(r=2===t?this.addVerticalSection():this.addSection(),r.order=e,r.emphasis=n):r=o[0],r},t.prototype.getItem=function(){for(var e=this,n=[],r=0;r")||(e="

"+e+"

"),this.data.innerHTML=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"order",{get:function(){return this.data.position.controlIndex},set:function(e){this.data.position.controlIndex=e},enumerable:!0,configurable:!0}),t.prototype.onColumnChange=function(e){this.data.position.sectionFactor=e.factor,this.data.position.controlIndex=f(e.controls),this.data.position.zoneIndex=e.data.position.zoneIndex,this.data.position.sectionIndex=e.order,this.data.position.layoutIndex=e.data.position.layoutIndex},t.Default={addedFromPersistedData:!1,anchorComponentId:"",controlType:4,displayMode:2,editorType:"CKEditor",emphasis:{},id:"",innerHTML:"",position:{controlIndex:1,layoutIndex:1,sectionFactor:12,sectionIndex:1,zoneIndex:1}},t}(Rt),Ut=function(e){function t(n){return void 0===n&&(n=JSON.parse(JSON.stringify(t.Default))),e.call(this,n)||this}return r(t,e),t.fromComponentDef=function(e){var n=new t;return n.import(e),n},Object.defineProperty(t.prototype,"title",{get:function(){return this.data.webPartData.title},set:function(e){this.data.webPartData.title=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"description",{get:function(){return this.data.webPartData.description},set:function(e){this.data.webPartData.description=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"order",{get:function(){return this.data.position.controlIndex},set:function(e){this.data.position.controlIndex=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"height",{get:function(){return this.data.reservedHeight},set:function(e){this.data.reservedHeight=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"width",{get:function(){return this.data.reservedWidth},set:function(e){this.data.reservedWidth=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"dataVersion",{get:function(){return this.data.webPartData.dataVersion},set:function(e){this.data.webPartData.dataVersion=e},enumerable:!0,configurable:!0}),t.prototype.setProperties=function(e){return this.data.webPartData.properties=Object(g.f)(this.data.webPartData.properties,e),this},t.prototype.getProperties=function(){return this.data.webPartData.properties},t.prototype.onColumnChange=function(e){this.data.position={controlIndex:f(e.controls),layoutIndex:e.data.position.layoutIndex,sectionFactor:e.factor,sectionIndex:e.data.position.sectionIndex,zoneIndex:e.data.position.zoneIndex}},t.prototype.import=function(e){var t=Object(g.h)(),n=e.Id.replace(/^\{|\}$/g,"").toLowerCase(),r=JSON.parse(e.Manifest),o=r.preconfiguredEntries[0];this.setData(Object.assign({},this.data,{id:t,webPartData:{dataVersion:"1.0",description:o.description.default,id:n,instanceId:t,properties:o.properties,title:o.title.default},webPartId:n}))},t.Default={addedFromPersistedData:!1,controlType:3,displayMode:2,emphasis:{},id:null,position:{controlIndex:1,layoutIndex:1,sectionFactor:12,sectionIndex:1,zoneIndex:1},reservedHeight:500,reservedWidth:500,webPartData:null,webPartId:null},t}(Rt),kt=(new Map([["text","Querytext"],["template","QueryTemplate"],["sourceId","SourceId"],["trimDuplicatesIncludeId",""],["startRow",""],["rowLimit",""],["rankingModelId",""],["rowsPerPage",""],["selectProperties",""],["culture",""],["timeZoneId",""],["refinementFilters",""],["refiners",""],["hiddenConstraints",""],["sortList",""],["timeout",""],["hithighlightedProperties",""],["clientType",""],["personalizationData",""],["resultsURL",""],["queryTag",""],["properties",""],["queryTemplatePropertiesUrl",""],["reorderingRules",""],["hitHighlightedMultivaluePropertyLimit",""],["collapseSpecification",""],["uiLanguage",""],["desiredSnippetLength",""],["maxSnippetLength",""],["summaryLength",""]]),new Map([]),function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.execute=function(e){var t=this,n=this.parseQuery(e),r=Object(g.n)({request:Object(g.f)(d("Microsoft.Office.Server.Search.REST.SearchRequest"),Object.assign({},n,{HitHighlightedProperties:this.fixArrProp(n.HitHighlightedProperties),Properties:this.fixArrProp(n.Properties),RefinementFilters:this.fixArrProp(n.RefinementFilters),ReorderingRules:this.fixArrProp(n.ReorderingRules),SelectProperties:this.fixArrProp(n.SelectProperties),SortList:this.fixArrProp(n.SortList)}))});if(this._useCaching){this._forceCaching=!0;var o="PnPjs.SearchWithCaching("+Object(g.i)(r)+")";Object(g.q)(this._cachingOptions)?/\/_api\/search\/postquery$/i.test(this._cachingOptions.key)&&(this._cachingOptions.key=o):this._cachingOptions=new v.c(o)}return this.postCore({body:r}).then(function(e){return new Lt(e,t.toUrl(),n)})},t.prototype.fixArrProp=function(e){return void 0===e?{results:[]}:(e=Object(g.k)(e)?e:[e],Object(g.j)(e,"results")?e:{results:e})},t.prototype.parseQuery=function(e){return"string"==typeof e?{Querytext:e}:e.toSearchQuery?e.toSearchQuery():e},t=o([h("_api/search/postquery")],t)}(R)),Lt=function(){function e(e,t,n,r,o){void 0===r&&(r=null),void 0===o&&(o=null),this._url=t,this._query=n,this._raw=r,this._primary=o,this._raw=e.postquery?e.postquery:e}return Object.defineProperty(e.prototype,"ElapsedTime",{get:function(){return this.RawSearchResults.ElapsedTime},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"RowCount",{get:function(){return this.RawSearchResults.PrimaryQueryResult.RelevantResults.RowCount},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"TotalRows",{get:function(){return this.RawSearchResults.PrimaryQueryResult.RelevantResults.TotalRows},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"TotalRowsIncludingDuplicates",{get:function(){return this.RawSearchResults.PrimaryQueryResult.RelevantResults.TotalRowsIncludingDuplicates},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"RawSearchResults",{get:function(){return this._raw},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"PrimarySearchResults",{get:function(){return null===this._primary&&(this._primary=this.formatSearchResults(this._raw.PrimaryQueryResult.RelevantResults.Table.Rows)),this._primary},enumerable:!0,configurable:!0}),e.prototype.getPage=function(e,t){if(this.TotalRowsthis.TotalRows?Promise.resolve(null):new kt(this._url,null).execute(r)},e.prototype.formatSearchResults=function(e){for(var t=new Array,n=e.results?e.results:e,r=0,o=n;r0&&(n.properties=Object(g.f)(n.properties,{To:{results:e.To}})),e.CC&&e.CC.length>0&&(n.properties=Object(g.f)(n.properties,{CC:{results:e.CC}})),e.BCC&&e.BCC.length>0&&(n.properties=Object(g.f)(n.properties,{BCC:{results:e.BCC}})),e.AdditionalHeaders&&(n.properties=Object(g.f)(n.properties,{AdditionalHeaders:e.AdditionalHeaders})),this.clone(t,"SendEmail",!0).excute(n)},t.prototype.getCurrentUserEmailAddresses=function(){return this.clone(t,"GetCurrentUserEmailAddresses",!0).excute({}).then(function(e){return Object(g.j)(e,"GetCurrentUserEmailAddresses")?e.GetCurrentUserEmailAddresses:e})},t.prototype.resolvePrincipal=function(e,n,r,o,i,s){void 0===s&&(s=!1);var a={addToUserInfoList:i,input:e,inputIsEmailOnly:o,matchUserInfoList:s,scopes:n,sources:r};return this.clone(t,"ResolvePrincipalInCurrentContext",!0).excute(a).then(function(e){return Object(g.j)(e,"ResolvePrincipalInCurrentContext")?e.ResolvePrincipalInCurrentContext:e})},t.prototype.searchPrincipals=function(e,n,r,o,i){var s={groupName:o,input:e,maxCount:i,scopes:n,sources:r};return this.clone(t,"SearchPrincipalsUsingContextWeb",!0).excute(s).then(function(e){return Object(g.j)(e,"SearchPrincipalsUsingContextWeb")?e.SearchPrincipalsUsingContextWeb:e})},t.prototype.createEmailBodyForInvitation=function(e){var n={pageAddress:e};return this.clone(t,"CreateEmailBodyForInvitation",!0).excute(n).then(function(e){return Object(g.j)(e,"CreateEmailBodyForInvitation")?e.CreateEmailBodyForInvitation:e})},t.prototype.expandGroupsToPrincipals=function(e,n){void 0===n&&(n=30);var r={inputs:e,maxCount:n};return this.clone(t,"ExpandGroupsToPrincipals",!0).excute(r).then(function(e){return Object(g.j)(e,"ExpandGroupsToPrincipals")?e.ExpandGroupsToPrincipals:e})},t.prototype.createWikiPage=function(e){return this.clone(t,"CreateWikiPageInContextWeb",!0).excute({parameters:e}).then(function(e){return{data:Object(g.j)(e,"CreateWikiPageInContextWeb")?e.CreateWikiPageInContextWeb:e,file:new tt(u(e))}})},t.prototype.containsInvalidFileFolderChars=function(e,n){return void 0===n&&(n=!1),n?(t.InvalidFileFolderNameCharsOnPremiseRegex.lastIndex=0,t.InvalidFileFolderNameCharsOnPremiseRegex.test(e)):(t.InvalidFileFolderNameCharsOnlineRegex.lastIndex=0,t.InvalidFileFolderNameCharsOnlineRegex.test(e))},t.prototype.stripInvalidFileFolderChars=function(e,n,r){return void 0===n&&(n=""),void 0===r&&(r=!1),r?e.replace(t.InvalidFileFolderNameCharsOnPremiseRegex,n):e.replace(t.InvalidFileFolderNameCharsOnlineRegex,n)},t.InvalidFileFolderNameCharsOnlineRegex=/["*:<>?\/\\|\x00-\x1f\x7f-\x9f]/g,t.InvalidFileFolderNameCharsOnPremiseRegex=/["#%*:<>?\/\\|\x00-\x1f\x7f-\x9f]/g,t}(N),Jt=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.getById=function(e){return new Yt(this,"GetById?hubSiteId='"+e+"'")},t=o([h("_api/hubsites")],t)}(j),Yt=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(R),$t=function(){function e(e,t){void 0===e&&(e={}),void 0===t&&(t=""),this._options=e,this._baseUrl=t}return e.prototype.configure=function(t,n){return void 0===n&&(n=""),new e(t,n)},e.prototype.setup=function(e){l(e)},e.prototype.searchSuggest=function(e){var t;return t="string"==typeof e?{querytext:e}:e,this.create(Bt).execute(t)},e.prototype.search=function(e){return this.create(kt).execute(e)},e.prototype.searchWithCaching=function(e,t){return this.create(kt).usingCaching(t).execute(e)},Object.defineProperty(e.prototype,"site",{get:function(){return this.create(ht)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"web",{get:function(){return this.create(Ct)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"profiles",{get:function(){return this.create(qt)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"social",{get:function(){return this.create(Ht)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"navigation",{get:function(){return this.create(gt)},enumerable:!0,configurable:!0}),e.prototype.createBatch=function(){return this.web.createBatch()},Object.defineProperty(e.prototype,"utility",{get:function(){return this.create(Xt,"")},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"siteScripts",{get:function(){return this.create(It,"")},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"siteDesigns",{get:function(){return this.create(wt,"")},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"hubSites",{get:function(){return this.create(Jt)},enumerable:!0,configurable:!0}),e.prototype.getTenantAppCatalogWeb=function(){var e=this;return this.create(Ct,"_api/SP_TenantSettings_Current").get().then(function(t){return new Ct(t.CorporateCatalogUrl).configure(e._options)})},e.prototype.create=function(e,t){return new e(this._baseUrl,t).configure(this._options)},e}(),Zt=new $t}).call(t,n(1))},function(e,t){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),n.d(t,"UserCustomActionMegaMenuId",function(){return f});var r=n(6),o=(n.n(r),n(7)),i=(n.n(o),n(8)),s=(n.n(i),n(9)),a=(n.n(s),n(10)),u=n(18),c=(n(22),this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}()),l=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},p=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))(function(o,i){function s(e){try{u(r.next(e))}catch(e){i(e)}}function a(e){try{u(r.throw(e))}catch(e){i(e)}}function u(e){e.done?o(e.value):new n(function(t){t(e.value)}).then(s,a)}u((r=r.apply(e,t||[])).next())})},d=this&&this.__generator||function(e,t){function n(e){return function(t){return r([e,t])}}function r(n){if(o)throw new TypeError("Generator is already executing.");for(;u;)try{if(o=1,i&&(s=i[2&n[0]?"return":n[0]?"throw":"next"])&&!(s=s.call(i,n[1])).done)return s;switch(i=0,s&&(n=[0,s.value]),n[0]){case 0:case 1:s=n;break;case 4:return u.label++,{value:n[1],done:!1};case 5:u.label++,i=n[1],n=[0];continue;case 7:n=u.ops.pop(),u.trys.pop();continue;default:if(s=u.trys,!(s=s.length>0&&s[s.length-1])&&(6===n[0]||2===n[0])){u=0;continue}if(3===n[0]&&(!s||n[1]>s[0]&&n[1]\n "),[3,4];case 4:return[2]}})})},t.prototype._loadExternalCss=function(e){var t=document.getElementById("mega-menu-additional-css-34FAB720");if(e&&""!==e.trim()){if(!t){var n=document.getElementsByTagName("head")[0];t=document.createElement("link"),t.rel="stylesheet",t.type="text/css",t.id="mega-menu-additional-css-34FAB720",t.onload=function(){o.Log.info(h,"External CSS loaded successfully from: "+e)},t.onerror=function(){console.warn("Failed to load external CSS from: "+e)},n.appendChild(t)}t.href=e}else t&&t.remove()},t.prototype._onDispose=function(){console.log("[MegaMenuApplicationCustomizer._onDispose] Disposed custom top placeholder.")},l([r.override],t.prototype,"onInit",null),t}(i.BaseApplicationCustomizer);t.default=y},function(e,t,n){"use strict";(function(e){function r(e,t){function n(){this.constructor=e}w(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}function o(e,t){for(var n=[],r=2;r0&&(n=60*this.defaultTimeoutMinutes),t=i(new Date,"second",n)}return f({pnp:1,expiration:t,value:e})},e.prototype.cacheExpirationHandler=function(){var e=this;this.deleteExpired().then(function(t){setTimeout(o(e,e.cacheExpirationHandler),R.cacheExpirationIntervalMilliseconds)}).catch(function(e){console.error(e)})},e}(),U=function(){function e(e){void 0===e&&(e=new Map),this._store=e}return Object.defineProperty(e.prototype,"length",{get:function(){return this._store.size},enumerable:!0,configurable:!0}),e.prototype.clear=function(){this._store.clear()},e.prototype.getItem=function(e){return this._store.get(e)},e.prototype.key=function(e){return Array.from(this._store)[e][0]},e.prototype.removeItem=function(e){this._store.delete(e)},e.prototype.setItem=function(e,t){this._store.set(e,t)},e}(),k=function(){function e(e,t){void 0===e&&(e=null),void 0===t&&(t=null),this._local=e,this._session=t}return Object.defineProperty(e.prototype,"local",{get:function(){return null===this._local&&(this._local=this.getStore("local")),this._local},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"session",{get:function(){return null===this._session&&(this._session=this.getStore("session")),this._session},enumerable:!0,configurable:!0}),e.prototype.getStore=function(e){return new A("local"===e?"undefined"==typeof localStorage?new U:localStorage:"undefined"==typeof sessionStorage?new U:sessionStorage)},e}()}).call(t,n(1))},function(e,t,n){"use strict";n.d(t,"a",function(){return o});/** + * @license + * v1.3.11 + * MIT (https://github.com/pnp/pnpjs/blob/master/LICENSE) + * Copyright (c) 2020 Microsoft + * docs: https://pnp.github.io/pnpjs/ + * source: https://github.com/pnp/pnpjs + * bugs: https://github.com/pnp/pnpjs/issues + */ +var r,o=function(){function e(){}return Object.defineProperty(e,"activeLogLevel",{get:function(){return e.instance.activeLogLevel},set:function(t){e.instance.activeLogLevel=t},enumerable:!0,configurable:!0}),Object.defineProperty(e,"instance",{get:function(){return void 0!==e._instance&&null!==e._instance||(e._instance=new i),e._instance},enumerable:!0,configurable:!0}),e.subscribe=function(){for(var t=[],n=0;n0&&s[s.length-1])&&(6===n[0]||2===n[0])){u=0;continue}if(3===n[0]&&(!s||n[1]>s[0]&&n[1]-1},n.prototype.getCachedToken=function(e){if(!this._hasResource(e))return null;var t=this._getItem(this.CONSTANTS.STORAGE.ACCESS_TOKEN_KEY+e),n=this._getItem(this.CONSTANTS.STORAGE.EXPIRATION_KEY+e),r=this.config.expireOffsetSeconds||300;return n&&n>this._now()+r?t:(this._saveItem(this.CONSTANTS.STORAGE.ACCESS_TOKEN_KEY+e,""),this._saveItem(this.CONSTANTS.STORAGE.EXPIRATION_KEY+e,0),null)},n.prototype.getCachedUser=function(){if(this._user)return this._user;var e=this._getItem(this.CONSTANTS.STORAGE.IDTOKEN);return this._user=this._createUser(e),this._user},n.prototype.registerCallback=function(e,t,n){this._activeRenewals[t]=e,this._callBacksMappedToRenewStates[e]||(this._callBacksMappedToRenewStates[e]=[]);var r=this;this._callBacksMappedToRenewStates[e].push(n),this._callBackMappedToRenewStates[e]||(this._callBackMappedToRenewStates[e]=function(n,o,i,s){r._activeRenewals[t]=null;for(var a=0;a-1)){var t=this._user.profile.upn.split("@");e+="&domain_hint="+encodeURIComponent(t[t.length-1])}return e},n.prototype._createUser=function(e){var t=null,n=this._extractIdToken(e);return n&&n.hasOwnProperty("aud")&&(n.aud.toLowerCase()===this.config.clientId.toLowerCase()?(t={userName:"",profile:n},n.hasOwnProperty("upn")?t.userName=n.upn:n.hasOwnProperty("email")&&(t.userName=n.email)):this.warn("IdToken has invalid aud field")),t},n.prototype._getHash=function(e){return e.indexOf("#/")>-1?e=e.substring(e.indexOf("#/")+2):e.indexOf("#")>-1&&(e=e.substring(1)),e},n.prototype.isCallback=function(e){e=this._getHash(e);var t=this._deserialize(e);return t.hasOwnProperty(this.CONSTANTS.ERROR_DESCRIPTION)||t.hasOwnProperty(this.CONSTANTS.ACCESS_TOKEN)||t.hasOwnProperty(this.CONSTANTS.ID_TOKEN)},n.prototype.getLoginError=function(){return this._getItem(this.CONSTANTS.STORAGE.LOGIN_ERROR)},n.prototype.getRequestInfo=function(e){e=this._getHash(e);var t=this._deserialize(e),n={valid:!1,parameters:{},stateMatch:!1,stateResponse:"",requestType:this.REQUEST_TYPE.UNKNOWN};if(t&&(n.parameters=t,t.hasOwnProperty(this.CONSTANTS.ERROR_DESCRIPTION)||t.hasOwnProperty(this.CONSTANTS.ACCESS_TOKEN)||t.hasOwnProperty(this.CONSTANTS.ID_TOKEN))){n.valid=!0;var r="";if(!t.hasOwnProperty("state"))return this.warn("No state returned"),n;if(this.verbose("State: "+t.state),r=t.state,n.stateResponse=r,this._matchState(n))return n;if(!n.stateMatch&&window.parent){n.requestType=this._requestType;for(var o=this._renewStates,i=0;i-1&&t+1-1)return null;if(this.config&&this.config.endpoints)for(var n in this.config.endpoints)if(e.indexOf(n)>-1)return this.config.endpoints[n];return e.indexOf("http://")>-1||e.indexOf("https://")>-1?this._getHostFromUri(e)===this._getHostFromUri(this.config.redirectUri)?this.config.loginResource:null:this.config.loginResource},n.prototype._getHostFromUri=function(e){var t=String(e).replace(/^(https?:)\/\//,"");return t=t.split("/")[0]},n.prototype.handleWindowCallback=function(e){if(null==e&&(e=window.location.hash),this.isCallback(e)){var t=null,n=!1;this._openedWindows.length>0&&this._openedWindows[this._openedWindows.length-1].opener&&this._openedWindows[this._openedWindows.length-1].opener._adalInstance?(t=this._openedWindows[this._openedWindows.length-1].opener._adalInstance,n=!0):window.parent&&window.parent._adalInstance&&(t=window.parent._adalInstance);var r,o,i=t.getRequestInfo(e),s=null;o=n||window.parent!==window?t._callBackMappedToRenewStates[i.stateResponse]:t.callback,t.info("Returned from redirect url"),t.saveTokenFromHash(i),i.requestType===this.REQUEST_TYPE.RENEW_TOKEN&&window.parent?(window.parent!==window?t.verbose("Window is in iframe, acquiring token silently"):t.verbose("acquiring token interactive in progress"),r=i.parameters[t.CONSTANTS.ACCESS_TOKEN]||i.parameters[t.CONSTANTS.ID_TOKEN],s=t.CONSTANTS.ACCESS_TOKEN):i.requestType===this.REQUEST_TYPE.LOGIN&&(r=i.parameters[t.CONSTANTS.ID_TOKEN],s=t.CONSTANTS.ID_TOKEN);var a=i.parameters[t.CONSTANTS.ERROR_DESCRIPTION],u=i.parameters[t.CONSTANTS.ERROR];try{o&&o(a,r,u,s)}catch(e){t.error("Error occurred in user defined callback function: "+e)}window.parent!==window||n||(t.config.navigateToLoginRequestUrl?window.location.href=t._getItem(t.CONSTANTS.STORAGE.LOGIN_REQUEST):window.location.hash="")}},n.prototype._getNavigateUrl=function(e,t){var n="common";this.config.tenant&&(n=this.config.tenant);var r=this.instance+n+"/oauth2/authorize"+this._serialize(e,this.config,t)+this._addLibMetadata();return this.info("Navigate url:"+r),r},n.prototype._extractIdToken=function(e){var t=this._decodeJwt(e);if(!t)return null;try{var n=t.JWSPayload,r=this._base64DecodeStringUrlSafe(n);return r?JSON.parse(r):(this.info("The returned id_token could not be base64 url safe decoded."),null)}catch(e){this.error("The returned id_token could not be decoded",e)}return null},n.prototype._base64DecodeStringUrlSafe=function(e){return e=e.replace(/-/g,"+").replace(/_/g,"/"),window.atob?decodeURIComponent(escape(window.atob(e))):decodeURIComponent(escape(this._decode(e)))},n.prototype._decode=function(e){var t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";e=String(e).replace(/=+$/,"");var n=e.length;if(n%4==1)throw new Error("The token to be decoded is not correctly encoded.");for(var r,o,i,s,a,u,c,l,p="",d=0;d>16&255,c=a>>8&255,p+=String.fromCharCode(u,c);break}if(d+1===n-1){a=r<<18|o<<12,u=a>>16&255,p+=String.fromCharCode(u);break}a=r<<18|o<<12|i<<6|s,u=a>>16&255,c=a>>8&255,l=255&a,p+=String.fromCharCode(u,c,l)}return p},n.prototype._decodeJwt=function(e){if(this._isEmpty(e))return null;var t=/^([^\.\s]*)\.([^\.\s]+)\.([^\.\s]*)$/,n=t.exec(e);return!n||n.length<4?(this.warn("The returned id_token is not parseable."),null):{header:n[1],JWSPayload:n[2],JWSSig:n[3]}},n.prototype._convertUrlSafeToRegularBase64EncodedString=function(e){return e.replace("-","+").replace("_","/")},n.prototype._serialize=function(e,t,n){var r=[];if(null!==t){r.push("?response_type="+e),r.push("client_id="+encodeURIComponent(t.clientId)),n&&r.push("resource="+encodeURIComponent(n)),r.push("redirect_uri="+encodeURIComponent(t.redirectUri)),r.push("state="+encodeURIComponent(t.state)),t.hasOwnProperty("slice")&&r.push("slice="+encodeURIComponent(t.slice)),t.hasOwnProperty("extraQueryParameter")&&r.push(t.extraQueryParameter);var o=t.correlationId?t.correlationId:this._guid();r.push("client-request-id="+encodeURIComponent(o))}return r.join("&")},n.prototype._deserialize=function(e){var t,n=/\+/g,r=/([^&=]+)=([^&]*)/g,o=function(e){return decodeURIComponent(e.replace(n," "))},i={};for(t=r.exec(e);t;)i[o(t[1])]=o(t[2]),t=r.exec(e);return i},n.prototype._decimalToHex=function(e){for(var t=e.toString(16);t.length<2;)t="0"+t;return t},n.prototype._guid=function(){var e=window.crypto||window.msCrypto;if(e&&e.getRandomValues){var t=new Uint8Array(16);return e.getRandomValues(t),t[6]|=64,t[6]&=79,t[8]|=128,t[8]&=191,this._decimalToHex(t[0])+this._decimalToHex(t[1])+this._decimalToHex(t[2])+this._decimalToHex(t[3])+"-"+this._decimalToHex(t[4])+this._decimalToHex(t[5])+"-"+this._decimalToHex(t[6])+this._decimalToHex(t[7])+"-"+this._decimalToHex(t[8])+this._decimalToHex(t[9])+"-"+this._decimalToHex(t[10])+this._decimalToHex(t[11])+this._decimalToHex(t[12])+this._decimalToHex(t[13])+this._decimalToHex(t[14])+this._decimalToHex(t[15])}for(var n="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx",r="0123456789abcdef",o=0,i="",s=0;s<36;s++)"-"!==n[s]&&"4"!==n[s]&&(o=16*Math.random()|0),"x"===n[s]?i+=r[o]:"y"===n[s]?(o&=3,o|=8,i+=r[o]):i+=n[s];return i},n.prototype._expiresIn=function(e){return e||(e=3599),this._now()+parseInt(e,10)},n.prototype._now=function(){return Math.round((new Date).getTime()/1e3)},n.prototype._addAdalFrame=function(e){if(void 0!==e){this.info("Add adal frame to document:"+e);var t=document.getElementById(e);if(!t){if(document.createElement&&document.documentElement&&(window.opera||-1===window.navigator.userAgent.indexOf("MSIE 5.0"))){var n=document.createElement("iframe");n.setAttribute("id",e),n.setAttribute("aria-hidden","true"),n.style.visibility="hidden",n.style.position="absolute",n.style.width=n.style.height=n.borderWidth="0px",t=document.getElementsByTagName("body")[0].appendChild(n)}else document.body&&document.body.insertAdjacentHTML&&document.body.insertAdjacentHTML("beforeEnd",'');window.frames&&window.frames[e]&&(t=window.frames[e])}return t}},n.prototype._saveItem=function(e,t,n){if(this.config&&this.config.cacheLocation&&"localStorage"===this.config.cacheLocation){if(!this._supportsLocalStorage())return this.info("Local storage is not supported"),!1;if(n){var r=this._getItem(e)||"";localStorage.setItem(e,r+t+this.CONSTANTS.CACHE_DELIMETER)}else localStorage.setItem(e,t);return!0}return this._supportsSessionStorage()?(sessionStorage.setItem(e,t),!0):(this.info("Session storage is not supported"),!1)},n.prototype._getItem=function(e){return this.config&&this.config.cacheLocation&&"localStorage"===this.config.cacheLocation?this._supportsLocalStorage()?localStorage.getItem(e):(this.info("Local storage is not supported"),null):this._supportsSessionStorage()?sessionStorage.getItem(e):(this.info("Session storage is not supported"),null)},n.prototype._supportsLocalStorage=function(){try{return!!window.localStorage&&(window.localStorage.setItem("storageTest","A"),"A"==window.localStorage.getItem("storageTest")&&(window.localStorage.removeItem("storageTest"),!window.localStorage.getItem("storageTest")))}catch(e){return!1}},n.prototype._supportsSessionStorage=function(){try{return!!window.sessionStorage&&(window.sessionStorage.setItem("storageTest","A"),"A"==window.sessionStorage.getItem("storageTest")&&(window.sessionStorage.removeItem("storageTest"),!window.sessionStorage.getItem("storageTest")))}catch(e){return!1}},n.prototype._cloneConfig=function(e){if(null===e||"object"!=typeof e)return e;var t={};for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t},n.prototype._addLibMetadata=function(){return"&x-client-SKU=Js&x-client-Ver="+this._libVersion()},n.prototype.log=function(e,t,n,r){if(e<=Logging.level){if(!Logging.piiLoggingEnabled&&r)return;var o=(new Date).toUTCString(),i="";i=this.config.correlationId?o+":"+this.config.correlationId+"-"+this._libVersion()+"-"+this.CONSTANTS.LEVEL_STRING_MAP[e]+" "+t:o+":"+this._libVersion()+"-"+this.CONSTANTS.LEVEL_STRING_MAP[e]+" "+t,n&&(i+="\nstack:\n"+n.stack),Logging.log(i)}},n.prototype.error=function(e,t){this.log(this.CONSTANTS.LOGGING_LEVEL.ERROR,e,t)},n.prototype.warn=function(e){this.log(this.CONSTANTS.LOGGING_LEVEL.WARN,e,null)},n.prototype.info=function(e){this.log(this.CONSTANTS.LOGGING_LEVEL.INFO,e,null)},n.prototype.verbose=function(e){this.log(this.CONSTANTS.LOGGING_LEVEL.VERBOSE,e,null)},n.prototype.errorPii=function(e,t){this.log(this.CONSTANTS.LOGGING_LEVEL.ERROR,e,t,!0)},n.prototype.warnPii=function(e){this.log(this.CONSTANTS.LOGGING_LEVEL.WARN,e,null,!0)},n.prototype.infoPii=function(e){this.log(this.CONSTANTS.LOGGING_LEVEL.INFO,e,null,!0)},n.prototype.verbosePii=function(e){this.log(this.CONSTANTS.LOGGING_LEVEL.VERBOSE,e,null,!0)},n.prototype._libVersion=function(){return"1.0.17"},void 0!==e&&e.exports&&(e.exports=n,e.exports.inject=function(e){return new n(e)}),n}()},function(e,t,n){"use strict";function r(e,t){function n(){this.constructor=e}y(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}function o(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s}function i(e){return d.a.log({data:0===d.a.activeLogLevel?e.result:{},level:1,message:"["+e.requestId+"] ("+(new Date).getTime()+") Returning result from pipeline. Set logging to verbose to see data."}),Promise.resolve(e.result)}function s(e,t){return new Promise(function(n){e.result=t,e.hasResult=!0,n(e)})}function a(e){return e.pipeline.length>0?e.pipeline.shift()(e):Promise.resolve(e)}function u(e){e.pipeline.length<1&&d.a.write("["+e.requestId+"] ("+(new Date).getTime()+") Request pipeline contains no methods!",2);var t=a(e).then(function(e){return i(e)}).catch(function(e){throw d.a.error(e),e});return e.isBatched&&e.batch.addResolveBatchDependency(t),t}function c(e){return void 0===e&&(e=!1),function(t,n,r){var o=r.value;r.value=function(){for(var r=[],i=0;i0&&Object(p.j)(r[0],"hasResult")&&r[0].hasResult?(d.a.write("["+r[0].requestId+"] ("+(new Date).getTime()+") Skipping request pipeline method "+n+", existing result in pipeline.",0),Promise.resolve(r[0])):(d.a.write("["+r[0].requestId+"] ("+(new Date).getTime()+") Calling request pipeline method "+n+".",0),o.apply(t,r).then(function(e){return a(e)}))}}}function l(){return[w.logStart,w.caching,w.send,w.logEnd].slice(0)}n.d(t,"c",function(){return h}),n.d(t,"g",function(){return g}),n.d(t,"f",function(){return b}),n.d(t,"i",function(){return v}),n.d(t,"a",function(){return S}),n.d(t,"d",function(){return T}),n.d(t,"b",function(){return O}),n.d(t,"h",function(){return _}),n.d(t,"e",function(){return P});var p=n(3),d=n(4),h=function(){function e(e){this.key=e,this.expiration=Object(p.e)(new Date,"second",p.c.defaultCachingTimeoutSeconds),this.storeName=p.c.defaultCachingStore}return Object.defineProperty(e.prototype,"store",{get:function(){return"local"===this.storeName?e.storage.local:e.storage.session},enumerable:!0,configurable:!0}),e.storage=new p.b,e}(),f=function(){function e(e,t){this.parser=e,this.cacheOptions=t}return e.prototype.parse=function(e){var t=this;return this.parser.parse(e).then(function(e){return t.cacheData(e)})},e.prototype.cacheData=function(e){return null!==this.cacheOptions.store&&this.cacheOptions.store.put(this.cacheOptions.key,e,this.cacheOptions.expiration),e},e}(),y=function(e,t){return(y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)},m=function(e){function t(t,n,r,o){void 0===r&&(r=n.status),void 0===o&&(o=n.statusText);var i=e.call(this,t)||this;return i.response=n,i.status=r,i.statusText=o,i.isHttpRequestError=!0,i}return r(t,e),t.init=function(e){return e.clone().text().then(function(n){return new t("Error making HttpClient request in queryable ["+e.status+"] "+e.statusText+" ::> "+n,e.clone())})},t}(Error),g=function(){function e(){this.rawJson={}}return e.prototype.parse=function(e){var t=this;return new Promise(function(n,r){t.handleError(e,r)&&t.parseImpl(e,n,r)})},e.prototype.parseImpl=function(e,t,n){var r=this;e.headers.has("Content-Length")&&0===parseFloat(e.headers.get("Content-Length"))||204===e.status?t({}):e.text().then(function(e){return e.replace(/\s/gi,"").length>0?JSON.parse(e):{}}).then(function(e){return t(r.parseODataJSON(e))}).catch(function(e){return n(e)})},e.prototype.handleError=function(e,t){return e.ok||m.init(e).then(t),e.ok},e.prototype.parseODataJSON=function(e){this.rawJson=e;var t=e;return Object(p.j)(e,"d")?t=Object(p.j)(e.d,"results")?e.d.results:e.d:Object(p.j)(e,"value")&&(t=e.value),t},e}(),b=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(g),v=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.parseImpl=function(e,t){e.text().then(t)},t}(g),S=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.parseImpl=function(e,t){e.blob().then(t)},t}(g),T=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.parseImpl=function(e,t){e.json().then(t)},t}(g),O=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.parseImpl=function(e,t){Object(p.l)(e.arrayBuffer)?e.arrayBuffer().then(t):e.buffer().then(t)},t}(g),w=(function(e){function t(t){var n=e.call(this)||this;return n.parser=t,n}r(t,e),t.prototype.parseImpl=function(e,t){this.parser(e).then(t)}}(g),function(){function e(){}return e.logStart=function(e){return new Promise(function(t){d.a.log({data:1===d.a.activeLogLevel?{}:e,level:1,message:"["+e.requestId+"] ("+(new Date).getTime()+") Beginning "+e.verb+" request ("+e.requestAbsoluteUrl+")"}),t(e)})},e.caching=function(e){return new Promise(function(t){if(e.isCached){d.a.write("["+e.requestId+"] ("+(new Date).getTime()+") Caching is enabled for request, checking cache...",1);var n=new h(e.requestAbsoluteUrl.toLowerCase());if(void 0!==e.cachingOptions&&(n=Object(p.f)(n,e.cachingOptions)),null!==n.store){var r=n.store.get(n.key);if(null!==r)return d.a.log({data:1===d.a.activeLogLevel?{}:r,level:1,message:"["+e.requestId+"] ("+(new Date).getTime()+") Value returned from cache."}),Object(p.l)(e.batchDependency)&&e.batchDependency(),Object(p.j)(e.parser,"hydrate")&&(r=e.parser.hydrate(r)),s(e,r).then(function(e){return t(e)})}d.a.write("["+e.requestId+"] ("+(new Date).getTime()+") Value not found in cache.",1),e.parser=new f(e.parser,n)}return t(e)})},e.send=function(e){return new Promise(function(t,n){if(e.isBatched){var r=e.batch.add(e.requestAbsoluteUrl,e.verb,e.options,e.parser,e.requestId);Object(p.l)(e.batchDependency)&&e.batchDependency(),d.a.write("["+e.requestId+"] ("+(new Date).getTime()+") Batching request in batch "+e.batch.batchId+".",1),t(s(e,r))}else{d.a.write("["+e.requestId+"] ("+(new Date).getTime()+") Sending request.",1);var o=e.clientFactory(),i=Object(p.f)(e.options||{},{method:e.verb});o.fetch(e.requestAbsoluteUrl,i).then(function(t){return e.parser.parse(t)}).then(function(t){return s(e,t)}).then(function(e){return t(e)}).catch(function(e){return n(e)})}})},e.logEnd=function(e){return new Promise(function(t){e.isBatched?d.a.log({data:1===d.a.activeLogLevel?{}:e,level:1,message:"["+e.requestId+"] ("+(new Date).getTime()+") "+e.verb+" request will complete in batch "+e.batch.batchId+"."}):d.a.log({data:1===d.a.activeLogLevel?{}:e,level:1,message:"["+e.requestId+"] ("+(new Date).getTime()+") Completing "+e.verb+" request."}),t(e)})},o([c(!0)],e,"logStart",null),o([c()],e,"caching",null),o([c()],e,"send",null),o([c(!0)],e,"logEnd",null),e}()),I=function(){function e(){this._query=new Map,this._options={},this._url="",this._parentUrl="",this._useCaching=!1,this._cachingOptions=null,this._cloneParentWasCaching=!1,this._cloneParentCacheOptions=null,this._requestPipeline=null}return e.prototype.toUrl=function(){return this._url},e.prototype.concat=function(e){return this._url+=e,this},Object.defineProperty(e.prototype,"query",{get:function(){return this._query},enumerable:!0,configurable:!0}),e.prototype.configure=function(e){return Object(p.p)(this._options,e),this},e.prototype.configureFrom=function(e){return Object(p.p)(this._options,e._options),this},e.prototype.usingCaching=function(e){return p.c.globalCacheDisable||(this._useCaching=!0,void 0!==e&&(this._cachingOptions=e)),this},e.prototype.withPipeline=function(e){return this._requestPipeline=e.slice(0),this},e.prototype.getCore=function(e,t){return void 0===e&&(e=new T),void 0===t&&(t={}),this._cloneParentWasCaching&&this.usingCaching(this._cloneParentCacheOptions),this.reqImpl("GET",t,e)},e.prototype.postCore=function(e,t){return void 0===e&&(e={}),void 0===t&&(t=new T),this.reqImpl("POST",e,t)},e.prototype.patchCore=function(e,t){return void 0===e&&(e={}),void 0===t&&(t=new T),this.reqImpl("PATCH",e,t)},e.prototype.deleteCore=function(e,t){return void 0===e&&(e={}),void 0===t&&(t=new T),this.reqImpl("DELETE",e,t)},e.prototype.putCore=function(e,t){return void 0===e&&(e={}),void 0===t&&(t=new T),this.reqImpl("PUT",e,t)},e.prototype.reqImpl=function(e,t,n){var r=this;return void 0===t&&(t={}),this.getRequestPipeline(e,t,n).then(function(o){return r.toRequestContext(e,t,n,o)}).then(function(e){return u(e)})},e.prototype.append=function(e){this._url=Object(p.d)(this._url,e)},Object.defineProperty(e.prototype,"parentUrl",{get:function(){return this._parentUrl},enumerable:!0,configurable:!0}),e.prototype.extend=function(e,t){this._parentUrl=e._url,this._url=Object(p.d)(this._parentUrl,t||""),this.configureFrom(e)},e.prototype._clone=function(e,t){return e.configureFrom(this),this._useCaching&&(e._cloneParentWasCaching=!0,e._cloneParentCacheOptions=this._cachingOptions),e},e.prototype.getRequestPipeline=function(e,t,n){var r=this;return void 0===t&&(t={}),new Promise(function(e){e(Object(p.q)(r._requestPipeline)&&Object(p.k)(r._requestPipeline)?r._requestPipeline:l())})},e}(),_=function(e){function t(){var t=e.call(this)||this;return t._batch=null,t._batchDependency=null,t}return r(t,e),t.prototype.inBatch=function(e){if(null!==this.batch)throw Error("This query is already part of a batch.");return Object(p.q)(e)&&(this._batch=e),this},t.prototype.toUrl=function(){return this._url},t.prototype.get=function(e,t){return void 0===e&&(e=new b),void 0===t&&(t={}),this.getCore(e,t)},t.prototype.getCore=function(t,n){return void 0===t&&(t=new b),void 0===n&&(n={}),e.prototype.getCore.call(this,t,n)},t.prototype.postCore=function(t,n){return void 0===t&&(t={}),void 0===n&&(n=new b),e.prototype.postCore.call(this,t,n)},t.prototype.patchCore=function(t,n){return void 0===t&&(t={}),void 0===n&&(n=new b),e.prototype.patchCore.call(this,t,n)},t.prototype.deleteCore=function(t,n){return void 0===t&&(t={}),void 0===n&&(n=new b),e.prototype.deleteCore.call(this,t,n)},t.prototype.putCore=function(t,n){return void 0===t&&(t={}),void 0===n&&(n=new b),e.prototype.putCore.call(this,t,n)},t.prototype.reqImpl=function(t,n,r){return void 0===n&&(n={}),this.hasBatch&&(this._batchDependency=this.addBatchDependency()),e.prototype.reqImpl.call(this,t,n,r)},t.prototype.addBatchDependency=function(){return null!==this._batch?this._batch.addDependency():function(){return null}},Object.defineProperty(t.prototype,"hasBatch",{get:function(){return Object(p.q)(this._batch)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"batch",{get:function(){return this.hasBatch?this._batch:null},enumerable:!0,configurable:!0}),t.prototype._clone=function(t,n){return t=e.prototype._clone.call(this,t,n),n.includeBatch&&(t=t.inBatch(this._batch)),t},t}(I),P=function(){function e(e){void 0===e&&(e=Object(p.h)()),this._batchId=e,this._reqs=[],this._deps=[],this._rDeps=[]}return Object.defineProperty(e.prototype,"batchId",{get:function(){return this._batchId},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"requests",{get:function(){return this._reqs},enumerable:!0,configurable:!0}),e.prototype.add=function(e,t,n,r,o){var i={id:o,method:t.toUpperCase(),options:n,parser:r,reject:null,resolve:null,url:e},s=new Promise(function(e,t){i.resolve=e,i.reject=t});return this._reqs.push(i),s},e.prototype.addDependency=function(){var e=function(){};return this._deps.push(new Promise(function(t){e=t})),e},e.prototype.addResolveBatchDependency=function(e){this._rDeps.push(e)},e.prototype.execute=function(){var e=this;return Promise.all(this._deps).then(function(){return Promise.all(e._deps)}).then(function(){return e.executeImpl()}).then(function(){return Promise.all(e._rDeps)}).then(function(){})},e}()},function(e,t,n){"use strict";n.d(t,"a",function(){return r});var r=function(){function e(e,t,n){this.level=t,this.id=e.Id,this.label=e.Name,this.hoverText=e.LocalCustomProperties._Sys_Nav_HoverText,this.pathDepth=e.PathDepth;var r=e.LocalCustomProperties._Sys_Nav_SimpleLinkUrl||e.LocalCustomProperties._Sys_Nav_TargetUrl;r&&(this.url=n&&0===r.indexOf("~sitecollection")?n+r.substring("~sitecollection".length):r),this.items=[]}return e.prototype.hasChildren=function(){return this.items&&this.items.length>0},e.prototype.command=function(){this.url&&(window.location.href=this.url)},e}()},function(e,t,n){"use strict";var r=n(15),o=(n.n(r),n(16)),i=(n.n(o),this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))(function(o,i){function s(e){try{u(r.next(e))}catch(e){i(e)}}function a(e){try{u(r.throw(e))}catch(e){i(e)}}function u(e){e.done?o(e.value):new n(function(t){t(e.value)}).then(s,a)}u((r=r.apply(e,t||[])).next())})}),s=this&&this.__generator||function(e,t){function n(e){return function(t){return r([e,t])}}function r(n){if(o)throw new TypeError("Generator is already executing.");for(;u;)try{if(o=1,i&&(s=i[2&n[0]?"return":n[0]?"throw":"next"])&&!(s=s.call(i,n[1])).done)return s;switch(i=0,s&&(n=[0,s.value]),n[0]){case 0:case 1:s=n;break;case 4:return u.label++,{value:n[1],done:!1};case 5:u.label++,i=n[1],n=[0];continue;case 7:n=u.ops.pop(),u.trys.pop();continue;default:if(s=u.trys,!(s=s.length>0&&s[s.length-1])&&(6===n[0]||2===n[0])){u=0;continue}if(3===n[0]&&(!s||n[1]>s[0]&&n[1]",o=new Headers,o.append("accept","application/json"),o.append("content-type","application/xml"),i={headers:o,body:n},[4,this.context.spHttpClient.post(this.clientServiceUrl,r.SPHttpClient.configurations.v1,i)];case 2:return a=s.sent(),[4,a.json()];case 3:return u=s.sent(),c=u.find(function(e){return"SP.Taxonomy.Term"===e._ObjectType_}),c&&c.Labels&&c.Labels._Child_Items_&&(t=c.Labels._Child_Items_.map(function(e){return e.Value})),[3,5];case 4:return l=s.sent(),t=null,console.log(l.message),[3,5];case 5:return[2,t]}})})},e.prototype.getTermStores=function(){var e=this,t=new Headers;t.append("accept","application/json"),t.append("content-type","application/xml");var n={headers:t,body:''};return this.context.spHttpClient.post(this.clientServiceUrl,r.SPHttpClient.configurations.v1,n).then(function(t){return t.json().then(function(t){var n=t.filter(function(e){return"SP.Taxonomy.TermStore"===e._ObjectType_});return n.length>0?e.props.termsetNameOrID?n.map(function(t){var n=t.Groups._Child_Items_;if(e.props.termsetNameOrID){var r=e.props.termsetNameOrID;n=n.map(function(t){return t.TermSets._Child_Items_=t.TermSets._Child_Items_.filter(function(t){return t.Name===r||e.cleanGuid(t.Id).toLowerCase()===e.cleanGuid(r).toLowerCase()}),t})}return n=n.filter(function(e){return!e.IsSystemGroup}),n=n.filter(function(e){return e.TermSets._Child_Items_.length>0}),t.Groups._Child_Items_=n,t}):n:[]})})},e.prototype.getTermSet=function(){return i(this,void 0,void 0,function(){var e;return s(this,function(t){switch(t.label){case 0:return[4,this.getTermStores()];case 1:return e=t.sent(),[2,this.getTermSetId(e,this.props.termsetNameOrID)]}})})},e.prototype.getAllTerms=function(e,t,n,o){return void 0===o&&(o=!0),i(this,void 0,void 0,function(){var i,a,u,c,l,p,d,h=this;return s(this,function(s){switch(s.label){case 0:return i=e,this.isGuid(e)?[3,2]:[4,this.getTermStores()];case 1:if(a=s.sent(),!(u=this.getTermSetId(a,e)))return[2,null];i=this.cleanGuid(u.Id),s.label=2;case 2:return(c=this.getTermsById(i,o))?[2,c]:(l=''+i+'',p=new Headers,p.append("accept","application/json"),p.append("content-type","application/xml"),d={headers:p,body:l},[2,this.context.spHttpClient.post(this.clientServiceUrl,r.SPHttpClient.configurations.v1,d).then(function(e){return e.json().then(function(e){var r=e.filter(function(e){return"SP.Taxonomy.TermSet"===e._ObjectType_});if(r.length>0){var s=r[0];s.Terms=[];var a=e.filter(function(e){return"SP.Taxonomy.TermCollection"===e._ObjectType_});if(a.length>0){var u=a[0]._Child_Items_;!0===t&&(u=u.filter(function(e){return!1===e.IsDeprecated})),!0===n&&(u=u.filter(function(e){return!0===e.IsAvailableForTagging})),u=u.map(function(e){return e.IsRoot?e.CustomSortOrderIndex=s.CustomSortOrder?s.CustomSortOrder.split(":").indexOf(h.cleanGuid(e.Id)):-1:e.CustomSortOrderIndex=e.Parent.CustomSortOrder?e.Parent.CustomSortOrder.split(":").indexOf(h.cleanGuid(e.Id)):-1,e.Id=h.cleanGuid(e.Id),e.PathDepth=e.PathOfTerm.split(";").length,e.TermSet={Id:h.cleanGuid(s.Id),Name:s.Name},e.Parent&&(e.ParentId=h.cleanGuid(e.Parent.Id)),e}),u.length>0&&(u=h.sortTerms(u),s.Terms=u)}try{o&&window.sessionStorage&&window.sessionStorage.setItem(i,JSON.stringify(s))}catch(e){}return s}return null})})])}})})},e.prototype.searchTermsByName=function(e){return this.searchTermsByTermSet(e)},e.prototype.searchTermsByTermId=function(e,t){return i(this,void 0,void 0,function(){var n,r,o,i,a,u,c;return s(this,function(s){switch(s.label){case 0:return n=this.props.useSessionStorage,r=this.getTermsById(t,n),r?[2,this.searchTermsBySearchText(r,e)]:[3,1];case 1:return o=this.props,i=o.termsetNameOrID,a=o.hideDeprecatedTags,u=o.hideTagsNotAvailableForTagging,[4,this.getAllTermsByAnchorId(i,t,a,u,n)];case 2:if(c=s.sent())return[2,this.searchTermsBySearchText(c,e)];s.label=3;case 3:return[2,null]}})})},e.prototype.getAllTermsByAnchorId=function(e,t,n,r,o){return void 0===o&&(o=!0),i(this,void 0,void 0,function(){var i,a,u,c,l,p,d,h=this;return s(this,function(s){switch(s.label){case 0:return i=[],a=this.getTermsById(t,o),a?[2,a]:[4,this.getAllTerms(e,n,r)];case 1:if(u=s.sent(),c=u.Terms,t){if(l=c.filter(function(e){return e.Id.toLowerCase()===t.toLowerCase()}).shift()){p=l.PathOfTerm+";",d=c.filter(function(e){return e.PathOfTerm.substring(0,p.length)===p&&e.Id!==l.Id}),d.forEach(function(e){i.push(h.convertTermToPickerTerm(e))});try{o&&window.sessionStorage&&window.sessionStorage.setItem(t,JSON.stringify(i))}catch(e){}}}else c.forEach(function(e){i.push(h.convertTermToPickerTerm(e))});return[2,i]}})})},e.prototype.cleanGuid=function(e){return void 0!==e?e.replace("/Guid(","").replace("/","").replace(")",""):""},e.prototype.getTermSetId=function(e,t){if(e&&e.length>0&&t){var n=e[0];if(n.Groups&&n.Groups._Child_Items_)for(var r=0,o=n.Groups._Child_Items_;r-1}):[]},e.prototype.searchTermsByTermSet=function(e){var t=this;return new Promise(function(n){t.getTermStores().then(function(o){var i=t.props.termsetNameOrID;if(!t.isGuid(i)){var s=t.getTermSetId(o,i);if(!s)return void n(null);i=t.cleanGuid(s.Id)}if(void 0===o||0===o.length)return void n(null);var u="de-de"===t.context.pageContext.cultureInfo.currentUICultureName?1031:1033,c={start:e,lcid:0!==u?u:t.context.pageContext.web.language,sspList:t.cleanGuid(o[0].Id),termSetList:i,anchorId:t.props.anchorId?t.props.anchorId:a,isSpanTermStores:!1,isSpanTermSets:!1,isIncludeUnavailable:!0===t.props.hideTagsNotAvailableForTagging,isIncludeDeprecated:!0===t.props.hideDeprecatedTags,isAddTerms:!1,isIncludePathData:!1,excludeKeyword:!1,excludedTermset:a},l=new Headers;l.append("accept","application/json"),l.append("content-type","application/json");var p={headers:l,body:JSON.stringify(c)};return t.context.spHttpClient.post(t.suggestionServiceUrl,r.SPHttpClient.configurations.v1,p).then(function(e){return e.json().then(function(e){var r=e.d.Groups;if(r&&r.length>0){var o=r[0].Suggestions;if(o.length>0){var i=o.map(function(e){return t.convertSuggestTermToPickerTerm(e)});return void n(i)}}n([])})})})})},e.prototype.isGuid=function(e){return/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/.test(e)},e.prototype.sortTerms=function(e){for(var t=[],n=!0,r=1;n;){var i=e.filter(function(e){return e.PathDepth===r});if(i&&i.length>0){if(i=i.sort(this.sortTermByPath),1!==r){i=i.reverse();for(var s=0,a=i;st.PathOfTerm.toLowerCase()?1:0:e.CustomSortOrderIndext.CustomSortOrderIndex?1:0},e.prototype.convertTermToPickerTerm=function(e){return{key:this.cleanGuid(e.Id),name:e.Name,path:e.PathOfTerm,termSet:this.cleanGuid(e.TermSet.Id),termSetName:e.TermSet.Name}},e.prototype.convertSuggestTermToPickerTerm=function(e){var t="",n="";if(e.Paths&&e.Paths.length>0){var r=e.Paths[0].replace(/^\[/,"").replace(/\]$/,""),o=r.split(":");t=o.join(";")+";"+e.DefaultLabel,n=o[0]}return{key:this.cleanGuid(e.Id),name:e.DefaultLabel,path:t,termSet:a,termSetName:n}},e}();t.a=u},function(e,t){e.exports=o},function(e,t){e.exports=i},function(e,t,n){"use strict";n.d(t,"a",function(){return r});var r=function(){function e(){}return e.prototype.Get=function(e){return this[e]},e.prototype.Add=function(e,t){this[e]=t},e}()},function(e,t,n){"use strict";n.d(t,"a",function(){return i});var r=n(19),o=(n.n(r),n(20)),i=function(){function e(e,t,n){this.context=e,this.menuItems=t,this.updateCallback=n}return e.prototype.render=function(e){var t=this;e.innerHTML="";var n=document.createElement("nav");n.id="Mega-Menu",n.className="mega-menu-main",n.setAttribute("role","navigation"),n.setAttribute("aria-label","Hauptnavigation");var o=document.createElement("ul");o.setAttribute("role","menubar"),this.menuItems.forEach(function(e){var n=t.createTopLevelItem(e);o.appendChild(n)}),this.context.pageContext.web.permissions.hasPermission(r.SPPermission.manageWeb)&&o.appendChild(this.createSettingsItem()),n.appendChild(o),e.appendChild(n),this.attachEventListeners(),this.createScreenReaderAnnouncer()},e.prototype.createSettingsItem=function(){var e=this,t=document.createElement("li");t.setAttribute("role","none");var n=document.createElement("button");n.type="button",n.className="menu-item-link menu-item-settings",n.setAttribute("role","menuitem"),n.setAttribute("tabindex","0"),n.setAttribute("aria-haspopup","false"),n.setAttribute("aria-label","Einstellungen"),n.title="Einstellungen";var r=document.createElement("span");return r.className="ms-Icon ms-Icon--Settings menu-item-settings__icon",r.setAttribute("aria-hidden","true"),n.appendChild(r),n.addEventListener("click",function(){return e.openSettings()}),n.addEventListener("keydown",function(t){"Enter"!==t.key&&" "!==t.key||(t.preventDefault(),e.openSettings())}),t.appendChild(n),t},e.prototype.openSettings=function(){this._settingsPanel||(this._settingsPanel=new o.a(this.context,this.updateCallback)),this._settingsPanel.open()},e.prototype.createTopLevelItem=function(e){var t=document.createElement("li");t.setAttribute("role","none");var n=this.createTopLevelElement(e);if(t.appendChild(n),e.hasChildren()&&e.items&&e.items.length>0){var r=this.createMegaMenu(e);t.appendChild(r)}return t},e.prototype.createTopLevelElement=function(e){var t;return e.url?(t=document.createElement("a"),t.href=e.url,t.className="menu-item-link"):(t=document.createElement("span"),t.className="menu-item-text",t.setAttribute("tabindex","0")),t.setAttribute("role","menuitem"),t.setAttribute("aria-haspopup","true"),t.setAttribute("aria-expanded","false"),t.textContent=e.label,e.hoverText&&(t.title=e.hoverText),t},e.prototype.createMegaMenu=function(e){var t=this,n=document.createElement("div");n.className="mega-menu",n.setAttribute("role","menu"),n.setAttribute("aria-label",e.label+" Unterkategorien");var r=document.createElement("div");return r.className="mega-menu-grid",e.items&&e.items.forEach(function(e){var n=t.createCategorySection(e);r.appendChild(n)}),n.appendChild(r),n},e.prototype.createCategorySection=function(e){var t=document.createElement("div");t.className="mega-menu-category";var n=document.createElement("h3");if(e.url){var r=document.createElement("a");r.href=e.url,r.textContent=e.label,e.hoverText&&(r.title=e.hoverText),n.appendChild(r)}else{var o=document.createElement("span");o.textContent=e.label,e.hoverText&&(o.title=e.hoverText),n.appendChild(o)}if(t.appendChild(n),e.hasChildren()&&e.items&&e.items.length>0){var i=document.createElement("ul");e.items.forEach(function(e){var t=document.createElement("li"),n=document.createElement("a");n.href=e.url||"#",n.textContent=e.label,e.hoverText&&(n.title=e.hoverText),t.appendChild(n),i.appendChild(t)}),t.appendChild(i)}return t},e.prototype.attachEventListeners=function(){for(var e=document.querySelectorAll('#Mega-Menu > ul > li > a, #Mega-Menu > ul > li > span[role="menuitem"]'),t=0;t ul > li > a, #Mega-Menu > ul > li > span");o||i||s||a||(console.log("Schließe Menu wegen Focus-Verlust"),n.closeMegaMenu(e,t))},150)})},e.prototype.attachGlobalKeyboardNavigation=function(){var e=this;document.addEventListener("keydown",function(t){var n=document.activeElement;if("Escape"===t.key){var r=document.querySelector('.mega-menu[aria-expanded="true"]');if(r){var o=r.previousElementSibling;e.closeMegaMenu(o,r),o.focus()}}if("Tab"===t.key){if(!t.shiftKey){var i=n.closest("#Mega-Menu > ul > li > a, #Mega-Menu > ul > li > span");if(i){var s=i.closest("li"),a=s.querySelector(".mega-menu.js-open");if(a){t.preventDefault();var u=a.querySelector("a");return void(u&&u.focus())}}}if(t.shiftKey){var a=n.closest(".mega-menu");if(a&&a.classList.contains("js-open")){if(n===a.querySelectorAll("a")[0]){t.preventDefault();return void a.previousElementSibling.focus()}}}}})},e.prototype.openMegaMenu=function(e,t){e.setAttribute("aria-expanded","true"),t.setAttribute("aria-expanded","true"),t.classList.add("js-open"),console.log("Menu geöffnet:",e.textContent)},e.prototype.closeMegaMenu=function(e,t){e.setAttribute("aria-expanded","false"),t.setAttribute("aria-expanded","false"),t.classList.remove("js-open"),console.log("Menu geschlossen:",e.textContent)},e.prototype.toggleMegaMenu=function(e,t){"true"===e.getAttribute("aria-expanded")?this.closeMegaMenu(e,t):(this.closeAllMegaMenus(),this.openMegaMenu(e,t))},e.prototype.closeAllMegaMenus=function(){for(var e=document.querySelectorAll('#Mega-Menu > ul > li > a[aria-expanded="true"], #Mega-Menu > ul > li > span[aria-expanded="true"]'),t=0;t0&&s[s.length-1])&&(6===n[0]||2===n[0])){u=0;continue}if(3===n[0]&&(!s||n[1]>s[0]&&n[1]\n

Einstellungen

\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n "},e.prototype._save=function(){if(this._panelElement){var e=this._panelElement.querySelector("#mm-setting-termset"),t=this._panelElement.querySelector("#mm-setting-css");this.saveApplicationCustomizerProps({termSetName:e&&e.value?e.value:"",cssUrl:t&&t.value?t.value:""}),this.close()}},e.prototype._trapFocus=function(e){if(this._panelElement){var t=this._panelElement.querySelectorAll("button, input");if(t&&0!==t.length){var n=t[0],r=t[t.length-1],o=document.activeElement;e.shiftKey&&o===n?(e.preventDefault(),r.focus()):e.shiftKey||o!==r||(e.preventDefault(),n.focus())}}},e.prototype._escape=function(e){return e?e.replace(/&/g,"&").replace(/"/g,""").replace(//g,">"):""},e}()},function(e,t,n){"use strict";n.d(t,"a",function(){return a});var r=n(0),o=n(5),i=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))(function(o,i){function s(e){try{u(r.next(e))}catch(e){i(e)}}function a(e){try{u(r.throw(e))}catch(e){i(e)}}function u(e){e.done?o(e.value):new n(function(t){t(e.value)}).then(s,a)}u((r=r.apply(e,t||[])).next())})},s=this&&this.__generator||function(e,t){function n(e){return function(t){return r([e,t])}}function r(n){if(o)throw new TypeError("Generator is already executing.");for(;u;)try{if(o=1,i&&(s=i[2&n[0]?"return":n[0]?"throw":"next"])&&!(s=s.call(i,n[1])).done)return s;switch(i=0,s&&(n=[0,s.value]),n[0]){case 0:case 1:s=n;break;case 4:return u.label++,{value:n[1],done:!1};case 5:u.label++,i=n[1],n=[0];continue;case 7:n=u.ops.pop(),u.trys.pop();continue;default:if(s=u.trys,!(s=s.length>0&&s[s.length-1])&&(6===n[0]||2===n[0])){u=0;continue}if(3===n[0]&&(!s||n[1]>s[0]&&n[1]ul{margin:0;list-style:none;display:-ms-grid;display:grid;-ms-grid-columns:(minmax(120px,1fr)) [auto-fit];grid-template-columns:repeat(auto-fit,minmax(120px,1fr));width:100%}.mega-menu-main>ul>li{position:static}.mega-menu-main>ul>li>a,.mega-menu-main>ul>li>span[role=menuitem]{display:block;padding:15px 20px;color:"[theme:neutralPrimary, default: #333333]";text-decoration:none;font-weight:600;font-size:19px;transition:all .3s ease;border-bottom:3px solid transparent;outline:0;cursor:pointer}@media (max-width:900px){.mega-menu-main>ul>li>a,.mega-menu-main>ul>li>span[role=menuitem]{font-size:17px}}.mega-menu-main>ul>li:hover>a,.mega-menu-main>ul>li:hover>span[role=menuitem]{background:linear-gradient(135deg,"[theme:themePrimary, default: #0078d7]","[theme:themeSecondary, default: #2b88d8]");color:"[theme:white, default: #ffffff]";border-bottom:3px solid;transform:translateY(-2px);box-shadow:0 4px 8px rgba(0,0,0,.2)}.mega-menu-main>ul>li>a:focus,.mega-menu-main>ul>li>span[role=menuitem]:focus{background:linear-gradient(135deg,"[theme:error, default: #a80000]","[theme:themeDarker, default: #004578]");color:"[theme:white, default: #ffffff]";border-bottom:3px solid;transform:translateY(-2px);box-shadow:0 0 0 3px "[theme:warning, default: #767676]",0 4px 8px rgba(0,0,0,.2);outline:3px solid;outline-offset:2px}.mega-menu-main>ul>li>a:active,.mega-menu-main>ul>li>span[role=menuitem]:active{transform:translateY(0);box-shadow:0 2px 4px rgba(0,0,0,.2)}.mega-menu{position:absolute;left:0;right:0;top:100%;width:100%;background:"[theme:white, default: #ffffff]";box-shadow:0 4px 12px rgba(0,0,0,.15);display:none;padding:40px;max-height:calc(100vh - 60px);overflow-y:auto;z-index:1000;visibility:hidden;opacity:0;transition:visibility 0s,opacity .3s}.mega-menu-main>ul>li:hover .mega-menu{visibility:visible;opacity:1;display:block}.mega-menu.js-open{visibility:visible!important;opacity:1!important;display:block!important}.mega-menu-grid{max-width:none;margin:0 auto;display:-ms-grid;display:grid;-ms-grid-columns:(minmax(200px,1fr)) [auto-fit];grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:30px}.mega-menu-category>h3{margin-bottom:12px;padding-bottom:8px;border-bottom:2px solid}.mega-menu-category>h3>a,.mega-menu-category>h3>span{color:"[theme:neutralPrimary, default: #333333]";font-size:16px;font-weight:700;display:block}.mega-menu-category>h3>a{text-decoration:none;padding:0;border-radius:0;transition:color .2s ease;outline:0}.mega-menu-category>h3>a:hover{color:"[theme:themePrimary, default: #0078d7]"}.mega-menu-category>h3>a:focus{color:"[theme:white, default: #ffffff]";background:"[theme:error, default: #a80000]";text-decoration:none;padding:4px 8px;border-radius:4px;margin:-4px -8px;outline:3px solid;outline-offset:2px;box-shadow:0 0 0 1px "[theme:white, default: #ffffff]",0 2px 8px rgba(0,0,0,.2)}.mega-menu-category ul{list-style:none}.mega-menu-category ul li{margin-bottom:4px}.mega-menu-category ul li a{color:"[theme:neutralSecondary, default: #666666]";text-decoration:none;font-size:14px;transition:all .2s ease;display:block;padding:4px 8px;border-radius:4px;outline:0}.mega-menu-category ul li a:hover{color:"[theme:themePrimary, default: #0078d7]";background:"[theme:themeLight, default: #c7e0f4]";padding-left:12px;transform:translateX(4px)}.mega-menu-category ul li a:focus{color:"[theme:white, default: #ffffff]";background:"[theme:error, default: #a80000]";padding-left:12px;transform:translateX(4px);box-shadow:0 0 0 2px "[theme:warning, default: #767676]";outline:2px solid;outline-offset:2px}.mega-menu-category ul li a{position:relative}@media (prefers-contrast:high){.mega-menu-main>ul>li>a:focus,.mega-menu-main>ul>li>span[role=menuitem]:focus{outline:4px solid;outline-offset:2px}.mega-menu-category>h3>a:focus,.mega-menu-category ul li a:focus{outline:3px solid;outline-offset:2px}}.content{padding:40px;max-width:1200px;margin:0 auto}.menu-item-link,.menu-item-text{display:block;padding:15px 20px;color:"[theme:neutralPrimary, default: #333333]";font-weight:600;transition:all .3s ease;border-bottom:3px solid transparent;outline:0;text-decoration:none}.menu-item-text{cursor:pointer}.menu-item-link:hover,.menu-item-text:hover{background-color:"[theme:neutralLighter, default: #f4f4f4]";border-bottom-color:"[theme:themePrimary, default: #0078d7]"}.menu-item-link:focus,.menu-item-text:focus{background-color:"[theme:themeDarker, default: #004578]";color:"[theme:white, default: #ffffff]";border-bottom-color:"[theme:themeDark, default: #005a9e]";outline:3px solid;outline-offset:2px;box-shadow:0 0 0 6px rgba(243,156,18,.3)}.menu-item-settings{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;background:0 0;border:none;cursor:pointer;font:inherit;padding:15px 20px;color:"[theme:neutralPrimary, default: #333333]"}.menu-item-settings:hover{background-color:"[theme:neutralLighter, default: #f4f4f4]";border-bottom:3px solid}.menu-item-settings:focus{background-color:"[theme:themeDarker, default: #004578]";color:"[theme:white, default: #ffffff]";border-bottom:3px solid;outline:3px solid;outline-offset:2px;box-shadow:0 0 0 6px rgba(243,156,18,.3)}.menu-item-settings__icon{font-size:18px;line-height:1;display:inline-block;transform:translateY(2px)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.mm-settings-overlay{position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:4000;animation:mmFadeIn .2s ease}.mm-settings-panel{position:fixed;top:0;right:0;height:100vh;width:480px;max-width:100%;background:"[theme:white, default: #ffffff]";box-shadow:-4px 0 12px rgba(0,0,0,.2);z-index:4001;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;font-size:17px;font-weight:300;font-family:Segoe UI,"Segoe UI Web (West European)",-apple-system,BlinkMacSystemFont,Roboto,Helvetica Neue,sans-serif;animation:mmSlideIn .25s ease}@media (max-width:600px){.mm-settings-panel{width:100%}}.mm-settings-header{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;padding:16px 20px;border-bottom:1px solid}.mm-settings-title{margin:0;font-size:18px;font-weight:600;font-size:17px;font-weight:300}.mm-settings-close{background:0 0;border:none;font-size:16px;line-height:1;cursor:pointer;padding:4px 8px;font-size:17px;font-weight:300}.mm-settings-close:focus{outline:3px solid;outline-offset:2px}.mm-settings-body{padding:20px;overflow-y:auto;-ms-flex:1;flex:1;font-size:14px;font-weight:400}.mm-settings-field{margin-bottom:16px}.mm-settings-field label{display:block;margin-bottom:4px;font-weight:600}.mm-settings-field input[type=text],.mm-settings-field label{color:"[theme:neutralPrimary, default: #333333]";font-size:14px;font-weight:400}.mm-settings-field input[type=text]{width:100%;padding:8px 12px;border:1px solid;border-radius:2px;box-sizing:border-box;background:"[theme:white, default: #ffffff]"}.mm-settings-field input[type=text]:focus{outline:3px solid;border-color:"[theme:themePrimary, default: #0078d7]"}.mm-settings-footer{padding:14px 20px;border-top:1px solid;display:-ms-flexbox;display:flex;gap:10px;-ms-flex-pack:end;justify-content:flex-end}.mm-settings-cancel,.mm-settings-save{cursor:pointer;border:none;border-radius:4px;padding:8px 16px;font-weight:600;font-size:14px;font-weight:400}.mm-settings-save{background:"[theme:themePrimary, default: #0078d7]";color:"[theme:white, default: #ffffff]"}.mm-settings-save:hover{background:"[theme:themeSecondary, default: #2b88d8]"}.mm-settings-cancel{background:"[theme:neutralTertiaryAlt, default: #c8c8c8]";color:"[theme:neutralPrimary, default: #333333]"}.mm-settings-cancel:hover{background:"[theme:neutralTertiary, default: #a6a6a6]"}.mm-settings-cancel:focus,.mm-settings-save:focus{outline:3px solid;outline-offset:2px}@keyframes mmSlideIn_4a10ff29{0%{transform:translateX(40px);opacity:0}to{transform:translateX(0);opacity:1}}@keyframes mmFadeIn_4a10ff29{0%{opacity:0}to{opacity:1}}',""])},function(e,t){function n(e,t){var n=e[1]||"",o=e[3];if(!o)return n;if(t&&"function"==typeof btoa){var i=r(o);return[n].concat(o.sources.map(function(e){return"/*# sourceURL="+o.sourceRoot+e+" */"})).concat([i]).join("\n")}return[n].join("\n")}function r(e){return"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(e))))+" */"}e.exports=function(e){var t=[];return t.toString=function(){return this.map(function(t){var r=n(t,e);return t[2]?"@media "+t[2]+"{"+r+"}":r}).join("")},t.i=function(e,n){"string"==typeof e&&(e=[[null,e,""]]);for(var r={},o=0;o0&&u(t)})}function a(){return setTimeout(function(){O.runState.flushTimer=0,s()},0)}function u(e,t){O.loadStyles?O.loadStyles(f(e).styleString,e):S?g(e,t):m(e)}function c(e){O.theme=e,d()}function l(e){void 0===e&&(e=3),3!==e&&2!==e||(p(O.registeredStyles),O.registeredStyles=[]),3!==e&&1!==e||(p(O.registeredThemableStyles),O.registeredThemableStyles=[])}function p(e){e.forEach(function(e){var t=e&&e.styleElement;t&&t.parentElement&&t.parentElement.removeChild(t)})}function d(){if(O.theme){for(var e=[],t=0,n=O.registeredThemableStyles;t0&&(l(1),u([].concat.apply([],e)))}}function h(e){return e&&(e=f(y(e)).styleString),e}function f(e){var t=O.theme,n=!1;return{styleString:(e||[]).map(function(e){var r=e.theme;if(r){n=!0;var o=t?t[r]:void 0,i=e.defaultValue||"inherit";return t&&!o&&console,o||i}return e.rawString}).join(""),themable:n}}function y(e){var t=[];if(e){for(var n=0,r=void 0;r=w.exec(e);){var o=r.index;o>n&&t.push({rawString:e.substring(n,o)}),t.push({theme:r[1],defaultValue:r[2]}),n=w.lastIndex}t.push({rawString:e.substring(n)})}return t}function m(e){var t=document.getElementsByTagName("head")[0],n=document.createElement("style"),r=f(e),o=r.styleString,i=r.themable;n.type="text/css",n.appendChild(document.createTextNode(o)),O.perf.count++,t.appendChild(n);var s={styleElement:n,themableStyle:e};i?O.registeredThemableStyles.push(s):O.registeredStyles.push(s)}function g(e,t){var n=document.getElementsByTagName("head")[0],r=O.registeredStyles,o=O.lastStyleElement,i=o?o.styleSheet:void 0,s=i?i.cssText:"",a=r[r.length-1],u=f(e).styleString;(!o||s.length+u.length>I)&&(o=document.createElement("style"),o.type="text/css",t?(n.replaceChild(o,t.styleElement),t.styleElement=o):n.appendChild(o),t||(a={styleElement:o,themableStyle:e},r.push(a))),o.styleSheet.cssText+=h(u),Array.prototype.push.apply(a.themableStyle,e),O.lastStyleElement=o}function b(){var e=!1;if("undefined"!=typeof document){var t=document.createElement("style");t.type="text/css",e=!!t.styleSheet}return e}var v=this&&this.__assign||Object.assign||function(e){for(var t,n=1,r=arguments.length;n=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s}function i(e,t,n,r){return new(n||(n=Promise))(function(o,i){function s(e){try{u(r.next(e))}catch(e){i(e)}}function a(e){try{u(r.throw(e))}catch(e){i(e)}}function u(e){e.done?o(e.value):new n(function(t){t(e.value)}).then(s,a)}u((r=r.apply(e,t||[])).next())})}function s(e,t){function n(e){return function(t){return r([e,t])}}function r(n){if(o)throw new TypeError("Generator is already executing.");for(;u;)try{if(o=1,i&&(s=2&n[0]?i.return:n[0]?i.throw||((s=i.return)&&s.call(i),0):i.next)&&!(s=s.call(i,n[1])).done)return s;switch(i=0,s&&(n=[2&n[0],s.value]),n[0]){case 0:case 1:s=n;break;case 4:return u.label++,{value:n[1],done:!1};case 5:u.label++,i=n[1],n=[0];continue;case 7:n=u.ops.pop(),u.trys.pop();continue;default:if(s=u.trys,!(s=s.length>0&&s[s.length-1])&&(6===n[0]||2===n[0])){u=0;continue}if(3===n[0]&&(!s||n[1]>s[0]&&n[1]-1?e.substr(0,t):e}function u(e){var t=[],n=["odata.type","odata.editLink","__metadata","odata.metadata"];return Object(g.j)(e,n[0])&&"SP.Web"===e[n[0]]?Object(g.j)(e,n[1])?t.push(e[n[1]]):Object(g.j)(e,n[2])&&t.push(e.__metadata.uri):Object(g.j)(e,n[3])&&Object(g.j)(e,n[1])?t.push(a(e[n[3]]),"_api",e[n[1]]):Object(g.j)(e,n[1])?t.push("_api",e[n[1]]):Object(g.j)(e,n[2])&&t.push(e.__metadata.uri),t.length<1?(b.a.write("No uri information found in ODataEntity parsing, chaining will fail for this object.",2),""):g.d.apply(void 0,t)}function c(e){return new O(e)}function l(e){g.c.extend(e)}function p(e){return new Promise(function(t){if(Object(g.m)(e))return t(e);if(null!==I.baseUrl)return t(Object(g.d)(I.baseUrl,e));if(void 0!==x._spPageContextInfo){if(Object(g.j)(x._spPageContextInfo,"webAbsoluteUrl"))return t(Object(g.d)(x._spPageContextInfo.webAbsoluteUrl,e));if(Object(g.j)(x._spPageContextInfo,"webServerRelativeUrl"))return t(Object(g.d)(x._spPageContextInfo.webServerRelativeUrl,e))}if(void 0!==x.location){var n=x.location.toString().toLowerCase();["/_layouts/","/siteassets/"].forEach(function(r){var o=n.indexOf(r);if(o>0)return t(Object(g.d)(n.substr(0,o),e))})}return t(e)})}function d(e){return{__metadata:{type:e}}}function h(e){return function(t){return function(t){function n(){for(var n=[],r=0;r1&&void 0!==n[1]?n[1]:e)||this}return r(n,t),n}(t)}}function f(e){return e.length<1?1:Math.max.apply(null,e.map(function(e){return e.order}))+1}function y(e){for(var t=0;tt.lastIndexOf("(")){var o=t.lastIndexOf("/");r._parentUrl=t.slice(0,o),n=Object(g.d)(t.slice(o),n),r._url=Object(g.d)(r._parentUrl,n)}else{var o=t.lastIndexOf("(");r._parentUrl=t.slice(0,o),r._url=Object(g.d)(t,n)}else{r.extend(t,n);var i=t.query.get("@target");void 0!==i&&r.query.set("@target",i)}return r}return r(t,e),t.prototype.as=function(e){var t=new e(this._url,null);return Object(g.f)(t,this,!0)},t.prototype.toUrlAndQuery=function(){var e=new Map(this.query),t=this.toUrl().replace(/'!(@.*?)::(.*?)'/gi,function(t,n,r){return b.a.write("Rewriting aliased parameter from match "+t+" to label: "+n+" value: "+r,0),e.set(n,"'"+r+"'"),n});if(e.size>0){t+=""+(t.indexOf("?")>-1?"&":"?")+Array.from(e).map(function(e){return e[0]+"="+e[1]}).join("&")}return t},t.prototype.select=function(){for(var e=[],t=0;t0&&this.query.set("$select",e.join(",")),this},t.prototype.expand=function(){for(var e=[],t=0;t0&&this.query.set("$expand",e.join(",")),this},t.prototype.getParent=function(e,t,n,r){void 0===t&&(t=this.parentUrl);var o=new e(t,n).configureFrom(this),i="@target";return this.query.has(i)&&o.query.set(i,this.query.get(i)),void 0!==r&&(o=o.inBatch(r)),o},t.prototype.clone=function(t,n,r){void 0===r&&(r=!0);var o=e.prototype._clone.call(this,new t(this,n),{includeBatch:r}),i="@target";return this.query.has(i)&&o.query.set(i,this.query.get(i)),o},t.prototype.toRequestContext=function(e,t,n,r){var o=this;void 0===t&&(t={});var i=this.hasBatch?this._batchDependency:function(){};return p(this.toUrlAndQuery()).then(function(s){return Object(g.p)(t,o._options),{batch:o.batch,batchDependency:i,cachingOptions:o._cachingOptions,clientFactory:function(){return new E},isBatched:o.hasBatch,isCached:o._forceCaching||o._useCaching&&/^get$/i.test(e),options:t,parser:n,pipeline:r,requestAbsoluteUrl:s,requestId:Object(g.h)(),verb:e}})},t}(v.h),j=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.filter=function(e){return this.query.set("$filter",e),this},t.prototype.orderBy=function(e,t){void 0===t&&(t=!0);var n="$orderby",r=this.query.has(n)?this.query.get(n).split(","):[];return r.push(e+" "+(t?"asc":"desc")),this.query.set(n,r.join(",")),this},t.prototype.skip=function(e){return this.query.set("$skip",e.toString()),this},t.prototype.top=function(e){return this.query.set("$top",e.toString()),this},t}(N),R=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype._update=function(e,t){var n=this;return function(r){return n.postCore({body:Object(g.n)(Object(g.f)(d(e),r)),headers:{"X-HTTP-Method":"MERGE"}}).then(function(e){return t(e,r)})}},t.prototype._delete=function(){return this.postCore({headers:{"X-HTTP-Method":"DELETE"}})},t.prototype._deleteWithETag=function(e){return void 0===e&&(e="*"),this.postCore({headers:{"IF-Match":e,"X-HTTP-Method":"DELETE"}})},t}(N),A=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,t.prototype.getById=function(e){return new k(this,"getById("+e+")")},t.prototype.getByEmail=function(e){return new k(this,"getByEmail('"+e+"')")},t.prototype.getByLoginName=function(e){var t=new k(this);return t.concat("('!@v::"+encodeURIComponent(e)+"')"),t},t.prototype.removeById=function(e){return this.clone(n,"removeById("+e+")").postCore()},t.prototype.removeByLoginName=function(e){var t=this.clone(n,"removeByLoginName(@v)");return t.query.set("@v","'"+encodeURIComponent(e)+"'"),t.postCore()},t.prototype.add=function(e){var t=this;return this.clone(n,null).postCore({body:Object(g.n)(Object(g.f)(d("SP.User"),{LoginName:e}))}).then(function(){return t.getByLoginName(e)})};var n;return t=n=o([h("siteusers")],t)}(j),U=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),Object.defineProperty(t.prototype,"groups",{get:function(){return new F(this,"groups")},enumerable:!0,configurable:!0}),t}(R),k=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.update=t._update("SP.User",function(e){return{data:e,user:t}}),t.delete=t._delete,t}return r(t,e),t}(U),L=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t=o([h("currentuser")],t)}(U);!function(e){e[e.None=0]="None",e[e.User=1]="User",e[e.DistributionList=2]="DistributionList",e[e.SecurityGroup=4]="SecurityGroup",e[e.SharePointGroup=8]="SharePointGroup",e[e.All=15]="All"}(m||(m={}));var D,F=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,t.prototype.getById=function(e){var t=new M(this);return t.concat("("+e+")"),t},t.prototype.add=function(e){var t=this,n=Object(g.n)(Object(g.f)(d("SP.Group"),e));return this.postCore({body:n}).then(function(e){return{data:e,group:t.getById(e.Id)}})},t.prototype.getByName=function(e){return new M(this,"getByName('"+e+"')")},t.prototype.removeById=function(e){return this.clone(n,"removeById('"+e+"')").postCore()},t.prototype.removeByLoginName=function(e){return this.clone(n,"removeByLoginName('"+e+"')").postCore()};var n;return t=n=o([h("sitegroups")],t)}(j),M=function(e){function t(){var n=null!==e&&e.apply(this,arguments)||this;return n.update=n._update("SP.Group",function(e,r){var o=n;return Object(g.j)(r,"Title")&&(o=n.getParent(t,n.parentUrl,"getByName('"+r.Title+"')")),{data:e,group:o}}),n}return r(t,e),Object.defineProperty(t.prototype,"users",{get:function(){return new A(this,"users")},enumerable:!0,configurable:!0}),t.prototype.setUserAsOwner=function(e){return i(this,void 0,void 0,function(){return s(this,function(n){return[2,this.clone(t,"SetUserAsOwner("+e+")").postCore()]})})},t}(R),B=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,t.prototype.getById=function(e){var t=new q(this);return t.concat("("+e+")"),t},t.prototype.add=function(e,t){return this.clone(n,"addroleassignment(principalid="+e+", roledefid="+t+")").postCore()},t.prototype.remove=function(e,t){return this.clone(n,"removeroleassignment(principalid="+e+", roledefid="+t+")").postCore()};var n;return t=n=o([h("roleassignments")],t)}(j),q=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.delete=t._delete,t}return r(t,e),Object.defineProperty(t.prototype,"groups",{get:function(){return new F(this,"groups")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"bindings",{get:function(){return new H(this)},enumerable:!0,configurable:!0}),t}(R),G=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.getById=function(e){return new W(this,"getById("+e+")")},t.prototype.getByName=function(e){return new W(this,"getbyname('"+e+"')")},t.prototype.getByType=function(e){return new W(this,"getbytype("+e+")")},t.prototype.add=function(e,t,n,r){var o=this,i=Object(g.n)({BasePermissions:{High:r.High.toString(),Low:r.Low.toString()},Description:t,Name:e,Order:n,__metadata:{type:"SP.RoleDefinition"}});return this.postCore({body:i}).then(function(e){return{data:e,definition:o.getById(e.Id)}})},t=o([h("roledefinitions")],t)}(j),W=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.delete=t._delete,t}return r(t,e),t.prototype.update=function(e){var t=this;void 0!==Object(g.j)(e,"BasePermissions")&&(e.BasePermissions=Object(g.f)({__metadata:{type:"SP.BasePermissions"}},{High:e.BasePermissions.High.toString(),Low:e.BasePermissions.Low.toString()}));var n=Object(g.n)(Object(g.f)(d("SP.RoleDefinition"),e));return this.postCore({body:n,headers:{"X-HTTP-Method":"MERGE"}}).then(function(n){var r=t;if(Object(g.j)(e,"Name")){r=t.getParent(G,t.parentUrl,"").getByName(e.Name)}return{data:n,definition:r}})},t}(R),H=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t=o([h("roledefinitionbindings")],t)}(j);!function(e){e[e.Display=1]="Display",e[e.Edit=2]="Edit",e[e.New=3]="New"}(D||(D={}));var K;!function(e){e[e.Invalid=0]="Invalid",e[e.Integer=1]="Integer",e[e.Text=2]="Text",e[e.Note=3]="Note",e[e.DateTime=4]="DateTime",e[e.Counter=5]="Counter",e[e.Choice=6]="Choice",e[e.Lookup=7]="Lookup",e[e.Boolean=8]="Boolean",e[e.Number=9]="Number",e[e.Currency=10]="Currency",e[e.URL=11]="URL",e[e.Computed=12]="Computed",e[e.Threading=13]="Threading",e[e.Guid=14]="Guid",e[e.MultiChoice=15]="MultiChoice",e[e.GridChoice=16]="GridChoice",e[e.Calculated=17]="Calculated",e[e.File=18]="File",e[e.Attachments=19]="Attachments",e[e.User=20]="User",e[e.Recurrence=21]="Recurrence",e[e.CrossProjectLink=22]="CrossProjectLink",e[e.ModStat=23]="ModStat",e[e.Error=24]="Error",e[e.ContentTypeId=25]="ContentTypeId",e[e.PageSeparator=26]="PageSeparator",e[e.ThreadIndex=27]="ThreadIndex",e[e.WorkflowStatus=28]="WorkflowStatus",e[e.AllDayEvent=29]="AllDayEvent",e[e.WorkflowEventType=30]="WorkflowEventType"}(K||(K={}));var V;!function(e){e[e.DateOnly=0]="DateOnly",e[e.DateTime=1]="DateTime"}(V||(V={}));var Q;!function(e){e[e.Unspecified=0]="Unspecified",e[e.Disabled=1]="Disabled",e[e.Relative=2]="Relative"}(Q||(Q={}));var z;!function(e){e[e.DefaultValue=0]="DefaultValue",e[e.AddToDefaultContentType=1]="AddToDefaultContentType",e[e.AddToNoContentType=2]="AddToNoContentType",e[e.AddToAllContentTypes=4]="AddToAllContentTypes",e[e.AddFieldInternalNameHint=8]="AddFieldInternalNameHint",e[e.AddFieldToDefaultView=16]="AddFieldToDefaultView",e[e.AddFieldCheckDisplayName=32]="AddFieldCheckDisplayName"}(z||(z={}));var X;!function(e){e[e.Gregorian=1]="Gregorian",e[e.Japan=3]="Japan",e[e.Taiwan=4]="Taiwan",e[e.Korea=5]="Korea",e[e.Hijri=6]="Hijri",e[e.Thai=7]="Thai",e[e.Hebrew=8]="Hebrew",e[e.GregorianMEFrench=9]="GregorianMEFrench",e[e.GregorianArabic=10]="GregorianArabic",e[e.GregorianXLITEnglish=11]="GregorianXLITEnglish",e[e.GregorianXLITFrench=12]="GregorianXLITFrench",e[e.KoreaJapanLunar=14]="KoreaJapanLunar",e[e.ChineseLunar=15]="ChineseLunar",e[e.SakaEra=16]="SakaEra",e[e.UmAlQura=23]="UmAlQura"}(X||(X={}));var J;!function(e){e[e.Hyperlink=0]="Hyperlink",e[e.Image=1]="Image"}(J||(J={}));var Y;!function(e){e[e.EmptyMask=0]="EmptyMask",e[e.ViewListItems=1]="ViewListItems",e[e.AddListItems=2]="AddListItems",e[e.EditListItems=3]="EditListItems",e[e.DeleteListItems=4]="DeleteListItems",e[e.ApproveItems=5]="ApproveItems",e[e.OpenItems=6]="OpenItems",e[e.ViewVersions=7]="ViewVersions",e[e.DeleteVersions=8]="DeleteVersions",e[e.CancelCheckout=9]="CancelCheckout",e[e.ManagePersonalViews=10]="ManagePersonalViews",e[e.ManageLists=12]="ManageLists",e[e.ViewFormPages=13]="ViewFormPages",e[e.AnonymousSearchAccessList=14]="AnonymousSearchAccessList",e[e.Open=17]="Open",e[e.ViewPages=18]="ViewPages",e[e.AddAndCustomizePages=19]="AddAndCustomizePages",e[e.ApplyThemeAndBorder=20]="ApplyThemeAndBorder",e[e.ApplyStyleSheets=21]="ApplyStyleSheets",e[e.ViewUsageData=22]="ViewUsageData",e[e.CreateSSCSite=23]="CreateSSCSite",e[e.ManageSubwebs=24]="ManageSubwebs",e[e.CreateGroups=25]="CreateGroups",e[e.ManagePermissions=26]="ManagePermissions",e[e.BrowseDirectories=27]="BrowseDirectories",e[e.BrowseUserInfo=28]="BrowseUserInfo",e[e.AddDelPrivateWebParts=29]="AddDelPrivateWebParts",e[e.UpdatePersonalWebParts=30]="UpdatePersonalWebParts",e[e.ManageWeb=31]="ManageWeb",e[e.AnonymousSearchAccessWebLists=32]="AnonymousSearchAccessWebLists",e[e.UseClientIntegration=37]="UseClientIntegration",e[e.UseRemoteAPIs=38]="UseRemoteAPIs",e[e.ManageAlerts=39]="ManageAlerts",e[e.CreateAlerts=40]="CreateAlerts",e[e.EditMyUserInfo=41]="EditMyUserInfo",e[e.EnumeratePermissions=63]="EnumeratePermissions",e[e.FullMask=65]="FullMask"}(Y||(Y={}));var $;!function(e){e[e.None=0]="None",e[e.User=1]="User",e[e.DistributionList=2]="DistributionList",e[e.SecurityGroup=4]="SecurityGroup",e[e.SharePointGroup=8]="SharePointGroup",e[e.All=15]="All"}($||($={}));var Z;!function(e){e[e.None=0]="None",e[e.UserInfoList=1]="UserInfoList",e[e.Windows=2]="Windows",e[e.MembershipProvider=4]="MembershipProvider",e[e.RoleProvider=8]="RoleProvider",e[e.All=15]="All"}(Z||(Z={}));var ee;!function(e){e[e.None=0]="None",e[e.Guest=1]="Guest",e[e.Reader=2]="Reader",e[e.Contributor=3]="Contributor",e[e.WebDesigner=4]="WebDesigner",e[e.Administrator=5]="Administrator"}(ee||(ee={}));var te;!function(e){e[e.Invalid=-1]="Invalid",e[e.DefaultView=0]="DefaultView",e[e.NormalView=1]="NormalView",e[e.DialogView=2]="DialogView",e[e.View=3]="View",e[e.DisplayForm=4]="DisplayForm",e[e.DisplayFormDialog=5]="DisplayFormDialog",e[e.EditForm=6]="EditForm",e[e.EditFormDialog=7]="EditFormDialog",e[e.NewForm=8]="NewForm",e[e.NewFormDialog=9]="NewFormDialog",e[e.SolutionForm=10]="SolutionForm",e[e.PAGE_MAXITEMS=11]="PAGE_MAXITEMS"}(te||(te={}));var ne;!function(e){e[e.Uninitialized=0]="Uninitialized",e[e.Direct=1]="Direct",e[e.OrganizationView=2]="OrganizationView",e[e.OrganizationEdit=3]="OrganizationEdit",e[e.AnonymousView=4]="AnonymousView",e[e.AnonymousEdit=5]="AnonymousEdit",e[e.Flexible=6]="Flexible"}(ne||(ne={}));var re;!function(e){e[e.None=0]="None",e[e.View=1]="View",e[e.Edit=2]="Edit",e[e.Owner=3]="Owner"}(re||(re={}));var oe;!function(e){e[e.CompletedSuccessfully=0]="CompletedSuccessfully",e[e.AccessRequestsQueued=1]="AccessRequestsQueued",e[e.NoResolvedUsers=-1]="NoResolvedUsers",e[e.AccessDenied=-2]="AccessDenied",e[e.CrossSiteRequestNotSupported=-3]="CrossSiteRequestNotSupported",e[e.UnknowError=-4]="UnknowError",e[e.EmailBodyTooLong=-5]="EmailBodyTooLong",e[e.ListUniqueScopesExceeded=-6]="ListUniqueScopesExceeded",e[e.CapabilityDisabled=-7]="CapabilityDisabled",e[e.ObjectNotSupported=-8]="ObjectNotSupported",e[e.NestedGroupsNotSupported=-9]="NestedGroupsNotSupported"}(oe||(oe={}));var ie;!function(e){e[e.Unknown=0]="Unknown",e[e.File=1]="File",e[e.Folder=2]="Folder",e[e.Item=3]="Item",e[e.List=4]="List",e[e.Web=5]="Web",e[e.Max=6]="Max"}(ie||(ie={}));var se;!function(e){e[e.None=0]="None",e[e.AllowList=1]="AllowList",e[e.BlockList=2]="BlockList"}(se||(se={}));var ae;!function(e){e[e.None=0]="None",e[e.ContextInfo=1]="ContextInfo",e[e.ListData=2]="ListData",e[e.ListSchema=4]="ListSchema",e[e.MenuView=8]="MenuView",e[e.ListContentType=16]="ListContentType",e[e.FileSystemItemId=32]="FileSystemItemId",e[e.ClientFormSchema=64]="ClientFormSchema",e[e.QuickLaunch=128]="QuickLaunch",e[e.Spotlight=256]="Spotlight",e[e.Visualization=512]="Visualization",e[e.ViewMetadata=1024]="ViewMetadata",e[e.DisableAutoHyperlink=2048]="DisableAutoHyperlink",e[e.EnableMediaTAUrls=4096]="EnableMediaTAUrls",e[e.ParentInfo=8192]="ParentInfo",e[e.PageContextInfo=16384]="PageContextInfo",e[e.ClientSideComponentManifest=32768]="ClientSideComponentManifest"}(ae||(ae={}));var ue;!function(e){e[e.PeopleAndGroups=1]="PeopleAndGroups",e[e.PeopleOnly=0]="PeopleOnly"}(ue||(ue={}));var ce;!function(e){e[e.Dropdown=0]="Dropdown",e[e.RadioButtons=1]="RadioButtons"}(ce||(ce={}));var le;!function(e){e[e.DefaultZone=0]="DefaultZone",e[e.Intranet=1]="Intranet",e[e.Internet=2]="Internet",e[e.Custom=3]="Custom",e[e.Extranet=4]="Extranet"}(le||(le={}));var pe,de=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),Object.defineProperty(t.prototype,"roleAssignments",{get:function(){return new B(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"firstUniqueAncestorSecurableObject",{get:function(){return new R(this,"FirstUniqueAncestorSecurableObject")},enumerable:!0,configurable:!0}),t.prototype.getUserEffectivePermissions=function(e){var t=this.clone(N,"getUserEffectivePermissions(@user)");return t.query.set("@user","'"+encodeURIComponent(e)+"'"),t.get().then(function(e){return Object(g.j)(e,"GetUserEffectivePermissions")?e.GetUserEffectivePermissions:e})},t.prototype.getCurrentUserEffectivePermissions=function(){return this.clone(N,"EffectiveBasePermissions").get().then(function(e){return Object(g.j)(e,"EffectiveBasePermissions")?e.EffectiveBasePermissions:e})},t.prototype.breakRoleInheritance=function(e,n){return void 0===e&&(e=!1),void 0===n&&(n=!1),this.clone(t,"breakroleinheritance(copyroleassignments="+e+", clearsubscopes="+n+")").postCore()},t.prototype.resetRoleInheritance=function(){return this.clone(t,"resetroleinheritance").postCore()},t.prototype.userHasPermissions=function(e,t){var n=this;return this.getUserEffectivePermissions(e).then(function(e){return n.hasPermissions(e,t)})},t.prototype.currentUserHasPermissions=function(e){var t=this;return this.getCurrentUserEffectivePermissions().then(function(n){return t.hasPermissions(n,e)})},t.prototype.hasPermissions=function(e,t){if(!t)return!0;if(t===Y.FullMask)return 32767==(32767&e.High)&&65535===e.Low;t-=1;var n=1;return t>=0&&t<32?(n<<=t,0!=(e.Low&n)):t>=32&&t<64&&(n<<=t-32,0!=(e.High&n))},t}(R),he=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.getShareLink=function(e,n){void 0===n&&(n=null);var r=null!==n?n.toISOString():null;return this.clone(t,"shareLink").postCore({body:Object(g.n)({request:{createLink:!0,emailData:null,settings:{expiration:r,linkKind:e}}})})},t.prototype.shareWith=function(e,n,r,o,i){var s=this;void 0===r&&(r=!1),void 0===o&&(o=!1),Array.isArray(e)||(e=[e]);var a=Object(g.n)(e.map(function(e){return{Key:e}})),u=n===re.Edit?ee.Contributor:ee.Reader;return new j("_api/web","roledefinitions").select("Id").filter("RoleTypeKind eq "+u).get().then(function(e){if(!Array.isArray(e)||e.length<1)throw Error("Could not locate a role defintion with RoleTypeKind "+u);var n={includeAnonymousLinkInEmail:r,peoplePickerInput:a,propagateAcl:o,roleValue:"role:"+e[0].Id,useSimplifiedRoles:!0};return void 0!==i&&(n=Object(g.f)(n,{emailBody:i.body,emailSubject:void 0!==i.subject?i.subject:"",sendEmail:!0})),s.clone(t,"shareObject").postCore({body:Object(g.n)(n)})})},t.prototype.shareObject=function(e,t){var n=this;return void 0===t&&(t=!1),t?this.sendShareObjectRequest(e):(e=Object(g.f)(e,{group:null,includeAnonymousLinkInEmail:!1,propagateAcl:!1,useSimplifiedRoles:!0},!0),this.getRoleValue(e.role,e.group).then(function(t){Array.isArray(e.loginNames)||(e.loginNames=[e.loginNames]);var r=Object(g.n)(e.loginNames.map(function(e){return{Key:e}})),o={peoplePickerInput:r,roleValue:t,url:e.url};return void 0!==e.emailData&&null!==e.emailData&&(o=Object(g.f)(o,{emailBody:e.emailData.body,emailSubject:void 0!==e.emailData.subject?e.emailData.subject:"Shared with you.",sendEmail:!0})),n.sendShareObjectRequest(o)}))},t.prototype.unshareObjectWeb=function(e){return this.clone(t,"unshareObject").postCore({body:Object(g.n)({url:e})})},t.prototype.checkPermissions=function(e){return this.clone(t,"checkPermissions").postCore({body:Object(g.n)({recipients:e})})},t.prototype.getSharingInformation=function(e,n){void 0===e&&(e=null);var r=this.clone(t,"getSharingInformation");return r.expand.apply(r,n).postCore({body:Object(g.n)({request:e})})},t.prototype.getObjectSharingSettings=function(e){return void 0===e&&(e=!0),this.clone(t,"getObjectSharingSettings").postCore({body:Object(g.n)({useSimplifiedRoles:e})})},t.prototype.unshareObject=function(){return this.clone(t,"unshareObject").postCore()},t.prototype.deleteLinkByKind=function(e){return this.clone(t,"deleteLinkByKind").postCore({body:Object(g.n)({linkKind:e})})},t.prototype.unshareLink=function(e,n){return void 0===n&&(n="00000000-0000-0000-0000-000000000000"),this.clone(t,"unshareLink").postCore({body:Object(g.n)({linkKind:e,shareId:n})})},t.prototype.getRoleValue=function(e,t){if(void 0===t||null===t){var n=e===re.Edit?ee.Contributor:ee.Reader;return new j("_api/web","roledefinitions").select("Id").top(1).filter("RoleTypeKind eq "+n).get().then(function(e){if(e.length<1)throw Error("Could not locate associated role definition for supplied role. Edit and View are supported");return"role: "+e[0].Id})}switch(t){case ee.Contributor:return new R("_api/web","associatedmembergroup").select("Id").get().then(function(e){return"group: "+e.Id});case ee.Reader:case ee.Guest:return new R("_api/web","associatedvisitorgroup").select("Id").get().then(function(e){return"group: "+e.Id});default:throw Error("Could not determine role value for supplied value. Contributor, Reader, and Guest are supported")}},t.prototype.getShareObjectWeb=function(e){return Promise.resolve(new R(a(e),"/_api/SP.Web.ShareObject"))},t.prototype.sendShareObjectRequest=function(e){return this.getShareObjectWeb(this.toUrl()).then(function(n){return n.expand("UsersWithAccessRequests","GroupsSharedWith").as(t).postCore({body:Object(g.n)(e)})})},t}(N),fe=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.shareWith=function(e,t,n){var r=this;void 0===t&&(t=re.View);var o=this.addBatchDependency();return new R(a(this.toUrl()),"/_api/web/url").get().then(function(i){return o(),r.shareObject(Object(g.d)(i,"/_layouts/15/aclinv.aspx?forSharing=1&mbypass=1"),e,t,n)})},t.prototype.shareObject=function(e,t,n,r,o,i,s,a){return void 0===i&&(i=!1),void 0===s&&(s=!1),void 0===a&&(a=!0),this.clone(he,null).shareObject({emailData:r,group:o,includeAnonymousLinkInEmail:s,loginNames:t,propagateAcl:i,role:n,url:e,useSimplifiedRoles:a})},t.prototype.shareObjectRaw=function(e){return this.clone(he,null).shareObject(e,!0)},t.prototype.unshareObject=function(e){return this.clone(he,null).unshareObjectWeb(e)},t}(de),ye=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.getShareLink=function(e,t){return void 0===e&&(e=ne.OrganizationView),void 0===t&&(t=null),this.clone(he,null).getShareLink(e,t)},t.prototype.shareWith=function(e,t,n,r){return void 0===t&&(t=re.View),void 0===n&&(n=!1),this.clone(he,null).shareWith(e,t,n,!1,r)},t.prototype.checkSharingPermissions=function(e){return this.clone(he,null).checkPermissions(e)},t.prototype.getSharingInformation=function(e,t){return void 0===e&&(e=null),this.clone(he,null).getSharingInformation(e,t)},t.prototype.getObjectSharingSettings=function(e){return void 0===e&&(e=!0),this.clone(he,null).getObjectSharingSettings(e)},t.prototype.unshare=function(){return this.clone(he,null).unshareObject()},t.prototype.deleteSharingLinkByKind=function(e){return this.clone(he,null).deleteLinkByKind(e)},t.prototype.unshareLink=function(e,t){return this.clone(he,null).unshareLink(e,t)},t}(de),me=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.getShareLink=function(e,t){void 0===e&&(e=ne.OrganizationView),void 0===t&&(t=null);var n=this.addBatchDependency();return this.getShareable().then(function(r){return n(),r.getShareLink(e,t)})},t.prototype.checkSharingPermissions=function(e){var t=this.addBatchDependency();return this.getShareable().then(function(n){return t(),n.checkPermissions(e)})},t.prototype.getSharingInformation=function(e,t){void 0===e&&(e=null);var n=this.addBatchDependency();return this.getShareable().then(function(r){return n(),r.getSharingInformation(e,t)})},t.prototype.getObjectSharingSettings=function(e){void 0===e&&(e=!0);var t=this.addBatchDependency();return this.getShareable().then(function(n){return t(),n.getObjectSharingSettings(e)})},t.prototype.unshare=function(){var e=this.addBatchDependency();return this.getShareable().then(function(t){return e(),t.unshareObject()})},t.prototype.deleteSharingLinkByKind=function(e){var t=this.addBatchDependency();return this.getShareable().then(function(n){return t(),n.deleteLinkByKind(e)})},t.prototype.unshareLink=function(e,t){var n=this.addBatchDependency();return this.getShareable().then(function(r){return n(),r.unshareLink(e,t)})},t.prototype.getShareable=function(){var e=this;return this.clone(ge,"listItemAllFields",!1).select("odata.id").get().then(function(t){var n=new he(u(t));return e.hasBatch&&(n=n.inBatch(e.batch)),n})},t}(R),ge=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.shareWith=function(e,t,n,r){void 0===t&&(t=re.View),void 0===n&&(n=!1);var o=this.addBatchDependency();return this.getShareable().then(function(i){return o(),i.shareWith(e,t,n,!1,r)})},t}(me),be=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.shareWith=function(e,t,n,r,o){void 0===t&&(t=re.View),void 0===n&&(n=!1),void 0===r&&(r=!1);var i=this.addBatchDependency();return this.getShareable().then(function(s){return i(),s.shareWith(e,t,n,r,o)})},t}(me),ve=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),Object.defineProperty(t.prototype,"webparts",{get:function(){return new Se(this,"webparts")},enumerable:!0,configurable:!0}),t.prototype.export=function(e){return this.clone(t,"ExportWebPart").postCore({body:Object(g.n)({webPartId:e})})},t.prototype.import=function(e){return this.clone(t,"ImportWebPart").postCore({body:Object(g.n)({webPartXml:e})})},t}(N),Se=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.getById=function(e){return new Te(this,"getbyid('"+e+"')")},t.prototype.getByControlId=function(e){return new Te(this,"getByControlId('"+e+"')")},t}(j),Te=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),Object.defineProperty(t.prototype,"webpart",{get:function(){return new Oe(this)},enumerable:!0,configurable:!0}),t.prototype.saveChanges=function(){return this.clone(t,"SaveWebPartChanges").postCore()},t.prototype.moveTo=function(e,n){return this.clone(t,"MoveWebPartTo(zoneID='"+e+"', zoneIndex="+n+")").postCore()},t.prototype.close=function(){return this.clone(t,"CloseWebPart").postCore()},t.prototype.open=function(){return this.clone(t,"OpenWebPart").postCore()},t.prototype.delete=function(){return this.clone(t,"DeleteWebPart").postCore()},t}(R),Oe=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t=o([h("webpart")],t)}(R),we=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,t.prototype.getByName=function(e){var t=new Ie(this);return t.concat("('"+e+"')"),t},t.prototype.add=function(e){var t=this;return this.clone(n,"add('"+e+"')").postCore().then(function(n){return{data:n,folder:t.getByName(e)}})},t.prototype.addUsingPath=function(e,t){var r=this;return void 0===t&&(t=!1),this.clone(n,"addUsingPath(DecodedUrl='"+e+"',overwrite="+t+")").postCore().then(function(t){return{data:t,folder:new Ie(a(r.toUrl()),"_api/web/getFolderByServerRelativePath(decodedUrl='"+e+"')")}})};var n;return t=n=o([h("folders")],t)}(j),Ie=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.update=t._update("SP.Folder",function(e){return{data:e,folder:t}}),t}return r(t,e),Object.defineProperty(t.prototype,"contentTypeOrder",{get:function(){return new j(this,"contentTypeOrder")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"files",{get:function(){return new et(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"folders",{get:function(){return new we(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"listItemAllFields",{get:function(){return new R(this,"listItemAllFields")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"parentFolder",{get:function(){return new t(this,"parentFolder")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"properties",{get:function(){return new R(this,"properties")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"serverRelativeUrl",{get:function(){return new N(this,"serverRelativeUrl")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"uniqueContentTypeOrder",{get:function(){return new j(this,"uniqueContentTypeOrder")},enumerable:!0,configurable:!0}),t.prototype.delete=function(e){return void 0===e&&(e="*"),this.clone(t,null).postCore({headers:{"IF-Match":e,"X-HTTP-Method":"DELETE"}})},t.prototype.recycle=function(){return this.clone(t,"recycle").postCore()},t.prototype.getItem=function(){for(var e=[],t=0;t0&&r.forEach(function(e,t){return i.query.set(t,e)}),i.postCore({body:Object(g.n)(o)})},t.prototype.renderListFormData=function(e,n,r){return this.clone(t,"renderlistformdata(itemid="+e+", formid='"+n+"', mode='"+r+"')").postCore().then(function(e){return JSON.parse(Object(g.j)(e,"RenderListFormData")?e.RenderListFormData:e)})},t.prototype.reserveListItemId=function(){return this.clone(t,"reservelistitemid").postCore().then(function(e){return Object(g.j)(e,"ReserveListItemId")?e.ReserveListItemId:e})},t.prototype.getListItemEntityTypeFullName=function(){return this.clone(t,null,!1).select("ListItemEntityTypeFullName").get().then(function(e){return e.ListItemEntityTypeFullName})},t.prototype.addValidateUpdateItemUsingPath=function(e,n,r,o){return void 0===r&&(r=!1),this.clone(t,"AddValidateUpdateItemUsingPath()").postCore({body:Object(g.n)({bNewDocumentUpdate:r,checkInComment:o,formValues:e,listItemCreateInfo:{FolderPath:{DecodedUrl:n,__metadata:{type:"SP.ResourcePath"}},__metadata:{type:"SP.ListItemCreationInformationUsingPath"}}})}).then(function(e){return void 0!==e.AddValidateUpdateItemUsingPath?e.AddValidateUpdateItemUsingPath.results:e})},t.prototype.getSiteScript=function(){return i(this,void 0,void 0,function(){var e,n;return s(this,function(r){switch(r.label){case 0:return[4,this.clone(t).rootFolder.select("ServerRelativeUrl").get()];case 1:return e=r.sent(),[4,p(e.ServerRelativeUrl)];case 2:return n=r.sent(),[2,new S.a(this,"").getSiteScriptFromList(n)]}})})},t}(de),He=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,t.prototype.add=function(e){var t=this;"string"==typeof e&&(e={text:e});var r=Object(g.n)(Object(g.f)(d("Microsoft.SharePoint.Comments.comment"),e));return this.clone(n,null).postCore({body:r}).then(function(e){return Object(g.f)(t.getById(e.id),e)})},t.prototype.getById=function(e){var t=new Ke(this);return t.concat("("+e+")"),t},t.prototype.clear=function(){return this.clone(n,"DeleteAll").postCore()};var n;return t=n=o([h("comments")],t)}(j),Ke=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),Object.defineProperty(t.prototype,"replies",{get:function(){return new Ve(this)},enumerable:!0,configurable:!0}),t.prototype.like=function(){return this.clone(t,"Like").postCore()},t.prototype.unlike=function(){return this.clone(t,"Unlike").postCore()},t.prototype.delete=function(){return this.deleteCore()},t}(R),Ve=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,t.prototype.add=function(e){"string"==typeof e&&(e={text:e});var t=Object(g.n)(Object(g.f)(d("Microsoft.SharePoint.Comments.comment"),e));return this.clone(n,null).postCore({body:t}).then(function(e){return Object(g.f)(new Ke(u(e)),e)})};var n;return t=n=o([h("replies")],t)}(j),Qe=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,t.prototype.getById=function(e){var t=new ze(this);return t.concat("("+e+")"),t},t.prototype.getItemByStringId=function(e){return new ze(this.parentUrl,"getItemByStringId('"+e+"')")},t.prototype.skip=function(e,t){return void 0===t&&(t=!1),t?this.query.set("$skiptoken",encodeURIComponent("Paged=TRUE&PagedPrev=TRUE&p_ID="+e)):this.query.set("$skiptoken",encodeURIComponent("Paged=TRUE&p_ID="+e)),this},t.prototype.getPaged=function(e){return void 0===e&&(e=new v.f),this.get(new $e(this,e))},t.prototype.getAll=function(e,t){void 0===e&&(e=2e3),void 0===t&&(t="application/json;odata=nometadata"),b.a.write("Calling items.getAll should be done sparingly. Ensure this is the correct choice. If you are unsure, it is not.",2);var r=new n(this,"").top(e).configure({headers:{Accept:t}});return this.query.forEach(function(e,t){/^\$select|filter|top|expand$/i.test(t)&&r.query.set(t,e)}),new Promise(function(e,t){var n=[],o=function(r){[].push.apply(n,r.results),r.hasNext?r.getNext().then(o).catch(t):e(n)};r.getPaged().then(o).catch(t)})},t.prototype.add=function(e,t){var r=this;void 0===e&&(e={}),void 0===t&&(t=null);var o=this.addBatchDependency();return this.ensureListItemEntityTypeName(t).then(function(t){var i=Object(g.n)(Object(g.f)(d(t),e)),s=r.clone(n,"").postCore({body:i}).then(function(e){return{data:e,item:r.getById(e.Id)}});return o(),s})},t.prototype.ensureListItemEntityTypeName=function(e){return e?Promise.resolve(e):this.getParent(We).getListItemEntityTypeFullName()};var n;return t=n=o([h("items")],t)}(j),ze=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.delete=t._deleteWithETag,t}return r(t,e),Object.defineProperty(t.prototype,"attachmentFiles",{get:function(){return new xe(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"contentType",{get:function(){return new Pe(this,"ContentType")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"comments",{get:function(){return new He(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"effectiveBasePermissions",{get:function(){return new N(this,"EffectiveBasePermissions")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"effectiveBasePermissionsForUI",{get:function(){return new N(this,"EffectiveBasePermissionsForUI")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"fieldValuesAsHTML",{get:function(){return new R(this,"FieldValuesAsHTML")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"fieldValuesAsText",{get:function(){return new R(this,"FieldValuesAsText")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"fieldValuesForEdit",{get:function(){return new R(this,"FieldValuesForEdit")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"folder",{get:function(){return new Ie(this,"folder")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"file",{get:function(){return new tt(this,"file")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"versions",{get:function(){return new Xe(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"list",{get:function(){return this.getParent(We,this.parentUrl.substr(0,this.parentUrl.lastIndexOf("/")))},enumerable:!0,configurable:!0}),t.prototype.update=function(e,t,n){var r=this;return void 0===t&&(t="*"),void 0===n&&(n=null),new Promise(function(o,i){var s=r.addBatchDependency();return r.ensureListItemEntityTypeName(n).then(function(n){var i=Object(g.n)(Object(g.f)(d(n),e));return s(),r.postCore({body:i,headers:{"IF-Match":t,"X-HTTP-Method":"MERGE"}},new Ze).then(function(e){o({data:e,item:r})})}).catch(function(e){return i(e)})})},t.prototype.getLikedBy=function(){return this.clone(t,"likedBy").postCore()},t.prototype.like=function(){return this.clone(t,"like").postCore()},t.prototype.unlike=function(){return this.clone(t,"unlike").postCore()},t.prototype.recycle=function(){return this.clone(t,"recycle").postCore()},t.prototype.getWopiFrameUrl=function(e){void 0===e&&(e=0);var n=this.clone(t,"getWOPIFrameUrl(@action)");return n.query.set("@action",e),n.postCore().then(function(e){return Object(g.j)(e,"GetWOPIFrameUrl")?e.GetWOPIFrameUrl:e})},t.prototype.validateUpdateListItem=function(e,n){return void 0===n&&(n=!1),this.clone(t,"validateupdatelistitem").postCore({body:Object(g.n)({formValues:e,bNewDocumentUpdate:n})})},t.prototype.getLikedByInformation=function(){return this.clone(t,"likedByInformation").expand("likedby").getCore()},t.prototype.ensureListItemEntityTypeName=function(e){return e?Promise.resolve(e):this.list.getListItemEntityTypeFullName()},t}(ye),Xe=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.getById=function(e){var t=new Je(this);return t.concat("("+e+")"),t},t=o([h("versions")],t)}(j),Je=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.delete=t._deleteWithETag,t}return r(t,e),t}(R),Ye=function(){function e(e,t,n,r){this.parent=e,this.nextUrl=t,this.results=n,this.innerParser=r}return Object.defineProperty(e.prototype,"hasNext",{get:function(){return"string"==typeof this.nextUrl&&this.nextUrl.length>0},enumerable:!0,configurable:!0}),e.prototype.getNext=function(){if(this.hasNext){return new Qe(this.nextUrl,null).configureFrom(this.parent).getPaged(this.innerParser)}return new Promise(function(e){return e(null)})},e}(),$e=function(e){function t(t,n){var r=e.call(this)||this;return r._parent=t,r.innerParser=n,r}return r(t,e),t.prototype.parse=function(e){var t=this;return this.innerParser.parse(e).then(function(e){return i(t,void 0,void 0,function(){var t,n;return s(this,function(r){return t=this.innerParser.rawJson,n=Object(g.j)(t,"d")&&Object(g.j)(t.d,"__next")?t.d.__next:t["odata.nextLink"],[2,new Ye(this._parent,n,e,this.innerParser)]})})})},t}(v.g),Ze=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.parse=function(e){return i(this,void 0,void 0,function(){var t=this;return s(this,function(n){return[2,new Promise(function(n,r){t.handleError(e,r)&&n({"odata.etag":e.headers.get("etag")})})]})})},t}(v.g),et=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,t.prototype.getByName=function(e){var t=new tt(this);return t.concat("('"+e+"')"),t},t.prototype.add=function(e,t,r){var o=this;return void 0===r&&(r=!0),new n(this,"add(overwrite="+r+",url='"+e+"')").postCore({body:t}).then(function(t){return{data:t,file:o.getByName(e)}})},t.prototype.addUsingPath=function(e,t,r){var o=this;void 0===r&&(r={Overwrite:!1});var i=["AddUsingPath(decodedurl='"+e+"'"];return r&&(r.Overwrite&&i.push(",Overwrite=true"),r.AutoCheckoutOnInvalidData&&i.push(",AutoCheckoutOnInvalidData=true"),Object(g.r)(r.XorHash)||i.push(",XorHash="+r.XorHash)),i.push(")"),new n(this,i.join("")).postCore({body:t}).then(function(t){return{data:t,file:o.getByName(e)}})},t.prototype.addChunked=function(e,t,r,o,i){var s=this;return void 0===o&&(o=!0),void 0===i&&(i=10485760),this.clone(n,"add(overwrite = "+o+", url = '"+e+"')",!1).postCore().then(function(){return s.getByName(e)}).then(function(e){return e.setContentChunked(t,r,i)})},t.prototype.addTemplateFile=function(e,t){var r=this;return this.clone(n,"addTemplateFile(urloffile = '"+e+"', templatefiletype = "+t+")",!1).postCore().then(function(t){return{data:t,file:r.getByName(e)}})};var n;return t=n=o([h("files")],t)}(j),tt=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),Object.defineProperty(t.prototype,"listItemAllFields",{get:function(){return new R(this,"listItemAllFields")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"versions",{get:function(){return new nt(this)},enumerable:!0,configurable:!0}),t.prototype.approve=function(e){return void 0===e&&(e=""),this.clone(t,"approve(comment = '"+e+"')").postCore()},t.prototype.cancelUpload=function(e){return this.clone(t,"cancelUpload(uploadId = guid'"+e+"')",!1).postCore()},t.prototype.checkin=function(e,n){if(void 0===e&&(e=""),void 0===n&&(n=pe.Major),e.length>1023)throw Error("The maximum comment length is 1023 characters.");return this.clone(t,"checkin(comment = '"+e+"', checkintype = "+n+")").postCore()},t.prototype.checkout=function(){return this.clone(t,"checkout").postCore()},t.prototype.copyTo=function(e,n){return void 0===n&&(n=!0),this.clone(t,"copyTo(strnewurl = '"+e+"', boverwrite = "+n+")").postCore()},t.prototype.delete=function(e){return void 0===e&&(e="*"),this.clone(t,null).postCore({headers:{"IF-Match":e,"X-HTTP-Method":"DELETE"}})},t.prototype.deny=function(e){if(void 0===e&&(e=""),e.length>1023)throw Error("The maximum comment length is 1023 characters.");return this.clone(t,"deny(comment = '"+e+"')").postCore()},t.prototype.getLimitedWebPartManager=function(e){return void 0===e&&(e=ot.Shared),new ve(this,"getLimitedWebPartManager(scope = "+e+")")},t.prototype.moveTo=function(e,n){return void 0===n&&(n=it.Overwrite),this.clone(t,"moveTo(newurl = '"+e+"', flags = "+n+")").postCore()},t.prototype.publish=function(e){if(void 0===e&&(e=""),e.length>1023)throw Error("The maximum comment length is 1023 characters.");return this.clone(t,"publish(comment = '"+e+"')").postCore()},t.prototype.recycle=function(){return this.clone(t,"recycle").postCore()},t.prototype.undoCheckout=function(){return this.clone(t,"undoCheckout").postCore()},t.prototype.unpublish=function(e){if(void 0===e&&(e=""),e.length>1023)throw Error("The maximum comment length is 1023 characters.");return this.clone(t,"unpublish(comment = '"+e+"')").postCore()},t.prototype.getText=function(){return this.clone(t,"$value",!1).get(new v.i,{headers:{binaryStringResponseBody:"true"}})},t.prototype.getBlob=function(){return this.clone(t,"$value",!1).get(new v.a,{headers:{binaryStringResponseBody:"true"}})},t.prototype.getBuffer=function(){return this.clone(t,"$value",!1).get(new v.b,{headers:{binaryStringResponseBody:"true"}})},t.prototype.getJSON=function(){return this.clone(t,"$value",!1).get(new v.d,{headers:{binaryStringResponseBody:"true"}})},t.prototype.setContent=function(e){var n=this;return this.clone(t,"$value",!1).postCore({body:e,headers:{"X-HTTP-Method":"PUT"}}).then(function(e){return new t(n)})},t.prototype.getItem=function(){for(var e=this,t=[],n=0;n0?"tenantappcatalog":"sitecollectionappcatalog";return new t(a(this.toUrl()),"_api/web/"+o+"/add(overwrite="+r+",url='"+e+"')").postCore({body:n}).then(function(e){return{data:e,file:new tt(u(e))}})},t}(j),ct=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.deploy=function(e){return void 0===e&&(e=!1),this.clone(t,"Deploy("+e+")").postCore()},t.prototype.retract=function(){return this.clone(t,"Retract").postCore()},t.prototype.install=function(){return this.clone(t,"Install").postCore()},t.prototype.uninstall=function(){return this.clone(t,"Uninstall").postCore()},t.prototype.upgrade=function(){return this.clone(t,"Upgrade").postCore()},t.prototype.remove=function(){return this.clone(t,"Remove").postCore()},t}(R),lt=function(e){function t(t){var n=e.call(this)||this;return n.baseUrl=t,n}return r(t,e),t.ParseResponse=function(e){return new Promise(function(t,n){for(var r,o,i=[],s=new RegExp("^HTTP/[0-9.]+ +([0-9]+) +(.*)","i"),a=e.split("\n"),u="batch",c=0;c0&&(o.push("--changeset_"+i+"--\n\n"),i=""),o.push("--batch_"+e.batchId+"\n")):(i.length<1&&(i=Object(g.h)(),o.push("--batch_"+e.batchId+"\n"),o.push('Content-Type: multipart/mixed; boundary="changeset_'+i+'"\n\n')),o.push("--changeset_"+i+"\n")),o.push("Content-Type: application/http\n"),o.push("Content-Transfer-Encoding: binary\n\n");var u=new Headers,c=Object(g.m)(a.url)?a.url:Object(g.d)(r,a.url);if(b.a.write("["+e.batchId+"] ("+(new Date).getTime()+") Adding request "+a.method+" "+c+" to batch.",0),"GET"!==a.method){var l=a.method,p=a.options.headers;Object(g.j)(a,"options")&&Object(g.j)(a.options,"headers")&&void 0!==p["X-HTTP-Method"]&&(l=p["X-HTTP-Method"],delete p["X-HTTP-Method"]),o.push(l+" "+c+" HTTP/1.1\n"),u.set("Content-Type","application/json;odata=verbose;charset=utf-8")}else o.push(a.method+" "+c+" HTTP/1.1\n");Object(g.o)(u,I.headers),a.options&&Object(g.o)(u,a.options.headers),u.has("Accept")||u.append("Accept","application/json"),u.has("Content-Type")||u.append("Content-Type","application/json;odata=verbose;charset=utf-8"),u.has("X-ClientService-ClientTag")||u.append("X-ClientService-ClientTag","PnPCoreJS:@pnp-1.3.11"),u.forEach(function(e,t){o.push(t+": "+e+"\n")}),o.push("\n"),a.options.body&&o.push(a.options.body+"\n\n")}i.length>0&&(o.push("--changeset_"+i+"--\n\n"),i=""),o.push("--batch_"+e.batchId+"--\n");var d={body:o.join(""),headers:{"Content-Type":"multipart/mixed; boundary=batch_"+e.batchId},method:"POST"};return b.a.write("["+e.batchId+"] ("+(new Date).getTime()+") Sending batch request.",1),n.fetch(Object(g.d)(r,"/_api/$batch"),d).then(function(e){return e.text()}).then(t.ParseResponse).then(function(t){if(t.length!==e.requests.length)throw Error("Could not properly parse responses to match requests in batch.");return b.a.write("["+e.batchId+"] ("+(new Date).getTime()+") Resolving batched requests.",1),t.reduce(function(t,n,r){var o=e.requests[r];return b.a.write("["+o.id+"] ("+(new Date).getTime()+") Resolving request in batch "+e.batchId+".",1),t.then(function(e){return o.parser.parse(n).then(o.resolve).catch(o.reject)})},Promise.resolve())})})},t}(v.e),pt=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,t.prototype.add=function(e,t){var r=this;return void 0===t&&(t=!1),this.clone(n,"add").postCore({body:Object(g.n)({featdefScope:0,featureId:e,force:t})}).then(function(t){return{data:t,feature:r.getById(e)}})},t.prototype.getById=function(e){var t=new dt(this);return t.concat("('"+e+"')"),t},t.prototype.remove=function(e,t){return void 0===t&&(t=!1),this.clone(n,"remove").postCore({body:Object(g.n)({featureId:e,force:t})})};var n;return t=n=o([h("features")],t)}(j),dt=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.deactivate=function(e){var n=this;void 0===e&&(e=!1);var r=this.addBatchDependency();return new t(this).select("DefinitionId").get().then(function(t){var o=n.getParent(pt,n.parentUrl,"",n.batch).remove(t.DefinitionId,e);return r(),o})},t}(R),ht=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,Object.defineProperty(t.prototype,"rootWeb",{get:function(){return new Ct(this,"rootweb")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"features",{get:function(){return new pt(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"userCustomActions",{get:function(){return new Be(this)},enumerable:!0,configurable:!0}),t.prototype.getRootWeb=function(){return this.rootWeb.select("Url").get().then(function(e){return new Ct(e.Url)})},t.prototype.getContextInfo=function(){return new n(this.parentUrl,"_api/contextinfo").postCore().then(function(e){if(Object(g.j)(e,"GetContextWebInformation")){var t=e.GetContextWebInformation;return t.SupportedSchemaVersions=t.SupportedSchemaVersions.results,t}return e})},t.prototype.getDocumentLibraries=function(e){var t=new N("","_api/sp.web.getdocumentlibraries(@v)");return t.query.set("@v","'"+e+"'"),t.get().then(function(e){return Object(g.j)(e,"GetDocumentLibraries")?e.GetDocumentLibraries:e})},t.prototype.getWebUrlFromPageUrl=function(e){var t=new N("","_api/sp.web.getweburlfrompageurl(@v)");return t.query.set("@v","'"+e+"'"),t.get().then(function(e){return Object(g.j)(e,"GetWebUrlFromPageUrl")?e.GetWebUrlFromPageUrl:e})},t.prototype.getChanges=function(e){var t=Object(g.n)({query:Object(g.f)({__metadata:{type:"SP.ChangeQuery"}},e)});return this.clone(n,"getchanges").postCore({body:t})},t.prototype.delete=function(){return i(this,void 0,void 0,function(){var e,t;return s(this,function(r){switch(r.label){case 0:return[4,this.clone(n,"").select("Id").get()];case 1:return e=r.sent(),t=new n(this.parentUrl,"_api/SPSiteManager/Delete"),[4,t.postCore({body:Object(g.n)({siteId:e.Id})})];case 2:return r.sent(),[2]}})})},t.prototype.createBatch=function(){return new lt(this.parentUrl)},t.prototype.openWebById=function(e){return this.clone(n,"openWebById('"+e+"')").postCore().then(function(e){return{data:e,web:Ct.fromUrl(e["odata.id"]||e.__metadata.uri)}})},t.prototype.joinHubSite=function(e){return this.clone(n,"joinHubSite('"+e+"')").postCore()},t.prototype.registerHubSite=function(){return this.clone(n,"registerHubSite").postCore()},t.prototype.unRegisterHubSite=function(){return this.clone(n,"unRegisterHubSite").postCore()},t.prototype.createCommunicationSite=function(e,t,n,r,o,a,u,c,l){var p=this;void 0===t&&(t=1033),void 0===n&&(n=!1),void 0===o&&(o=""),void 0===a&&(a=""),void 0===u&&(u="00000000-0000-0000-0000-000000000000"),void 0===c&&(c="00000000-0000-0000-0000-000000000000");var d={Classification:a,Description:o,HubSiteId:c,Lcid:t,Owner:l,ShareByEmailEnabled:n,SiteDesignId:u,Title:e,Url:r,WebTemplate:"SITEPAGEPUBLISHING#0",WebTemplateExtensionId:"00000000-0000-0000-0000-000000000000"},h=Object(g.n)({request:Object(g.f)({__metadata:{type:"Microsoft.SharePoint.Portal.SPSiteCreationRequest"}},d)});return this.getRootWeb().then(function(e){return i(p,void 0,void 0,function(){var t,n;return s(this,function(r){return t=new E,n=e.parentUrl+"/_api/SPSiteManager/Create",[2,t.post(n,{body:h,headers:{Accept:"application/json;odata=verbose","Content-Type":"application/json;odata=verbose;charset=utf-8"}}).then(function(e){return e.json()}).then(function(e){if(Object(g.j)(e,"error"))throw e;return Object(g.j)(e,"d")&&Object(g.j)(e.d,"Create")?e.d.Create:e})]})})})},t.prototype.createModernTeamSite=function(e,t,n,r,o,a,u,c,l){var p=this;void 0===n&&(n=!0),void 0===r&&(r=1033),void 0===o&&(o=""),void 0===a&&(a=""),void 0===c&&(c="00000000-0000-0000-0000-000000000000");var d={alias:t,displayName:e,isPublic:n,optionalParams:{Classification:a,CreationOptions:{results:["SPSiteLanguage:"+r,"HubSiteId:"+c]},Description:o,Owners:{results:u||[]}}};return l&&d.optionalParams.CreationOptions.results.push("implicit_formula_292aa8a00786498a87a5ca52d9f4214a_"+l),this.getRootWeb().then(function(e){return i(p,void 0,void 0,function(){var t,n;return s(this,function(r){return t=new E,n=e.parentUrl+"/_api/GroupSiteManager/CreateGroupEx",[2,t.post(n,{body:Object(g.n)(d),headers:{Accept:"application/json;odata=verbose","Content-Type":"application/json;odata=verbose;charset=utf-8"}}).then(function(e){return e.json()})]})})})};var n;return t=n=o([h("_api/site")],t)}(R),ft=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.getById=function(e){var t=new yt(this);return t.concat("("+e+")"),t},t.prototype.add=function(e,n,r){var o=this;void 0===r&&(r=!0);var i=Object(g.n)(Object(g.f)(d("SP.NavigationNode"),{IsVisible:r,Title:e,Url:n}));return this.clone(t,null).postCore({body:i}).then(function(e){return{data:e,node:o.getById(e.Id)}})},t.prototype.moveAfter=function(e,n){var r=Object(g.n)({nodeId:e,previousNodeId:n});return this.clone(t,"MoveAfter").postCore({body:r})},t}(j),yt=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),Object.defineProperty(t.prototype,"children",{get:function(){return new ft(this,"Children")},enumerable:!0,configurable:!0}),t.prototype.delete=function(){return e.prototype.deleteCore.call(this)},t.prototype.update=function(e){var t=this,n=Object(g.n)(Object(g.f)({__metadata:{type:"SP.NavigationNode"}},e));return this.postCore({body:n,headers:{"X-HTTP-Method":"MERGE"}}).then(function(e){return{data:e,node:t}})},t}(R),mt=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),Object.defineProperty(t.prototype,"quicklaunch",{get:function(){return new ft(this,"quicklaunch")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"topNavigationBar",{get:function(){return new ft(this,"topnavigationbar")},enumerable:!0,configurable:!0}),t=o([h("navigation")],t)}(N),gt=function(e){function t(t,n){return void 0===n&&(n=null),e.call(this,t,n)||this}return r(t,e),t.prototype.getMenuState=function(e,n,r,o){return void 0===e&&(e=null),void 0===n&&(n=10),void 0===r&&(r=null),void 0===o&&(o=null),new t(this,"_api/navigation/MenuState").postCore({body:Object(g.n)({customProperties:o,depth:n,mapProviderName:r,menuNodeKey:e})})},t.prototype.getMenuNodeKey=function(e,n){return void 0===n&&(n=null),new t(this,"_api/navigation/MenuNodeKey").postCore({body:Object(g.n)({currentUrl:e,mapProviderName:n})})},t}(N),bt=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,t.FromUrl=function(e){if(null===e)return new n("");var t=e.indexOf("_api/");return new n(t>-1?e.substr(0,t):e)},t.prototype.getRelatedItems=function(e,t){var r=this.clone(n,null);return r.concat(".GetRelatedItems"),r.postCore({body:Object(g.n)({SourceItemID:t,SourceListName:e})})},t.prototype.getPageOneRelatedItems=function(e,t){var r=this.clone(n,null);return r.concat(".GetPageOneRelatedItems"),r.postCore({body:Object(g.n)({SourceItemID:t,SourceListName:e})})},t.prototype.addSingleLink=function(e,t,r,o,i,s,a){void 0===a&&(a=!1);var u=this.clone(n,null);return u.concat(".AddSingleLink"),u.postCore({body:Object(g.n)({SourceItemID:t,SourceListName:e,SourceWebUrl:r,TargetItemID:i,TargetListName:o,TargetWebUrl:s,TryAddReverseLink:a})})},t.prototype.addSingleLinkToUrl=function(e,t,r,o){void 0===o&&(o=!1);var i=this.clone(n,null);return i.concat(".AddSingleLinkToUrl"),i.postCore({body:Object(g.n)({SourceItemID:t,SourceListName:e,TargetItemUrl:r,TryAddReverseLink:o})})},t.prototype.addSingleLinkFromUrl=function(e,t,r,o){void 0===o&&(o=!1);var i=this.clone(n,null);return i.concat(".AddSingleLinkFromUrl"),i.postCore({body:Object(g.n)({SourceItemUrl:e,TargetItemID:r,TargetListName:t,TryAddReverseLink:o})})},t.prototype.deleteSingleLink=function(e,t,r,o,i,s,a){void 0===a&&(a=!1);var u=this.clone(n,null);return u.concat(".DeleteSingleLink"),u.postCore({body:Object(g.n)({SourceItemID:t,SourceListName:e,SourceWebUrl:r,TargetItemID:i,TargetListName:o,TargetWebUrl:s,TryDeleteReverseLink:a})})};var n;return t=n=o([h("_api/SP.RelatedItemManager")],t)}(N),vt=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),Object.defineProperty(t.prototype,"installedLanguages",{get:function(){return new St(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"globalInstalledLanguages",{get:function(){return new St(this,"globalinstalledlanguages")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"timeZone",{get:function(){return new Tt(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"timeZones",{get:function(){return new Ot(this)},enumerable:!0,configurable:!0}),t=o([h("regionalsettings")],t)}(R),St=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t=o([h("installedlanguages")],t)}(j),Tt=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,t.prototype.utcToLocalTime=function(e){var t;return t="string"==typeof e?e:e.toISOString(),this.clone(n,"utctolocaltime('"+t+"')").postCore().then(function(e){return Object(g.j)(e,"UTCToLocalTime")?e.UTCToLocalTime:e})},t.prototype.localTimeToUTC=function(e){var t;return t="string"==typeof e?e:Object(g.e)(e,"minute",-1*e.getTimezoneOffset()).toISOString(),this.clone(n,"localtimetoutc('"+t+"')").postCore().then(function(e){return Object(g.j)(e,"LocalTimeToUTC")?e.LocalTimeToUTC:e})};var n;return t=n=o([h("timezone")],t)}(R),Ot=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,t.prototype.getById=function(e){return this.clone(n,"GetById("+e+")").postCore({},c(Tt))};var n;return t=n=o([h("timezones")],t)}(j),wt=function(e){function t(n,r){return e.call(this,t.getBaseUrl(n),"_api/Microsoft.Sharepoint.Utilities.WebTemplateExtensions.SiteScriptUtility."+r)||this}return r(t,e),t.getBaseUrl=function(e){if("string"==typeof e)return e;var t=e,n=t.toUrl(),r=n.indexOf("_api/");return r<0?n:n.substr(0,r)},t.prototype.execute=function(e){return this.postCore({body:JSON.stringify(e),headers:{"Content-Type":"application/json;charset=utf-8"}})},t.prototype.createSiteDesign=function(e){return i(this,void 0,void 0,function(){return s(this,function(n){switch(n.label){case 0:return[4,this.clone(t,"CreateSiteDesign").execute({info:e})];case 1:return[2,n.sent()]}})})},t.prototype.applySiteDesign=function(e,n){return i(this,void 0,void 0,function(){return s(this,function(r){switch(r.label){case 0:return[4,this.clone(t,"ApplySiteDesign").execute({siteDesignId:e,webUrl:n})];case 1:return[2,r.sent()]}})})},t.prototype.getSiteDesigns=function(){return i(this,void 0,void 0,function(){return s(this,function(e){switch(e.label){case 0:return[4,this.clone(t,"GetSiteDesigns").execute({})];case 1:return[2,e.sent()]}})})},t.prototype.getSiteDesignMetadata=function(e){return i(this,void 0,void 0,function(){return s(this,function(n){switch(n.label){case 0:return[4,this.clone(t,"GetSiteDesignMetadata").execute({id:e})];case 1:return[2,n.sent()]}})})},t.prototype.updateSiteDesign=function(e){return i(this,void 0,void 0,function(){return s(this,function(n){switch(n.label){case 0:return[4,this.clone(t,"UpdateSiteDesign").execute({updateInfo:e})];case 1:return[2,n.sent()]}})})},t.prototype.deleteSiteDesign=function(e){return i(this,void 0,void 0,function(){return s(this,function(n){switch(n.label){case 0:return[4,this.clone(t,"DeleteSiteDesign").execute({id:e})];case 1:return[2,n.sent()]}})})},t.prototype.getSiteDesignRights=function(e){return i(this,void 0,void 0,function(){return s(this,function(n){switch(n.label){case 0:return[4,this.clone(t,"GetSiteDesignRights").execute({id:e})];case 1:return[2,n.sent()]}})})},t.prototype.grantSiteDesignRights=function(e,n,r){return void 0===r&&(r=1),i(this,void 0,void 0,function(){return s(this,function(o){switch(o.label){case 0:return[4,this.clone(t,"GrantSiteDesignRights").execute({grantedRights:r.toString(),id:e,principalNames:n})];case 1:return[2,o.sent()]}})})},t.prototype.revokeSiteDesignRights=function(e,n){return i(this,void 0,void 0,function(){return s(this,function(r){switch(r.label){case 0:return[4,this.clone(t,"RevokeSiteDesignRights").execute({id:e,principalNames:n})];case 1:return[2,r.sent()]}})})},t.prototype.addSiteDesignTask=function(e,n){return i(this,void 0,void 0,function(){return s(this,function(r){switch(r.label){case 0:return[4,this.clone(t,"AddSiteDesignTask").execute({webUrl:e,siteDesignId:n})];case 1:return[2,r.sent()]}})})},t.prototype.addSiteDesignTaskToCurrentWeb=function(e){return i(this,void 0,void 0,function(){return s(this,function(n){switch(n.label){case 0:return[4,this.clone(t,"AddSiteDesignTaskToCurrentWeb").execute({siteDesignId:e})];case 1:return[2,n.sent()]}})})},t.prototype.getSiteDesignTask=function(e){return i(this,void 0,void 0,function(){var n;return s(this,function(r){switch(r.label){case 0:return[4,this.clone(t,"GetSiteDesignTask").execute({taskId:e})];case 1:return n=r.sent(),[2,Object(g.j)(n,"ID")?n:null]}})})},t.prototype.getSiteDesignRun=function(e,n){return i(this,void 0,void 0,function(){return s(this,function(r){switch(r.label){case 0:return[4,this.clone(t,"GetSiteDesignRun").execute({webUrl:e,siteDesignId:n})];case 1:return[2,r.sent()]}})})},t.prototype.getSiteDesignRunStatus=function(e,n){return i(this,void 0,void 0,function(){return s(this,function(r){switch(r.label){case 0:return[4,this.clone(t,"GetSiteDesignRunStatus").execute({webUrl:e,runId:n})];case 1:return[2,r.sent()]}})})},t}(N),It=function(e){function t(n,r){return e.call(this,t.getBaseUrl(n),"_api/Microsoft.Sharepoint.Utilities.WebTemplateExtensions.SiteScriptUtility."+r)||this}return r(t,e),t.getBaseUrl=function(e){if("string"==typeof e)return e;var t=e,n=t.toUrl(),r=n.indexOf("_api/");return r<0?n:n.substr(0,r)},t.prototype.execute=function(e){return this.postCore({body:JSON.stringify(e)})},t.prototype.getSiteScripts=function(){return this.clone(t,"GetSiteScripts",!0).execute({})},t.prototype.createSiteScript=function(e,n,r){return i(this,void 0,void 0,function(){return s(this,function(o){switch(o.label){case 0:return[4,this.clone(t,"CreateSiteScript(Title=@title,Description=@desc)?@title='"+encodeURIComponent(e)+"'&@desc='"+encodeURIComponent(n)+"'").execute(r)];case 1:return[2,o.sent()]}})})},t.prototype.getSiteScriptMetadata=function(e){return i(this,void 0,void 0,function(){return s(this,function(n){switch(n.label){case 0:return[4,this.clone(t,"GetSiteScriptMetadata").execute({id:e})];case 1:return[2,n.sent()]}})})},t.prototype.deleteSiteScript=function(e){return i(this,void 0,void 0,function(){return s(this,function(n){switch(n.label){case 0:return[4,this.clone(t,"DeleteSiteScript").execute({id:e})];case 1:return n.sent(),[2]}})})},t.prototype.updateSiteScript=function(e,n){return i(this,void 0,void 0,function(){return s(this,function(r){switch(r.label){case 0:return n&&(e.Content=JSON.stringify(n)),[4,this.clone(t,"UpdateSiteScript").execute({updateInfo:e})];case 1:return[2,r.sent()]}})})},t.prototype.getSiteScriptFromList=function(e){return i(this,void 0,void 0,function(){return s(this,function(n){switch(n.label){case 0:return[4,this.clone(t,"GetSiteScriptFromList").execute({listUrl:e})];case 1:return[2,n.sent()]}})})},t.prototype.getSiteScriptFromWeb=function(e,n){return i(this,void 0,void 0,function(){return s(this,function(r){switch(r.label){case 0:return[4,this.clone(t,"getSiteScriptFromWeb").execute({webUrl:e,info:n})];case 1:return[2,r.sent()]}})})},t}(N),_t=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,t.prototype.add=function(e,t,r,o,i,s){void 0===r&&(r=""),void 0===o&&(o="STS"),void 0===i&&(i=1033),void 0===s&&(s=!0);var a={Description:r,Language:i,Title:e,Url:t,UseSamePermissionsAsParentSite:s,WebTemplate:o},c=Object(g.n)({parameters:Object(g.f)({__metadata:{type:"SP.WebCreationInformation"}},a)});return this.clone(n,"add").postCore({body:c}).then(function(e){return{data:e,web:new Ct(u(e).replace(/_api\/web\/?/i,""))}})};var n;return t=n=o([h("webs")],t)}(j),Pt=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t=o([h("webinfos")],t)}(j),Ct=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,t.fromUrl=function(e,t){return new n(a(e),t)},Object.defineProperty(t.prototype,"webs",{get:function(){return new _t(this)},enumerable:!0,configurable:!0}),t.prototype.getParentWeb=function(){var e=this;return this.select("ParentWeb/Id").expand("ParentWeb").get().then(function(t){var n=t.ParentWeb;return n?new ht(e.parentUrl).openWebById(n.Id):null})},t.prototype.getSubwebsFilteredForCurrentUser=function(e,t){return void 0===e&&(e=-1),void 0===t&&(t=-1),this.clone(_t,"getSubwebsFilteredForCurrentUser(nWebTemplateFilter="+e+",nConfigurationFilter="+t+")")},Object.defineProperty(t.prototype,"allProperties",{get:function(){return this.clone(R,"allproperties")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"webinfos",{get:function(){return new Pt(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"contentTypes",{get:function(){return new _e(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"lists",{get:function(){return new Ge(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"fields",{get:function(){return new Ue(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"features",{get:function(){return new pt(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"availablefields",{get:function(){return new Ue(this,"availablefields")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"navigation",{get:function(){return new mt(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"siteUsers",{get:function(){return new A(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"siteGroups",{get:function(){return new F(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"siteUserInfoList",{get:function(){return new We(this,"siteuserinfolist")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"regionalSettings",{get:function(){return new vt(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"currentUser",{get:function(){return new L(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"folders",{get:function(){return new we(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"userCustomActions",{get:function(){return new Be(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"roleDefinitions",{get:function(){return new G(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"relatedItems",{get:function(){return bt.FromUrl(this.toUrl())},enumerable:!0,configurable:!0}),t.prototype.createBatch=function(){return new lt(this.parentUrl)},Object.defineProperty(t.prototype,"rootFolder",{get:function(){return new Ie(this,"rootFolder")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"associatedOwnerGroup",{get:function(){return new M(this,"associatedownergroup")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"associatedMemberGroup",{get:function(){return new M(this,"associatedmembergroup")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"associatedVisitorGroup",{get:function(){return new M(this,"associatedvisitorgroup")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"defaultDocumentLibrary",{get:function(){return new We(this,"DefaultDocumentLibrary")},enumerable:!0,configurable:!0}),t.prototype.getFolderById=function(e){return new Ie(this,"getFolderById('"+e+"')")},t.prototype.getFolderByServerRelativeUrl=function(e){return new Ie(this,"getFolderByServerRelativeUrl('"+e+"')")},t.prototype.getFolderByServerRelativePath=function(e){return new Ie(this,"getFolderByServerRelativePath(decodedUrl='"+e+"')")},t.prototype.getFileById=function(e){return new tt(this,"getFileById('"+e+"')")},t.prototype.getFileByServerRelativeUrl=function(e){return new tt(this,"getFileByServerRelativeUrl('"+e+"')")},t.prototype.getFileByServerRelativePath=function(e){return new tt(this,"getFileByServerRelativePath(decodedUrl='"+e+"')")},t.prototype.getList=function(e){return new We(this,"getList('"+e+"')")},t.prototype.update=function(e){var t=this,n=Object(g.n)(Object(g.f)({__metadata:{type:"SP.Web"}},e));return this.postCore({body:n,headers:{"X-HTTP-Method":"MERGE"}}).then(function(e){return{data:e,web:t}})},t.prototype.delete=function(){return e.prototype.deleteCore.call(this)},t.prototype.applyTheme=function(e,t,r,o){var i=Object(g.n)({backgroundImageUrl:r,colorPaletteUrl:e,fontSchemeUrl:t,shareGenerated:o});return this.clone(n,"applytheme").postCore({body:i})},t.prototype.applyWebTemplate=function(e){var t=this.clone(n,"applywebtemplate");return t.concat("(@t)"),t.query.set("@t",e),t.postCore()},t.prototype.ensureUser=function(e){var t=Object(g.n)({logonName:e});return this.clone(n,"ensureuser").postCore({body:t}).then(function(e){return{data:e,user:new k(u(e))}})},t.prototype.availableWebTemplates=function(e,t){return void 0===e&&(e=1033),void 0===t&&(t=!0),new j(this,"getavailablewebtemplates(lcid="+e+", doincludecrosslanguage="+t+")")},t.prototype.getCatalog=function(e){return this.clone(n,"getcatalog("+e+")").select("Id").get().then(function(e){return new We(u(e))})},t.prototype.getChanges=function(e){var t=Object(g.n)({query:Object(g.f)({__metadata:{type:"SP.ChangeQuery"}},e)});return this.clone(n,"getchanges").postCore({body:t})},Object.defineProperty(t.prototype,"customListTemplate",{get:function(){return new j(this,"getcustomlisttemplates")},enumerable:!0,configurable:!0}),t.prototype.getUserById=function(e){return new k(this,"getUserById("+e+")")},t.prototype.mapToIcon=function(e,t,r){return void 0===t&&(t=0),void 0===r&&(r=""),this.clone(n,"maptoicon(filename='"+e+"', progid='"+r+"', size="+t+")").get()},t.prototype.getStorageEntity=function(e){return this.clone(n,"getStorageEntity('"+e+"')").get()},t.prototype.setStorageEntity=function(e,t,r,o){return void 0===r&&(r=""),void 0===o&&(o=""),this.clone(n,"setStorageEntity").postCore({body:Object(g.n)({comments:o,description:r,key:e,value:t})})},t.prototype.removeStorageEntity=function(e){return this.clone(n,"removeStorageEntity('"+e+"')").postCore()},t.prototype.getAppCatalog=function(e){return new ut(e||this)},t.prototype.getSiteCollectionAppCatalog=function(e){return new ut(e||this,"_api/web/sitecollectionappcatalog/AvailableApps")},t.prototype.getClientSideWebParts=function(){return this.clone(j,"GetClientSideWebParts").get()},t.prototype.addClientSidePage=function(e,t){return void 0===t&&(t=e.replace(/\.[^\/.]+$/,"")),xt.create(this,e,t)},t.prototype.addClientSidePageByPath=function(e,t){return void 0===t&&(t=e.replace(/\.[^\/.]+$/,"")),xt.create(this,e,t)},t.prototype.createDefaultAssociatedGroups=function(e,t,r){var o=this.clone(n,"createDefaultAssociatedGroups(userLogin=@u,userLogin2=@v,groupNameSeed=@s)");return o.query.set("@u","'"+encodeURIComponent(e||"")+"'"),o.query.set("@v","'"+encodeURIComponent(t||"")+"'"),o.query.set("@s","'"+encodeURIComponent(r||"")+"'"),o.postCore()},t.prototype.hubSiteData=function(e){return void 0===e&&(e=!1),i(this,void 0,void 0,function(){return s(this,function(t){return[2,this.clone(n,"hubSiteData("+e+")").get().then(function(e){return JSON.parse(e)})]})})},t.prototype.syncHubSiteTheme=function(){return this.clone(n,"syncHubSiteTheme").postCore()},t.prototype.getSiteDesignRuns=function(e){return new wt(this,"").getSiteDesignRun(void 0,e)},t.prototype.getSiteScript=function(e){return new It(this,"").getSiteScriptFromWeb(void 0,e)},t.prototype.addSiteDesignTask=function(e){return new wt(this,"").addSiteDesignTaskToCurrentWeb(e)},t.prototype.getSiteDesignRunStatus=function(e){return new wt(this,"").getSiteDesignRunStatus(void 0,e)};var n;return t=n=o([h("_api/web")],t)}(fe);!function(e){e[e.NotPromoted=0]="NotPromoted",e[e.PromoteOnPublish=1]="PromoteOnPublish",e[e.Promoted=2]="Promoted"}(at||(at={}));var Et,xt=function(e){function t(n,r,o,i,s,u){void 0===i&&(i=!1),void 0===s&&(s=[]),void 0===u&&(u=!1);var c=e.call(this,n,r)||this;return c.json=o,c.sections=s,c.commentsDisabled=u,c._bannerImageDirty=!1,"string"==typeof n?(c._parentUrl="",c._url=Object(g.d)(a(n),r)):c.extend(t.initFrom(n,null),r),c._pageSettings={controlType:0,pageSettingsSlice:{isDefaultDescription:!0,isDefaultThumbnail:!0}},c._layoutPart=t.getDefaultLayoutPart(),void 0===o||i||c.fromJSON(o),c}return r(t,e),t.create=function(e,n,r,o,a){return void 0===o&&(o="Article"),void 0===a&&(a=0),i(this,void 0,void 0,function(){var i,u;return s(this,function(s){switch(s.label){case 0:return n=n.replace(/\.aspx$/i,""),[4,t.initFrom(e,"_api/sitepages/pages").postCore({body:Object(g.n)(Object.assign(d("SP.Publishing.SitePage"),{PageLayoutType:o,PromotedState:a}))})];case 1:return i=s.sent(),u=new t(e,"",i),u.title=n,[4,u.save(!1)];case 2:return s.sent(),u.title=r,[2,u]}})})},t.fromFile=function(e){return e.getItem().then(function(n){return new t(a(e.toUrl()),"",{Id:n.Id},!0).configureFrom(e).load()})},t.getDefaultLayoutPart=function(){return{dataVersion:"1.4",description:"Title Region Description",id:"cbe7b0a9-3504-44dd-a3a3-0e5cacd07788",instanceId:"cbe7b0a9-3504-44dd-a3a3-0e5cacd07788",properties:{authors:[],layoutType:"FullWidthImage",showPublishDate:!1,showTopicHeader:!1,textAlignment:"Left",title:"",topicHeader:""},serverProcessedContent:{htmlStrings:{},searchablePlainTexts:{},imageSources:{},links:{}},title:"Title area"}},t.initFrom=function(e,n){return new t(a(e.toUrl()),n).configureFrom(e)},Object.defineProperty(t.prototype,"pageLayout",{get:function(){return this.json.PageLayoutType},set:function(e){this.json.PageLayoutType=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"bannerImageUrl",{get:function(){return this.json.BannerImageUrl},set:function(e){this.json.BannerImageUrl=e,this._bannerImageDirty=!0},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"bannerImageSourceType",{get:function(){return this._layoutPart.properties.imageSourceType},set:function(e){this._layoutPart.properties.imageSourceType=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"topicHeader",{get:function(){return Object(g.q)(this.json.TopicHeader)?this.json.TopicHeader:""},set:function(e){this.json.TopicHeader=e,this._layoutPart.properties.topicHeader=e,Object(g.r)(e)&&(this.showTopicHeader=!1)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"title",{get:function(){return this._layoutPart.properties.title},set:function(e){this.json.Title=e,this._layoutPart.properties.title=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"layoutType",{get:function(){return this._layoutPart.properties.layoutType},set:function(e){this._layoutPart.properties.layoutType=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"headerTextAlignment",{get:function(){return this._layoutPart.properties.textAlignment},set:function(e){this._layoutPart.properties.textAlignment=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"showTopicHeader",{get:function(){return this._layoutPart.properties.showTopicHeader},set:function(e){this._layoutPart.properties.showTopicHeader=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"showPublishDate",{get:function(){return this._layoutPart.properties.showPublishDate},set:function(e){this._layoutPart.properties.showPublishDate=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"hasVerticalSection",{get:function(){return this.sections.findIndex(function(e){return 2===e.layoutIndex})>-1},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"verticalSection",{get:function(){return this.hasVerticalSection?this.addVerticalSection():null},enumerable:!0,configurable:!0}),t.prototype.addSection=function(){var e=new Nt(this,f(this.sections),1);return this.sections.push(e),e},t.prototype.addVerticalSection=function(){var e=this.sections.findIndex(function(e){return 2===e.layoutIndex});if(e>-1)return this.sections[e];var t=new Nt(this,f(this.sections),2);return this.sections.push(t),t},t.prototype.fromJSON=function(e){this.json=e;var t=JSON.parse(e.CanvasContent1),n=JSON.parse(e.LayoutWebpartsContent);return n&&n.length>0&&(this._layoutPart=n[0]),this.setControls(t),this},t.prototype.load=function(){var e=this;return this.getItem("Id","CommentsDisabled").then(function(t){return new N(e,"_api/sitepages/pages("+t.Id+")").get().then(function(n){return e.commentsDisabled=t.CommentsDisabled,e.fromJSON(n)})})},t.prototype.save=function(e){var n=this;if(void 0===e&&(e=!0),null===this.json.Id)throw Error("The id for this page is null. If you want to create a new page, please use ClientSidePage.Create");var r=Promise.resolve({});return this._bannerImageDirty&&(r=r.then(function(e){return new Promise(function(e,t){var r=n.json.BannerImageUrl;Object(g.m)(r)&&(r=r.replace(/^https?:\/\/[a-z0-9\.]*?\.[a-z]{2,3}\//i,"/"));var o=new ht(a(n.toUrl())),i=new Ct(a(n.toUrl())),s=i.getFileByServerRelativePath(r),u="",c="",l="",p="",d="";Promise.all([o.select("Id","Url").get().then(function(e){return u=e.Id}),i.select("Id","Url").get().then(function(e){c=e.Id,d=e.Url}),s.listItemAllFields.select("UniqueId","ParentList/Id").expand("ParentList").get().then(function(e){l=e.UniqueId,p=e.ParentList.Id})]).then(function(){var t=new N(d,"_layouts/15/getpreview.ashx");t.query.set("guidSite",""+u),t.query.set("guidWeb",""+c),t.query.set("guidFile",""+l),n.bannerImageUrl=t.toUrlAndQuery(),Object(g.q)(n._layoutPart.serverProcessedContent)||(n._layoutPart.serverProcessedContent={}),n._layoutPart.serverProcessedContent.imageSources={imageSource:r},Object(g.q)(n._layoutPart.serverProcessedContent.customMetadata)||(n._layoutPart.serverProcessedContent.customMetadata={}),n._layoutPart.serverProcessedContent.customMetadata.imageSource={listId:p,siteId:u,uniqueId:l,webId:c},n._layoutPart.properties.webId=c,n._layoutPart.properties.siteId=u,n._layoutPart.properties.listId=p,n._layoutPart.properties.uniqueId=l,e()}).catch(t)})})),this.json.IsPageCheckedOutToCurrentUser||(r=r.then(function(e){return t.initFrom(n,"_api/sitepages/pages("+n.json.Id+")/checkoutpage").postCore()})),r=r.then(function(e){var r=Object.assign(d("SP.Publishing.SitePage"),{AuthorByline:n.json.AuthorByline||[],BannerImageUrl:n.bannerImageUrl,CanvasContent1:n.getCanvasContent1(),LayoutWebpartsContent:n.getLayoutWebpartsContent(),Title:n.title,TopicHeader:n.topicHeader}),o=t.initFrom(n,"_api/sitepages/pages("+n.json.Id+")/savepage");return o.configure({headers:{"if-match":"*"}}),o.postCore({body:Object(g.n)(r)})}),e&&(r=r.then(function(e){return t.initFrom(n,"_api/sitepages/pages("+n.json.Id+")/publish").postCore()}).then(function(e){e&&(n.json.IsPageCheckedOutToCurrentUser=!1)})),r=r.then(function(e){n._bannerImageDirty=!1})},t.prototype.discardPageCheckout=function(){return i(this,void 0,void 0,function(){var e;return s(this,function(n){switch(n.label){case 0:if(null===this.json.Id)throw Error("The id for this page is null. If you want to create a new page, please use ClientSidePage.Create");return[4,t.initFrom(this,"_api/sitepages/pages("+this.json.Id+")/discardPage").postCore({body:Object(g.n)(d("SP.Publishing.SitePage"))})];case 1:return e=n.sent(),this.fromJSON(e),[2]}})})},t.prototype.promoteToNews=function(){return i(this,void 0,void 0,function(){return s(this,function(e){return[2,this.promoteNewsImpl("promoteToNews")]})})},t.prototype.enableComments=function(){var e=this;return this.setCommentsOn(!0).then(function(t){return e.commentsDisabled=!1,t})},t.prototype.disableComments=function(){var e=this;return this.setCommentsOn(!1).then(function(t){return e.commentsDisabled=!0,t})},t.prototype.findControlById=function(e){return this.findControl(function(t){return t.id===e})},t.prototype.findControl=function(e){for(var t=0;t3?{}:{zoneEmphasis:e}},t.prototype.setCommentsOn=function(e){return this.getItem().then(function(t){return new ze(t,"SetCommentsDisabled("+!e+")").update({})})},t.prototype.promoteNewsImpl=function(e){return i(this,void 0,void 0,function(){var n,r;return s(this,function(o){switch(o.label){case 0:return Object(g.r)(this.json.VersionInfo.LastVersionCreatedBy)?(n=new Date(this.json.VersionInfo.LastVersionCreated),n.getFullYear()<2e3?[4,this.save(!0)]:[3,2]):[3,2];case 1:o.sent(),o.label=2;case 2:if(null===this.json.Id)throw Error("The id for this page is null. If you want to create a new page, please use ClientSidePage.Create");return[4,t.initFrom(this,"_api/sitepages/pages("+this.json.Id+")/"+e).postCore({body:Object(g.n)(d("SP.Publishing.SitePage"))})];case 3:return r=o.sent(),[2,r]}})})},t.prototype.mergePartToTree=function(e,t){var n=null,r=12,o=0,i=0,s=1;t&&(Object(g.j)(t,"zoneIndex")&&(i=t.zoneIndex),Object(g.j)(t,"sectionIndex")&&(o=t.sectionIndex),Object(g.j)(t,"sectionFactor")&&(r=t.sectionFactor),Object(g.j)(t,"layoutIndex")&&(s=t.layoutIndex));var a=e.data&&e.data.emphasis&&e.data.emphasis.zoneEmphasis?e.data.emphasis.zoneEmphasis:0,u=this.getOrCreateSection(i,s,a),c=u.columns.filter(function(e){return e.order===o});n=c.length<1?u.addColumn(r,s):c[0],e.column=n,n.addControl(e)},t.prototype.mergeColumnToTree=function(e){var t=Object(g.j)(e.data,"position")&&Object(g.j)(e.data.position,"zoneIndex")?e.data.position.zoneIndex:0,n=Object(g.j)(e.data,"position")&&Object(g.j)(e.data.position,"layoutIndex")?e.data.position.layoutIndex:1,r=this.getOrCreateSection(t,n,e.data.emphasis.zoneEmphasis||0);e.section=r,r.columns.push(e)},t.prototype.getOrCreateSection=function(e,t,n){var r=null,o=this.sections.filter(function(n){return n.order===e&&n.layoutIndex===t});return o.length<1?(r=2===t?this.addVerticalSection():this.addSection(),r.order=e,r.emphasis=n):r=o[0],r},t.prototype.getItem=function(){for(var e=this,n=[],r=0;r")||(e="

"+e+"

"),this.data.innerHTML=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"order",{get:function(){return this.data.position.controlIndex},set:function(e){this.data.position.controlIndex=e},enumerable:!0,configurable:!0}),t.prototype.onColumnChange=function(e){this.data.position.sectionFactor=e.factor,this.data.position.controlIndex=f(e.controls),this.data.position.zoneIndex=e.data.position.zoneIndex,this.data.position.sectionIndex=e.order,this.data.position.layoutIndex=e.data.position.layoutIndex},t.Default={addedFromPersistedData:!1,anchorComponentId:"",controlType:4,displayMode:2,editorType:"CKEditor",emphasis:{},id:"",innerHTML:"",position:{controlIndex:1,layoutIndex:1,sectionFactor:12,sectionIndex:1,zoneIndex:1}},t}(Rt),Ut=function(e){function t(n){return void 0===n&&(n=JSON.parse(JSON.stringify(t.Default))),e.call(this,n)||this}return r(t,e),t.fromComponentDef=function(e){var n=new t;return n.import(e),n},Object.defineProperty(t.prototype,"title",{get:function(){return this.data.webPartData.title},set:function(e){this.data.webPartData.title=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"description",{get:function(){return this.data.webPartData.description},set:function(e){this.data.webPartData.description=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"order",{get:function(){return this.data.position.controlIndex},set:function(e){this.data.position.controlIndex=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"height",{get:function(){return this.data.reservedHeight},set:function(e){this.data.reservedHeight=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"width",{get:function(){return this.data.reservedWidth},set:function(e){this.data.reservedWidth=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"dataVersion",{get:function(){return this.data.webPartData.dataVersion},set:function(e){this.data.webPartData.dataVersion=e},enumerable:!0,configurable:!0}),t.prototype.setProperties=function(e){return this.data.webPartData.properties=Object(g.f)(this.data.webPartData.properties,e),this},t.prototype.getProperties=function(){return this.data.webPartData.properties},t.prototype.onColumnChange=function(e){this.data.position={controlIndex:f(e.controls),layoutIndex:e.data.position.layoutIndex,sectionFactor:e.factor,sectionIndex:e.data.position.sectionIndex,zoneIndex:e.data.position.zoneIndex}},t.prototype.import=function(e){var t=Object(g.h)(),n=e.Id.replace(/^\{|\}$/g,"").toLowerCase(),r=JSON.parse(e.Manifest),o=r.preconfiguredEntries[0];this.setData(Object.assign({},this.data,{id:t,webPartData:{dataVersion:"1.0",description:o.description.default,id:n,instanceId:t,properties:o.properties,title:o.title.default},webPartId:n}))},t.Default={addedFromPersistedData:!1,controlType:3,displayMode:2,emphasis:{},id:null,position:{controlIndex:1,layoutIndex:1,sectionFactor:12,sectionIndex:1,zoneIndex:1},reservedHeight:500,reservedWidth:500,webPartData:null,webPartId:null},t}(Rt),kt=(new Map([["text","Querytext"],["template","QueryTemplate"],["sourceId","SourceId"],["trimDuplicatesIncludeId",""],["startRow",""],["rowLimit",""],["rankingModelId",""],["rowsPerPage",""],["selectProperties",""],["culture",""],["timeZoneId",""],["refinementFilters",""],["refiners",""],["hiddenConstraints",""],["sortList",""],["timeout",""],["hithighlightedProperties",""],["clientType",""],["personalizationData",""],["resultsURL",""],["queryTag",""],["properties",""],["queryTemplatePropertiesUrl",""],["reorderingRules",""],["hitHighlightedMultivaluePropertyLimit",""],["collapseSpecification",""],["uiLanguage",""],["desiredSnippetLength",""],["maxSnippetLength",""],["summaryLength",""]]),new Map([]),function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.execute=function(e){var t=this,n=this.parseQuery(e),r=Object(g.n)({request:Object(g.f)(d("Microsoft.Office.Server.Search.REST.SearchRequest"),Object.assign({},n,{HitHighlightedProperties:this.fixArrProp(n.HitHighlightedProperties),Properties:this.fixArrProp(n.Properties),RefinementFilters:this.fixArrProp(n.RefinementFilters),ReorderingRules:this.fixArrProp(n.ReorderingRules),SelectProperties:this.fixArrProp(n.SelectProperties),SortList:this.fixArrProp(n.SortList)}))});if(this._useCaching){this._forceCaching=!0;var o="PnPjs.SearchWithCaching("+Object(g.i)(r)+")";Object(g.q)(this._cachingOptions)?/\/_api\/search\/postquery$/i.test(this._cachingOptions.key)&&(this._cachingOptions.key=o):this._cachingOptions=new v.c(o)}return this.postCore({body:r}).then(function(e){return new Lt(e,t.toUrl(),n)})},t.prototype.fixArrProp=function(e){return void 0===e?{results:[]}:(e=Object(g.k)(e)?e:[e],Object(g.j)(e,"results")?e:{results:e})},t.prototype.parseQuery=function(e){return"string"==typeof e?{Querytext:e}:e.toSearchQuery?e.toSearchQuery():e},t=o([h("_api/search/postquery")],t)}(R)),Lt=function(){function e(e,t,n,r,o){void 0===r&&(r=null),void 0===o&&(o=null),this._url=t,this._query=n,this._raw=r,this._primary=o,this._raw=e.postquery?e.postquery:e}return Object.defineProperty(e.prototype,"ElapsedTime",{get:function(){return this.RawSearchResults.ElapsedTime},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"RowCount",{get:function(){return this.RawSearchResults.PrimaryQueryResult.RelevantResults.RowCount},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"TotalRows",{get:function(){return this.RawSearchResults.PrimaryQueryResult.RelevantResults.TotalRows},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"TotalRowsIncludingDuplicates",{get:function(){return this.RawSearchResults.PrimaryQueryResult.RelevantResults.TotalRowsIncludingDuplicates},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"RawSearchResults",{get:function(){return this._raw},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"PrimarySearchResults",{get:function(){return null===this._primary&&(this._primary=this.formatSearchResults(this._raw.PrimaryQueryResult.RelevantResults.Table.Rows)),this._primary},enumerable:!0,configurable:!0}),e.prototype.getPage=function(e,t){if(this.TotalRowsthis.TotalRows?Promise.resolve(null):new kt(this._url,null).execute(r)},e.prototype.formatSearchResults=function(e){for(var t=new Array,n=e.results?e.results:e,r=0,o=n;r0&&(n.properties=Object(g.f)(n.properties,{To:{results:e.To}})),e.CC&&e.CC.length>0&&(n.properties=Object(g.f)(n.properties,{CC:{results:e.CC}})),e.BCC&&e.BCC.length>0&&(n.properties=Object(g.f)(n.properties,{BCC:{results:e.BCC}})),e.AdditionalHeaders&&(n.properties=Object(g.f)(n.properties,{AdditionalHeaders:e.AdditionalHeaders})),this.clone(t,"SendEmail",!0).excute(n)},t.prototype.getCurrentUserEmailAddresses=function(){return this.clone(t,"GetCurrentUserEmailAddresses",!0).excute({}).then(function(e){return Object(g.j)(e,"GetCurrentUserEmailAddresses")?e.GetCurrentUserEmailAddresses:e})},t.prototype.resolvePrincipal=function(e,n,r,o,i,s){void 0===s&&(s=!1);var a={addToUserInfoList:i,input:e,inputIsEmailOnly:o,matchUserInfoList:s,scopes:n,sources:r};return this.clone(t,"ResolvePrincipalInCurrentContext",!0).excute(a).then(function(e){return Object(g.j)(e,"ResolvePrincipalInCurrentContext")?e.ResolvePrincipalInCurrentContext:e})},t.prototype.searchPrincipals=function(e,n,r,o,i){var s={groupName:o,input:e,maxCount:i,scopes:n,sources:r};return this.clone(t,"SearchPrincipalsUsingContextWeb",!0).excute(s).then(function(e){return Object(g.j)(e,"SearchPrincipalsUsingContextWeb")?e.SearchPrincipalsUsingContextWeb:e})},t.prototype.createEmailBodyForInvitation=function(e){var n={pageAddress:e};return this.clone(t,"CreateEmailBodyForInvitation",!0).excute(n).then(function(e){return Object(g.j)(e,"CreateEmailBodyForInvitation")?e.CreateEmailBodyForInvitation:e})},t.prototype.expandGroupsToPrincipals=function(e,n){void 0===n&&(n=30);var r={inputs:e,maxCount:n};return this.clone(t,"ExpandGroupsToPrincipals",!0).excute(r).then(function(e){return Object(g.j)(e,"ExpandGroupsToPrincipals")?e.ExpandGroupsToPrincipals:e})},t.prototype.createWikiPage=function(e){return this.clone(t,"CreateWikiPageInContextWeb",!0).excute({parameters:e}).then(function(e){return{data:Object(g.j)(e,"CreateWikiPageInContextWeb")?e.CreateWikiPageInContextWeb:e,file:new tt(u(e))}})},t.prototype.containsInvalidFileFolderChars=function(e,n){return void 0===n&&(n=!1),n?(t.InvalidFileFolderNameCharsOnPremiseRegex.lastIndex=0,t.InvalidFileFolderNameCharsOnPremiseRegex.test(e)):(t.InvalidFileFolderNameCharsOnlineRegex.lastIndex=0,t.InvalidFileFolderNameCharsOnlineRegex.test(e))},t.prototype.stripInvalidFileFolderChars=function(e,n,r){return void 0===n&&(n=""),void 0===r&&(r=!1),r?e.replace(t.InvalidFileFolderNameCharsOnPremiseRegex,n):e.replace(t.InvalidFileFolderNameCharsOnlineRegex,n)},t.InvalidFileFolderNameCharsOnlineRegex=/["*:<>?\/\\|\x00-\x1f\x7f-\x9f]/g,t.InvalidFileFolderNameCharsOnPremiseRegex=/["#%*:<>?\/\\|\x00-\x1f\x7f-\x9f]/g,t}(N),Jt=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.getById=function(e){return new Yt(this,"GetById?hubSiteId='"+e+"'")},t=o([h("_api/hubsites")],t)}(j),Yt=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(R),$t=function(){function e(e,t){void 0===e&&(e={}),void 0===t&&(t=""),this._options=e,this._baseUrl=t}return e.prototype.configure=function(t,n){return void 0===n&&(n=""),new e(t,n)},e.prototype.setup=function(e){l(e)},e.prototype.searchSuggest=function(e){var t;return t="string"==typeof e?{querytext:e}:e,this.create(Bt).execute(t)},e.prototype.search=function(e){return this.create(kt).execute(e)},e.prototype.searchWithCaching=function(e,t){return this.create(kt).usingCaching(t).execute(e)},Object.defineProperty(e.prototype,"site",{get:function(){return this.create(ht)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"web",{get:function(){return this.create(Ct)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"profiles",{get:function(){return this.create(qt)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"social",{get:function(){return this.create(Ht)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"navigation",{get:function(){return this.create(gt)},enumerable:!0,configurable:!0}),e.prototype.createBatch=function(){return this.web.createBatch()},Object.defineProperty(e.prototype,"utility",{get:function(){return this.create(Xt,"")},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"siteScripts",{get:function(){return this.create(It,"")},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"siteDesigns",{get:function(){return this.create(wt,"")},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"hubSites",{get:function(){return this.create(Jt)},enumerable:!0,configurable:!0}),e.prototype.getTenantAppCatalogWeb=function(){var e=this;return this.create(Ct,"_api/SP_TenantSettings_Current").get().then(function(t){return new Ct(t.CorporateCatalogUrl).configure(e._options)})},e.prototype.create=function(e,t){return new e(this._baseUrl,t).configure(this._options)},e}(),Zt=new $t}).call(t,n(1))},function(e,t){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),n.d(t,"UserCustomActionMegaMenuId",function(){return f});var r=n(6),o=(n.n(r),n(7)),i=(n.n(o),n(8)),s=(n.n(i),n(9)),a=(n.n(s),n(10)),u=n(18),c=(n(22),this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}()),l=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},p=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))(function(o,i){function s(e){try{u(r.next(e))}catch(e){i(e)}}function a(e){try{u(r.throw(e))}catch(e){i(e)}}function u(e){e.done?o(e.value):new n(function(t){t(e.value)}).then(s,a)}u((r=r.apply(e,t||[])).next())})},d=this&&this.__generator||function(e,t){function n(e){return function(t){return r([e,t])}}function r(n){if(o)throw new TypeError("Generator is already executing.");for(;u;)try{if(o=1,i&&(s=i[2&n[0]?"return":n[0]?"throw":"next"])&&!(s=s.call(i,n[1])).done)return s;switch(i=0,s&&(n=[0,s.value]),n[0]){case 0:case 1:s=n;break;case 4:return u.label++,{value:n[1],done:!1};case 5:u.label++,i=n[1],n=[0];continue;case 7:n=u.ops.pop(),u.trys.pop();continue;default:if(s=u.trys,!(s=s.length>0&&s[s.length-1])&&(6===n[0]||2===n[0])){u=0;continue}if(3===n[0]&&(!s||n[1]>s[0]&&n[1]\n "),[3,4];case 4:return[2]}})})},t.prototype._loadExternalCss=function(e){var t=document.getElementById("mega-menu-additional-css-34FAB720");if(e&&""!==e.trim()){if(!t){var n=document.getElementsByTagName("head")[0];t=document.createElement("link"),t.rel="stylesheet",t.type="text/css",t.id="mega-menu-additional-css-34FAB720",t.onload=function(){o.Log.info(h,"External CSS loaded successfully from: "+e)},t.onerror=function(){console.warn("Failed to load external CSS from: "+e)},n.appendChild(t)}t.href=e}else t&&t.remove()},t.prototype._onDispose=function(){console.log("[MegaMenuApplicationCustomizer._onDispose] Disposed custom top placeholder.")},l([r.override],t.prototype,"onInit",null),t}(i.BaseApplicationCustomizer);t.default=y},function(e,t,n){"use strict";(function(e){function r(e,t){function n(){this.constructor=e}w(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}function o(e,t){for(var n=[],r=2;r0&&(n=60*this.defaultTimeoutMinutes),t=i(new Date,"second",n)}return f({pnp:1,expiration:t,value:e})},e.prototype.cacheExpirationHandler=function(){var e=this;this.deleteExpired().then(function(t){setTimeout(o(e,e.cacheExpirationHandler),R.cacheExpirationIntervalMilliseconds)}).catch(function(e){console.error(e)})},e}(),U=function(){function e(e){void 0===e&&(e=new Map),this._store=e}return Object.defineProperty(e.prototype,"length",{get:function(){return this._store.size},enumerable:!0,configurable:!0}),e.prototype.clear=function(){this._store.clear()},e.prototype.getItem=function(e){return this._store.get(e)},e.prototype.key=function(e){return Array.from(this._store)[e][0]},e.prototype.removeItem=function(e){this._store.delete(e)},e.prototype.setItem=function(e,t){this._store.set(e,t)},e}(),k=function(){function e(e,t){void 0===e&&(e=null),void 0===t&&(t=null),this._local=e,this._session=t}return Object.defineProperty(e.prototype,"local",{get:function(){return null===this._local&&(this._local=this.getStore("local")),this._local},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"session",{get:function(){return null===this._session&&(this._session=this.getStore("session")),this._session},enumerable:!0,configurable:!0}),e.prototype.getStore=function(e){return new A("local"===e?"undefined"==typeof localStorage?new U:localStorage:"undefined"==typeof sessionStorage?new U:sessionStorage)},e}()}).call(t,n(1))},function(e,t,n){"use strict";n.d(t,"a",function(){return o});/** + * @license + * v1.3.11 + * MIT (https://github.com/pnp/pnpjs/blob/master/LICENSE) + * Copyright (c) 2020 Microsoft + * docs: https://pnp.github.io/pnpjs/ + * source: https://github.com/pnp/pnpjs + * bugs: https://github.com/pnp/pnpjs/issues + */ +var r,o=function(){function e(){}return Object.defineProperty(e,"activeLogLevel",{get:function(){return e.instance.activeLogLevel},set:function(t){e.instance.activeLogLevel=t},enumerable:!0,configurable:!0}),Object.defineProperty(e,"instance",{get:function(){return void 0!==e._instance&&null!==e._instance||(e._instance=new i),e._instance},enumerable:!0,configurable:!0}),e.subscribe=function(){for(var t=[],n=0;n0&&s[s.length-1])&&(6===n[0]||2===n[0])){u=0;continue}if(3===n[0]&&(!s||n[1]>s[0]&&n[1]-1},n.prototype.getCachedToken=function(e){if(!this._hasResource(e))return null;var t=this._getItem(this.CONSTANTS.STORAGE.ACCESS_TOKEN_KEY+e),n=this._getItem(this.CONSTANTS.STORAGE.EXPIRATION_KEY+e),r=this.config.expireOffsetSeconds||300;return n&&n>this._now()+r?t:(this._saveItem(this.CONSTANTS.STORAGE.ACCESS_TOKEN_KEY+e,""),this._saveItem(this.CONSTANTS.STORAGE.EXPIRATION_KEY+e,0),null)},n.prototype.getCachedUser=function(){if(this._user)return this._user;var e=this._getItem(this.CONSTANTS.STORAGE.IDTOKEN);return this._user=this._createUser(e),this._user},n.prototype.registerCallback=function(e,t,n){this._activeRenewals[t]=e,this._callBacksMappedToRenewStates[e]||(this._callBacksMappedToRenewStates[e]=[]);var r=this;this._callBacksMappedToRenewStates[e].push(n),this._callBackMappedToRenewStates[e]||(this._callBackMappedToRenewStates[e]=function(n,o,i,s){r._activeRenewals[t]=null;for(var a=0;a-1)){var t=this._user.profile.upn.split("@");e+="&domain_hint="+encodeURIComponent(t[t.length-1])}return e},n.prototype._createUser=function(e){var t=null,n=this._extractIdToken(e);return n&&n.hasOwnProperty("aud")&&(n.aud.toLowerCase()===this.config.clientId.toLowerCase()?(t={userName:"",profile:n},n.hasOwnProperty("upn")?t.userName=n.upn:n.hasOwnProperty("email")&&(t.userName=n.email)):this.warn("IdToken has invalid aud field")),t},n.prototype._getHash=function(e){return e.indexOf("#/")>-1?e=e.substring(e.indexOf("#/")+2):e.indexOf("#")>-1&&(e=e.substring(1)),e},n.prototype.isCallback=function(e){e=this._getHash(e);var t=this._deserialize(e);return t.hasOwnProperty(this.CONSTANTS.ERROR_DESCRIPTION)||t.hasOwnProperty(this.CONSTANTS.ACCESS_TOKEN)||t.hasOwnProperty(this.CONSTANTS.ID_TOKEN)},n.prototype.getLoginError=function(){return this._getItem(this.CONSTANTS.STORAGE.LOGIN_ERROR)},n.prototype.getRequestInfo=function(e){e=this._getHash(e);var t=this._deserialize(e),n={valid:!1,parameters:{},stateMatch:!1,stateResponse:"",requestType:this.REQUEST_TYPE.UNKNOWN};if(t&&(n.parameters=t,t.hasOwnProperty(this.CONSTANTS.ERROR_DESCRIPTION)||t.hasOwnProperty(this.CONSTANTS.ACCESS_TOKEN)||t.hasOwnProperty(this.CONSTANTS.ID_TOKEN))){n.valid=!0;var r="";if(!t.hasOwnProperty("state"))return this.warn("No state returned"),n;if(this.verbose("State: "+t.state),r=t.state,n.stateResponse=r,this._matchState(n))return n;if(!n.stateMatch&&window.parent){n.requestType=this._requestType;for(var o=this._renewStates,i=0;i-1&&t+1-1)return null;if(this.config&&this.config.endpoints)for(var n in this.config.endpoints)if(e.indexOf(n)>-1)return this.config.endpoints[n];return e.indexOf("http://")>-1||e.indexOf("https://")>-1?this._getHostFromUri(e)===this._getHostFromUri(this.config.redirectUri)?this.config.loginResource:null:this.config.loginResource},n.prototype._getHostFromUri=function(e){var t=String(e).replace(/^(https?:)\/\//,"");return t=t.split("/")[0]},n.prototype.handleWindowCallback=function(e){if(null==e&&(e=window.location.hash),this.isCallback(e)){var t=null,n=!1;this._openedWindows.length>0&&this._openedWindows[this._openedWindows.length-1].opener&&this._openedWindows[this._openedWindows.length-1].opener._adalInstance?(t=this._openedWindows[this._openedWindows.length-1].opener._adalInstance,n=!0):window.parent&&window.parent._adalInstance&&(t=window.parent._adalInstance);var r,o,i=t.getRequestInfo(e),s=null;o=n||window.parent!==window?t._callBackMappedToRenewStates[i.stateResponse]:t.callback,t.info("Returned from redirect url"),t.saveTokenFromHash(i),i.requestType===this.REQUEST_TYPE.RENEW_TOKEN&&window.parent?(window.parent!==window?t.verbose("Window is in iframe, acquiring token silently"):t.verbose("acquiring token interactive in progress"),r=i.parameters[t.CONSTANTS.ACCESS_TOKEN]||i.parameters[t.CONSTANTS.ID_TOKEN],s=t.CONSTANTS.ACCESS_TOKEN):i.requestType===this.REQUEST_TYPE.LOGIN&&(r=i.parameters[t.CONSTANTS.ID_TOKEN],s=t.CONSTANTS.ID_TOKEN);var a=i.parameters[t.CONSTANTS.ERROR_DESCRIPTION],u=i.parameters[t.CONSTANTS.ERROR];try{o&&o(a,r,u,s)}catch(e){t.error("Error occurred in user defined callback function: "+e)}window.parent!==window||n||(t.config.navigateToLoginRequestUrl?window.location.href=t._getItem(t.CONSTANTS.STORAGE.LOGIN_REQUEST):window.location.hash="")}},n.prototype._getNavigateUrl=function(e,t){var n="common";this.config.tenant&&(n=this.config.tenant);var r=this.instance+n+"/oauth2/authorize"+this._serialize(e,this.config,t)+this._addLibMetadata();return this.info("Navigate url:"+r),r},n.prototype._extractIdToken=function(e){var t=this._decodeJwt(e);if(!t)return null;try{var n=t.JWSPayload,r=this._base64DecodeStringUrlSafe(n);return r?JSON.parse(r):(this.info("The returned id_token could not be base64 url safe decoded."),null)}catch(e){this.error("The returned id_token could not be decoded",e)}return null},n.prototype._base64DecodeStringUrlSafe=function(e){return e=e.replace(/-/g,"+").replace(/_/g,"/"),window.atob?decodeURIComponent(escape(window.atob(e))):decodeURIComponent(escape(this._decode(e)))},n.prototype._decode=function(e){var t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";e=String(e).replace(/=+$/,"");var n=e.length;if(n%4==1)throw new Error("The token to be decoded is not correctly encoded.");for(var r,o,i,s,a,u,c,l,p="",d=0;d>16&255,c=a>>8&255,p+=String.fromCharCode(u,c);break}if(d+1===n-1){a=r<<18|o<<12,u=a>>16&255,p+=String.fromCharCode(u);break}a=r<<18|o<<12|i<<6|s,u=a>>16&255,c=a>>8&255,l=255&a,p+=String.fromCharCode(u,c,l)}return p},n.prototype._decodeJwt=function(e){if(this._isEmpty(e))return null;var t=/^([^\.\s]*)\.([^\.\s]+)\.([^\.\s]*)$/,n=t.exec(e);return!n||n.length<4?(this.warn("The returned id_token is not parseable."),null):{header:n[1],JWSPayload:n[2],JWSSig:n[3]}},n.prototype._convertUrlSafeToRegularBase64EncodedString=function(e){return e.replace("-","+").replace("_","/")},n.prototype._serialize=function(e,t,n){var r=[];if(null!==t){r.push("?response_type="+e),r.push("client_id="+encodeURIComponent(t.clientId)),n&&r.push("resource="+encodeURIComponent(n)),r.push("redirect_uri="+encodeURIComponent(t.redirectUri)),r.push("state="+encodeURIComponent(t.state)),t.hasOwnProperty("slice")&&r.push("slice="+encodeURIComponent(t.slice)),t.hasOwnProperty("extraQueryParameter")&&r.push(t.extraQueryParameter);var o=t.correlationId?t.correlationId:this._guid();r.push("client-request-id="+encodeURIComponent(o))}return r.join("&")},n.prototype._deserialize=function(e){var t,n=/\+/g,r=/([^&=]+)=([^&]*)/g,o=function(e){return decodeURIComponent(e.replace(n," "))},i={};for(t=r.exec(e);t;)i[o(t[1])]=o(t[2]),t=r.exec(e);return i},n.prototype._decimalToHex=function(e){for(var t=e.toString(16);t.length<2;)t="0"+t;return t},n.prototype._guid=function(){var e=window.crypto||window.msCrypto;if(e&&e.getRandomValues){var t=new Uint8Array(16);return e.getRandomValues(t),t[6]|=64,t[6]&=79,t[8]|=128,t[8]&=191,this._decimalToHex(t[0])+this._decimalToHex(t[1])+this._decimalToHex(t[2])+this._decimalToHex(t[3])+"-"+this._decimalToHex(t[4])+this._decimalToHex(t[5])+"-"+this._decimalToHex(t[6])+this._decimalToHex(t[7])+"-"+this._decimalToHex(t[8])+this._decimalToHex(t[9])+"-"+this._decimalToHex(t[10])+this._decimalToHex(t[11])+this._decimalToHex(t[12])+this._decimalToHex(t[13])+this._decimalToHex(t[14])+this._decimalToHex(t[15])}for(var n="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx",r="0123456789abcdef",o=0,i="",s=0;s<36;s++)"-"!==n[s]&&"4"!==n[s]&&(o=16*Math.random()|0),"x"===n[s]?i+=r[o]:"y"===n[s]?(o&=3,o|=8,i+=r[o]):i+=n[s];return i},n.prototype._expiresIn=function(e){return e||(e=3599),this._now()+parseInt(e,10)},n.prototype._now=function(){return Math.round((new Date).getTime()/1e3)},n.prototype._addAdalFrame=function(e){if(void 0!==e){this.info("Add adal frame to document:"+e);var t=document.getElementById(e);if(!t){if(document.createElement&&document.documentElement&&(window.opera||-1===window.navigator.userAgent.indexOf("MSIE 5.0"))){var n=document.createElement("iframe");n.setAttribute("id",e),n.setAttribute("aria-hidden","true"),n.style.visibility="hidden",n.style.position="absolute",n.style.width=n.style.height=n.borderWidth="0px",t=document.getElementsByTagName("body")[0].appendChild(n)}else document.body&&document.body.insertAdjacentHTML&&document.body.insertAdjacentHTML("beforeEnd",'');window.frames&&window.frames[e]&&(t=window.frames[e])}return t}},n.prototype._saveItem=function(e,t,n){if(this.config&&this.config.cacheLocation&&"localStorage"===this.config.cacheLocation){if(!this._supportsLocalStorage())return this.info("Local storage is not supported"),!1;if(n){var r=this._getItem(e)||"";localStorage.setItem(e,r+t+this.CONSTANTS.CACHE_DELIMETER)}else localStorage.setItem(e,t);return!0}return this._supportsSessionStorage()?(sessionStorage.setItem(e,t),!0):(this.info("Session storage is not supported"),!1)},n.prototype._getItem=function(e){return this.config&&this.config.cacheLocation&&"localStorage"===this.config.cacheLocation?this._supportsLocalStorage()?localStorage.getItem(e):(this.info("Local storage is not supported"),null):this._supportsSessionStorage()?sessionStorage.getItem(e):(this.info("Session storage is not supported"),null)},n.prototype._supportsLocalStorage=function(){try{return!!window.localStorage&&(window.localStorage.setItem("storageTest","A"),"A"==window.localStorage.getItem("storageTest")&&(window.localStorage.removeItem("storageTest"),!window.localStorage.getItem("storageTest")))}catch(e){return!1}},n.prototype._supportsSessionStorage=function(){try{return!!window.sessionStorage&&(window.sessionStorage.setItem("storageTest","A"),"A"==window.sessionStorage.getItem("storageTest")&&(window.sessionStorage.removeItem("storageTest"),!window.sessionStorage.getItem("storageTest")))}catch(e){return!1}},n.prototype._cloneConfig=function(e){if(null===e||"object"!=typeof e)return e;var t={};for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t},n.prototype._addLibMetadata=function(){return"&x-client-SKU=Js&x-client-Ver="+this._libVersion()},n.prototype.log=function(e,t,n,r){if(e<=Logging.level){if(!Logging.piiLoggingEnabled&&r)return;var o=(new Date).toUTCString(),i="";i=this.config.correlationId?o+":"+this.config.correlationId+"-"+this._libVersion()+"-"+this.CONSTANTS.LEVEL_STRING_MAP[e]+" "+t:o+":"+this._libVersion()+"-"+this.CONSTANTS.LEVEL_STRING_MAP[e]+" "+t,n&&(i+="\nstack:\n"+n.stack),Logging.log(i)}},n.prototype.error=function(e,t){this.log(this.CONSTANTS.LOGGING_LEVEL.ERROR,e,t)},n.prototype.warn=function(e){this.log(this.CONSTANTS.LOGGING_LEVEL.WARN,e,null)},n.prototype.info=function(e){this.log(this.CONSTANTS.LOGGING_LEVEL.INFO,e,null)},n.prototype.verbose=function(e){this.log(this.CONSTANTS.LOGGING_LEVEL.VERBOSE,e,null)},n.prototype.errorPii=function(e,t){this.log(this.CONSTANTS.LOGGING_LEVEL.ERROR,e,t,!0)},n.prototype.warnPii=function(e){this.log(this.CONSTANTS.LOGGING_LEVEL.WARN,e,null,!0)},n.prototype.infoPii=function(e){this.log(this.CONSTANTS.LOGGING_LEVEL.INFO,e,null,!0)},n.prototype.verbosePii=function(e){this.log(this.CONSTANTS.LOGGING_LEVEL.VERBOSE,e,null,!0)},n.prototype._libVersion=function(){return"1.0.17"},void 0!==e&&e.exports&&(e.exports=n,e.exports.inject=function(e){return new n(e)}),n}()},function(e,t,n){"use strict";function r(e,t){function n(){this.constructor=e}y(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}function o(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s}function i(e){return d.a.log({data:0===d.a.activeLogLevel?e.result:{},level:1,message:"["+e.requestId+"] ("+(new Date).getTime()+") Returning result from pipeline. Set logging to verbose to see data."}),Promise.resolve(e.result)}function s(e,t){return new Promise(function(n){e.result=t,e.hasResult=!0,n(e)})}function a(e){return e.pipeline.length>0?e.pipeline.shift()(e):Promise.resolve(e)}function u(e){e.pipeline.length<1&&d.a.write("["+e.requestId+"] ("+(new Date).getTime()+") Request pipeline contains no methods!",2);var t=a(e).then(function(e){return i(e)}).catch(function(e){throw d.a.error(e),e});return e.isBatched&&e.batch.addResolveBatchDependency(t),t}function c(e){return void 0===e&&(e=!1),function(t,n,r){var o=r.value;r.value=function(){for(var r=[],i=0;i0&&Object(p.j)(r[0],"hasResult")&&r[0].hasResult?(d.a.write("["+r[0].requestId+"] ("+(new Date).getTime()+") Skipping request pipeline method "+n+", existing result in pipeline.",0),Promise.resolve(r[0])):(d.a.write("["+r[0].requestId+"] ("+(new Date).getTime()+") Calling request pipeline method "+n+".",0),o.apply(t,r).then(function(e){return a(e)}))}}}function l(){return[w.logStart,w.caching,w.send,w.logEnd].slice(0)}n.d(t,"c",function(){return h}),n.d(t,"g",function(){return g}),n.d(t,"f",function(){return b}),n.d(t,"i",function(){return v}),n.d(t,"a",function(){return S}),n.d(t,"d",function(){return T}),n.d(t,"b",function(){return O}),n.d(t,"h",function(){return _}),n.d(t,"e",function(){return P});var p=n(3),d=n(4),h=function(){function e(e){this.key=e,this.expiration=Object(p.e)(new Date,"second",p.c.defaultCachingTimeoutSeconds),this.storeName=p.c.defaultCachingStore}return Object.defineProperty(e.prototype,"store",{get:function(){return"local"===this.storeName?e.storage.local:e.storage.session},enumerable:!0,configurable:!0}),e.storage=new p.b,e}(),f=function(){function e(e,t){this.parser=e,this.cacheOptions=t}return e.prototype.parse=function(e){var t=this;return this.parser.parse(e).then(function(e){return t.cacheData(e)})},e.prototype.cacheData=function(e){return null!==this.cacheOptions.store&&this.cacheOptions.store.put(this.cacheOptions.key,e,this.cacheOptions.expiration),e},e}(),y=function(e,t){return(y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)},m=function(e){function t(t,n,r,o){void 0===r&&(r=n.status),void 0===o&&(o=n.statusText);var i=e.call(this,t)||this;return i.response=n,i.status=r,i.statusText=o,i.isHttpRequestError=!0,i}return r(t,e),t.init=function(e){return e.clone().text().then(function(n){return new t("Error making HttpClient request in queryable ["+e.status+"] "+e.statusText+" ::> "+n,e.clone())})},t}(Error),g=function(){function e(){this.rawJson={}}return e.prototype.parse=function(e){var t=this;return new Promise(function(n,r){t.handleError(e,r)&&t.parseImpl(e,n,r)})},e.prototype.parseImpl=function(e,t,n){var r=this;e.headers.has("Content-Length")&&0===parseFloat(e.headers.get("Content-Length"))||204===e.status?t({}):e.text().then(function(e){return e.replace(/\s/gi,"").length>0?JSON.parse(e):{}}).then(function(e){return t(r.parseODataJSON(e))}).catch(function(e){return n(e)})},e.prototype.handleError=function(e,t){return e.ok||m.init(e).then(t),e.ok},e.prototype.parseODataJSON=function(e){this.rawJson=e;var t=e;return Object(p.j)(e,"d")?t=Object(p.j)(e.d,"results")?e.d.results:e.d:Object(p.j)(e,"value")&&(t=e.value),t},e}(),b=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(g),v=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.parseImpl=function(e,t){e.text().then(t)},t}(g),S=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.parseImpl=function(e,t){e.blob().then(t)},t}(g),T=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.parseImpl=function(e,t){e.json().then(t)},t}(g),O=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.parseImpl=function(e,t){Object(p.l)(e.arrayBuffer)?e.arrayBuffer().then(t):e.buffer().then(t)},t}(g),w=(function(e){function t(t){var n=e.call(this)||this;return n.parser=t,n}r(t,e),t.prototype.parseImpl=function(e,t){this.parser(e).then(t)}}(g),function(){function e(){}return e.logStart=function(e){return new Promise(function(t){d.a.log({data:1===d.a.activeLogLevel?{}:e,level:1,message:"["+e.requestId+"] ("+(new Date).getTime()+") Beginning "+e.verb+" request ("+e.requestAbsoluteUrl+")"}),t(e)})},e.caching=function(e){return new Promise(function(t){if(e.isCached){d.a.write("["+e.requestId+"] ("+(new Date).getTime()+") Caching is enabled for request, checking cache...",1);var n=new h(e.requestAbsoluteUrl.toLowerCase());if(void 0!==e.cachingOptions&&(n=Object(p.f)(n,e.cachingOptions)),null!==n.store){var r=n.store.get(n.key);if(null!==r)return d.a.log({data:1===d.a.activeLogLevel?{}:r,level:1,message:"["+e.requestId+"] ("+(new Date).getTime()+") Value returned from cache."}),Object(p.l)(e.batchDependency)&&e.batchDependency(),Object(p.j)(e.parser,"hydrate")&&(r=e.parser.hydrate(r)),s(e,r).then(function(e){return t(e)})}d.a.write("["+e.requestId+"] ("+(new Date).getTime()+") Value not found in cache.",1),e.parser=new f(e.parser,n)}return t(e)})},e.send=function(e){return new Promise(function(t,n){if(e.isBatched){var r=e.batch.add(e.requestAbsoluteUrl,e.verb,e.options,e.parser,e.requestId);Object(p.l)(e.batchDependency)&&e.batchDependency(),d.a.write("["+e.requestId+"] ("+(new Date).getTime()+") Batching request in batch "+e.batch.batchId+".",1),t(s(e,r))}else{d.a.write("["+e.requestId+"] ("+(new Date).getTime()+") Sending request.",1);var o=e.clientFactory(),i=Object(p.f)(e.options||{},{method:e.verb});o.fetch(e.requestAbsoluteUrl,i).then(function(t){return e.parser.parse(t)}).then(function(t){return s(e,t)}).then(function(e){return t(e)}).catch(function(e){return n(e)})}})},e.logEnd=function(e){return new Promise(function(t){e.isBatched?d.a.log({data:1===d.a.activeLogLevel?{}:e,level:1,message:"["+e.requestId+"] ("+(new Date).getTime()+") "+e.verb+" request will complete in batch "+e.batch.batchId+"."}):d.a.log({data:1===d.a.activeLogLevel?{}:e,level:1,message:"["+e.requestId+"] ("+(new Date).getTime()+") Completing "+e.verb+" request."}),t(e)})},o([c(!0)],e,"logStart",null),o([c()],e,"caching",null),o([c()],e,"send",null),o([c(!0)],e,"logEnd",null),e}()),I=function(){function e(){this._query=new Map,this._options={},this._url="",this._parentUrl="",this._useCaching=!1,this._cachingOptions=null,this._cloneParentWasCaching=!1,this._cloneParentCacheOptions=null,this._requestPipeline=null}return e.prototype.toUrl=function(){return this._url},e.prototype.concat=function(e){return this._url+=e,this},Object.defineProperty(e.prototype,"query",{get:function(){return this._query},enumerable:!0,configurable:!0}),e.prototype.configure=function(e){return Object(p.p)(this._options,e),this},e.prototype.configureFrom=function(e){return Object(p.p)(this._options,e._options),this},e.prototype.usingCaching=function(e){return p.c.globalCacheDisable||(this._useCaching=!0,void 0!==e&&(this._cachingOptions=e)),this},e.prototype.withPipeline=function(e){return this._requestPipeline=e.slice(0),this},e.prototype.getCore=function(e,t){return void 0===e&&(e=new T),void 0===t&&(t={}),this._cloneParentWasCaching&&this.usingCaching(this._cloneParentCacheOptions),this.reqImpl("GET",t,e)},e.prototype.postCore=function(e,t){return void 0===e&&(e={}),void 0===t&&(t=new T),this.reqImpl("POST",e,t)},e.prototype.patchCore=function(e,t){return void 0===e&&(e={}),void 0===t&&(t=new T),this.reqImpl("PATCH",e,t)},e.prototype.deleteCore=function(e,t){return void 0===e&&(e={}),void 0===t&&(t=new T),this.reqImpl("DELETE",e,t)},e.prototype.putCore=function(e,t){return void 0===e&&(e={}),void 0===t&&(t=new T),this.reqImpl("PUT",e,t)},e.prototype.reqImpl=function(e,t,n){var r=this;return void 0===t&&(t={}),this.getRequestPipeline(e,t,n).then(function(o){return r.toRequestContext(e,t,n,o)}).then(function(e){return u(e)})},e.prototype.append=function(e){this._url=Object(p.d)(this._url,e)},Object.defineProperty(e.prototype,"parentUrl",{get:function(){return this._parentUrl},enumerable:!0,configurable:!0}),e.prototype.extend=function(e,t){this._parentUrl=e._url,this._url=Object(p.d)(this._parentUrl,t||""),this.configureFrom(e)},e.prototype._clone=function(e,t){return e.configureFrom(this),this._useCaching&&(e._cloneParentWasCaching=!0,e._cloneParentCacheOptions=this._cachingOptions),e},e.prototype.getRequestPipeline=function(e,t,n){var r=this;return void 0===t&&(t={}),new Promise(function(e){e(Object(p.q)(r._requestPipeline)&&Object(p.k)(r._requestPipeline)?r._requestPipeline:l())})},e}(),_=function(e){function t(){var t=e.call(this)||this;return t._batch=null,t._batchDependency=null,t}return r(t,e),t.prototype.inBatch=function(e){if(null!==this.batch)throw Error("This query is already part of a batch.");return Object(p.q)(e)&&(this._batch=e),this},t.prototype.toUrl=function(){return this._url},t.prototype.get=function(e,t){return void 0===e&&(e=new b),void 0===t&&(t={}),this.getCore(e,t)},t.prototype.getCore=function(t,n){return void 0===t&&(t=new b),void 0===n&&(n={}),e.prototype.getCore.call(this,t,n)},t.prototype.postCore=function(t,n){return void 0===t&&(t={}),void 0===n&&(n=new b),e.prototype.postCore.call(this,t,n)},t.prototype.patchCore=function(t,n){return void 0===t&&(t={}),void 0===n&&(n=new b),e.prototype.patchCore.call(this,t,n)},t.prototype.deleteCore=function(t,n){return void 0===t&&(t={}),void 0===n&&(n=new b),e.prototype.deleteCore.call(this,t,n)},t.prototype.putCore=function(t,n){return void 0===t&&(t={}),void 0===n&&(n=new b),e.prototype.putCore.call(this,t,n)},t.prototype.reqImpl=function(t,n,r){return void 0===n&&(n={}),this.hasBatch&&(this._batchDependency=this.addBatchDependency()),e.prototype.reqImpl.call(this,t,n,r)},t.prototype.addBatchDependency=function(){return null!==this._batch?this._batch.addDependency():function(){return null}},Object.defineProperty(t.prototype,"hasBatch",{get:function(){return Object(p.q)(this._batch)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"batch",{get:function(){return this.hasBatch?this._batch:null},enumerable:!0,configurable:!0}),t.prototype._clone=function(t,n){return t=e.prototype._clone.call(this,t,n),n.includeBatch&&(t=t.inBatch(this._batch)),t},t}(I),P=function(){function e(e){void 0===e&&(e=Object(p.h)()),this._batchId=e,this._reqs=[],this._deps=[],this._rDeps=[]}return Object.defineProperty(e.prototype,"batchId",{get:function(){return this._batchId},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"requests",{get:function(){return this._reqs},enumerable:!0,configurable:!0}),e.prototype.add=function(e,t,n,r,o){var i={id:o,method:t.toUpperCase(),options:n,parser:r,reject:null,resolve:null,url:e},s=new Promise(function(e,t){i.resolve=e,i.reject=t});return this._reqs.push(i),s},e.prototype.addDependency=function(){var e=function(){};return this._deps.push(new Promise(function(t){e=t})),e},e.prototype.addResolveBatchDependency=function(e){this._rDeps.push(e)},e.prototype.execute=function(){var e=this;return Promise.all(this._deps).then(function(){return Promise.all(e._deps)}).then(function(){return e.executeImpl()}).then(function(){return Promise.all(e._rDeps)}).then(function(){})},e}()},function(e,t,n){"use strict";n.d(t,"a",function(){return r});var r=function(){function e(e,t,n){this.level=t,this.id=e.Id,this.label=e.Name,this.hoverText=e.LocalCustomProperties._Sys_Nav_HoverText,this.pathDepth=e.PathDepth;var r=e.LocalCustomProperties._Sys_Nav_SimpleLinkUrl||e.LocalCustomProperties._Sys_Nav_TargetUrl;r&&(this.url=n&&0===r.indexOf("~sitecollection")?n+r.substring("~sitecollection".length):r),this.items=[]}return e.prototype.hasChildren=function(){return this.items&&this.items.length>0},e.prototype.command=function(){this.url&&(window.location.href=this.url)},e}()},function(e,t,n){"use strict";var r=n(15),o=(n.n(r),n(16)),i=(n.n(o),this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))(function(o,i){function s(e){try{u(r.next(e))}catch(e){i(e)}}function a(e){try{u(r.throw(e))}catch(e){i(e)}}function u(e){e.done?o(e.value):new n(function(t){t(e.value)}).then(s,a)}u((r=r.apply(e,t||[])).next())})}),s=this&&this.__generator||function(e,t){function n(e){return function(t){return r([e,t])}}function r(n){if(o)throw new TypeError("Generator is already executing.");for(;u;)try{if(o=1,i&&(s=i[2&n[0]?"return":n[0]?"throw":"next"])&&!(s=s.call(i,n[1])).done)return s;switch(i=0,s&&(n=[0,s.value]),n[0]){case 0:case 1:s=n;break;case 4:return u.label++,{value:n[1],done:!1};case 5:u.label++,i=n[1],n=[0];continue;case 7:n=u.ops.pop(),u.trys.pop();continue;default:if(s=u.trys,!(s=s.length>0&&s[s.length-1])&&(6===n[0]||2===n[0])){u=0;continue}if(3===n[0]&&(!s||n[1]>s[0]&&n[1]",o=new Headers,o.append("accept","application/json"),o.append("content-type","application/xml"),i={headers:o,body:n},[4,this.context.spHttpClient.post(this.clientServiceUrl,r.SPHttpClient.configurations.v1,i)];case 2:return a=s.sent(),[4,a.json()];case 3:return u=s.sent(),c=u.find(function(e){return"SP.Taxonomy.Term"===e._ObjectType_}),c&&c.Labels&&c.Labels._Child_Items_&&(t=c.Labels._Child_Items_.map(function(e){return e.Value})),[3,5];case 4:return l=s.sent(),t=null,console.log(l.message),[3,5];case 5:return[2,t]}})})},e.prototype.getTermStores=function(){var e=this,t=new Headers;t.append("accept","application/json"),t.append("content-type","application/xml");var n={headers:t,body:''};return this.context.spHttpClient.post(this.clientServiceUrl,r.SPHttpClient.configurations.v1,n).then(function(t){return t.json().then(function(t){var n=t.filter(function(e){return"SP.Taxonomy.TermStore"===e._ObjectType_});return n.length>0?e.props.termsetNameOrID?n.map(function(t){var n=t.Groups._Child_Items_;if(e.props.termsetNameOrID){var r=e.props.termsetNameOrID;n=n.map(function(t){return t.TermSets._Child_Items_=t.TermSets._Child_Items_.filter(function(t){return t.Name===r||e.cleanGuid(t.Id).toLowerCase()===e.cleanGuid(r).toLowerCase()}),t})}return n=n.filter(function(e){return!e.IsSystemGroup}),n=n.filter(function(e){return e.TermSets._Child_Items_.length>0}),t.Groups._Child_Items_=n,t}):n:[]})})},e.prototype.getTermSet=function(){return i(this,void 0,void 0,function(){var e;return s(this,function(t){switch(t.label){case 0:return[4,this.getTermStores()];case 1:return e=t.sent(),[2,this.getTermSetId(e,this.props.termsetNameOrID)]}})})},e.prototype.getAllTerms=function(e,t,n,o){return void 0===o&&(o=!0),i(this,void 0,void 0,function(){var i,a,u,c,l,p,d,h=this;return s(this,function(s){switch(s.label){case 0:return i=e,this.isGuid(e)?[3,2]:[4,this.getTermStores()];case 1:if(a=s.sent(),!(u=this.getTermSetId(a,e)))return[2,null];i=this.cleanGuid(u.Id),s.label=2;case 2:return(c=this.getTermsById(i,o))?[2,c]:(l=''+i+'',p=new Headers,p.append("accept","application/json"),p.append("content-type","application/xml"),d={headers:p,body:l},[2,this.context.spHttpClient.post(this.clientServiceUrl,r.SPHttpClient.configurations.v1,d).then(function(e){return e.json().then(function(e){var r=e.filter(function(e){return"SP.Taxonomy.TermSet"===e._ObjectType_});if(r.length>0){var s=r[0];s.Terms=[];var a=e.filter(function(e){return"SP.Taxonomy.TermCollection"===e._ObjectType_});if(a.length>0){var u=a[0]._Child_Items_;!0===t&&(u=u.filter(function(e){return!1===e.IsDeprecated})),!0===n&&(u=u.filter(function(e){return!0===e.IsAvailableForTagging})),u=u.map(function(e){return e.IsRoot?e.CustomSortOrderIndex=s.CustomSortOrder?s.CustomSortOrder.split(":").indexOf(h.cleanGuid(e.Id)):-1:e.CustomSortOrderIndex=e.Parent.CustomSortOrder?e.Parent.CustomSortOrder.split(":").indexOf(h.cleanGuid(e.Id)):-1,e.Id=h.cleanGuid(e.Id),e.PathDepth=e.PathOfTerm.split(";").length,e.TermSet={Id:h.cleanGuid(s.Id),Name:s.Name},e.Parent&&(e.ParentId=h.cleanGuid(e.Parent.Id)),e}),u.length>0&&(u=h.sortTerms(u),s.Terms=u)}try{o&&window.sessionStorage&&window.sessionStorage.setItem(i,JSON.stringify(s))}catch(e){}return s}return null})})])}})})},e.prototype.searchTermsByName=function(e){return this.searchTermsByTermSet(e)},e.prototype.searchTermsByTermId=function(e,t){return i(this,void 0,void 0,function(){var n,r,o,i,a,u,c;return s(this,function(s){switch(s.label){case 0:return n=this.props.useSessionStorage,r=this.getTermsById(t,n),r?[2,this.searchTermsBySearchText(r,e)]:[3,1];case 1:return o=this.props,i=o.termsetNameOrID,a=o.hideDeprecatedTags,u=o.hideTagsNotAvailableForTagging,[4,this.getAllTermsByAnchorId(i,t,a,u,n)];case 2:if(c=s.sent())return[2,this.searchTermsBySearchText(c,e)];s.label=3;case 3:return[2,null]}})})},e.prototype.getAllTermsByAnchorId=function(e,t,n,r,o){return void 0===o&&(o=!0),i(this,void 0,void 0,function(){var i,a,u,c,l,p,d,h=this;return s(this,function(s){switch(s.label){case 0:return i=[],a=this.getTermsById(t,o),a?[2,a]:[4,this.getAllTerms(e,n,r)];case 1:if(u=s.sent(),c=u.Terms,t){if(l=c.filter(function(e){return e.Id.toLowerCase()===t.toLowerCase()}).shift()){p=l.PathOfTerm+";",d=c.filter(function(e){return e.PathOfTerm.substring(0,p.length)===p&&e.Id!==l.Id}),d.forEach(function(e){i.push(h.convertTermToPickerTerm(e))});try{o&&window.sessionStorage&&window.sessionStorage.setItem(t,JSON.stringify(i))}catch(e){}}}else c.forEach(function(e){i.push(h.convertTermToPickerTerm(e))});return[2,i]}})})},e.prototype.cleanGuid=function(e){return void 0!==e?e.replace("/Guid(","").replace("/","").replace(")",""):""},e.prototype.getTermSetId=function(e,t){if(e&&e.length>0&&t){var n=e[0];if(n.Groups&&n.Groups._Child_Items_)for(var r=0,o=n.Groups._Child_Items_;r-1}):[]},e.prototype.searchTermsByTermSet=function(e){var t=this;return new Promise(function(n){t.getTermStores().then(function(o){var i=t.props.termsetNameOrID;if(!t.isGuid(i)){var s=t.getTermSetId(o,i);if(!s)return void n(null);i=t.cleanGuid(s.Id)}if(void 0===o||0===o.length)return void n(null);var u="de-de"===t.context.pageContext.cultureInfo.currentUICultureName?1031:1033,c={start:e,lcid:0!==u?u:t.context.pageContext.web.language,sspList:t.cleanGuid(o[0].Id),termSetList:i,anchorId:t.props.anchorId?t.props.anchorId:a,isSpanTermStores:!1,isSpanTermSets:!1,isIncludeUnavailable:!0===t.props.hideTagsNotAvailableForTagging,isIncludeDeprecated:!0===t.props.hideDeprecatedTags,isAddTerms:!1,isIncludePathData:!1,excludeKeyword:!1,excludedTermset:a},l=new Headers;l.append("accept","application/json"),l.append("content-type","application/json");var p={headers:l,body:JSON.stringify(c)};return t.context.spHttpClient.post(t.suggestionServiceUrl,r.SPHttpClient.configurations.v1,p).then(function(e){return e.json().then(function(e){var r=e.d.Groups;if(r&&r.length>0){var o=r[0].Suggestions;if(o.length>0){var i=o.map(function(e){return t.convertSuggestTermToPickerTerm(e)});return void n(i)}}n([])})})})})},e.prototype.isGuid=function(e){return/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/.test(e)},e.prototype.sortTerms=function(e){for(var t=[],n=!0,r=1;n;){var i=e.filter(function(e){return e.PathDepth===r});if(i&&i.length>0){if(i=i.sort(this.sortTermByPath),1!==r){i=i.reverse();for(var s=0,a=i;st.PathOfTerm.toLowerCase()?1:0:e.CustomSortOrderIndext.CustomSortOrderIndex?1:0},e.prototype.convertTermToPickerTerm=function(e){return{key:this.cleanGuid(e.Id),name:e.Name,path:e.PathOfTerm,termSet:this.cleanGuid(e.TermSet.Id),termSetName:e.TermSet.Name}},e.prototype.convertSuggestTermToPickerTerm=function(e){var t="",n="";if(e.Paths&&e.Paths.length>0){var r=e.Paths[0].replace(/^\[/,"").replace(/\]$/,""),o=r.split(":");t=o.join(";")+";"+e.DefaultLabel,n=o[0]}return{key:this.cleanGuid(e.Id),name:e.DefaultLabel,path:t,termSet:a,termSetName:n}},e}();t.a=u},function(e,t){e.exports=o},function(e,t){e.exports=i},function(e,t,n){"use strict";n.d(t,"a",function(){return r});var r=function(){function e(){}return e.prototype.Get=function(e){return this[e]},e.prototype.Add=function(e,t){this[e]=t},e}()},function(e,t,n){"use strict";n.d(t,"a",function(){return i});var r=n(19),o=(n.n(r),n(20)),i=function(){function e(e,t,n){this.context=e,this.menuItems=t,this.updateCallback=n}return e.prototype.render=function(e){var t=this;e.innerHTML="",e.id="CustomNavigation";var n=document.createElement("nav");n.id="Mega-Menu",n.className="mega-menu-main",n.setAttribute("role","navigation"),n.setAttribute("aria-label","Hauptnavigation");var o=document.createElement("ul");o.setAttribute("role","menubar"),this.menuItems.forEach(function(e){var n=t.createTopLevelItem(e);o.appendChild(n)}),this.context.pageContext.web.permissions.hasPermission(r.SPPermission.manageWeb)&&o.appendChild(this.createSettingsItem()),n.appendChild(o),e.appendChild(n),this.attachEventListeners(),this.createScreenReaderAnnouncer()},e.prototype.createSettingsItem=function(){var e=this,t=document.createElement("li");t.setAttribute("role","none");var n=document.createElement("button");n.type="button",n.className="menu-item-link menu-item-settings",n.setAttribute("role","menuitem"),n.setAttribute("tabindex","0"),n.setAttribute("aria-haspopup","false"),n.setAttribute("aria-label","Einstellungen"),n.title="Einstellungen";var r=document.createElement("span");return r.className="ms-Icon ms-Icon--Settings menu-item-settings__icon",r.setAttribute("aria-hidden","true"),n.appendChild(r),n.addEventListener("click",function(){return e.openSettings()}),n.addEventListener("keydown",function(t){"Enter"!==t.key&&" "!==t.key||(t.preventDefault(),e.openSettings())}),t.appendChild(n),t},e.prototype.openSettings=function(){this._settingsPanel||(this._settingsPanel=new o.a(this.context,this.updateCallback)),this._settingsPanel.open()},e.prototype.createTopLevelItem=function(e){var t=document.createElement("li");t.setAttribute("role","none");var n=this.createTopLevelElement(e);if(t.appendChild(n),e.hasChildren()&&e.items&&e.items.length>0){var r=this.createMegaMenu(e);t.appendChild(r)}return t},e.prototype.createTopLevelElement=function(e){var t;return e.url?(t=document.createElement("a"),t.href=e.url,t.className="menu-item-link"):(t=document.createElement("span"),t.className="menu-item-text",t.setAttribute("tabindex","0")),t.setAttribute("role","menuitem"),t.setAttribute("aria-haspopup","true"),t.setAttribute("aria-expanded","false"),t.textContent=e.label,e.hoverText&&(t.title=e.hoverText),t},e.prototype.createMegaMenu=function(e){var t=this,n=document.createElement("div");n.className="mega-menu",n.setAttribute("role","menu"),n.setAttribute("aria-label",e.label+" Unterkategorien");var r=document.createElement("div");return r.className="mega-menu-grid",e.items&&e.items.forEach(function(e){var n=t.createCategorySection(e);r.appendChild(n)}),n.appendChild(r),n},e.prototype.createCategorySection=function(e){var t=document.createElement("div");t.className="mega-menu-category";var n=document.createElement("h3");if(e.url){var r=document.createElement("a");r.href=e.url,r.textContent=e.label,e.hoverText&&(r.title=e.hoverText),n.appendChild(r)}else{var o=document.createElement("span");o.textContent=e.label,e.hoverText&&(o.title=e.hoverText),n.appendChild(o)}if(t.appendChild(n),e.hasChildren()&&e.items&&e.items.length>0){var i=document.createElement("ul");e.items.forEach(function(e){var t=document.createElement("li"),n=document.createElement("a");n.href=e.url||"#",n.textContent=e.label,e.hoverText&&(n.title=e.hoverText),t.appendChild(n),i.appendChild(t)}),t.appendChild(i)}return t},e.prototype.attachEventListeners=function(){for(var e=document.querySelectorAll('#Mega-Menu > ul > li > a, #Mega-Menu > ul > li > span[role="menuitem"]'),t=0;t ul > li > a, #Mega-Menu > ul > li > span");o||i||s||a||(console.log("Schließe Menu wegen Focus-Verlust"),n.closeMegaMenu(e,t))},150)})},e.prototype.attachGlobalKeyboardNavigation=function(){var e=this;document.addEventListener("keydown",function(t){var n=document.activeElement;if("Escape"===t.key){var r=document.querySelector('.mega-menu[aria-expanded="true"]');if(r){var o=r.previousElementSibling;e.closeMegaMenu(o,r),o.focus()}}if("Tab"===t.key){if(!t.shiftKey){var i=n.closest("#Mega-Menu > ul > li > a, #Mega-Menu > ul > li > span");if(i){var s=i.closest("li"),a=s.querySelector(".mega-menu.js-open");if(a){t.preventDefault();var u=a.querySelector("a");return void(u&&u.focus())}}}if(t.shiftKey){var a=n.closest(".mega-menu");if(a&&a.classList.contains("js-open")){if(n===a.querySelectorAll("a")[0]){t.preventDefault();return void a.previousElementSibling.focus()}}}}})},e.prototype.openMegaMenu=function(e,t){e.setAttribute("aria-expanded","true"),t.setAttribute("aria-expanded","true"),t.classList.add("js-open"),console.log("Menu geöffnet:",e.textContent)},e.prototype.closeMegaMenu=function(e,t){e.setAttribute("aria-expanded","false"),t.setAttribute("aria-expanded","false"),t.classList.remove("js-open"),console.log("Menu geschlossen:",e.textContent)},e.prototype.toggleMegaMenu=function(e,t){"true"===e.getAttribute("aria-expanded")?this.closeMegaMenu(e,t):(this.closeAllMegaMenus(),this.openMegaMenu(e,t))},e.prototype.closeAllMegaMenus=function(){for(var e=document.querySelectorAll('#Mega-Menu > ul > li > a[aria-expanded="true"], #Mega-Menu > ul > li > span[aria-expanded="true"]'),t=0;t0&&s[s.length-1])&&(6===n[0]||2===n[0])){u=0;continue}if(3===n[0]&&(!s||n[1]>s[0]&&n[1]\n

Einstellungen

\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n "},e.prototype._save=function(){if(this._panelElement){var e=this._panelElement.querySelector("#mm-setting-termset"),t=this._panelElement.querySelector("#mm-setting-css");this.saveApplicationCustomizerProps({termSetName:e&&e.value?e.value:"",cssUrl:t&&t.value?t.value:""}),this.close()}},e.prototype._trapFocus=function(e){if(this._panelElement){var t=this._panelElement.querySelectorAll("button, input");if(t&&0!==t.length){var n=t[0],r=t[t.length-1],o=document.activeElement;e.shiftKey&&o===n?(e.preventDefault(),r.focus()):e.shiftKey||o!==r||(e.preventDefault(),n.focus())}}},e.prototype._escape=function(e){return e?e.replace(/&/g,"&").replace(/"/g,""").replace(//g,">"):""},e}()},function(e,t,n){"use strict";n.d(t,"a",function(){return a});var r=n(0),o=n(5),i=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))(function(o,i){function s(e){try{u(r.next(e))}catch(e){i(e)}}function a(e){try{u(r.throw(e))}catch(e){i(e)}}function u(e){e.done?o(e.value):new n(function(t){t(e.value)}).then(s,a)}u((r=r.apply(e,t||[])).next())})},s=this&&this.__generator||function(e,t){function n(e){return function(t){return r([e,t])}}function r(n){if(o)throw new TypeError("Generator is already executing.");for(;u;)try{if(o=1,i&&(s=i[2&n[0]?"return":n[0]?"throw":"next"])&&!(s=s.call(i,n[1])).done)return s;switch(i=0,s&&(n=[0,s.value]),n[0]){case 0:case 1:s=n;break;case 4:return u.label++,{value:n[1],done:!1};case 5:u.label++,i=n[1],n=[0];continue;case 7:n=u.ops.pop(),u.trys.pop();continue;default:if(s=u.trys,!(s=s.length>0&&s[s.length-1])&&(6===n[0]||2===n[0])){u=0;continue}if(3===n[0]&&(!s||n[1]>s[0]&&n[1]ul{margin:0;list-style:none;display:-ms-grid;display:grid;-ms-grid-columns:(minmax(120px,1fr)) [auto-fit];grid-template-columns:repeat(auto-fit,minmax(120px,1fr));width:100%}.mega-menu-main>ul>li{position:static}.mega-menu-main>ul>li>a,.mega-menu-main>ul>li>span[role=menuitem]{display:block;padding:15px 20px;color:"[theme:neutralPrimary, default: #333333]";text-decoration:none;font-weight:600;font-size:19px;transition:all .3s ease;border-bottom:3px solid transparent;outline:0;cursor:pointer}@media (max-width:900px){.mega-menu-main>ul>li>a,.mega-menu-main>ul>li>span[role=menuitem]{font-size:17px}}.mega-menu-main>ul>li:hover>a,.mega-menu-main>ul>li:hover>span[role=menuitem]{background:linear-gradient(135deg,"[theme:themePrimary, default: #0078d7]","[theme:themeSecondary, default: #2b88d8]");color:"[theme:white, default: #ffffff]";border-bottom:3px solid;transform:translateY(-2px);box-shadow:0 4px 8px rgba(0,0,0,.2)}.mega-menu-main>ul>li>a:focus,.mega-menu-main>ul>li>span[role=menuitem]:focus{background:linear-gradient(135deg,"[theme:error, default: #a80000]","[theme:themeDarker, default: #004578]");color:"[theme:white, default: #ffffff]";border-bottom:3px solid;transform:translateY(-2px);box-shadow:0 0 0 3px "[theme:warning, default: #767676]",0 4px 8px rgba(0,0,0,.2);outline:3px solid;outline-offset:2px}.mega-menu-main>ul>li>a:active,.mega-menu-main>ul>li>span[role=menuitem]:active{transform:translateY(0);box-shadow:0 2px 4px rgba(0,0,0,.2)}.mega-menu{position:absolute;left:0;right:0;top:100%;width:100%;background:"[theme:white, default: #ffffff]";box-shadow:0 4px 12px rgba(0,0,0,.15);display:none;padding:40px;max-height:calc(100vh - 60px);overflow-y:auto;z-index:1000;visibility:hidden;opacity:0;transition:visibility 0s,opacity .3s}.mega-menu-main>ul>li:hover .mega-menu{visibility:visible;opacity:1;display:block}.mega-menu.js-open{visibility:visible!important;opacity:1!important;display:block!important}.mega-menu-grid{max-width:none;margin:0 auto;display:-ms-grid;display:grid;-ms-grid-columns:(minmax(200px,1fr)) [auto-fit];grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:30px}.mega-menu-category>h3{margin-bottom:12px;padding-bottom:8px;border-bottom:2px solid}.mega-menu-category>h3>a,.mega-menu-category>h3>span{color:"[theme:neutralPrimary, default: #333333]";font-size:16px;font-weight:700;display:block}.mega-menu-category>h3>a{text-decoration:none;padding:0;border-radius:0;transition:color .2s ease;outline:0}.mega-menu-category>h3>a:hover{color:"[theme:themePrimary, default: #0078d7]"}.mega-menu-category>h3>a:focus{color:"[theme:white, default: #ffffff]";background:"[theme:error, default: #a80000]";text-decoration:none;padding:4px 8px;border-radius:4px;margin:-4px -8px;outline:3px solid;outline-offset:2px;box-shadow:0 0 0 1px "[theme:white, default: #ffffff]",0 2px 8px rgba(0,0,0,.2)}.mega-menu-category ul{list-style:none}.mega-menu-category ul li{margin-bottom:4px}.mega-menu-category ul li a{color:"[theme:neutralSecondary, default: #666666]";text-decoration:none;font-size:14px;transition:all .2s ease;display:block;padding:4px 8px;border-radius:4px;outline:0}.mega-menu-category ul li a:hover{color:"[theme:themePrimary, default: #0078d7]";background:"[theme:themeLight, default: #c7e0f4]";padding-left:12px;transform:translateX(4px)}.mega-menu-category ul li a:focus{color:"[theme:white, default: #ffffff]";background:"[theme:error, default: #a80000]";padding-left:12px;transform:translateX(4px);box-shadow:0 0 0 2px "[theme:warning, default: #767676]";outline:2px solid;outline-offset:2px}.mega-menu-category ul li a{position:relative}@media (prefers-contrast:high){.mega-menu-main>ul>li>a:focus,.mega-menu-main>ul>li>span[role=menuitem]:focus{outline:4px solid;outline-offset:2px}.mega-menu-category>h3>a:focus,.mega-menu-category ul li a:focus{outline:3px solid;outline-offset:2px}}.content{padding:40px;max-width:1200px;margin:0 auto}.menu-item-link,.menu-item-text{display:block;padding:15px 20px;color:"[theme:neutralPrimary, default: #333333]";font-weight:600;transition:all .3s ease;border-bottom:3px solid transparent;outline:0;text-decoration:none}.menu-item-text{cursor:pointer}.menu-item-link:hover,.menu-item-text:hover{background-color:"[theme:neutralLighter, default: #f4f4f4]";border-bottom-color:"[theme:themePrimary, default: #0078d7]"}.menu-item-link:focus,.menu-item-text:focus{background-color:"[theme:themeDarker, default: #004578]";color:"[theme:white, default: #ffffff]";border-bottom-color:"[theme:themeDark, default: #005a9e]";outline:3px solid;outline-offset:2px;box-shadow:0 0 0 6px rgba(243,156,18,.3)}.menu-item-settings{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;background:0 0;border:none;cursor:pointer;font:inherit;padding:15px 20px;color:"[theme:neutralPrimary, default: #333333]"}.menu-item-settings:hover{background-color:"[theme:neutralLighter, default: #f4f4f4]";border-bottom:3px solid}.menu-item-settings:focus{background-color:"[theme:themeDarker, default: #004578]";color:"[theme:white, default: #ffffff]";border-bottom:3px solid;outline:3px solid;outline-offset:2px;box-shadow:0 0 0 6px rgba(243,156,18,.3)}.menu-item-settings__icon{font-size:18px;line-height:1;display:inline-block;transform:translateY(2px)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.mm-settings-overlay{position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:4000;animation:mmFadeIn .2s ease}.mm-settings-panel{position:fixed;top:0;right:0;height:100vh;width:480px;max-width:100%;background:"[theme:white, default: #ffffff]";box-shadow:-4px 0 12px rgba(0,0,0,.2);z-index:4001;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;font-size:17px;font-weight:300;font-family:Segoe UI,"Segoe UI Web (West European)",-apple-system,BlinkMacSystemFont,Roboto,Helvetica Neue,sans-serif;animation:mmSlideIn .25s ease}@media (max-width:600px){.mm-settings-panel{width:100%}}.mm-settings-header{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;padding:16px 20px;border-bottom:1px solid}.mm-settings-title{margin:0;font-size:18px;font-weight:600;font-size:17px;font-weight:300}.mm-settings-close{background:0 0;border:none;font-size:16px;line-height:1;cursor:pointer;padding:4px 8px;font-size:17px;font-weight:300}.mm-settings-close:focus{outline:3px solid;outline-offset:2px}.mm-settings-body{padding:20px;overflow-y:auto;-ms-flex:1;flex:1;font-size:14px;font-weight:400}.mm-settings-field{margin-bottom:16px}.mm-settings-field label{display:block;margin-bottom:4px;font-weight:600}.mm-settings-field input[type=text],.mm-settings-field label{color:"[theme:neutralPrimary, default: #333333]";font-size:14px;font-weight:400}.mm-settings-field input[type=text]{width:100%;padding:8px 12px;border:1px solid;border-radius:2px;box-sizing:border-box;background:"[theme:white, default: #ffffff]"}.mm-settings-field input[type=text]:focus{outline:3px solid;border-color:"[theme:themePrimary, default: #0078d7]"}.mm-settings-footer{padding:14px 20px;border-top:1px solid;display:-ms-flexbox;display:flex;gap:10px;-ms-flex-pack:end;justify-content:flex-end}.mm-settings-cancel,.mm-settings-save{cursor:pointer;border:none;border-radius:4px;padding:8px 16px;font-weight:600;font-size:14px;font-weight:400}.mm-settings-save{background:"[theme:themePrimary, default: #0078d7]";color:"[theme:white, default: #ffffff]"}.mm-settings-save:hover{background:"[theme:themeSecondary, default: #2b88d8]"}.mm-settings-cancel{background:"[theme:neutralTertiaryAlt, default: #c8c8c8]";color:"[theme:neutralPrimary, default: #333333]"}.mm-settings-cancel:hover{background:"[theme:neutralTertiary, default: #a6a6a6]"}.mm-settings-cancel:focus,.mm-settings-save:focus{outline:3px solid;outline-offset:2px}@keyframes mmSlideIn_4a10ff29{0%{transform:translateX(40px);opacity:0}to{transform:translateX(0);opacity:1}}@keyframes mmFadeIn_4a10ff29{0%{opacity:0}to{opacity:1}}',""])},function(e,t){function n(e,t){var n=e[1]||"",o=e[3];if(!o)return n;if(t&&"function"==typeof btoa){var i=r(o);return[n].concat(o.sources.map(function(e){return"/*# sourceURL="+o.sourceRoot+e+" */"})).concat([i]).join("\n")}return[n].join("\n")}function r(e){return"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(e))))+" */"}e.exports=function(e){var t=[];return t.toString=function(){return this.map(function(t){var r=n(t,e);return t[2]?"@media "+t[2]+"{"+r+"}":r}).join("")},t.i=function(e,n){"string"==typeof e&&(e=[[null,e,""]]);for(var r={},o=0;o0&&u(t)})}function a(){return setTimeout(function(){O.runState.flushTimer=0,s()},0)}function u(e,t){O.loadStyles?O.loadStyles(f(e).styleString,e):S?g(e,t):m(e)}function c(e){O.theme=e,d()}function l(e){void 0===e&&(e=3),3!==e&&2!==e||(p(O.registeredStyles),O.registeredStyles=[]),3!==e&&1!==e||(p(O.registeredThemableStyles),O.registeredThemableStyles=[])}function p(e){e.forEach(function(e){var t=e&&e.styleElement;t&&t.parentElement&&t.parentElement.removeChild(t)})}function d(){if(O.theme){for(var e=[],t=0,n=O.registeredThemableStyles;t0&&(l(1),u([].concat.apply([],e)))}}function h(e){return e&&(e=f(y(e)).styleString),e}function f(e){var t=O.theme,n=!1;return{styleString:(e||[]).map(function(e){var r=e.theme;if(r){n=!0;var o=t?t[r]:void 0,i=e.defaultValue||"inherit";return t&&!o&&console,o||i}return e.rawString}).join(""),themable:n}}function y(e){var t=[];if(e){for(var n=0,r=void 0;r=w.exec(e);){var o=r.index;o>n&&t.push({rawString:e.substring(n,o)}),t.push({theme:r[1],defaultValue:r[2]}),n=w.lastIndex}t.push({rawString:e.substring(n)})}return t}function m(e){var t=document.getElementsByTagName("head")[0],n=document.createElement("style"),r=f(e),o=r.styleString,i=r.themable;n.type="text/css",n.appendChild(document.createTextNode(o)),O.perf.count++,t.appendChild(n);var s={styleElement:n,themableStyle:e};i?O.registeredThemableStyles.push(s):O.registeredStyles.push(s)}function g(e,t){var n=document.getElementsByTagName("head")[0],r=O.registeredStyles,o=O.lastStyleElement,i=o?o.styleSheet:void 0,s=i?i.cssText:"",a=r[r.length-1],u=f(e).styleString;(!o||s.length+u.length>I)&&(o=document.createElement("style"),o.type="text/css",t?(n.replaceChild(o,t.styleElement),t.styleElement=o):n.appendChild(o),t||(a={styleElement:o,themableStyle:e},r.push(a))),o.styleSheet.cssText+=h(u),Array.prototype.push.apply(a.themableStyle,e),O.lastStyleElement=o}function b(){var e=!1;if("undefined"!=typeof document){var t=document.createElement("style");t.type="text/css",e=!!t.styleSheet}return e}var v=this&&this.__assign||Object.assign||function(e){for(var t,n=1,r=arguments.length;n=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s}function i(e,t,n,r){return new(n||(n=Promise))(function(o,i){function s(e){try{u(r.next(e))}catch(e){i(e)}}function a(e){try{u(r.throw(e))}catch(e){i(e)}}function u(e){e.done?o(e.value):new n(function(t){t(e.value)}).then(s,a)}u((r=r.apply(e,t||[])).next())})}function s(e,t){function n(e){return function(t){return r([e,t])}}function r(n){if(o)throw new TypeError("Generator is already executing.");for(;u;)try{if(o=1,i&&(s=2&n[0]?i.return:n[0]?i.throw||((s=i.return)&&s.call(i),0):i.next)&&!(s=s.call(i,n[1])).done)return s;switch(i=0,s&&(n=[2&n[0],s.value]),n[0]){case 0:case 1:s=n;break;case 4:return u.label++,{value:n[1],done:!1};case 5:u.label++,i=n[1],n=[0];continue;case 7:n=u.ops.pop(),u.trys.pop();continue;default:if(s=u.trys,!(s=s.length>0&&s[s.length-1])&&(6===n[0]||2===n[0])){u=0;continue}if(3===n[0]&&(!s||n[1]>s[0]&&n[1]-1?e.substr(0,t):e}function u(e){var t=[],n=["odata.type","odata.editLink","__metadata","odata.metadata"];return Object(m.j)(e,n[0])&&"SP.Web"===e[n[0]]?Object(m.j)(e,n[1])?t.push(e[n[1]]):Object(m.j)(e,n[2])&&t.push(e.__metadata.uri):Object(m.j)(e,n[3])&&Object(m.j)(e,n[1])?t.push(a(e[n[3]]),"_api",e[n[1]]):Object(m.j)(e,n[1])?t.push("_api",e[n[1]]):Object(m.j)(e,n[2])&&t.push(e.__metadata.uri),t.length<1?(b.a.write("No uri information found in ODataEntity parsing, chaining will fail for this object.",2),""):m.d.apply(void 0,t)}function c(e){return new O(e)}function l(e){m.c.extend(e)}function p(e){return new Promise(function(t){if(Object(m.m)(e))return t(e);if(null!==I.baseUrl)return t(Object(m.d)(I.baseUrl,e));if(void 0!==N._spPageContextInfo){if(Object(m.j)(N._spPageContextInfo,"webAbsoluteUrl"))return t(Object(m.d)(N._spPageContextInfo.webAbsoluteUrl,e));if(Object(m.j)(N._spPageContextInfo,"webServerRelativeUrl"))return t(Object(m.d)(N._spPageContextInfo.webServerRelativeUrl,e))}if(void 0!==N.location){var n=N.location.toString().toLowerCase();["/_layouts/","/siteassets/"].forEach(function(r){var o=n.indexOf(r);if(o>0)return t(Object(m.d)(n.substr(0,o),e))})}return t(e)})}function d(e){return{__metadata:{type:e}}}function h(e){return function(t){return function(t){function n(){for(var n=[],r=0;r1&&void 0!==n[1]?n[1]:e)||this}return r(n,t),n}(t)}}function f(e){return e.length<1?1:Math.max.apply(null,e.map(function(e){return e.order}))+1}function y(e){for(var t=0;tt.lastIndexOf("(")){var o=t.lastIndexOf("/");r._parentUrl=t.slice(0,o),n=Object(m.d)(t.slice(o),n),r._url=Object(m.d)(r._parentUrl,n)}else{var o=t.lastIndexOf("(");r._parentUrl=t.slice(0,o),r._url=Object(m.d)(t,n)}else{r.extend(t,n);var i=t.query.get("@target");void 0!==i&&r.query.set("@target",i)}return r}return r(t,e),t.prototype.as=function(e){var t=new e(this._url,null);return Object(m.f)(t,this,!0)},t.prototype.toUrlAndQuery=function(){var e=new Map(this.query),t=this.toUrl().replace(/'!(@.*?)::(.*?)'/gi,function(t,n,r){return b.a.write("Rewriting aliased parameter from match "+t+" to label: "+n+" value: "+r,0),e.set(n,"'"+r+"'"),n});if(e.size>0){t+=""+(t.indexOf("?")>-1?"&":"?")+Array.from(e).map(function(e){return e[0]+"="+e[1]}).join("&")}return t},t.prototype.select=function(){for(var e=[],t=0;t0&&this.query.set("$select",e.join(",")),this},t.prototype.expand=function(){for(var e=[],t=0;t0&&this.query.set("$expand",e.join(",")),this},t.prototype.getParent=function(e,t,n,r){void 0===t&&(t=this.parentUrl);var o=new e(t,n).configureFrom(this),i="@target";return this.query.has(i)&&o.query.set(i,this.query.get(i)),void 0!==r&&(o=o.inBatch(r)),o},t.prototype.clone=function(t,n,r){void 0===r&&(r=!0);var o=e.prototype._clone.call(this,new t(this,n),{includeBatch:r}),i="@target";return this.query.has(i)&&o.query.set(i,this.query.get(i)),o},t.prototype.toRequestContext=function(e,t,n,r){var o=this;void 0===t&&(t={});var i=this.hasBatch?this._batchDependency:function(){};return p(this.toUrlAndQuery()).then(function(s){return Object(m.p)(t,o._options),{batch:o.batch,batchDependency:i,cachingOptions:o._cachingOptions,clientFactory:function(){return new E},isBatched:o.hasBatch,isCached:o._forceCaching||o._useCaching&&/^get$/i.test(e),options:t,parser:n,pipeline:r,requestAbsoluteUrl:s,requestId:Object(m.h)(),verb:e}})},t}(v.h),j=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.filter=function(e){return this.query.set("$filter",e),this},t.prototype.orderBy=function(e,t){void 0===t&&(t=!0);var n="$orderby",r=this.query.has(n)?this.query.get(n).split(","):[];return r.push(e+" "+(t?"asc":"desc")),this.query.set(n,r.join(",")),this},t.prototype.skip=function(e){return this.query.set("$skip",e.toString()),this},t.prototype.top=function(e){return this.query.set("$top",e.toString()),this},t}(x),R=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype._update=function(e,t){var n=this;return function(r){return n.postCore({body:Object(m.n)(Object(m.f)(d(e),r)),headers:{"X-HTTP-Method":"MERGE"}}).then(function(e){return t(e,r)})}},t.prototype._delete=function(){return this.postCore({headers:{"X-HTTP-Method":"DELETE"}})},t.prototype._deleteWithETag=function(e){return void 0===e&&(e="*"),this.postCore({headers:{"IF-Match":e,"X-HTTP-Method":"DELETE"}})},t}(x),A=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,t.prototype.getById=function(e){return new k(this,"getById("+e+")")},t.prototype.getByEmail=function(e){return new k(this,"getByEmail('"+e+"')")},t.prototype.getByLoginName=function(e){var t=new k(this);return t.concat("('!@v::"+encodeURIComponent(e)+"')"),t},t.prototype.removeById=function(e){return this.clone(n,"removeById("+e+")").postCore()},t.prototype.removeByLoginName=function(e){var t=this.clone(n,"removeByLoginName(@v)");return t.query.set("@v","'"+encodeURIComponent(e)+"'"),t.postCore()},t.prototype.add=function(e){var t=this;return this.clone(n,null).postCore({body:Object(m.n)(Object(m.f)(d("SP.User"),{LoginName:e}))}).then(function(){return t.getByLoginName(e)})};var n;return t=n=o([h("siteusers")],t)}(j),U=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),Object.defineProperty(t.prototype,"groups",{get:function(){return new F(this,"groups")},enumerable:!0,configurable:!0}),t}(R),k=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.update=t._update("SP.User",function(e){return{data:e,user:t}}),t.delete=t._delete,t}return r(t,e),t}(U),L=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t=o([h("currentuser")],t)}(U);!function(e){e[e.None=0]="None",e[e.User=1]="User",e[e.DistributionList=2]="DistributionList",e[e.SecurityGroup=4]="SecurityGroup",e[e.SharePointGroup=8]="SharePointGroup",e[e.All=15]="All"}(g||(g={}));var D,F=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,t.prototype.getById=function(e){var t=new M(this);return t.concat("("+e+")"),t},t.prototype.add=function(e){var t=this,n=Object(m.n)(Object(m.f)(d("SP.Group"),e));return this.postCore({body:n}).then(function(e){return{data:e,group:t.getById(e.Id)}})},t.prototype.getByName=function(e){return new M(this,"getByName('"+e+"')")},t.prototype.removeById=function(e){return this.clone(n,"removeById('"+e+"')").postCore()},t.prototype.removeByLoginName=function(e){return this.clone(n,"removeByLoginName('"+e+"')").postCore()};var n;return t=n=o([h("sitegroups")],t)}(j),M=function(e){function t(){var n=null!==e&&e.apply(this,arguments)||this;return n.update=n._update("SP.Group",function(e,r){var o=n;return Object(m.j)(r,"Title")&&(o=n.getParent(t,n.parentUrl,"getByName('"+r.Title+"')")),{data:e,group:o}}),n}return r(t,e),Object.defineProperty(t.prototype,"users",{get:function(){return new A(this,"users")},enumerable:!0,configurable:!0}),t.prototype.setUserAsOwner=function(e){return i(this,void 0,void 0,function(){return s(this,function(n){return[2,this.clone(t,"SetUserAsOwner("+e+")").postCore()]})})},t}(R),B=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,t.prototype.getById=function(e){var t=new G(this);return t.concat("("+e+")"),t},t.prototype.add=function(e,t){return this.clone(n,"addroleassignment(principalid="+e+", roledefid="+t+")").postCore()},t.prototype.remove=function(e,t){return this.clone(n,"removeroleassignment(principalid="+e+", roledefid="+t+")").postCore()};var n;return t=n=o([h("roleassignments")],t)}(j),G=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.delete=t._delete,t}return r(t,e),Object.defineProperty(t.prototype,"groups",{get:function(){return new F(this,"groups")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"bindings",{get:function(){return new H(this)},enumerable:!0,configurable:!0}),t}(R),q=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.getById=function(e){return new W(this,"getById("+e+")")},t.prototype.getByName=function(e){return new W(this,"getbyname('"+e+"')")},t.prototype.getByType=function(e){return new W(this,"getbytype("+e+")")},t.prototype.add=function(e,t,n,r){var o=this,i=Object(m.n)({BasePermissions:{High:r.High.toString(),Low:r.Low.toString()},Description:t,Name:e,Order:n,__metadata:{type:"SP.RoleDefinition"}});return this.postCore({body:i}).then(function(e){return{data:e,definition:o.getById(e.Id)}})},t=o([h("roledefinitions")],t)}(j),W=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.delete=t._delete,t}return r(t,e),t.prototype.update=function(e){var t=this;void 0!==Object(m.j)(e,"BasePermissions")&&(e.BasePermissions=Object(m.f)({__metadata:{type:"SP.BasePermissions"}},{High:e.BasePermissions.High.toString(),Low:e.BasePermissions.Low.toString()}));var n=Object(m.n)(Object(m.f)(d("SP.RoleDefinition"),e));return this.postCore({body:n,headers:{"X-HTTP-Method":"MERGE"}}).then(function(n){var r=t;if(Object(m.j)(e,"Name")){r=t.getParent(q,t.parentUrl,"").getByName(e.Name)}return{data:n,definition:r}})},t}(R),H=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t=o([h("roledefinitionbindings")],t)}(j);!function(e){e[e.Display=1]="Display",e[e.Edit=2]="Edit",e[e.New=3]="New"}(D||(D={}));var K;!function(e){e[e.Invalid=0]="Invalid",e[e.Integer=1]="Integer",e[e.Text=2]="Text",e[e.Note=3]="Note",e[e.DateTime=4]="DateTime",e[e.Counter=5]="Counter",e[e.Choice=6]="Choice",e[e.Lookup=7]="Lookup",e[e.Boolean=8]="Boolean",e[e.Number=9]="Number",e[e.Currency=10]="Currency",e[e.URL=11]="URL",e[e.Computed=12]="Computed",e[e.Threading=13]="Threading",e[e.Guid=14]="Guid",e[e.MultiChoice=15]="MultiChoice",e[e.GridChoice=16]="GridChoice",e[e.Calculated=17]="Calculated",e[e.File=18]="File",e[e.Attachments=19]="Attachments",e[e.User=20]="User",e[e.Recurrence=21]="Recurrence",e[e.CrossProjectLink=22]="CrossProjectLink",e[e.ModStat=23]="ModStat",e[e.Error=24]="Error",e[e.ContentTypeId=25]="ContentTypeId",e[e.PageSeparator=26]="PageSeparator",e[e.ThreadIndex=27]="ThreadIndex",e[e.WorkflowStatus=28]="WorkflowStatus",e[e.AllDayEvent=29]="AllDayEvent",e[e.WorkflowEventType=30]="WorkflowEventType"}(K||(K={}));var V;!function(e){e[e.DateOnly=0]="DateOnly",e[e.DateTime=1]="DateTime"}(V||(V={}));var Q;!function(e){e[e.Unspecified=0]="Unspecified",e[e.Disabled=1]="Disabled",e[e.Relative=2]="Relative"}(Q||(Q={}));var z;!function(e){e[e.DefaultValue=0]="DefaultValue",e[e.AddToDefaultContentType=1]="AddToDefaultContentType",e[e.AddToNoContentType=2]="AddToNoContentType",e[e.AddToAllContentTypes=4]="AddToAllContentTypes",e[e.AddFieldInternalNameHint=8]="AddFieldInternalNameHint",e[e.AddFieldToDefaultView=16]="AddFieldToDefaultView",e[e.AddFieldCheckDisplayName=32]="AddFieldCheckDisplayName"}(z||(z={}));var J;!function(e){e[e.Gregorian=1]="Gregorian",e[e.Japan=3]="Japan",e[e.Taiwan=4]="Taiwan",e[e.Korea=5]="Korea",e[e.Hijri=6]="Hijri",e[e.Thai=7]="Thai",e[e.Hebrew=8]="Hebrew",e[e.GregorianMEFrench=9]="GregorianMEFrench",e[e.GregorianArabic=10]="GregorianArabic",e[e.GregorianXLITEnglish=11]="GregorianXLITEnglish",e[e.GregorianXLITFrench=12]="GregorianXLITFrench",e[e.KoreaJapanLunar=14]="KoreaJapanLunar",e[e.ChineseLunar=15]="ChineseLunar",e[e.SakaEra=16]="SakaEra",e[e.UmAlQura=23]="UmAlQura"}(J||(J={}));var X;!function(e){e[e.Hyperlink=0]="Hyperlink",e[e.Image=1]="Image"}(X||(X={}));var Y;!function(e){e[e.EmptyMask=0]="EmptyMask",e[e.ViewListItems=1]="ViewListItems",e[e.AddListItems=2]="AddListItems",e[e.EditListItems=3]="EditListItems",e[e.DeleteListItems=4]="DeleteListItems",e[e.ApproveItems=5]="ApproveItems",e[e.OpenItems=6]="OpenItems",e[e.ViewVersions=7]="ViewVersions",e[e.DeleteVersions=8]="DeleteVersions",e[e.CancelCheckout=9]="CancelCheckout",e[e.ManagePersonalViews=10]="ManagePersonalViews",e[e.ManageLists=12]="ManageLists",e[e.ViewFormPages=13]="ViewFormPages",e[e.AnonymousSearchAccessList=14]="AnonymousSearchAccessList",e[e.Open=17]="Open",e[e.ViewPages=18]="ViewPages",e[e.AddAndCustomizePages=19]="AddAndCustomizePages",e[e.ApplyThemeAndBorder=20]="ApplyThemeAndBorder",e[e.ApplyStyleSheets=21]="ApplyStyleSheets",e[e.ViewUsageData=22]="ViewUsageData",e[e.CreateSSCSite=23]="CreateSSCSite",e[e.ManageSubwebs=24]="ManageSubwebs",e[e.CreateGroups=25]="CreateGroups",e[e.ManagePermissions=26]="ManagePermissions",e[e.BrowseDirectories=27]="BrowseDirectories",e[e.BrowseUserInfo=28]="BrowseUserInfo",e[e.AddDelPrivateWebParts=29]="AddDelPrivateWebParts",e[e.UpdatePersonalWebParts=30]="UpdatePersonalWebParts",e[e.ManageWeb=31]="ManageWeb",e[e.AnonymousSearchAccessWebLists=32]="AnonymousSearchAccessWebLists",e[e.UseClientIntegration=37]="UseClientIntegration",e[e.UseRemoteAPIs=38]="UseRemoteAPIs",e[e.ManageAlerts=39]="ManageAlerts",e[e.CreateAlerts=40]="CreateAlerts",e[e.EditMyUserInfo=41]="EditMyUserInfo",e[e.EnumeratePermissions=63]="EnumeratePermissions",e[e.FullMask=65]="FullMask"}(Y||(Y={}));var $;!function(e){e[e.None=0]="None",e[e.User=1]="User",e[e.DistributionList=2]="DistributionList",e[e.SecurityGroup=4]="SecurityGroup",e[e.SharePointGroup=8]="SharePointGroup",e[e.All=15]="All"}($||($={}));var Z;!function(e){e[e.None=0]="None",e[e.UserInfoList=1]="UserInfoList",e[e.Windows=2]="Windows",e[e.MembershipProvider=4]="MembershipProvider",e[e.RoleProvider=8]="RoleProvider",e[e.All=15]="All"}(Z||(Z={}));var ee;!function(e){e[e.None=0]="None",e[e.Guest=1]="Guest",e[e.Reader=2]="Reader",e[e.Contributor=3]="Contributor",e[e.WebDesigner=4]="WebDesigner",e[e.Administrator=5]="Administrator"}(ee||(ee={}));var te;!function(e){e[e.Invalid=-1]="Invalid",e[e.DefaultView=0]="DefaultView",e[e.NormalView=1]="NormalView",e[e.DialogView=2]="DialogView",e[e.View=3]="View",e[e.DisplayForm=4]="DisplayForm",e[e.DisplayFormDialog=5]="DisplayFormDialog",e[e.EditForm=6]="EditForm",e[e.EditFormDialog=7]="EditFormDialog",e[e.NewForm=8]="NewForm",e[e.NewFormDialog=9]="NewFormDialog",e[e.SolutionForm=10]="SolutionForm",e[e.PAGE_MAXITEMS=11]="PAGE_MAXITEMS"}(te||(te={}));var ne;!function(e){e[e.Uninitialized=0]="Uninitialized",e[e.Direct=1]="Direct",e[e.OrganizationView=2]="OrganizationView",e[e.OrganizationEdit=3]="OrganizationEdit",e[e.AnonymousView=4]="AnonymousView",e[e.AnonymousEdit=5]="AnonymousEdit",e[e.Flexible=6]="Flexible"}(ne||(ne={}));var re;!function(e){e[e.None=0]="None",e[e.View=1]="View",e[e.Edit=2]="Edit",e[e.Owner=3]="Owner"}(re||(re={}));var oe;!function(e){e[e.CompletedSuccessfully=0]="CompletedSuccessfully",e[e.AccessRequestsQueued=1]="AccessRequestsQueued",e[e.NoResolvedUsers=-1]="NoResolvedUsers",e[e.AccessDenied=-2]="AccessDenied",e[e.CrossSiteRequestNotSupported=-3]="CrossSiteRequestNotSupported",e[e.UnknowError=-4]="UnknowError",e[e.EmailBodyTooLong=-5]="EmailBodyTooLong",e[e.ListUniqueScopesExceeded=-6]="ListUniqueScopesExceeded",e[e.CapabilityDisabled=-7]="CapabilityDisabled",e[e.ObjectNotSupported=-8]="ObjectNotSupported",e[e.NestedGroupsNotSupported=-9]="NestedGroupsNotSupported"}(oe||(oe={}));var ie;!function(e){e[e.Unknown=0]="Unknown",e[e.File=1]="File",e[e.Folder=2]="Folder",e[e.Item=3]="Item",e[e.List=4]="List",e[e.Web=5]="Web",e[e.Max=6]="Max"}(ie||(ie={}));var se;!function(e){e[e.None=0]="None",e[e.AllowList=1]="AllowList",e[e.BlockList=2]="BlockList"}(se||(se={}));var ae;!function(e){e[e.None=0]="None",e[e.ContextInfo=1]="ContextInfo",e[e.ListData=2]="ListData",e[e.ListSchema=4]="ListSchema",e[e.MenuView=8]="MenuView",e[e.ListContentType=16]="ListContentType",e[e.FileSystemItemId=32]="FileSystemItemId",e[e.ClientFormSchema=64]="ClientFormSchema",e[e.QuickLaunch=128]="QuickLaunch",e[e.Spotlight=256]="Spotlight",e[e.Visualization=512]="Visualization",e[e.ViewMetadata=1024]="ViewMetadata",e[e.DisableAutoHyperlink=2048]="DisableAutoHyperlink",e[e.EnableMediaTAUrls=4096]="EnableMediaTAUrls",e[e.ParentInfo=8192]="ParentInfo",e[e.PageContextInfo=16384]="PageContextInfo",e[e.ClientSideComponentManifest=32768]="ClientSideComponentManifest"}(ae||(ae={}));var ue;!function(e){e[e.PeopleAndGroups=1]="PeopleAndGroups",e[e.PeopleOnly=0]="PeopleOnly"}(ue||(ue={}));var ce;!function(e){e[e.Dropdown=0]="Dropdown",e[e.RadioButtons=1]="RadioButtons"}(ce||(ce={}));var le;!function(e){e[e.DefaultZone=0]="DefaultZone",e[e.Intranet=1]="Intranet",e[e.Internet=2]="Internet",e[e.Custom=3]="Custom",e[e.Extranet=4]="Extranet"}(le||(le={}));var pe,de=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),Object.defineProperty(t.prototype,"roleAssignments",{get:function(){return new B(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"firstUniqueAncestorSecurableObject",{get:function(){return new R(this,"FirstUniqueAncestorSecurableObject")},enumerable:!0,configurable:!0}),t.prototype.getUserEffectivePermissions=function(e){var t=this.clone(x,"getUserEffectivePermissions(@user)");return t.query.set("@user","'"+encodeURIComponent(e)+"'"),t.get().then(function(e){return Object(m.j)(e,"GetUserEffectivePermissions")?e.GetUserEffectivePermissions:e})},t.prototype.getCurrentUserEffectivePermissions=function(){return this.clone(x,"EffectiveBasePermissions").get().then(function(e){return Object(m.j)(e,"EffectiveBasePermissions")?e.EffectiveBasePermissions:e})},t.prototype.breakRoleInheritance=function(e,n){return void 0===e&&(e=!1),void 0===n&&(n=!1),this.clone(t,"breakroleinheritance(copyroleassignments="+e+", clearsubscopes="+n+")").postCore()},t.prototype.resetRoleInheritance=function(){return this.clone(t,"resetroleinheritance").postCore()},t.prototype.userHasPermissions=function(e,t){var n=this;return this.getUserEffectivePermissions(e).then(function(e){return n.hasPermissions(e,t)})},t.prototype.currentUserHasPermissions=function(e){var t=this;return this.getCurrentUserEffectivePermissions().then(function(n){return t.hasPermissions(n,e)})},t.prototype.hasPermissions=function(e,t){if(!t)return!0;if(t===Y.FullMask)return 32767==(32767&e.High)&&65535===e.Low;t-=1;var n=1;return t>=0&&t<32?(n<<=t,0!=(e.Low&n)):t>=32&&t<64&&(n<<=t-32,0!=(e.High&n))},t}(R),he=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.getShareLink=function(e,n){void 0===n&&(n=null);var r=null!==n?n.toISOString():null;return this.clone(t,"shareLink").postCore({body:Object(m.n)({request:{createLink:!0,emailData:null,settings:{expiration:r,linkKind:e}}})})},t.prototype.shareWith=function(e,n,r,o,i){var s=this;void 0===r&&(r=!1),void 0===o&&(o=!1),Array.isArray(e)||(e=[e]);var a=Object(m.n)(e.map(function(e){return{Key:e}})),u=n===re.Edit?ee.Contributor:ee.Reader;return new j("_api/web","roledefinitions").select("Id").filter("RoleTypeKind eq "+u).get().then(function(e){if(!Array.isArray(e)||e.length<1)throw Error("Could not locate a role defintion with RoleTypeKind "+u);var n={includeAnonymousLinkInEmail:r,peoplePickerInput:a,propagateAcl:o,roleValue:"role:"+e[0].Id,useSimplifiedRoles:!0};return void 0!==i&&(n=Object(m.f)(n,{emailBody:i.body,emailSubject:void 0!==i.subject?i.subject:"",sendEmail:!0})),s.clone(t,"shareObject").postCore({body:Object(m.n)(n)})})},t.prototype.shareObject=function(e,t){var n=this;return void 0===t&&(t=!1),t?this.sendShareObjectRequest(e):(e=Object(m.f)(e,{group:null,includeAnonymousLinkInEmail:!1,propagateAcl:!1,useSimplifiedRoles:!0},!0),this.getRoleValue(e.role,e.group).then(function(t){Array.isArray(e.loginNames)||(e.loginNames=[e.loginNames]);var r=Object(m.n)(e.loginNames.map(function(e){return{Key:e}})),o={peoplePickerInput:r,roleValue:t,url:e.url};return void 0!==e.emailData&&null!==e.emailData&&(o=Object(m.f)(o,{emailBody:e.emailData.body,emailSubject:void 0!==e.emailData.subject?e.emailData.subject:"Shared with you.",sendEmail:!0})),n.sendShareObjectRequest(o)}))},t.prototype.unshareObjectWeb=function(e){return this.clone(t,"unshareObject").postCore({body:Object(m.n)({url:e})})},t.prototype.checkPermissions=function(e){return this.clone(t,"checkPermissions").postCore({body:Object(m.n)({recipients:e})})},t.prototype.getSharingInformation=function(e,n){void 0===e&&(e=null);var r=this.clone(t,"getSharingInformation");return r.expand.apply(r,n).postCore({body:Object(m.n)({request:e})})},t.prototype.getObjectSharingSettings=function(e){return void 0===e&&(e=!0),this.clone(t,"getObjectSharingSettings").postCore({body:Object(m.n)({useSimplifiedRoles:e})})},t.prototype.unshareObject=function(){return this.clone(t,"unshareObject").postCore()},t.prototype.deleteLinkByKind=function(e){return this.clone(t,"deleteLinkByKind").postCore({body:Object(m.n)({linkKind:e})})},t.prototype.unshareLink=function(e,n){return void 0===n&&(n="00000000-0000-0000-0000-000000000000"),this.clone(t,"unshareLink").postCore({body:Object(m.n)({linkKind:e,shareId:n})})},t.prototype.getRoleValue=function(e,t){if(void 0===t||null===t){var n=e===re.Edit?ee.Contributor:ee.Reader;return new j("_api/web","roledefinitions").select("Id").top(1).filter("RoleTypeKind eq "+n).get().then(function(e){if(e.length<1)throw Error("Could not locate associated role definition for supplied role. Edit and View are supported");return"role: "+e[0].Id})}switch(t){case ee.Contributor:return new R("_api/web","associatedmembergroup").select("Id").get().then(function(e){return"group: "+e.Id});case ee.Reader:case ee.Guest:return new R("_api/web","associatedvisitorgroup").select("Id").get().then(function(e){return"group: "+e.Id});default:throw Error("Could not determine role value for supplied value. Contributor, Reader, and Guest are supported")}},t.prototype.getShareObjectWeb=function(e){return Promise.resolve(new R(a(e),"/_api/SP.Web.ShareObject"))},t.prototype.sendShareObjectRequest=function(e){return this.getShareObjectWeb(this.toUrl()).then(function(n){return n.expand("UsersWithAccessRequests","GroupsSharedWith").as(t).postCore({body:Object(m.n)(e)})})},t}(x),fe=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.shareWith=function(e,t,n){var r=this;void 0===t&&(t=re.View);var o=this.addBatchDependency();return new R(a(this.toUrl()),"/_api/web/url").get().then(function(i){return o(),r.shareObject(Object(m.d)(i,"/_layouts/15/aclinv.aspx?forSharing=1&mbypass=1"),e,t,n)})},t.prototype.shareObject=function(e,t,n,r,o,i,s,a){return void 0===i&&(i=!1),void 0===s&&(s=!1),void 0===a&&(a=!0),this.clone(he,null).shareObject({emailData:r,group:o,includeAnonymousLinkInEmail:s,loginNames:t,propagateAcl:i,role:n,url:e,useSimplifiedRoles:a})},t.prototype.shareObjectRaw=function(e){return this.clone(he,null).shareObject(e,!0)},t.prototype.unshareObject=function(e){return this.clone(he,null).unshareObjectWeb(e)},t}(de),ye=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.getShareLink=function(e,t){return void 0===e&&(e=ne.OrganizationView),void 0===t&&(t=null),this.clone(he,null).getShareLink(e,t)},t.prototype.shareWith=function(e,t,n,r){return void 0===t&&(t=re.View),void 0===n&&(n=!1),this.clone(he,null).shareWith(e,t,n,!1,r)},t.prototype.checkSharingPermissions=function(e){return this.clone(he,null).checkPermissions(e)},t.prototype.getSharingInformation=function(e,t){return void 0===e&&(e=null),this.clone(he,null).getSharingInformation(e,t)},t.prototype.getObjectSharingSettings=function(e){return void 0===e&&(e=!0),this.clone(he,null).getObjectSharingSettings(e)},t.prototype.unshare=function(){return this.clone(he,null).unshareObject()},t.prototype.deleteSharingLinkByKind=function(e){return this.clone(he,null).deleteLinkByKind(e)},t.prototype.unshareLink=function(e,t){return this.clone(he,null).unshareLink(e,t)},t}(de),ge=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.getShareLink=function(e,t){void 0===e&&(e=ne.OrganizationView),void 0===t&&(t=null);var n=this.addBatchDependency();return this.getShareable().then(function(r){return n(),r.getShareLink(e,t)})},t.prototype.checkSharingPermissions=function(e){var t=this.addBatchDependency();return this.getShareable().then(function(n){return t(),n.checkPermissions(e)})},t.prototype.getSharingInformation=function(e,t){void 0===e&&(e=null);var n=this.addBatchDependency();return this.getShareable().then(function(r){return n(),r.getSharingInformation(e,t)})},t.prototype.getObjectSharingSettings=function(e){void 0===e&&(e=!0);var t=this.addBatchDependency();return this.getShareable().then(function(n){return t(),n.getObjectSharingSettings(e)})},t.prototype.unshare=function(){var e=this.addBatchDependency();return this.getShareable().then(function(t){return e(),t.unshareObject()})},t.prototype.deleteSharingLinkByKind=function(e){var t=this.addBatchDependency();return this.getShareable().then(function(n){return t(),n.deleteLinkByKind(e)})},t.prototype.unshareLink=function(e,t){var n=this.addBatchDependency();return this.getShareable().then(function(r){return n(),r.unshareLink(e,t)})},t.prototype.getShareable=function(){var e=this;return this.clone(me,"listItemAllFields",!1).select("odata.id").get().then(function(t){var n=new he(u(t));return e.hasBatch&&(n=n.inBatch(e.batch)),n})},t}(R),me=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.shareWith=function(e,t,n,r){void 0===t&&(t=re.View),void 0===n&&(n=!1);var o=this.addBatchDependency();return this.getShareable().then(function(i){return o(),i.shareWith(e,t,n,!1,r)})},t}(ge),be=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.shareWith=function(e,t,n,r,o){void 0===t&&(t=re.View),void 0===n&&(n=!1),void 0===r&&(r=!1);var i=this.addBatchDependency();return this.getShareable().then(function(s){return i(),s.shareWith(e,t,n,r,o)})},t}(ge),ve=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),Object.defineProperty(t.prototype,"webparts",{get:function(){return new Se(this,"webparts")},enumerable:!0,configurable:!0}),t.prototype.export=function(e){return this.clone(t,"ExportWebPart").postCore({body:Object(m.n)({webPartId:e})})},t.prototype.import=function(e){return this.clone(t,"ImportWebPart").postCore({body:Object(m.n)({webPartXml:e})})},t}(x),Se=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.getById=function(e){return new Te(this,"getbyid('"+e+"')")},t.prototype.getByControlId=function(e){return new Te(this,"getByControlId('"+e+"')")},t}(j),Te=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),Object.defineProperty(t.prototype,"webpart",{get:function(){return new Oe(this)},enumerable:!0,configurable:!0}),t.prototype.saveChanges=function(){return this.clone(t,"SaveWebPartChanges").postCore()},t.prototype.moveTo=function(e,n){return this.clone(t,"MoveWebPartTo(zoneID='"+e+"', zoneIndex="+n+")").postCore()},t.prototype.close=function(){return this.clone(t,"CloseWebPart").postCore()},t.prototype.open=function(){return this.clone(t,"OpenWebPart").postCore()},t.prototype.delete=function(){return this.clone(t,"DeleteWebPart").postCore()},t}(R),Oe=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t=o([h("webpart")],t)}(R),we=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,t.prototype.getByName=function(e){var t=new Ie(this);return t.concat("('"+e+"')"),t},t.prototype.add=function(e){var t=this;return this.clone(n,"add('"+e+"')").postCore().then(function(n){return{data:n,folder:t.getByName(e)}})},t.prototype.addUsingPath=function(e,t){var r=this;return void 0===t&&(t=!1),this.clone(n,"addUsingPath(DecodedUrl='"+e+"',overwrite="+t+")").postCore().then(function(t){return{data:t,folder:new Ie(a(r.toUrl()),"_api/web/getFolderByServerRelativePath(decodedUrl='"+e+"')")}})};var n;return t=n=o([h("folders")],t)}(j),Ie=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.update=t._update("SP.Folder",function(e){return{data:e,folder:t}}),t}return r(t,e),Object.defineProperty(t.prototype,"contentTypeOrder",{get:function(){return new j(this,"contentTypeOrder")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"files",{get:function(){return new et(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"folders",{get:function(){return new we(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"listItemAllFields",{get:function(){return new R(this,"listItemAllFields")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"parentFolder",{get:function(){return new t(this,"parentFolder")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"properties",{get:function(){return new R(this,"properties")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"serverRelativeUrl",{get:function(){return new x(this,"serverRelativeUrl")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"uniqueContentTypeOrder",{get:function(){return new j(this,"uniqueContentTypeOrder")},enumerable:!0,configurable:!0}),t.prototype.delete=function(e){return void 0===e&&(e="*"),this.clone(t,null).postCore({headers:{"IF-Match":e,"X-HTTP-Method":"DELETE"}})},t.prototype.recycle=function(){return this.clone(t,"recycle").postCore()},t.prototype.getItem=function(){for(var e=[],t=0;t0&&r.forEach(function(e,t){return i.query.set(t,e)}),i.postCore({body:Object(m.n)(o)})},t.prototype.renderListFormData=function(e,n,r){return this.clone(t,"renderlistformdata(itemid="+e+", formid='"+n+"', mode='"+r+"')").postCore().then(function(e){return JSON.parse(Object(m.j)(e,"RenderListFormData")?e.RenderListFormData:e)})},t.prototype.reserveListItemId=function(){return this.clone(t,"reservelistitemid").postCore().then(function(e){return Object(m.j)(e,"ReserveListItemId")?e.ReserveListItemId:e})},t.prototype.getListItemEntityTypeFullName=function(){return this.clone(t,null,!1).select("ListItemEntityTypeFullName").get().then(function(e){return e.ListItemEntityTypeFullName})},t.prototype.addValidateUpdateItemUsingPath=function(e,n,r,o){return void 0===r&&(r=!1),this.clone(t,"AddValidateUpdateItemUsingPath()").postCore({body:Object(m.n)({bNewDocumentUpdate:r,checkInComment:o,formValues:e,listItemCreateInfo:{FolderPath:{DecodedUrl:n,__metadata:{type:"SP.ResourcePath"}},__metadata:{type:"SP.ListItemCreationInformationUsingPath"}}})}).then(function(e){return void 0!==e.AddValidateUpdateItemUsingPath?e.AddValidateUpdateItemUsingPath.results:e})},t.prototype.getSiteScript=function(){return i(this,void 0,void 0,function(){var e,n;return s(this,function(r){switch(r.label){case 0:return[4,this.clone(t).rootFolder.select("ServerRelativeUrl").get()];case 1:return e=r.sent(),[4,p(e.ServerRelativeUrl)];case 2:return n=r.sent(),[2,new S.a(this,"").getSiteScriptFromList(n)]}})})},t}(de),He=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,t.prototype.add=function(e){var t=this;"string"==typeof e&&(e={text:e});var r=Object(m.n)(Object(m.f)(d("Microsoft.SharePoint.Comments.comment"),e));return this.clone(n,null).postCore({body:r}).then(function(e){return Object(m.f)(t.getById(e.id),e)})},t.prototype.getById=function(e){var t=new Ke(this);return t.concat("("+e+")"),t},t.prototype.clear=function(){return this.clone(n,"DeleteAll").postCore()};var n;return t=n=o([h("comments")],t)}(j),Ke=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),Object.defineProperty(t.prototype,"replies",{get:function(){return new Ve(this)},enumerable:!0,configurable:!0}),t.prototype.like=function(){return this.clone(t,"Like").postCore()},t.prototype.unlike=function(){return this.clone(t,"Unlike").postCore()},t.prototype.delete=function(){return this.deleteCore()},t}(R),Ve=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,t.prototype.add=function(e){"string"==typeof e&&(e={text:e});var t=Object(m.n)(Object(m.f)(d("Microsoft.SharePoint.Comments.comment"),e));return this.clone(n,null).postCore({body:t}).then(function(e){return Object(m.f)(new Ke(u(e)),e)})};var n;return t=n=o([h("replies")],t)}(j),Qe=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,t.prototype.getById=function(e){var t=new ze(this);return t.concat("("+e+")"),t},t.prototype.getItemByStringId=function(e){return new ze(this.parentUrl,"getItemByStringId('"+e+"')")},t.prototype.skip=function(e,t){return void 0===t&&(t=!1),t?this.query.set("$skiptoken",encodeURIComponent("Paged=TRUE&PagedPrev=TRUE&p_ID="+e)):this.query.set("$skiptoken",encodeURIComponent("Paged=TRUE&p_ID="+e)),this},t.prototype.getPaged=function(e){return void 0===e&&(e=new v.f),this.get(new $e(this,e))},t.prototype.getAll=function(e,t){void 0===e&&(e=2e3),void 0===t&&(t="application/json;odata=nometadata"),b.a.write("Calling items.getAll should be done sparingly. Ensure this is the correct choice. If you are unsure, it is not.",2);var r=new n(this,"").top(e).configure({headers:{Accept:t}});return this.query.forEach(function(e,t){/^\$select|filter|top|expand$/i.test(t)&&r.query.set(t,e)}),new Promise(function(e,t){var n=[],o=function(r){[].push.apply(n,r.results),r.hasNext?r.getNext().then(o).catch(t):e(n)};r.getPaged().then(o).catch(t)})},t.prototype.add=function(e,t){var r=this;void 0===e&&(e={}),void 0===t&&(t=null);var o=this.addBatchDependency();return this.ensureListItemEntityTypeName(t).then(function(t){var i=Object(m.n)(Object(m.f)(d(t),e)),s=r.clone(n,"").postCore({body:i}).then(function(e){return{data:e,item:r.getById(e.Id)}});return o(),s})},t.prototype.ensureListItemEntityTypeName=function(e){return e?Promise.resolve(e):this.getParent(We).getListItemEntityTypeFullName()};var n;return t=n=o([h("items")],t)}(j),ze=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.delete=t._deleteWithETag,t}return r(t,e),Object.defineProperty(t.prototype,"attachmentFiles",{get:function(){return new Ne(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"contentType",{get:function(){return new Ce(this,"ContentType")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"comments",{get:function(){return new He(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"effectiveBasePermissions",{get:function(){return new x(this,"EffectiveBasePermissions")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"effectiveBasePermissionsForUI",{get:function(){return new x(this,"EffectiveBasePermissionsForUI")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"fieldValuesAsHTML",{get:function(){return new R(this,"FieldValuesAsHTML")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"fieldValuesAsText",{get:function(){return new R(this,"FieldValuesAsText")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"fieldValuesForEdit",{get:function(){return new R(this,"FieldValuesForEdit")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"folder",{get:function(){return new Ie(this,"folder")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"file",{get:function(){return new tt(this,"file")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"versions",{get:function(){return new Je(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"list",{get:function(){return this.getParent(We,this.parentUrl.substr(0,this.parentUrl.lastIndexOf("/")))},enumerable:!0,configurable:!0}),t.prototype.update=function(e,t,n){var r=this;return void 0===t&&(t="*"),void 0===n&&(n=null),new Promise(function(o,i){var s=r.addBatchDependency();return r.ensureListItemEntityTypeName(n).then(function(n){var i=Object(m.n)(Object(m.f)(d(n),e));return s(),r.postCore({body:i,headers:{"IF-Match":t,"X-HTTP-Method":"MERGE"}},new Ze).then(function(e){o({data:e,item:r})})}).catch(function(e){return i(e)})})},t.prototype.getLikedBy=function(){return this.clone(t,"likedBy").postCore()},t.prototype.like=function(){return this.clone(t,"like").postCore()},t.prototype.unlike=function(){return this.clone(t,"unlike").postCore()},t.prototype.recycle=function(){return this.clone(t,"recycle").postCore()},t.prototype.getWopiFrameUrl=function(e){void 0===e&&(e=0);var n=this.clone(t,"getWOPIFrameUrl(@action)");return n.query.set("@action",e),n.postCore().then(function(e){return Object(m.j)(e,"GetWOPIFrameUrl")?e.GetWOPIFrameUrl:e})},t.prototype.validateUpdateListItem=function(e,n){return void 0===n&&(n=!1),this.clone(t,"validateupdatelistitem").postCore({body:Object(m.n)({formValues:e,bNewDocumentUpdate:n})})},t.prototype.getLikedByInformation=function(){return this.clone(t,"likedByInformation").expand("likedby").getCore()},t.prototype.ensureListItemEntityTypeName=function(e){return e?Promise.resolve(e):this.list.getListItemEntityTypeFullName()},t}(ye),Je=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.getById=function(e){var t=new Xe(this);return t.concat("("+e+")"),t},t=o([h("versions")],t)}(j),Xe=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.delete=t._deleteWithETag,t}return r(t,e),t}(R),Ye=function(){function e(e,t,n,r){this.parent=e,this.nextUrl=t,this.results=n,this.innerParser=r}return Object.defineProperty(e.prototype,"hasNext",{get:function(){return"string"==typeof this.nextUrl&&this.nextUrl.length>0},enumerable:!0,configurable:!0}),e.prototype.getNext=function(){if(this.hasNext){return new Qe(this.nextUrl,null).configureFrom(this.parent).getPaged(this.innerParser)}return new Promise(function(e){return e(null)})},e}(),$e=function(e){function t(t,n){var r=e.call(this)||this;return r._parent=t,r.innerParser=n,r}return r(t,e),t.prototype.parse=function(e){var t=this;return this.innerParser.parse(e).then(function(e){return i(t,void 0,void 0,function(){var t,n;return s(this,function(r){return t=this.innerParser.rawJson,n=Object(m.j)(t,"d")&&Object(m.j)(t.d,"__next")?t.d.__next:t["odata.nextLink"],[2,new Ye(this._parent,n,e,this.innerParser)]})})})},t}(v.g),Ze=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.parse=function(e){return i(this,void 0,void 0,function(){var t=this;return s(this,function(n){return[2,new Promise(function(n,r){t.handleError(e,r)&&n({"odata.etag":e.headers.get("etag")})})]})})},t}(v.g),et=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,t.prototype.getByName=function(e){var t=new tt(this);return t.concat("('"+e+"')"),t},t.prototype.add=function(e,t,r){var o=this;return void 0===r&&(r=!0),new n(this,"add(overwrite="+r+",url='"+e+"')").postCore({body:t}).then(function(t){return{data:t,file:o.getByName(e)}})},t.prototype.addUsingPath=function(e,t,r){var o=this;void 0===r&&(r={Overwrite:!1});var i=["AddUsingPath(decodedurl='"+e+"'"];return r&&(r.Overwrite&&i.push(",Overwrite=true"),r.AutoCheckoutOnInvalidData&&i.push(",AutoCheckoutOnInvalidData=true"),Object(m.r)(r.XorHash)||i.push(",XorHash="+r.XorHash)),i.push(")"),new n(this,i.join("")).postCore({body:t}).then(function(t){return{data:t,file:o.getByName(e)}})},t.prototype.addChunked=function(e,t,r,o,i){var s=this;return void 0===o&&(o=!0),void 0===i&&(i=10485760),this.clone(n,"add(overwrite = "+o+", url = '"+e+"')",!1).postCore().then(function(){return s.getByName(e)}).then(function(e){return e.setContentChunked(t,r,i)})},t.prototype.addTemplateFile=function(e,t){var r=this;return this.clone(n,"addTemplateFile(urloffile = '"+e+"', templatefiletype = "+t+")",!1).postCore().then(function(t){return{data:t,file:r.getByName(e)}})};var n;return t=n=o([h("files")],t)}(j),tt=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),Object.defineProperty(t.prototype,"listItemAllFields",{get:function(){return new R(this,"listItemAllFields")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"versions",{get:function(){return new nt(this)},enumerable:!0,configurable:!0}),t.prototype.approve=function(e){return void 0===e&&(e=""),this.clone(t,"approve(comment = '"+e+"')").postCore()},t.prototype.cancelUpload=function(e){return this.clone(t,"cancelUpload(uploadId = guid'"+e+"')",!1).postCore()},t.prototype.checkin=function(e,n){if(void 0===e&&(e=""),void 0===n&&(n=pe.Major),e.length>1023)throw Error("The maximum comment length is 1023 characters.");return this.clone(t,"checkin(comment = '"+e+"', checkintype = "+n+")").postCore()},t.prototype.checkout=function(){return this.clone(t,"checkout").postCore()},t.prototype.copyTo=function(e,n){return void 0===n&&(n=!0),this.clone(t,"copyTo(strnewurl = '"+e+"', boverwrite = "+n+")").postCore()},t.prototype.delete=function(e){return void 0===e&&(e="*"),this.clone(t,null).postCore({headers:{"IF-Match":e,"X-HTTP-Method":"DELETE"}})},t.prototype.deny=function(e){if(void 0===e&&(e=""),e.length>1023)throw Error("The maximum comment length is 1023 characters.");return this.clone(t,"deny(comment = '"+e+"')").postCore()},t.prototype.getLimitedWebPartManager=function(e){return void 0===e&&(e=ot.Shared),new ve(this,"getLimitedWebPartManager(scope = "+e+")")},t.prototype.moveTo=function(e,n){return void 0===n&&(n=it.Overwrite),this.clone(t,"moveTo(newurl = '"+e+"', flags = "+n+")").postCore()},t.prototype.publish=function(e){if(void 0===e&&(e=""),e.length>1023)throw Error("The maximum comment length is 1023 characters.");return this.clone(t,"publish(comment = '"+e+"')").postCore()},t.prototype.recycle=function(){return this.clone(t,"recycle").postCore()},t.prototype.undoCheckout=function(){return this.clone(t,"undoCheckout").postCore()},t.prototype.unpublish=function(e){if(void 0===e&&(e=""),e.length>1023)throw Error("The maximum comment length is 1023 characters.");return this.clone(t,"unpublish(comment = '"+e+"')").postCore()},t.prototype.getText=function(){return this.clone(t,"$value",!1).get(new v.i,{headers:{binaryStringResponseBody:"true"}})},t.prototype.getBlob=function(){return this.clone(t,"$value",!1).get(new v.a,{headers:{binaryStringResponseBody:"true"}})},t.prototype.getBuffer=function(){return this.clone(t,"$value",!1).get(new v.b,{headers:{binaryStringResponseBody:"true"}})},t.prototype.getJSON=function(){return this.clone(t,"$value",!1).get(new v.d,{headers:{binaryStringResponseBody:"true"}})},t.prototype.setContent=function(e){var n=this;return this.clone(t,"$value",!1).postCore({body:e,headers:{"X-HTTP-Method":"PUT"}}).then(function(e){return new t(n)})},t.prototype.getItem=function(){for(var e=this,t=[],n=0;n0?"tenantappcatalog":"sitecollectionappcatalog";return new t(a(this.toUrl()),"_api/web/"+o+"/add(overwrite="+r+",url='"+e+"')").postCore({body:n}).then(function(e){return{data:e,file:new tt(u(e))}})},t}(j),ct=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.deploy=function(e){return void 0===e&&(e=!1),this.clone(t,"Deploy("+e+")").postCore()},t.prototype.retract=function(){return this.clone(t,"Retract").postCore()},t.prototype.install=function(){return this.clone(t,"Install").postCore()},t.prototype.uninstall=function(){return this.clone(t,"Uninstall").postCore()},t.prototype.upgrade=function(){return this.clone(t,"Upgrade").postCore()},t.prototype.remove=function(){return this.clone(t,"Remove").postCore()},t}(R),lt=function(e){function t(t){var n=e.call(this)||this;return n.baseUrl=t,n}return r(t,e),t.ParseResponse=function(e){return new Promise(function(t,n){for(var r,o,i=[],s=new RegExp("^HTTP/[0-9.]+ +([0-9]+) +(.*)","i"),a=e.split("\n"),u="batch",c=0;c0&&(o.push("--changeset_"+i+"--\n\n"),i=""),o.push("--batch_"+e.batchId+"\n")):(i.length<1&&(i=Object(m.h)(),o.push("--batch_"+e.batchId+"\n"),o.push('Content-Type: multipart/mixed; boundary="changeset_'+i+'"\n\n')),o.push("--changeset_"+i+"\n")),o.push("Content-Type: application/http\n"),o.push("Content-Transfer-Encoding: binary\n\n");var u=new Headers,c=Object(m.m)(a.url)?a.url:Object(m.d)(r,a.url);if(b.a.write("["+e.batchId+"] ("+(new Date).getTime()+") Adding request "+a.method+" "+c+" to batch.",0),"GET"!==a.method){var l=a.method,p=a.options.headers;Object(m.j)(a,"options")&&Object(m.j)(a.options,"headers")&&void 0!==p["X-HTTP-Method"]&&(l=p["X-HTTP-Method"],delete p["X-HTTP-Method"]),o.push(l+" "+c+" HTTP/1.1\n"),u.set("Content-Type","application/json;odata=verbose;charset=utf-8")}else o.push(a.method+" "+c+" HTTP/1.1\n");Object(m.o)(u,I.headers),a.options&&Object(m.o)(u,a.options.headers),u.has("Accept")||u.append("Accept","application/json"),u.has("Content-Type")||u.append("Content-Type","application/json;odata=verbose;charset=utf-8"),u.has("X-ClientService-ClientTag")||u.append("X-ClientService-ClientTag","PnPCoreJS:@pnp-1.3.11"),u.forEach(function(e,t){o.push(t+": "+e+"\n")}),o.push("\n"),a.options.body&&o.push(a.options.body+"\n\n")}i.length>0&&(o.push("--changeset_"+i+"--\n\n"),i=""),o.push("--batch_"+e.batchId+"--\n");var d={body:o.join(""),headers:{"Content-Type":"multipart/mixed; boundary=batch_"+e.batchId},method:"POST"};return b.a.write("["+e.batchId+"] ("+(new Date).getTime()+") Sending batch request.",1),n.fetch(Object(m.d)(r,"/_api/$batch"),d).then(function(e){return e.text()}).then(t.ParseResponse).then(function(t){if(t.length!==e.requests.length)throw Error("Could not properly parse responses to match requests in batch.");return b.a.write("["+e.batchId+"] ("+(new Date).getTime()+") Resolving batched requests.",1),t.reduce(function(t,n,r){var o=e.requests[r];return b.a.write("["+o.id+"] ("+(new Date).getTime()+") Resolving request in batch "+e.batchId+".",1),t.then(function(e){return o.parser.parse(n).then(o.resolve).catch(o.reject)})},Promise.resolve())})})},t}(v.e),pt=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,t.prototype.add=function(e,t){var r=this;return void 0===t&&(t=!1),this.clone(n,"add").postCore({body:Object(m.n)({featdefScope:0,featureId:e,force:t})}).then(function(t){return{data:t,feature:r.getById(e)}})},t.prototype.getById=function(e){var t=new dt(this);return t.concat("('"+e+"')"),t},t.prototype.remove=function(e,t){return void 0===t&&(t=!1),this.clone(n,"remove").postCore({body:Object(m.n)({featureId:e,force:t})})};var n;return t=n=o([h("features")],t)}(j),dt=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.deactivate=function(e){var n=this;void 0===e&&(e=!1);var r=this.addBatchDependency();return new t(this).select("DefinitionId").get().then(function(t){var o=n.getParent(pt,n.parentUrl,"",n.batch).remove(t.DefinitionId,e);return r(),o})},t}(R),ht=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,Object.defineProperty(t.prototype,"rootWeb",{get:function(){return new Pt(this,"rootweb")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"features",{get:function(){return new pt(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"userCustomActions",{get:function(){return new Be(this)},enumerable:!0,configurable:!0}),t.prototype.getRootWeb=function(){return this.rootWeb.select("Url").get().then(function(e){return new Pt(e.Url)})},t.prototype.getContextInfo=function(){return new n(this.parentUrl,"_api/contextinfo").postCore().then(function(e){if(Object(m.j)(e,"GetContextWebInformation")){var t=e.GetContextWebInformation;return t.SupportedSchemaVersions=t.SupportedSchemaVersions.results,t}return e})},t.prototype.getDocumentLibraries=function(e){var t=new x("","_api/sp.web.getdocumentlibraries(@v)");return t.query.set("@v","'"+e+"'"),t.get().then(function(e){return Object(m.j)(e,"GetDocumentLibraries")?e.GetDocumentLibraries:e})},t.prototype.getWebUrlFromPageUrl=function(e){var t=new x("","_api/sp.web.getweburlfrompageurl(@v)");return t.query.set("@v","'"+e+"'"),t.get().then(function(e){return Object(m.j)(e,"GetWebUrlFromPageUrl")?e.GetWebUrlFromPageUrl:e})},t.prototype.getChanges=function(e){var t=Object(m.n)({query:Object(m.f)({__metadata:{type:"SP.ChangeQuery"}},e)});return this.clone(n,"getchanges").postCore({body:t})},t.prototype.delete=function(){return i(this,void 0,void 0,function(){var e,t;return s(this,function(r){switch(r.label){case 0:return[4,this.clone(n,"").select("Id").get()];case 1:return e=r.sent(),t=new n(this.parentUrl,"_api/SPSiteManager/Delete"),[4,t.postCore({body:Object(m.n)({siteId:e.Id})})];case 2:return r.sent(),[2]}})})},t.prototype.createBatch=function(){return new lt(this.parentUrl)},t.prototype.openWebById=function(e){return this.clone(n,"openWebById('"+e+"')").postCore().then(function(e){return{data:e,web:Pt.fromUrl(e["odata.id"]||e.__metadata.uri)}})},t.prototype.joinHubSite=function(e){return this.clone(n,"joinHubSite('"+e+"')").postCore()},t.prototype.registerHubSite=function(){return this.clone(n,"registerHubSite").postCore()},t.prototype.unRegisterHubSite=function(){return this.clone(n,"unRegisterHubSite").postCore()},t.prototype.createCommunicationSite=function(e,t,n,r,o,a,u,c,l){var p=this;void 0===t&&(t=1033),void 0===n&&(n=!1),void 0===o&&(o=""),void 0===a&&(a=""),void 0===u&&(u="00000000-0000-0000-0000-000000000000"),void 0===c&&(c="00000000-0000-0000-0000-000000000000");var d={Classification:a,Description:o,HubSiteId:c,Lcid:t,Owner:l,ShareByEmailEnabled:n,SiteDesignId:u,Title:e,Url:r,WebTemplate:"SITEPAGEPUBLISHING#0",WebTemplateExtensionId:"00000000-0000-0000-0000-000000000000"},h=Object(m.n)({request:Object(m.f)({__metadata:{type:"Microsoft.SharePoint.Portal.SPSiteCreationRequest"}},d)});return this.getRootWeb().then(function(e){return i(p,void 0,void 0,function(){var t,n;return s(this,function(r){return t=new E,n=e.parentUrl+"/_api/SPSiteManager/Create",[2,t.post(n,{body:h,headers:{Accept:"application/json;odata=verbose","Content-Type":"application/json;odata=verbose;charset=utf-8"}}).then(function(e){return e.json()}).then(function(e){if(Object(m.j)(e,"error"))throw e;return Object(m.j)(e,"d")&&Object(m.j)(e.d,"Create")?e.d.Create:e})]})})})},t.prototype.createModernTeamSite=function(e,t,n,r,o,a,u,c,l){var p=this;void 0===n&&(n=!0),void 0===r&&(r=1033),void 0===o&&(o=""),void 0===a&&(a=""),void 0===c&&(c="00000000-0000-0000-0000-000000000000");var d={alias:t,displayName:e,isPublic:n,optionalParams:{Classification:a,CreationOptions:{results:["SPSiteLanguage:"+r,"HubSiteId:"+c]},Description:o,Owners:{results:u||[]}}};return l&&d.optionalParams.CreationOptions.results.push("implicit_formula_292aa8a00786498a87a5ca52d9f4214a_"+l),this.getRootWeb().then(function(e){return i(p,void 0,void 0,function(){var t,n;return s(this,function(r){return t=new E,n=e.parentUrl+"/_api/GroupSiteManager/CreateGroupEx",[2,t.post(n,{body:Object(m.n)(d),headers:{Accept:"application/json;odata=verbose","Content-Type":"application/json;odata=verbose;charset=utf-8"}}).then(function(e){return e.json()})]})})})};var n;return t=n=o([h("_api/site")],t)}(R),ft=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.getById=function(e){var t=new yt(this);return t.concat("("+e+")"),t},t.prototype.add=function(e,n,r){var o=this;void 0===r&&(r=!0);var i=Object(m.n)(Object(m.f)(d("SP.NavigationNode"),{IsVisible:r,Title:e,Url:n}));return this.clone(t,null).postCore({body:i}).then(function(e){return{data:e,node:o.getById(e.Id)}})},t.prototype.moveAfter=function(e,n){var r=Object(m.n)({nodeId:e,previousNodeId:n});return this.clone(t,"MoveAfter").postCore({body:r})},t}(j),yt=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),Object.defineProperty(t.prototype,"children",{get:function(){return new ft(this,"Children")},enumerable:!0,configurable:!0}),t.prototype.delete=function(){return e.prototype.deleteCore.call(this)},t.prototype.update=function(e){var t=this,n=Object(m.n)(Object(m.f)({__metadata:{type:"SP.NavigationNode"}},e));return this.postCore({body:n,headers:{"X-HTTP-Method":"MERGE"}}).then(function(e){return{data:e,node:t}})},t}(R),gt=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),Object.defineProperty(t.prototype,"quicklaunch",{get:function(){return new ft(this,"quicklaunch")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"topNavigationBar",{get:function(){return new ft(this,"topnavigationbar")},enumerable:!0,configurable:!0}),t=o([h("navigation")],t)}(x),mt=function(e){function t(t,n){return void 0===n&&(n=null),e.call(this,t,n)||this}return r(t,e),t.prototype.getMenuState=function(e,n,r,o){return void 0===e&&(e=null),void 0===n&&(n=10),void 0===r&&(r=null),void 0===o&&(o=null),new t(this,"_api/navigation/MenuState").postCore({body:Object(m.n)({customProperties:o,depth:n,mapProviderName:r,menuNodeKey:e})})},t.prototype.getMenuNodeKey=function(e,n){return void 0===n&&(n=null),new t(this,"_api/navigation/MenuNodeKey").postCore({body:Object(m.n)({currentUrl:e,mapProviderName:n})})},t}(x),bt=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,t.FromUrl=function(e){if(null===e)return new n("");var t=e.indexOf("_api/");return new n(t>-1?e.substr(0,t):e)},t.prototype.getRelatedItems=function(e,t){var r=this.clone(n,null);return r.concat(".GetRelatedItems"),r.postCore({body:Object(m.n)({SourceItemID:t,SourceListName:e})})},t.prototype.getPageOneRelatedItems=function(e,t){var r=this.clone(n,null);return r.concat(".GetPageOneRelatedItems"),r.postCore({body:Object(m.n)({SourceItemID:t,SourceListName:e})})},t.prototype.addSingleLink=function(e,t,r,o,i,s,a){void 0===a&&(a=!1);var u=this.clone(n,null);return u.concat(".AddSingleLink"),u.postCore({body:Object(m.n)({SourceItemID:t,SourceListName:e,SourceWebUrl:r,TargetItemID:i,TargetListName:o,TargetWebUrl:s,TryAddReverseLink:a})})},t.prototype.addSingleLinkToUrl=function(e,t,r,o){void 0===o&&(o=!1);var i=this.clone(n,null);return i.concat(".AddSingleLinkToUrl"),i.postCore({body:Object(m.n)({SourceItemID:t,SourceListName:e,TargetItemUrl:r,TryAddReverseLink:o})})},t.prototype.addSingleLinkFromUrl=function(e,t,r,o){void 0===o&&(o=!1);var i=this.clone(n,null);return i.concat(".AddSingleLinkFromUrl"),i.postCore({body:Object(m.n)({SourceItemUrl:e,TargetItemID:r,TargetListName:t,TryAddReverseLink:o})})},t.prototype.deleteSingleLink=function(e,t,r,o,i,s,a){void 0===a&&(a=!1);var u=this.clone(n,null);return u.concat(".DeleteSingleLink"),u.postCore({body:Object(m.n)({SourceItemID:t,SourceListName:e,SourceWebUrl:r,TargetItemID:i,TargetListName:o,TargetWebUrl:s,TryDeleteReverseLink:a})})};var n;return t=n=o([h("_api/SP.RelatedItemManager")],t)}(x),vt=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),Object.defineProperty(t.prototype,"installedLanguages",{get:function(){return new St(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"globalInstalledLanguages",{get:function(){return new St(this,"globalinstalledlanguages")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"timeZone",{get:function(){return new Tt(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"timeZones",{get:function(){return new Ot(this)},enumerable:!0,configurable:!0}),t=o([h("regionalsettings")],t)}(R),St=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t=o([h("installedlanguages")],t)}(j),Tt=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,t.prototype.utcToLocalTime=function(e){var t;return t="string"==typeof e?e:e.toISOString(),this.clone(n,"utctolocaltime('"+t+"')").postCore().then(function(e){return Object(m.j)(e,"UTCToLocalTime")?e.UTCToLocalTime:e})},t.prototype.localTimeToUTC=function(e){var t;return t="string"==typeof e?e:Object(m.e)(e,"minute",-1*e.getTimezoneOffset()).toISOString(),this.clone(n,"localtimetoutc('"+t+"')").postCore().then(function(e){return Object(m.j)(e,"LocalTimeToUTC")?e.LocalTimeToUTC:e})};var n;return t=n=o([h("timezone")],t)}(R),Ot=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,t.prototype.getById=function(e){return this.clone(n,"GetById("+e+")").postCore({},c(Tt))};var n;return t=n=o([h("timezones")],t)}(j),wt=function(e){function t(n,r){return e.call(this,t.getBaseUrl(n),"_api/Microsoft.Sharepoint.Utilities.WebTemplateExtensions.SiteScriptUtility."+r)||this}return r(t,e),t.getBaseUrl=function(e){if("string"==typeof e)return e;var t=e,n=t.toUrl(),r=n.indexOf("_api/");return r<0?n:n.substr(0,r)},t.prototype.execute=function(e){return this.postCore({body:JSON.stringify(e),headers:{"Content-Type":"application/json;charset=utf-8"}})},t.prototype.createSiteDesign=function(e){return i(this,void 0,void 0,function(){return s(this,function(n){switch(n.label){case 0:return[4,this.clone(t,"CreateSiteDesign").execute({info:e})];case 1:return[2,n.sent()]}})})},t.prototype.applySiteDesign=function(e,n){return i(this,void 0,void 0,function(){return s(this,function(r){switch(r.label){case 0:return[4,this.clone(t,"ApplySiteDesign").execute({siteDesignId:e,webUrl:n})];case 1:return[2,r.sent()]}})})},t.prototype.getSiteDesigns=function(){return i(this,void 0,void 0,function(){return s(this,function(e){switch(e.label){case 0:return[4,this.clone(t,"GetSiteDesigns").execute({})];case 1:return[2,e.sent()]}})})},t.prototype.getSiteDesignMetadata=function(e){return i(this,void 0,void 0,function(){return s(this,function(n){switch(n.label){case 0:return[4,this.clone(t,"GetSiteDesignMetadata").execute({id:e})];case 1:return[2,n.sent()]}})})},t.prototype.updateSiteDesign=function(e){return i(this,void 0,void 0,function(){return s(this,function(n){switch(n.label){case 0:return[4,this.clone(t,"UpdateSiteDesign").execute({updateInfo:e})];case 1:return[2,n.sent()]}})})},t.prototype.deleteSiteDesign=function(e){return i(this,void 0,void 0,function(){return s(this,function(n){switch(n.label){case 0:return[4,this.clone(t,"DeleteSiteDesign").execute({id:e})];case 1:return[2,n.sent()]}})})},t.prototype.getSiteDesignRights=function(e){return i(this,void 0,void 0,function(){return s(this,function(n){switch(n.label){case 0:return[4,this.clone(t,"GetSiteDesignRights").execute({id:e})];case 1:return[2,n.sent()]}})})},t.prototype.grantSiteDesignRights=function(e,n,r){return void 0===r&&(r=1),i(this,void 0,void 0,function(){return s(this,function(o){switch(o.label){case 0:return[4,this.clone(t,"GrantSiteDesignRights").execute({grantedRights:r.toString(),id:e,principalNames:n})];case 1:return[2,o.sent()]}})})},t.prototype.revokeSiteDesignRights=function(e,n){return i(this,void 0,void 0,function(){return s(this,function(r){switch(r.label){case 0:return[4,this.clone(t,"RevokeSiteDesignRights").execute({id:e,principalNames:n})];case 1:return[2,r.sent()]}})})},t.prototype.addSiteDesignTask=function(e,n){return i(this,void 0,void 0,function(){return s(this,function(r){switch(r.label){case 0:return[4,this.clone(t,"AddSiteDesignTask").execute({webUrl:e,siteDesignId:n})];case 1:return[2,r.sent()]}})})},t.prototype.addSiteDesignTaskToCurrentWeb=function(e){return i(this,void 0,void 0,function(){return s(this,function(n){switch(n.label){case 0:return[4,this.clone(t,"AddSiteDesignTaskToCurrentWeb").execute({siteDesignId:e})];case 1:return[2,n.sent()]}})})},t.prototype.getSiteDesignTask=function(e){return i(this,void 0,void 0,function(){var n;return s(this,function(r){switch(r.label){case 0:return[4,this.clone(t,"GetSiteDesignTask").execute({taskId:e})];case 1:return n=r.sent(),[2,Object(m.j)(n,"ID")?n:null]}})})},t.prototype.getSiteDesignRun=function(e,n){return i(this,void 0,void 0,function(){return s(this,function(r){switch(r.label){case 0:return[4,this.clone(t,"GetSiteDesignRun").execute({webUrl:e,siteDesignId:n})];case 1:return[2,r.sent()]}})})},t.prototype.getSiteDesignRunStatus=function(e,n){return i(this,void 0,void 0,function(){return s(this,function(r){switch(r.label){case 0:return[4,this.clone(t,"GetSiteDesignRunStatus").execute({webUrl:e,runId:n})];case 1:return[2,r.sent()]}})})},t}(x),It=function(e){function t(n,r){return e.call(this,t.getBaseUrl(n),"_api/Microsoft.Sharepoint.Utilities.WebTemplateExtensions.SiteScriptUtility."+r)||this}return r(t,e),t.getBaseUrl=function(e){if("string"==typeof e)return e;var t=e,n=t.toUrl(),r=n.indexOf("_api/");return r<0?n:n.substr(0,r)},t.prototype.execute=function(e){return this.postCore({body:JSON.stringify(e)})},t.prototype.getSiteScripts=function(){return this.clone(t,"GetSiteScripts",!0).execute({})},t.prototype.createSiteScript=function(e,n,r){return i(this,void 0,void 0,function(){return s(this,function(o){switch(o.label){case 0:return[4,this.clone(t,"CreateSiteScript(Title=@title,Description=@desc)?@title='"+encodeURIComponent(e)+"'&@desc='"+encodeURIComponent(n)+"'").execute(r)];case 1:return[2,o.sent()]}})})},t.prototype.getSiteScriptMetadata=function(e){return i(this,void 0,void 0,function(){return s(this,function(n){switch(n.label){case 0:return[4,this.clone(t,"GetSiteScriptMetadata").execute({id:e})];case 1:return[2,n.sent()]}})})},t.prototype.deleteSiteScript=function(e){return i(this,void 0,void 0,function(){return s(this,function(n){switch(n.label){case 0:return[4,this.clone(t,"DeleteSiteScript").execute({id:e})];case 1:return n.sent(),[2]}})})},t.prototype.updateSiteScript=function(e,n){return i(this,void 0,void 0,function(){return s(this,function(r){switch(r.label){case 0:return n&&(e.Content=JSON.stringify(n)),[4,this.clone(t,"UpdateSiteScript").execute({updateInfo:e})];case 1:return[2,r.sent()]}})})},t.prototype.getSiteScriptFromList=function(e){return i(this,void 0,void 0,function(){return s(this,function(n){switch(n.label){case 0:return[4,this.clone(t,"GetSiteScriptFromList").execute({listUrl:e})];case 1:return[2,n.sent()]}})})},t.prototype.getSiteScriptFromWeb=function(e,n){return i(this,void 0,void 0,function(){return s(this,function(r){switch(r.label){case 0:return[4,this.clone(t,"getSiteScriptFromWeb").execute({webUrl:e,info:n})];case 1:return[2,r.sent()]}})})},t}(x),_t=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,t.prototype.add=function(e,t,r,o,i,s){void 0===r&&(r=""),void 0===o&&(o="STS"),void 0===i&&(i=1033),void 0===s&&(s=!0);var a={Description:r,Language:i,Title:e,Url:t,UseSamePermissionsAsParentSite:s,WebTemplate:o},c=Object(m.n)({parameters:Object(m.f)({__metadata:{type:"SP.WebCreationInformation"}},a)});return this.clone(n,"add").postCore({body:c}).then(function(e){return{data:e,web:new Pt(u(e).replace(/_api\/web\/?/i,""))}})};var n;return t=n=o([h("webs")],t)}(j),Ct=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t=o([h("webinfos")],t)}(j),Pt=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,t.fromUrl=function(e,t){return new n(a(e),t)},Object.defineProperty(t.prototype,"webs",{get:function(){return new _t(this)},enumerable:!0,configurable:!0}),t.prototype.getParentWeb=function(){var e=this;return this.select("ParentWeb/Id").expand("ParentWeb").get().then(function(t){var n=t.ParentWeb;return n?new ht(e.parentUrl).openWebById(n.Id):null})},t.prototype.getSubwebsFilteredForCurrentUser=function(e,t){return void 0===e&&(e=-1),void 0===t&&(t=-1),this.clone(_t,"getSubwebsFilteredForCurrentUser(nWebTemplateFilter="+e+",nConfigurationFilter="+t+")")},Object.defineProperty(t.prototype,"allProperties",{get:function(){return this.clone(R,"allproperties")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"webinfos",{get:function(){return new Ct(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"contentTypes",{get:function(){return new _e(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"lists",{get:function(){return new qe(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"fields",{get:function(){return new Ue(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"features",{get:function(){return new pt(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"availablefields",{get:function(){return new Ue(this,"availablefields")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"navigation",{get:function(){return new gt(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"siteUsers",{get:function(){return new A(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"siteGroups",{get:function(){return new F(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"siteUserInfoList",{get:function(){return new We(this,"siteuserinfolist")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"regionalSettings",{get:function(){return new vt(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"currentUser",{get:function(){return new L(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"folders",{get:function(){return new we(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"userCustomActions",{get:function(){return new Be(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"roleDefinitions",{get:function(){return new q(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"relatedItems",{get:function(){return bt.FromUrl(this.toUrl())},enumerable:!0,configurable:!0}),t.prototype.createBatch=function(){return new lt(this.parentUrl)},Object.defineProperty(t.prototype,"rootFolder",{get:function(){return new Ie(this,"rootFolder")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"associatedOwnerGroup",{get:function(){return new M(this,"associatedownergroup")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"associatedMemberGroup",{get:function(){return new M(this,"associatedmembergroup")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"associatedVisitorGroup",{get:function(){return new M(this,"associatedvisitorgroup")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"defaultDocumentLibrary",{get:function(){return new We(this,"DefaultDocumentLibrary")},enumerable:!0,configurable:!0}),t.prototype.getFolderById=function(e){return new Ie(this,"getFolderById('"+e+"')")},t.prototype.getFolderByServerRelativeUrl=function(e){return new Ie(this,"getFolderByServerRelativeUrl('"+e+"')")},t.prototype.getFolderByServerRelativePath=function(e){return new Ie(this,"getFolderByServerRelativePath(decodedUrl='"+e+"')")},t.prototype.getFileById=function(e){return new tt(this,"getFileById('"+e+"')")},t.prototype.getFileByServerRelativeUrl=function(e){return new tt(this,"getFileByServerRelativeUrl('"+e+"')")},t.prototype.getFileByServerRelativePath=function(e){return new tt(this,"getFileByServerRelativePath(decodedUrl='"+e+"')")},t.prototype.getList=function(e){return new We(this,"getList('"+e+"')")},t.prototype.update=function(e){var t=this,n=Object(m.n)(Object(m.f)({__metadata:{type:"SP.Web"}},e));return this.postCore({body:n,headers:{"X-HTTP-Method":"MERGE"}}).then(function(e){return{data:e,web:t}})},t.prototype.delete=function(){return e.prototype.deleteCore.call(this)},t.prototype.applyTheme=function(e,t,r,o){var i=Object(m.n)({backgroundImageUrl:r,colorPaletteUrl:e,fontSchemeUrl:t,shareGenerated:o});return this.clone(n,"applytheme").postCore({body:i})},t.prototype.applyWebTemplate=function(e){var t=this.clone(n,"applywebtemplate");return t.concat("(@t)"),t.query.set("@t",e),t.postCore()},t.prototype.ensureUser=function(e){var t=Object(m.n)({logonName:e});return this.clone(n,"ensureuser").postCore({body:t}).then(function(e){return{data:e,user:new k(u(e))}})},t.prototype.availableWebTemplates=function(e,t){return void 0===e&&(e=1033),void 0===t&&(t=!0),new j(this,"getavailablewebtemplates(lcid="+e+", doincludecrosslanguage="+t+")")},t.prototype.getCatalog=function(e){return this.clone(n,"getcatalog("+e+")").select("Id").get().then(function(e){return new We(u(e))})},t.prototype.getChanges=function(e){var t=Object(m.n)({query:Object(m.f)({__metadata:{type:"SP.ChangeQuery"}},e)});return this.clone(n,"getchanges").postCore({body:t})},Object.defineProperty(t.prototype,"customListTemplate",{get:function(){return new j(this,"getcustomlisttemplates")},enumerable:!0,configurable:!0}),t.prototype.getUserById=function(e){return new k(this,"getUserById("+e+")")},t.prototype.mapToIcon=function(e,t,r){return void 0===t&&(t=0),void 0===r&&(r=""),this.clone(n,"maptoicon(filename='"+e+"', progid='"+r+"', size="+t+")").get()},t.prototype.getStorageEntity=function(e){return this.clone(n,"getStorageEntity('"+e+"')").get()},t.prototype.setStorageEntity=function(e,t,r,o){return void 0===r&&(r=""),void 0===o&&(o=""),this.clone(n,"setStorageEntity").postCore({body:Object(m.n)({comments:o,description:r,key:e,value:t})})},t.prototype.removeStorageEntity=function(e){return this.clone(n,"removeStorageEntity('"+e+"')").postCore()},t.prototype.getAppCatalog=function(e){return new ut(e||this)},t.prototype.getSiteCollectionAppCatalog=function(e){return new ut(e||this,"_api/web/sitecollectionappcatalog/AvailableApps")},t.prototype.getClientSideWebParts=function(){return this.clone(j,"GetClientSideWebParts").get()},t.prototype.addClientSidePage=function(e,t){return void 0===t&&(t=e.replace(/\.[^\/.]+$/,"")),Nt.create(this,e,t)},t.prototype.addClientSidePageByPath=function(e,t){return void 0===t&&(t=e.replace(/\.[^\/.]+$/,"")),Nt.create(this,e,t)},t.prototype.createDefaultAssociatedGroups=function(e,t,r){var o=this.clone(n,"createDefaultAssociatedGroups(userLogin=@u,userLogin2=@v,groupNameSeed=@s)");return o.query.set("@u","'"+encodeURIComponent(e||"")+"'"),o.query.set("@v","'"+encodeURIComponent(t||"")+"'"),o.query.set("@s","'"+encodeURIComponent(r||"")+"'"),o.postCore()},t.prototype.hubSiteData=function(e){return void 0===e&&(e=!1),i(this,void 0,void 0,function(){return s(this,function(t){return[2,this.clone(n,"hubSiteData("+e+")").get().then(function(e){return JSON.parse(e)})]})})},t.prototype.syncHubSiteTheme=function(){return this.clone(n,"syncHubSiteTheme").postCore()},t.prototype.getSiteDesignRuns=function(e){return new wt(this,"").getSiteDesignRun(void 0,e)},t.prototype.getSiteScript=function(e){return new It(this,"").getSiteScriptFromWeb(void 0,e)},t.prototype.addSiteDesignTask=function(e){return new wt(this,"").addSiteDesignTaskToCurrentWeb(e)},t.prototype.getSiteDesignRunStatus=function(e){return new wt(this,"").getSiteDesignRunStatus(void 0,e)};var n;return t=n=o([h("_api/web")],t)}(fe);!function(e){e[e.NotPromoted=0]="NotPromoted",e[e.PromoteOnPublish=1]="PromoteOnPublish",e[e.Promoted=2]="Promoted"}(at||(at={}));var Et,Nt=function(e){function t(n,r,o,i,s,u){void 0===i&&(i=!1),void 0===s&&(s=[]),void 0===u&&(u=!1);var c=e.call(this,n,r)||this;return c.json=o,c.sections=s,c.commentsDisabled=u,c._bannerImageDirty=!1,"string"==typeof n?(c._parentUrl="",c._url=Object(m.d)(a(n),r)):c.extend(t.initFrom(n,null),r),c._pageSettings={controlType:0,pageSettingsSlice:{isDefaultDescription:!0,isDefaultThumbnail:!0}},c._layoutPart=t.getDefaultLayoutPart(),void 0===o||i||c.fromJSON(o),c}return r(t,e),t.create=function(e,n,r,o,a){return void 0===o&&(o="Article"),void 0===a&&(a=0),i(this,void 0,void 0,function(){var i,u;return s(this,function(s){switch(s.label){case 0:return n=n.replace(/\.aspx$/i,""),[4,t.initFrom(e,"_api/sitepages/pages").postCore({body:Object(m.n)(Object.assign(d("SP.Publishing.SitePage"),{PageLayoutType:o,PromotedState:a}))})];case 1:return i=s.sent(),u=new t(e,"",i),u.title=n,[4,u.save(!1)];case 2:return s.sent(),u.title=r,[2,u]}})})},t.fromFile=function(e){return e.getItem().then(function(n){return new t(a(e.toUrl()),"",{Id:n.Id},!0).configureFrom(e).load()})},t.getDefaultLayoutPart=function(){return{dataVersion:"1.4",description:"Title Region Description",id:"cbe7b0a9-3504-44dd-a3a3-0e5cacd07788",instanceId:"cbe7b0a9-3504-44dd-a3a3-0e5cacd07788",properties:{authors:[],layoutType:"FullWidthImage",showPublishDate:!1,showTopicHeader:!1,textAlignment:"Left",title:"",topicHeader:""},serverProcessedContent:{htmlStrings:{},searchablePlainTexts:{},imageSources:{},links:{}},title:"Title area"}},t.initFrom=function(e,n){return new t(a(e.toUrl()),n).configureFrom(e)},Object.defineProperty(t.prototype,"pageLayout",{get:function(){return this.json.PageLayoutType},set:function(e){this.json.PageLayoutType=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"bannerImageUrl",{get:function(){return this.json.BannerImageUrl},set:function(e){this.json.BannerImageUrl=e,this._bannerImageDirty=!0},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"bannerImageSourceType",{get:function(){return this._layoutPart.properties.imageSourceType},set:function(e){this._layoutPart.properties.imageSourceType=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"topicHeader",{get:function(){return Object(m.q)(this.json.TopicHeader)?this.json.TopicHeader:""},set:function(e){this.json.TopicHeader=e,this._layoutPart.properties.topicHeader=e,Object(m.r)(e)&&(this.showTopicHeader=!1)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"title",{get:function(){return this._layoutPart.properties.title},set:function(e){this.json.Title=e,this._layoutPart.properties.title=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"layoutType",{get:function(){return this._layoutPart.properties.layoutType},set:function(e){this._layoutPart.properties.layoutType=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"headerTextAlignment",{get:function(){return this._layoutPart.properties.textAlignment},set:function(e){this._layoutPart.properties.textAlignment=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"showTopicHeader",{get:function(){return this._layoutPart.properties.showTopicHeader},set:function(e){this._layoutPart.properties.showTopicHeader=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"showPublishDate",{get:function(){return this._layoutPart.properties.showPublishDate},set:function(e){this._layoutPart.properties.showPublishDate=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"hasVerticalSection",{get:function(){return this.sections.findIndex(function(e){return 2===e.layoutIndex})>-1},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"verticalSection",{get:function(){return this.hasVerticalSection?this.addVerticalSection():null},enumerable:!0,configurable:!0}),t.prototype.addSection=function(){var e=new xt(this,f(this.sections),1);return this.sections.push(e),e},t.prototype.addVerticalSection=function(){var e=this.sections.findIndex(function(e){return 2===e.layoutIndex});if(e>-1)return this.sections[e];var t=new xt(this,f(this.sections),2);return this.sections.push(t),t},t.prototype.fromJSON=function(e){this.json=e;var t=JSON.parse(e.CanvasContent1),n=JSON.parse(e.LayoutWebpartsContent);return n&&n.length>0&&(this._layoutPart=n[0]),this.setControls(t),this},t.prototype.load=function(){var e=this;return this.getItem("Id","CommentsDisabled").then(function(t){return new x(e,"_api/sitepages/pages("+t.Id+")").get().then(function(n){return e.commentsDisabled=t.CommentsDisabled,e.fromJSON(n)})})},t.prototype.save=function(e){var n=this;if(void 0===e&&(e=!0),null===this.json.Id)throw Error("The id for this page is null. If you want to create a new page, please use ClientSidePage.Create");var r=Promise.resolve({});return this._bannerImageDirty&&(r=r.then(function(e){return new Promise(function(e,t){var r=n.json.BannerImageUrl;Object(m.m)(r)&&(r=r.replace(/^https?:\/\/[a-z0-9\.]*?\.[a-z]{2,3}\//i,"/"));var o=new ht(a(n.toUrl())),i=new Pt(a(n.toUrl())),s=i.getFileByServerRelativePath(r),u="",c="",l="",p="",d="";Promise.all([o.select("Id","Url").get().then(function(e){return u=e.Id}),i.select("Id","Url").get().then(function(e){c=e.Id,d=e.Url}),s.listItemAllFields.select("UniqueId","ParentList/Id").expand("ParentList").get().then(function(e){l=e.UniqueId,p=e.ParentList.Id})]).then(function(){var t=new x(d,"_layouts/15/getpreview.ashx");t.query.set("guidSite",""+u),t.query.set("guidWeb",""+c),t.query.set("guidFile",""+l),n.bannerImageUrl=t.toUrlAndQuery(),Object(m.q)(n._layoutPart.serverProcessedContent)||(n._layoutPart.serverProcessedContent={}),n._layoutPart.serverProcessedContent.imageSources={imageSource:r},Object(m.q)(n._layoutPart.serverProcessedContent.customMetadata)||(n._layoutPart.serverProcessedContent.customMetadata={}),n._layoutPart.serverProcessedContent.customMetadata.imageSource={listId:p,siteId:u,uniqueId:l,webId:c},n._layoutPart.properties.webId=c,n._layoutPart.properties.siteId=u,n._layoutPart.properties.listId=p,n._layoutPart.properties.uniqueId=l,e()}).catch(t)})})),this.json.IsPageCheckedOutToCurrentUser||(r=r.then(function(e){return t.initFrom(n,"_api/sitepages/pages("+n.json.Id+")/checkoutpage").postCore()})),r=r.then(function(e){var r=Object.assign(d("SP.Publishing.SitePage"),{AuthorByline:n.json.AuthorByline||[],BannerImageUrl:n.bannerImageUrl,CanvasContent1:n.getCanvasContent1(),LayoutWebpartsContent:n.getLayoutWebpartsContent(),Title:n.title,TopicHeader:n.topicHeader}),o=t.initFrom(n,"_api/sitepages/pages("+n.json.Id+")/savepage");return o.configure({headers:{"if-match":"*"}}),o.postCore({body:Object(m.n)(r)})}),e&&(r=r.then(function(e){return t.initFrom(n,"_api/sitepages/pages("+n.json.Id+")/publish").postCore()}).then(function(e){e&&(n.json.IsPageCheckedOutToCurrentUser=!1)})),r=r.then(function(e){n._bannerImageDirty=!1})},t.prototype.discardPageCheckout=function(){return i(this,void 0,void 0,function(){var e;return s(this,function(n){switch(n.label){case 0:if(null===this.json.Id)throw Error("The id for this page is null. If you want to create a new page, please use ClientSidePage.Create");return[4,t.initFrom(this,"_api/sitepages/pages("+this.json.Id+")/discardPage").postCore({body:Object(m.n)(d("SP.Publishing.SitePage"))})];case 1:return e=n.sent(),this.fromJSON(e),[2]}})})},t.prototype.promoteToNews=function(){return i(this,void 0,void 0,function(){return s(this,function(e){return[2,this.promoteNewsImpl("promoteToNews")]})})},t.prototype.enableComments=function(){var e=this;return this.setCommentsOn(!0).then(function(t){return e.commentsDisabled=!1,t})},t.prototype.disableComments=function(){var e=this;return this.setCommentsOn(!1).then(function(t){return e.commentsDisabled=!0,t})},t.prototype.findControlById=function(e){return this.findControl(function(t){return t.id===e})},t.prototype.findControl=function(e){for(var t=0;t3?{}:{zoneEmphasis:e}},t.prototype.setCommentsOn=function(e){return this.getItem().then(function(t){return new ze(t,"SetCommentsDisabled("+!e+")").update({})})},t.prototype.promoteNewsImpl=function(e){return i(this,void 0,void 0,function(){var n,r;return s(this,function(o){switch(o.label){case 0:return Object(m.r)(this.json.VersionInfo.LastVersionCreatedBy)?(n=new Date(this.json.VersionInfo.LastVersionCreated),n.getFullYear()<2e3?[4,this.save(!0)]:[3,2]):[3,2];case 1:o.sent(),o.label=2;case 2:if(null===this.json.Id)throw Error("The id for this page is null. If you want to create a new page, please use ClientSidePage.Create");return[4,t.initFrom(this,"_api/sitepages/pages("+this.json.Id+")/"+e).postCore({body:Object(m.n)(d("SP.Publishing.SitePage"))})];case 3:return r=o.sent(),[2,r]}})})},t.prototype.mergePartToTree=function(e,t){var n=null,r=12,o=0,i=0,s=1;t&&(Object(m.j)(t,"zoneIndex")&&(i=t.zoneIndex),Object(m.j)(t,"sectionIndex")&&(o=t.sectionIndex),Object(m.j)(t,"sectionFactor")&&(r=t.sectionFactor),Object(m.j)(t,"layoutIndex")&&(s=t.layoutIndex));var a=e.data&&e.data.emphasis&&e.data.emphasis.zoneEmphasis?e.data.emphasis.zoneEmphasis:0,u=this.getOrCreateSection(i,s,a),c=u.columns.filter(function(e){return e.order===o});n=c.length<1?u.addColumn(r,s):c[0],e.column=n,n.addControl(e)},t.prototype.mergeColumnToTree=function(e){var t=Object(m.j)(e.data,"position")&&Object(m.j)(e.data.position,"zoneIndex")?e.data.position.zoneIndex:0,n=Object(m.j)(e.data,"position")&&Object(m.j)(e.data.position,"layoutIndex")?e.data.position.layoutIndex:1,r=this.getOrCreateSection(t,n,e.data.emphasis.zoneEmphasis||0);e.section=r,r.columns.push(e)},t.prototype.getOrCreateSection=function(e,t,n){var r=null,o=this.sections.filter(function(n){return n.order===e&&n.layoutIndex===t});return o.length<1?(r=2===t?this.addVerticalSection():this.addSection(),r.order=e,r.emphasis=n):r=o[0],r},t.prototype.getItem=function(){for(var e=this,n=[],r=0;r")||(e="

"+e+"

"),this.data.innerHTML=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"order",{get:function(){return this.data.position.controlIndex},set:function(e){this.data.position.controlIndex=e},enumerable:!0,configurable:!0}),t.prototype.onColumnChange=function(e){this.data.position.sectionFactor=e.factor,this.data.position.controlIndex=f(e.controls),this.data.position.zoneIndex=e.data.position.zoneIndex,this.data.position.sectionIndex=e.order,this.data.position.layoutIndex=e.data.position.layoutIndex},t.Default={addedFromPersistedData:!1,anchorComponentId:"",controlType:4,displayMode:2,editorType:"CKEditor",emphasis:{},id:"",innerHTML:"",position:{controlIndex:1,layoutIndex:1,sectionFactor:12,sectionIndex:1,zoneIndex:1}},t}(Rt),Ut=function(e){function t(n){return void 0===n&&(n=JSON.parse(JSON.stringify(t.Default))),e.call(this,n)||this}return r(t,e),t.fromComponentDef=function(e){var n=new t;return n.import(e),n},Object.defineProperty(t.prototype,"title",{get:function(){return this.data.webPartData.title},set:function(e){this.data.webPartData.title=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"description",{get:function(){return this.data.webPartData.description},set:function(e){this.data.webPartData.description=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"order",{get:function(){return this.data.position.controlIndex},set:function(e){this.data.position.controlIndex=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"height",{get:function(){return this.data.reservedHeight},set:function(e){this.data.reservedHeight=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"width",{get:function(){return this.data.reservedWidth},set:function(e){this.data.reservedWidth=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"dataVersion",{get:function(){return this.data.webPartData.dataVersion},set:function(e){this.data.webPartData.dataVersion=e},enumerable:!0,configurable:!0}),t.prototype.setProperties=function(e){return this.data.webPartData.properties=Object(m.f)(this.data.webPartData.properties,e),this},t.prototype.getProperties=function(){return this.data.webPartData.properties},t.prototype.onColumnChange=function(e){this.data.position={controlIndex:f(e.controls),layoutIndex:e.data.position.layoutIndex,sectionFactor:e.factor,sectionIndex:e.data.position.sectionIndex,zoneIndex:e.data.position.zoneIndex}},t.prototype.import=function(e){var t=Object(m.h)(),n=e.Id.replace(/^\{|\}$/g,"").toLowerCase(),r=JSON.parse(e.Manifest),o=r.preconfiguredEntries[0];this.setData(Object.assign({},this.data,{id:t,webPartData:{dataVersion:"1.0",description:o.description.default,id:n,instanceId:t,properties:o.properties,title:o.title.default},webPartId:n}))},t.Default={addedFromPersistedData:!1,controlType:3,displayMode:2,emphasis:{},id:null,position:{controlIndex:1,layoutIndex:1,sectionFactor:12,sectionIndex:1,zoneIndex:1},reservedHeight:500,reservedWidth:500,webPartData:null,webPartId:null},t}(Rt),kt=(new Map([["text","Querytext"],["template","QueryTemplate"],["sourceId","SourceId"],["trimDuplicatesIncludeId",""],["startRow",""],["rowLimit",""],["rankingModelId",""],["rowsPerPage",""],["selectProperties",""],["culture",""],["timeZoneId",""],["refinementFilters",""],["refiners",""],["hiddenConstraints",""],["sortList",""],["timeout",""],["hithighlightedProperties",""],["clientType",""],["personalizationData",""],["resultsURL",""],["queryTag",""],["properties",""],["queryTemplatePropertiesUrl",""],["reorderingRules",""],["hitHighlightedMultivaluePropertyLimit",""],["collapseSpecification",""],["uiLanguage",""],["desiredSnippetLength",""],["maxSnippetLength",""],["summaryLength",""]]),new Map([]),function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.execute=function(e){var t=this,n=this.parseQuery(e),r=Object(m.n)({request:Object(m.f)(d("Microsoft.Office.Server.Search.REST.SearchRequest"),Object.assign({},n,{HitHighlightedProperties:this.fixArrProp(n.HitHighlightedProperties),Properties:this.fixArrProp(n.Properties),RefinementFilters:this.fixArrProp(n.RefinementFilters),ReorderingRules:this.fixArrProp(n.ReorderingRules),SelectProperties:this.fixArrProp(n.SelectProperties),SortList:this.fixArrProp(n.SortList)}))});if(this._useCaching){this._forceCaching=!0;var o="PnPjs.SearchWithCaching("+Object(m.i)(r)+")";Object(m.q)(this._cachingOptions)?/\/_api\/search\/postquery$/i.test(this._cachingOptions.key)&&(this._cachingOptions.key=o):this._cachingOptions=new v.c(o)}return this.postCore({body:r}).then(function(e){return new Lt(e,t.toUrl(),n)})},t.prototype.fixArrProp=function(e){return void 0===e?{results:[]}:(e=Object(m.k)(e)?e:[e],Object(m.j)(e,"results")?e:{results:e})},t.prototype.parseQuery=function(e){return"string"==typeof e?{Querytext:e}:e.toSearchQuery?e.toSearchQuery():e},t=o([h("_api/search/postquery")],t)}(R)),Lt=function(){function e(e,t,n,r,o){void 0===r&&(r=null),void 0===o&&(o=null),this._url=t,this._query=n,this._raw=r,this._primary=o,this._raw=e.postquery?e.postquery:e}return Object.defineProperty(e.prototype,"ElapsedTime",{get:function(){return this.RawSearchResults.ElapsedTime},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"RowCount",{get:function(){return this.RawSearchResults.PrimaryQueryResult.RelevantResults.RowCount},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"TotalRows",{get:function(){return this.RawSearchResults.PrimaryQueryResult.RelevantResults.TotalRows},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"TotalRowsIncludingDuplicates",{get:function(){return this.RawSearchResults.PrimaryQueryResult.RelevantResults.TotalRowsIncludingDuplicates},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"RawSearchResults",{get:function(){return this._raw},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"PrimarySearchResults",{get:function(){return null===this._primary&&(this._primary=this.formatSearchResults(this._raw.PrimaryQueryResult.RelevantResults.Table.Rows)),this._primary},enumerable:!0,configurable:!0}),e.prototype.getPage=function(e,t){if(this.TotalRowsthis.TotalRows?Promise.resolve(null):new kt(this._url,null).execute(r)},e.prototype.formatSearchResults=function(e){for(var t=new Array,n=e.results?e.results:e,r=0,o=n;r0&&(n.properties=Object(m.f)(n.properties,{To:{results:e.To}})),e.CC&&e.CC.length>0&&(n.properties=Object(m.f)(n.properties,{CC:{results:e.CC}})),e.BCC&&e.BCC.length>0&&(n.properties=Object(m.f)(n.properties,{BCC:{results:e.BCC}})),e.AdditionalHeaders&&(n.properties=Object(m.f)(n.properties,{AdditionalHeaders:e.AdditionalHeaders})),this.clone(t,"SendEmail",!0).excute(n)},t.prototype.getCurrentUserEmailAddresses=function(){return this.clone(t,"GetCurrentUserEmailAddresses",!0).excute({}).then(function(e){return Object(m.j)(e,"GetCurrentUserEmailAddresses")?e.GetCurrentUserEmailAddresses:e})},t.prototype.resolvePrincipal=function(e,n,r,o,i,s){void 0===s&&(s=!1);var a={addToUserInfoList:i,input:e,inputIsEmailOnly:o,matchUserInfoList:s,scopes:n,sources:r};return this.clone(t,"ResolvePrincipalInCurrentContext",!0).excute(a).then(function(e){return Object(m.j)(e,"ResolvePrincipalInCurrentContext")?e.ResolvePrincipalInCurrentContext:e})},t.prototype.searchPrincipals=function(e,n,r,o,i){var s={groupName:o,input:e,maxCount:i,scopes:n,sources:r};return this.clone(t,"SearchPrincipalsUsingContextWeb",!0).excute(s).then(function(e){return Object(m.j)(e,"SearchPrincipalsUsingContextWeb")?e.SearchPrincipalsUsingContextWeb:e})},t.prototype.createEmailBodyForInvitation=function(e){var n={pageAddress:e};return this.clone(t,"CreateEmailBodyForInvitation",!0).excute(n).then(function(e){return Object(m.j)(e,"CreateEmailBodyForInvitation")?e.CreateEmailBodyForInvitation:e})},t.prototype.expandGroupsToPrincipals=function(e,n){void 0===n&&(n=30);var r={inputs:e,maxCount:n};return this.clone(t,"ExpandGroupsToPrincipals",!0).excute(r).then(function(e){return Object(m.j)(e,"ExpandGroupsToPrincipals")?e.ExpandGroupsToPrincipals:e})},t.prototype.createWikiPage=function(e){return this.clone(t,"CreateWikiPageInContextWeb",!0).excute({parameters:e}).then(function(e){return{data:Object(m.j)(e,"CreateWikiPageInContextWeb")?e.CreateWikiPageInContextWeb:e,file:new tt(u(e))}})},t.prototype.containsInvalidFileFolderChars=function(e,n){return void 0===n&&(n=!1),n?(t.InvalidFileFolderNameCharsOnPremiseRegex.lastIndex=0,t.InvalidFileFolderNameCharsOnPremiseRegex.test(e)):(t.InvalidFileFolderNameCharsOnlineRegex.lastIndex=0,t.InvalidFileFolderNameCharsOnlineRegex.test(e))},t.prototype.stripInvalidFileFolderChars=function(e,n,r){return void 0===n&&(n=""),void 0===r&&(r=!1),r?e.replace(t.InvalidFileFolderNameCharsOnPremiseRegex,n):e.replace(t.InvalidFileFolderNameCharsOnlineRegex,n)},t.InvalidFileFolderNameCharsOnlineRegex=/["*:<>?\/\\|\x00-\x1f\x7f-\x9f]/g,t.InvalidFileFolderNameCharsOnPremiseRegex=/["#%*:<>?\/\\|\x00-\x1f\x7f-\x9f]/g,t}(x),Xt=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.getById=function(e){return new Yt(this,"GetById?hubSiteId='"+e+"'")},t=o([h("_api/hubsites")],t)}(j),Yt=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(R),$t=function(){function e(e,t){void 0===e&&(e={}),void 0===t&&(t=""),this._options=e,this._baseUrl=t}return e.prototype.configure=function(t,n){return void 0===n&&(n=""),new e(t,n)},e.prototype.setup=function(e){l(e)},e.prototype.searchSuggest=function(e){var t;return t="string"==typeof e?{querytext:e}:e,this.create(Bt).execute(t)},e.prototype.search=function(e){return this.create(kt).execute(e)},e.prototype.searchWithCaching=function(e,t){return this.create(kt).usingCaching(t).execute(e)},Object.defineProperty(e.prototype,"site",{get:function(){return this.create(ht)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"web",{get:function(){return this.create(Pt)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"profiles",{get:function(){return this.create(Gt)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"social",{get:function(){return this.create(Ht)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"navigation",{get:function(){return this.create(mt)},enumerable:!0,configurable:!0}),e.prototype.createBatch=function(){return this.web.createBatch()},Object.defineProperty(e.prototype,"utility",{get:function(){return this.create(Jt,"")},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"siteScripts",{get:function(){return this.create(It,"")},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"siteDesigns",{get:function(){return this.create(wt,"")},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"hubSites",{get:function(){return this.create(Xt)},enumerable:!0,configurable:!0}),e.prototype.getTenantAppCatalogWeb=function(){var e=this;return this.create(Pt,"_api/SP_TenantSettings_Current").get().then(function(t){return new Pt(t.CorporateCatalogUrl).configure(e._options)})},e.prototype.create=function(e,t){return new e(this._baseUrl,t).configure(this._options)},e}(),Zt=new $t}).call(t,n(1))},function(e,t){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),n.d(t,"UserCustomActionMegaMenuId",function(){return f});var r=n(6),o=(n.n(r),n(7)),i=(n.n(o),n(8)),s=(n.n(i),n(9)),a=(n.n(s),n(10)),u=n(18),c=(n(22),this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}()),l=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},p=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))(function(o,i){function s(e){try{u(r.next(e))}catch(e){i(e)}}function a(e){try{u(r.throw(e))}catch(e){i(e)}}function u(e){e.done?o(e.value):new n(function(t){t(e.value)}).then(s,a)}u((r=r.apply(e,t||[])).next())})},d=this&&this.__generator||function(e,t){function n(e){return function(t){return r([e,t])}}function r(n){if(o)throw new TypeError("Generator is already executing.");for(;u;)try{if(o=1,i&&(s=i[2&n[0]?"return":n[0]?"throw":"next"])&&!(s=s.call(i,n[1])).done)return s;switch(i=0,s&&(n=[0,s.value]),n[0]){case 0:case 1:s=n;break;case 4:return u.label++,{value:n[1],done:!1};case 5:u.label++,i=n[1],n=[0];continue;case 7:n=u.ops.pop(),u.trys.pop();continue;default:if(s=u.trys,!(s=s.length>0&&s[s.length-1])&&(6===n[0]||2===n[0])){u=0;continue}if(3===n[0]&&(!s||n[1]>s[0]&&n[1]0&&(n=60*this.defaultTimeoutMinutes),t=i(new Date,"second",n)}return f({pnp:1,expiration:t,value:e})},e.prototype.cacheExpirationHandler=function(){var e=this;this.deleteExpired().then(function(t){setTimeout(o(e,e.cacheExpirationHandler),R.cacheExpirationIntervalMilliseconds)}).catch(function(e){console.error(e)})},e}(),U=function(){function e(e){void 0===e&&(e=new Map),this._store=e}return Object.defineProperty(e.prototype,"length",{get:function(){return this._store.size},enumerable:!0,configurable:!0}),e.prototype.clear=function(){this._store.clear()},e.prototype.getItem=function(e){return this._store.get(e)},e.prototype.key=function(e){return Array.from(this._store)[e][0]},e.prototype.removeItem=function(e){this._store.delete(e)},e.prototype.setItem=function(e,t){this._store.set(e,t)},e}(),k=function(){function e(e,t){void 0===e&&(e=null),void 0===t&&(t=null),this._local=e,this._session=t}return Object.defineProperty(e.prototype,"local",{get:function(){return null===this._local&&(this._local=this.getStore("local")),this._local},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"session",{get:function(){return null===this._session&&(this._session=this.getStore("session")),this._session},enumerable:!0,configurable:!0}),e.prototype.getStore=function(e){return new A("local"===e?"undefined"==typeof localStorage?new U:localStorage:"undefined"==typeof sessionStorage?new U:sessionStorage)},e}()}).call(t,n(1))},function(e,t,n){"use strict";n.d(t,"a",function(){return o});/** + * @license + * v1.3.11 + * MIT (https://github.com/pnp/pnpjs/blob/master/LICENSE) + * Copyright (c) 2020 Microsoft + * docs: https://pnp.github.io/pnpjs/ + * source: https://github.com/pnp/pnpjs + * bugs: https://github.com/pnp/pnpjs/issues + */ +var r,o=function(){function e(){}return Object.defineProperty(e,"activeLogLevel",{get:function(){return e.instance.activeLogLevel},set:function(t){e.instance.activeLogLevel=t},enumerable:!0,configurable:!0}),Object.defineProperty(e,"instance",{get:function(){return void 0!==e._instance&&null!==e._instance||(e._instance=new i),e._instance},enumerable:!0,configurable:!0}),e.subscribe=function(){for(var t=[],n=0;n0&&s[s.length-1])&&(6===n[0]||2===n[0])){u=0;continue}if(3===n[0]&&(!s||n[1]>s[0]&&n[1]-1},n.prototype.getCachedToken=function(e){if(!this._hasResource(e))return null;var t=this._getItem(this.CONSTANTS.STORAGE.ACCESS_TOKEN_KEY+e),n=this._getItem(this.CONSTANTS.STORAGE.EXPIRATION_KEY+e),r=this.config.expireOffsetSeconds||300;return n&&n>this._now()+r?t:(this._saveItem(this.CONSTANTS.STORAGE.ACCESS_TOKEN_KEY+e,""),this._saveItem(this.CONSTANTS.STORAGE.EXPIRATION_KEY+e,0),null)},n.prototype.getCachedUser=function(){if(this._user)return this._user;var e=this._getItem(this.CONSTANTS.STORAGE.IDTOKEN);return this._user=this._createUser(e),this._user},n.prototype.registerCallback=function(e,t,n){this._activeRenewals[t]=e,this._callBacksMappedToRenewStates[e]||(this._callBacksMappedToRenewStates[e]=[]);var r=this;this._callBacksMappedToRenewStates[e].push(n),this._callBackMappedToRenewStates[e]||(this._callBackMappedToRenewStates[e]=function(n,o,i,s){r._activeRenewals[t]=null;for(var a=0;a-1)){var t=this._user.profile.upn.split("@");e+="&domain_hint="+encodeURIComponent(t[t.length-1])}return e},n.prototype._createUser=function(e){var t=null,n=this._extractIdToken(e);return n&&n.hasOwnProperty("aud")&&(n.aud.toLowerCase()===this.config.clientId.toLowerCase()?(t={userName:"",profile:n},n.hasOwnProperty("upn")?t.userName=n.upn:n.hasOwnProperty("email")&&(t.userName=n.email)):this.warn("IdToken has invalid aud field")),t},n.prototype._getHash=function(e){return e.indexOf("#/")>-1?e=e.substring(e.indexOf("#/")+2):e.indexOf("#")>-1&&(e=e.substring(1)),e},n.prototype.isCallback=function(e){e=this._getHash(e);var t=this._deserialize(e);return t.hasOwnProperty(this.CONSTANTS.ERROR_DESCRIPTION)||t.hasOwnProperty(this.CONSTANTS.ACCESS_TOKEN)||t.hasOwnProperty(this.CONSTANTS.ID_TOKEN)},n.prototype.getLoginError=function(){return this._getItem(this.CONSTANTS.STORAGE.LOGIN_ERROR)},n.prototype.getRequestInfo=function(e){e=this._getHash(e);var t=this._deserialize(e),n={valid:!1,parameters:{},stateMatch:!1,stateResponse:"",requestType:this.REQUEST_TYPE.UNKNOWN};if(t&&(n.parameters=t,t.hasOwnProperty(this.CONSTANTS.ERROR_DESCRIPTION)||t.hasOwnProperty(this.CONSTANTS.ACCESS_TOKEN)||t.hasOwnProperty(this.CONSTANTS.ID_TOKEN))){n.valid=!0;var r="";if(!t.hasOwnProperty("state"))return this.warn("No state returned"),n;if(this.verbose("State: "+t.state),r=t.state,n.stateResponse=r,this._matchState(n))return n;if(!n.stateMatch&&window.parent){n.requestType=this._requestType;for(var o=this._renewStates,i=0;i-1&&t+1-1)return null;if(this.config&&this.config.endpoints)for(var n in this.config.endpoints)if(e.indexOf(n)>-1)return this.config.endpoints[n];return e.indexOf("http://")>-1||e.indexOf("https://")>-1?this._getHostFromUri(e)===this._getHostFromUri(this.config.redirectUri)?this.config.loginResource:null:this.config.loginResource},n.prototype._getHostFromUri=function(e){var t=String(e).replace(/^(https?:)\/\//,"");return t=t.split("/")[0]},n.prototype.handleWindowCallback=function(e){if(null==e&&(e=window.location.hash),this.isCallback(e)){var t=null,n=!1;this._openedWindows.length>0&&this._openedWindows[this._openedWindows.length-1].opener&&this._openedWindows[this._openedWindows.length-1].opener._adalInstance?(t=this._openedWindows[this._openedWindows.length-1].opener._adalInstance,n=!0):window.parent&&window.parent._adalInstance&&(t=window.parent._adalInstance);var r,o,i=t.getRequestInfo(e),s=null;o=n||window.parent!==window?t._callBackMappedToRenewStates[i.stateResponse]:t.callback,t.info("Returned from redirect url"),t.saveTokenFromHash(i),i.requestType===this.REQUEST_TYPE.RENEW_TOKEN&&window.parent?(window.parent!==window?t.verbose("Window is in iframe, acquiring token silently"):t.verbose("acquiring token interactive in progress"),r=i.parameters[t.CONSTANTS.ACCESS_TOKEN]||i.parameters[t.CONSTANTS.ID_TOKEN],s=t.CONSTANTS.ACCESS_TOKEN):i.requestType===this.REQUEST_TYPE.LOGIN&&(r=i.parameters[t.CONSTANTS.ID_TOKEN],s=t.CONSTANTS.ID_TOKEN);var a=i.parameters[t.CONSTANTS.ERROR_DESCRIPTION],u=i.parameters[t.CONSTANTS.ERROR];try{o&&o(a,r,u,s)}catch(e){t.error("Error occurred in user defined callback function: "+e)}window.parent!==window||n||(t.config.navigateToLoginRequestUrl?window.location.href=t._getItem(t.CONSTANTS.STORAGE.LOGIN_REQUEST):window.location.hash="")}},n.prototype._getNavigateUrl=function(e,t){var n="common";this.config.tenant&&(n=this.config.tenant);var r=this.instance+n+"/oauth2/authorize"+this._serialize(e,this.config,t)+this._addLibMetadata();return this.info("Navigate url:"+r),r},n.prototype._extractIdToken=function(e){var t=this._decodeJwt(e);if(!t)return null;try{var n=t.JWSPayload,r=this._base64DecodeStringUrlSafe(n);return r?JSON.parse(r):(this.info("The returned id_token could not be base64 url safe decoded."),null)}catch(e){this.error("The returned id_token could not be decoded",e)}return null},n.prototype._base64DecodeStringUrlSafe=function(e){return e=e.replace(/-/g,"+").replace(/_/g,"/"),window.atob?decodeURIComponent(escape(window.atob(e))):decodeURIComponent(escape(this._decode(e)))},n.prototype._decode=function(e){var t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";e=String(e).replace(/=+$/,"");var n=e.length;if(n%4==1)throw new Error("The token to be decoded is not correctly encoded.");for(var r,o,i,s,a,u,c,l,p="",d=0;d>16&255,c=a>>8&255,p+=String.fromCharCode(u,c);break}if(d+1===n-1){a=r<<18|o<<12,u=a>>16&255,p+=String.fromCharCode(u);break}a=r<<18|o<<12|i<<6|s,u=a>>16&255,c=a>>8&255,l=255&a,p+=String.fromCharCode(u,c,l)}return p},n.prototype._decodeJwt=function(e){if(this._isEmpty(e))return null;var t=/^([^\.\s]*)\.([^\.\s]+)\.([^\.\s]*)$/,n=t.exec(e);return!n||n.length<4?(this.warn("The returned id_token is not parseable."),null):{header:n[1],JWSPayload:n[2],JWSSig:n[3]}},n.prototype._convertUrlSafeToRegularBase64EncodedString=function(e){return e.replace("-","+").replace("_","/")},n.prototype._serialize=function(e,t,n){var r=[];if(null!==t){r.push("?response_type="+e),r.push("client_id="+encodeURIComponent(t.clientId)),n&&r.push("resource="+encodeURIComponent(n)),r.push("redirect_uri="+encodeURIComponent(t.redirectUri)),r.push("state="+encodeURIComponent(t.state)),t.hasOwnProperty("slice")&&r.push("slice="+encodeURIComponent(t.slice)),t.hasOwnProperty("extraQueryParameter")&&r.push(t.extraQueryParameter);var o=t.correlationId?t.correlationId:this._guid();r.push("client-request-id="+encodeURIComponent(o))}return r.join("&")},n.prototype._deserialize=function(e){var t,n=/\+/g,r=/([^&=]+)=([^&]*)/g,o=function(e){return decodeURIComponent(e.replace(n," "))},i={};for(t=r.exec(e);t;)i[o(t[1])]=o(t[2]),t=r.exec(e);return i},n.prototype._decimalToHex=function(e){for(var t=e.toString(16);t.length<2;)t="0"+t;return t},n.prototype._guid=function(){var e=window.crypto||window.msCrypto;if(e&&e.getRandomValues){var t=new Uint8Array(16);return e.getRandomValues(t),t[6]|=64,t[6]&=79,t[8]|=128,t[8]&=191,this._decimalToHex(t[0])+this._decimalToHex(t[1])+this._decimalToHex(t[2])+this._decimalToHex(t[3])+"-"+this._decimalToHex(t[4])+this._decimalToHex(t[5])+"-"+this._decimalToHex(t[6])+this._decimalToHex(t[7])+"-"+this._decimalToHex(t[8])+this._decimalToHex(t[9])+"-"+this._decimalToHex(t[10])+this._decimalToHex(t[11])+this._decimalToHex(t[12])+this._decimalToHex(t[13])+this._decimalToHex(t[14])+this._decimalToHex(t[15])}for(var n="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx",r="0123456789abcdef",o=0,i="",s=0;s<36;s++)"-"!==n[s]&&"4"!==n[s]&&(o=16*Math.random()|0),"x"===n[s]?i+=r[o]:"y"===n[s]?(o&=3,o|=8,i+=r[o]):i+=n[s];return i},n.prototype._expiresIn=function(e){return e||(e=3599),this._now()+parseInt(e,10)},n.prototype._now=function(){return Math.round((new Date).getTime()/1e3)},n.prototype._addAdalFrame=function(e){if(void 0!==e){this.info("Add adal frame to document:"+e);var t=document.getElementById(e);if(!t){if(document.createElement&&document.documentElement&&(window.opera||-1===window.navigator.userAgent.indexOf("MSIE 5.0"))){var n=document.createElement("iframe");n.setAttribute("id",e),n.setAttribute("aria-hidden","true"),n.style.visibility="hidden",n.style.position="absolute",n.style.width=n.style.height=n.borderWidth="0px",t=document.getElementsByTagName("body")[0].appendChild(n)}else document.body&&document.body.insertAdjacentHTML&&document.body.insertAdjacentHTML("beforeEnd",'');window.frames&&window.frames[e]&&(t=window.frames[e])}return t}},n.prototype._saveItem=function(e,t,n){if(this.config&&this.config.cacheLocation&&"localStorage"===this.config.cacheLocation){if(!this._supportsLocalStorage())return this.info("Local storage is not supported"),!1;if(n){var r=this._getItem(e)||"";localStorage.setItem(e,r+t+this.CONSTANTS.CACHE_DELIMETER)}else localStorage.setItem(e,t);return!0}return this._supportsSessionStorage()?(sessionStorage.setItem(e,t),!0):(this.info("Session storage is not supported"),!1)},n.prototype._getItem=function(e){return this.config&&this.config.cacheLocation&&"localStorage"===this.config.cacheLocation?this._supportsLocalStorage()?localStorage.getItem(e):(this.info("Local storage is not supported"),null):this._supportsSessionStorage()?sessionStorage.getItem(e):(this.info("Session storage is not supported"),null)},n.prototype._supportsLocalStorage=function(){try{return!!window.localStorage&&(window.localStorage.setItem("storageTest","A"),"A"==window.localStorage.getItem("storageTest")&&(window.localStorage.removeItem("storageTest"),!window.localStorage.getItem("storageTest")))}catch(e){return!1}},n.prototype._supportsSessionStorage=function(){try{return!!window.sessionStorage&&(window.sessionStorage.setItem("storageTest","A"),"A"==window.sessionStorage.getItem("storageTest")&&(window.sessionStorage.removeItem("storageTest"),!window.sessionStorage.getItem("storageTest")))}catch(e){return!1}},n.prototype._cloneConfig=function(e){if(null===e||"object"!=typeof e)return e;var t={};for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t},n.prototype._addLibMetadata=function(){return"&x-client-SKU=Js&x-client-Ver="+this._libVersion()},n.prototype.log=function(e,t,n,r){if(e<=Logging.level){if(!Logging.piiLoggingEnabled&&r)return;var o=(new Date).toUTCString(),i="";i=this.config.correlationId?o+":"+this.config.correlationId+"-"+this._libVersion()+"-"+this.CONSTANTS.LEVEL_STRING_MAP[e]+" "+t:o+":"+this._libVersion()+"-"+this.CONSTANTS.LEVEL_STRING_MAP[e]+" "+t,n&&(i+="\nstack:\n"+n.stack),Logging.log(i)}},n.prototype.error=function(e,t){this.log(this.CONSTANTS.LOGGING_LEVEL.ERROR,e,t)},n.prototype.warn=function(e){this.log(this.CONSTANTS.LOGGING_LEVEL.WARN,e,null)},n.prototype.info=function(e){this.log(this.CONSTANTS.LOGGING_LEVEL.INFO,e,null)},n.prototype.verbose=function(e){this.log(this.CONSTANTS.LOGGING_LEVEL.VERBOSE,e,null)},n.prototype.errorPii=function(e,t){this.log(this.CONSTANTS.LOGGING_LEVEL.ERROR,e,t,!0)},n.prototype.warnPii=function(e){this.log(this.CONSTANTS.LOGGING_LEVEL.WARN,e,null,!0)},n.prototype.infoPii=function(e){this.log(this.CONSTANTS.LOGGING_LEVEL.INFO,e,null,!0)},n.prototype.verbosePii=function(e){this.log(this.CONSTANTS.LOGGING_LEVEL.VERBOSE,e,null,!0)},n.prototype._libVersion=function(){return"1.0.17"},void 0!==e&&e.exports&&(e.exports=n,e.exports.inject=function(e){return new n(e)}),n}()},function(e,t,n){"use strict";function r(e,t){function n(){this.constructor=e}y(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}function o(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s}function i(e){return d.a.log({data:0===d.a.activeLogLevel?e.result:{},level:1,message:"["+e.requestId+"] ("+(new Date).getTime()+") Returning result from pipeline. Set logging to verbose to see data."}),Promise.resolve(e.result)}function s(e,t){return new Promise(function(n){e.result=t,e.hasResult=!0,n(e)})}function a(e){return e.pipeline.length>0?e.pipeline.shift()(e):Promise.resolve(e)}function u(e){e.pipeline.length<1&&d.a.write("["+e.requestId+"] ("+(new Date).getTime()+") Request pipeline contains no methods!",2);var t=a(e).then(function(e){return i(e)}).catch(function(e){throw d.a.error(e),e});return e.isBatched&&e.batch.addResolveBatchDependency(t),t}function c(e){return void 0===e&&(e=!1),function(t,n,r){var o=r.value;r.value=function(){for(var r=[],i=0;i0&&Object(p.j)(r[0],"hasResult")&&r[0].hasResult?(d.a.write("["+r[0].requestId+"] ("+(new Date).getTime()+") Skipping request pipeline method "+n+", existing result in pipeline.",0),Promise.resolve(r[0])):(d.a.write("["+r[0].requestId+"] ("+(new Date).getTime()+") Calling request pipeline method "+n+".",0),o.apply(t,r).then(function(e){return a(e)}))}}}function l(){return[w.logStart,w.caching,w.send,w.logEnd].slice(0)}n.d(t,"c",function(){return h}),n.d(t,"g",function(){return m}),n.d(t,"f",function(){return b}),n.d(t,"i",function(){return v}),n.d(t,"a",function(){return S}),n.d(t,"d",function(){return T}),n.d(t,"b",function(){return O}),n.d(t,"h",function(){return _}),n.d(t,"e",function(){return C});var p=n(3),d=n(4),h=function(){function e(e){this.key=e,this.expiration=Object(p.e)(new Date,"second",p.c.defaultCachingTimeoutSeconds),this.storeName=p.c.defaultCachingStore}return Object.defineProperty(e.prototype,"store",{get:function(){return"local"===this.storeName?e.storage.local:e.storage.session},enumerable:!0,configurable:!0}),e.storage=new p.b,e}(),f=function(){function e(e,t){this.parser=e,this.cacheOptions=t}return e.prototype.parse=function(e){var t=this;return this.parser.parse(e).then(function(e){return t.cacheData(e)})},e.prototype.cacheData=function(e){return null!==this.cacheOptions.store&&this.cacheOptions.store.put(this.cacheOptions.key,e,this.cacheOptions.expiration),e},e}(),y=function(e,t){return(y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)},g=function(e){function t(t,n,r,o){void 0===r&&(r=n.status),void 0===o&&(o=n.statusText);var i=e.call(this,t)||this;return i.response=n,i.status=r,i.statusText=o,i.isHttpRequestError=!0,i}return r(t,e),t.init=function(e){return e.clone().text().then(function(n){return new t("Error making HttpClient request in queryable ["+e.status+"] "+e.statusText+" ::> "+n,e.clone())})},t}(Error),m=function(){function e(){this.rawJson={}}return e.prototype.parse=function(e){var t=this;return new Promise(function(n,r){t.handleError(e,r)&&t.parseImpl(e,n,r)})},e.prototype.parseImpl=function(e,t,n){var r=this;e.headers.has("Content-Length")&&0===parseFloat(e.headers.get("Content-Length"))||204===e.status?t({}):e.text().then(function(e){return e.replace(/\s/gi,"").length>0?JSON.parse(e):{}}).then(function(e){return t(r.parseODataJSON(e))}).catch(function(e){return n(e)})},e.prototype.handleError=function(e,t){return e.ok||g.init(e).then(t),e.ok},e.prototype.parseODataJSON=function(e){this.rawJson=e;var t=e;return Object(p.j)(e,"d")?t=Object(p.j)(e.d,"results")?e.d.results:e.d:Object(p.j)(e,"value")&&(t=e.value),t},e}(),b=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(m),v=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.parseImpl=function(e,t){e.text().then(t)},t}(m),S=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.parseImpl=function(e,t){e.blob().then(t)},t}(m),T=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.parseImpl=function(e,t){e.json().then(t)},t}(m),O=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.parseImpl=function(e,t){Object(p.l)(e.arrayBuffer)?e.arrayBuffer().then(t):e.buffer().then(t)},t}(m),w=(function(e){function t(t){var n=e.call(this)||this;return n.parser=t,n}r(t,e),t.prototype.parseImpl=function(e,t){this.parser(e).then(t)}}(m),function(){function e(){}return e.logStart=function(e){return new Promise(function(t){d.a.log({data:1===d.a.activeLogLevel?{}:e,level:1,message:"["+e.requestId+"] ("+(new Date).getTime()+") Beginning "+e.verb+" request ("+e.requestAbsoluteUrl+")"}),t(e)})},e.caching=function(e){return new Promise(function(t){if(e.isCached){d.a.write("["+e.requestId+"] ("+(new Date).getTime()+") Caching is enabled for request, checking cache...",1);var n=new h(e.requestAbsoluteUrl.toLowerCase());if(void 0!==e.cachingOptions&&(n=Object(p.f)(n,e.cachingOptions)),null!==n.store){var r=n.store.get(n.key);if(null!==r)return d.a.log({data:1===d.a.activeLogLevel?{}:r,level:1,message:"["+e.requestId+"] ("+(new Date).getTime()+") Value returned from cache."}),Object(p.l)(e.batchDependency)&&e.batchDependency(),Object(p.j)(e.parser,"hydrate")&&(r=e.parser.hydrate(r)),s(e,r).then(function(e){return t(e)})}d.a.write("["+e.requestId+"] ("+(new Date).getTime()+") Value not found in cache.",1),e.parser=new f(e.parser,n)}return t(e)})},e.send=function(e){return new Promise(function(t,n){if(e.isBatched){var r=e.batch.add(e.requestAbsoluteUrl,e.verb,e.options,e.parser,e.requestId);Object(p.l)(e.batchDependency)&&e.batchDependency(),d.a.write("["+e.requestId+"] ("+(new Date).getTime()+") Batching request in batch "+e.batch.batchId+".",1),t(s(e,r))}else{d.a.write("["+e.requestId+"] ("+(new Date).getTime()+") Sending request.",1);var o=e.clientFactory(),i=Object(p.f)(e.options||{},{method:e.verb});o.fetch(e.requestAbsoluteUrl,i).then(function(t){return e.parser.parse(t)}).then(function(t){return s(e,t)}).then(function(e){return t(e)}).catch(function(e){return n(e)})}})},e.logEnd=function(e){return new Promise(function(t){e.isBatched?d.a.log({data:1===d.a.activeLogLevel?{}:e,level:1,message:"["+e.requestId+"] ("+(new Date).getTime()+") "+e.verb+" request will complete in batch "+e.batch.batchId+"."}):d.a.log({data:1===d.a.activeLogLevel?{}:e,level:1,message:"["+e.requestId+"] ("+(new Date).getTime()+") Completing "+e.verb+" request."}),t(e)})},o([c(!0)],e,"logStart",null),o([c()],e,"caching",null),o([c()],e,"send",null),o([c(!0)],e,"logEnd",null),e}()),I=function(){function e(){this._query=new Map,this._options={},this._url="",this._parentUrl="",this._useCaching=!1,this._cachingOptions=null,this._cloneParentWasCaching=!1,this._cloneParentCacheOptions=null,this._requestPipeline=null}return e.prototype.toUrl=function(){return this._url},e.prototype.concat=function(e){return this._url+=e,this},Object.defineProperty(e.prototype,"query",{get:function(){return this._query},enumerable:!0,configurable:!0}),e.prototype.configure=function(e){return Object(p.p)(this._options,e),this},e.prototype.configureFrom=function(e){return Object(p.p)(this._options,e._options),this},e.prototype.usingCaching=function(e){return p.c.globalCacheDisable||(this._useCaching=!0,void 0!==e&&(this._cachingOptions=e)),this},e.prototype.withPipeline=function(e){return this._requestPipeline=e.slice(0),this},e.prototype.getCore=function(e,t){return void 0===e&&(e=new T),void 0===t&&(t={}),this._cloneParentWasCaching&&this.usingCaching(this._cloneParentCacheOptions),this.reqImpl("GET",t,e)},e.prototype.postCore=function(e,t){return void 0===e&&(e={}),void 0===t&&(t=new T),this.reqImpl("POST",e,t)},e.prototype.patchCore=function(e,t){return void 0===e&&(e={}),void 0===t&&(t=new T),this.reqImpl("PATCH",e,t)},e.prototype.deleteCore=function(e,t){return void 0===e&&(e={}),void 0===t&&(t=new T),this.reqImpl("DELETE",e,t)},e.prototype.putCore=function(e,t){return void 0===e&&(e={}),void 0===t&&(t=new T),this.reqImpl("PUT",e,t)},e.prototype.reqImpl=function(e,t,n){var r=this;return void 0===t&&(t={}),this.getRequestPipeline(e,t,n).then(function(o){return r.toRequestContext(e,t,n,o)}).then(function(e){return u(e)})},e.prototype.append=function(e){this._url=Object(p.d)(this._url,e)},Object.defineProperty(e.prototype,"parentUrl",{get:function(){return this._parentUrl},enumerable:!0,configurable:!0}),e.prototype.extend=function(e,t){this._parentUrl=e._url,this._url=Object(p.d)(this._parentUrl,t||""),this.configureFrom(e)},e.prototype._clone=function(e,t){return e.configureFrom(this),this._useCaching&&(e._cloneParentWasCaching=!0,e._cloneParentCacheOptions=this._cachingOptions),e},e.prototype.getRequestPipeline=function(e,t,n){var r=this;return void 0===t&&(t={}),new Promise(function(e){e(Object(p.q)(r._requestPipeline)&&Object(p.k)(r._requestPipeline)?r._requestPipeline:l())})},e}(),_=function(e){function t(){var t=e.call(this)||this;return t._batch=null,t._batchDependency=null,t}return r(t,e),t.prototype.inBatch=function(e){if(null!==this.batch)throw Error("This query is already part of a batch.");return Object(p.q)(e)&&(this._batch=e),this},t.prototype.toUrl=function(){return this._url},t.prototype.get=function(e,t){return void 0===e&&(e=new b),void 0===t&&(t={}),this.getCore(e,t)},t.prototype.getCore=function(t,n){return void 0===t&&(t=new b),void 0===n&&(n={}),e.prototype.getCore.call(this,t,n)},t.prototype.postCore=function(t,n){return void 0===t&&(t={}),void 0===n&&(n=new b),e.prototype.postCore.call(this,t,n)},t.prototype.patchCore=function(t,n){return void 0===t&&(t={}),void 0===n&&(n=new b),e.prototype.patchCore.call(this,t,n)},t.prototype.deleteCore=function(t,n){return void 0===t&&(t={}),void 0===n&&(n=new b),e.prototype.deleteCore.call(this,t,n)},t.prototype.putCore=function(t,n){return void 0===t&&(t={}),void 0===n&&(n=new b),e.prototype.putCore.call(this,t,n)},t.prototype.reqImpl=function(t,n,r){return void 0===n&&(n={}),this.hasBatch&&(this._batchDependency=this.addBatchDependency()),e.prototype.reqImpl.call(this,t,n,r)},t.prototype.addBatchDependency=function(){return null!==this._batch?this._batch.addDependency():function(){return null}},Object.defineProperty(t.prototype,"hasBatch",{get:function(){return Object(p.q)(this._batch)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"batch",{get:function(){return this.hasBatch?this._batch:null},enumerable:!0,configurable:!0}),t.prototype._clone=function(t,n){return t=e.prototype._clone.call(this,t,n),n.includeBatch&&(t=t.inBatch(this._batch)),t},t}(I),C=function(){function e(e){void 0===e&&(e=Object(p.h)()),this._batchId=e,this._reqs=[],this._deps=[],this._rDeps=[]}return Object.defineProperty(e.prototype,"batchId",{get:function(){return this._batchId},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"requests",{get:function(){return this._reqs},enumerable:!0,configurable:!0}),e.prototype.add=function(e,t,n,r,o){var i={id:o,method:t.toUpperCase(),options:n,parser:r,reject:null,resolve:null,url:e},s=new Promise(function(e,t){i.resolve=e,i.reject=t});return this._reqs.push(i),s},e.prototype.addDependency=function(){var e=function(){};return this._deps.push(new Promise(function(t){e=t})),e},e.prototype.addResolveBatchDependency=function(e){this._rDeps.push(e)},e.prototype.execute=function(){var e=this;return Promise.all(this._deps).then(function(){return Promise.all(e._deps)}).then(function(){return e.executeImpl()}).then(function(){return Promise.all(e._rDeps)}).then(function(){})},e}()},function(e,t,n){"use strict";n.d(t,"a",function(){return r});var r=function(){function e(e,t,n){this.level=t,this.id=e.Id,this.label=e.Name,this.hoverText=e.LocalCustomProperties._Sys_Nav_HoverText,this.pathDepth=e.PathDepth;var r=e.LocalCustomProperties._Sys_Nav_SimpleLinkUrl||e.LocalCustomProperties._Sys_Nav_TargetUrl;r&&(this.url=n&&0===r.indexOf("~sitecollection")?n+r.substring("~sitecollection".length):r),this.items=[]}return e.prototype.hasChildren=function(){return this.items&&this.items.length>0},e.prototype.command=function(){this.url&&(window.location.href=this.url)},e}()},function(e,t,n){"use strict";var r=n(15),o=(n.n(r),n(16)),i=(n.n(o),this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))(function(o,i){function s(e){try{u(r.next(e))}catch(e){i(e)}}function a(e){try{u(r.throw(e))}catch(e){i(e)}}function u(e){e.done?o(e.value):new n(function(t){t(e.value)}).then(s,a)}u((r=r.apply(e,t||[])).next())})}),s=this&&this.__generator||function(e,t){function n(e){return function(t){return r([e,t])}}function r(n){if(o)throw new TypeError("Generator is already executing.");for(;u;)try{if(o=1,i&&(s=i[2&n[0]?"return":n[0]?"throw":"next"])&&!(s=s.call(i,n[1])).done)return s;switch(i=0,s&&(n=[0,s.value]),n[0]){case 0:case 1:s=n;break;case 4:return u.label++,{value:n[1],done:!1};case 5:u.label++,i=n[1],n=[0];continue;case 7:n=u.ops.pop(),u.trys.pop();continue;default:if(s=u.trys,!(s=s.length>0&&s[s.length-1])&&(6===n[0]||2===n[0])){u=0;continue}if(3===n[0]&&(!s||n[1]>s[0]&&n[1]",o=new Headers,o.append("accept","application/json"),o.append("content-type","application/xml"),i={headers:o,body:n},[4,this.context.spHttpClient.post(this.clientServiceUrl,r.SPHttpClient.configurations.v1,i)];case 2:return a=s.sent(),[4,a.json()];case 3:return u=s.sent(),c=u.find(function(e){return"SP.Taxonomy.Term"===e._ObjectType_}),c&&c.Labels&&c.Labels._Child_Items_&&(t=c.Labels._Child_Items_.map(function(e){return e.Value})),[3,5];case 4:return l=s.sent(),t=null,console.log(l.message),[3,5];case 5:return[2,t]}})})},e.prototype.getTermStores=function(){var e=this,t=new Headers;t.append("accept","application/json"),t.append("content-type","application/xml");var n={headers:t,body:''};return this.context.spHttpClient.post(this.clientServiceUrl,r.SPHttpClient.configurations.v1,n).then(function(t){return t.json().then(function(t){var n=t.filter(function(e){return"SP.Taxonomy.TermStore"===e._ObjectType_});return n.length>0?e.props.termsetNameOrID?n.map(function(t){var n=t.Groups._Child_Items_;if(e.props.termsetNameOrID){var r=e.props.termsetNameOrID;n=n.map(function(t){return t.TermSets._Child_Items_=t.TermSets._Child_Items_.filter(function(t){return t.Name===r||e.cleanGuid(t.Id).toLowerCase()===e.cleanGuid(r).toLowerCase()}),t})}return n=n.filter(function(e){return!e.IsSystemGroup}),n=n.filter(function(e){return e.TermSets._Child_Items_.length>0}),t.Groups._Child_Items_=n,t}):n:[]})})},e.prototype.getTermSet=function(){return i(this,void 0,void 0,function(){var e;return s(this,function(t){switch(t.label){case 0:return[4,this.getTermStores()];case 1:return e=t.sent(),[2,this.getTermSetId(e,this.props.termsetNameOrID)]}})})},e.prototype.getAllTerms=function(e,t,n,o){return void 0===o&&(o=!0),i(this,void 0,void 0,function(){var i,a,u,c,l,p,d,h=this;return s(this,function(s){switch(s.label){case 0:return i=e,this.isGuid(e)?[3,2]:[4,this.getTermStores()];case 1:if(a=s.sent(),!(u=this.getTermSetId(a,e)))return[2,null];i=this.cleanGuid(u.Id),s.label=2;case 2:return(c=this.getTermsById(i,o))?[2,c]:(l=''+i+'',p=new Headers,p.append("accept","application/json"),p.append("content-type","application/xml"),d={headers:p,body:l},[2,this.context.spHttpClient.post(this.clientServiceUrl,r.SPHttpClient.configurations.v1,d).then(function(e){return e.json().then(function(e){var r=e.filter(function(e){return"SP.Taxonomy.TermSet"===e._ObjectType_});if(r.length>0){var s=r[0];s.Terms=[];var a=e.filter(function(e){return"SP.Taxonomy.TermCollection"===e._ObjectType_});if(a.length>0){var u=a[0]._Child_Items_;!0===t&&(u=u.filter(function(e){return!1===e.IsDeprecated})),!0===n&&(u=u.filter(function(e){return!0===e.IsAvailableForTagging})),u=u.map(function(e){return e.IsRoot?e.CustomSortOrderIndex=s.CustomSortOrder?s.CustomSortOrder.split(":").indexOf(h.cleanGuid(e.Id)):-1:e.CustomSortOrderIndex=e.Parent.CustomSortOrder?e.Parent.CustomSortOrder.split(":").indexOf(h.cleanGuid(e.Id)):-1,e.Id=h.cleanGuid(e.Id),e.PathDepth=e.PathOfTerm.split(";").length,e.TermSet={Id:h.cleanGuid(s.Id),Name:s.Name},e.Parent&&(e.ParentId=h.cleanGuid(e.Parent.Id)),e}),u.length>0&&(u=h.sortTerms(u),s.Terms=u)}try{o&&window.sessionStorage&&window.sessionStorage.setItem(i,JSON.stringify(s))}catch(e){}return s}return null})})])}})})},e.prototype.searchTermsByName=function(e){return this.searchTermsByTermSet(e)},e.prototype.searchTermsByTermId=function(e,t){return i(this,void 0,void 0,function(){var n,r,o,i,a,u,c;return s(this,function(s){switch(s.label){case 0:return n=this.props.useSessionStorage,r=this.getTermsById(t,n),r?[2,this.searchTermsBySearchText(r,e)]:[3,1];case 1:return o=this.props,i=o.termsetNameOrID,a=o.hideDeprecatedTags,u=o.hideTagsNotAvailableForTagging,[4,this.getAllTermsByAnchorId(i,t,a,u,n)];case 2:if(c=s.sent())return[2,this.searchTermsBySearchText(c,e)];s.label=3;case 3:return[2,null]}})})},e.prototype.getAllTermsByAnchorId=function(e,t,n,r,o){return void 0===o&&(o=!0),i(this,void 0,void 0,function(){var i,a,u,c,l,p,d,h=this;return s(this,function(s){switch(s.label){case 0:return i=[],a=this.getTermsById(t,o),a?[2,a]:[4,this.getAllTerms(e,n,r)];case 1:if(u=s.sent(),c=u.Terms,t){if(l=c.filter(function(e){return e.Id.toLowerCase()===t.toLowerCase()}).shift()){p=l.PathOfTerm+";",d=c.filter(function(e){return e.PathOfTerm.substring(0,p.length)===p&&e.Id!==l.Id}),d.forEach(function(e){i.push(h.convertTermToPickerTerm(e))});try{o&&window.sessionStorage&&window.sessionStorage.setItem(t,JSON.stringify(i))}catch(e){}}}else c.forEach(function(e){i.push(h.convertTermToPickerTerm(e))});return[2,i]}})})},e.prototype.cleanGuid=function(e){return void 0!==e?e.replace("/Guid(","").replace("/","").replace(")",""):""},e.prototype.getTermSetId=function(e,t){if(e&&e.length>0&&t){var n=e[0];if(n.Groups&&n.Groups._Child_Items_)for(var r=0,o=n.Groups._Child_Items_;r-1}):[]},e.prototype.searchTermsByTermSet=function(e){var t=this;return new Promise(function(n){t.getTermStores().then(function(o){var i=t.props.termsetNameOrID;if(!t.isGuid(i)){var s=t.getTermSetId(o,i);if(!s)return void n(null);i=t.cleanGuid(s.Id)}if(void 0===o||0===o.length)return void n(null);var u="de-de"===t.context.pageContext.cultureInfo.currentUICultureName?1031:1033,c={start:e,lcid:0!==u?u:t.context.pageContext.web.language,sspList:t.cleanGuid(o[0].Id),termSetList:i,anchorId:t.props.anchorId?t.props.anchorId:a,isSpanTermStores:!1,isSpanTermSets:!1,isIncludeUnavailable:!0===t.props.hideTagsNotAvailableForTagging,isIncludeDeprecated:!0===t.props.hideDeprecatedTags,isAddTerms:!1,isIncludePathData:!1,excludeKeyword:!1,excludedTermset:a},l=new Headers;l.append("accept","application/json"),l.append("content-type","application/json");var p={headers:l,body:JSON.stringify(c)};return t.context.spHttpClient.post(t.suggestionServiceUrl,r.SPHttpClient.configurations.v1,p).then(function(e){return e.json().then(function(e){var r=e.d.Groups;if(r&&r.length>0){var o=r[0].Suggestions;if(o.length>0){var i=o.map(function(e){return t.convertSuggestTermToPickerTerm(e)});return void n(i)}}n([])})})})})},e.prototype.isGuid=function(e){return/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/.test(e)},e.prototype.sortTerms=function(e){for(var t=[],n=!0,r=1;n;){var i=e.filter(function(e){return e.PathDepth===r});if(i&&i.length>0){if(i=i.sort(this.sortTermByPath),1!==r){i=i.reverse();for(var s=0,a=i;st.PathOfTerm.toLowerCase()?1:0:e.CustomSortOrderIndext.CustomSortOrderIndex?1:0},e.prototype.convertTermToPickerTerm=function(e){return{key:this.cleanGuid(e.Id),name:e.Name,path:e.PathOfTerm,termSet:this.cleanGuid(e.TermSet.Id),termSetName:e.TermSet.Name}},e.prototype.convertSuggestTermToPickerTerm=function(e){var t="",n="";if(e.Paths&&e.Paths.length>0){var r=e.Paths[0].replace(/^\[/,"").replace(/\]$/,""),o=r.split(":");t=o.join(";")+";"+e.DefaultLabel,n=o[0]}return{key:this.cleanGuid(e.Id),name:e.DefaultLabel,path:t,termSet:a,termSetName:n}},e}();t.a=u},function(e,t){e.exports=o},function(e,t){e.exports=i},function(e,t,n){"use strict";n.d(t,"a",function(){return r});var r=function(){function e(){}return e.prototype.Get=function(e){return this[e]},e.prototype.Add=function(e,t){this[e]=t},e}()},function(e,t,n){"use strict";n.d(t,"a",function(){return i});var r=n(19),o=(n.n(r),n(20)),i=function(){function e(e,t,n){this.context=e,this.menuItems=t,this.updateCallback=n}return e.prototype.render=function(e){var t=this;e.innerHTML="",e.id="CustomNavigation";var n=document.createElement("nav");n.id="Mega-Menu",n.className="mega-menu-main",n.setAttribute("role","navigation"),n.setAttribute("aria-label","Hauptnavigation");var o=document.createElement("ul");o.setAttribute("role","menubar"),this.menuItems.forEach(function(e){var n=t.createTopLevelItem(e);o.appendChild(n)}),this.context.pageContext.web.permissions.hasPermission(r.SPPermission.manageWeb)&&o.appendChild(this.createSettingsItem()),n.appendChild(o),e.appendChild(n),this.attachEventListeners(),this.createScreenReaderAnnouncer()},e.prototype.createSettingsItem=function(){var e=this,t=document.createElement("li");t.setAttribute("role","none");var n=document.createElement("button");n.type="button",n.className="menu-item-link menu-item-settings",n.setAttribute("role","menuitem"),n.setAttribute("tabindex","0"),n.setAttribute("aria-haspopup","false"),n.setAttribute("aria-label","Einstellungen"),n.title="Einstellungen";var r=document.createElement("span");return r.className="ms-Icon ms-Icon--Settings menu-item-settings__icon",r.setAttribute("aria-hidden","true"),n.appendChild(r),n.addEventListener("click",function(){return e.openSettings()}),n.addEventListener("keydown",function(t){"Enter"!==t.key&&" "!==t.key||(t.preventDefault(),e.openSettings())}),t.appendChild(n),t},e.prototype.openSettings=function(){this._settingsPanel||(this._settingsPanel=new o.a(this.context,this.updateCallback)),this._settingsPanel.open()},e.prototype.createTopLevelItem=function(e){var t=document.createElement("li");t.setAttribute("role","none");var n=this.createTopLevelElement(e);if(t.appendChild(n),e.hasChildren()&&e.items&&e.items.length>0){var r=this.createMegaMenu(e);t.appendChild(r)}return t},e.prototype.createTopLevelElement=function(e){var t;return e.url?(t=document.createElement("a"),t.href=e.url,t.className="menu-item-link"):(t=document.createElement("span"),t.className="menu-item-text",t.setAttribute("tabindex","0")),t.setAttribute("role","menuitem"),t.setAttribute("aria-haspopup","true"),t.setAttribute("aria-expanded","false"),t.textContent=e.label,e.hoverText&&(t.title=e.hoverText),t},e.prototype.createMegaMenu=function(e){var t=this,n=document.createElement("div");n.className="mega-menu",n.setAttribute("role","menu"),n.setAttribute("aria-label",e.label+" Unterkategorien");var r=document.createElement("div");return r.className="mega-menu-grid",e.items&&e.items.forEach(function(e){var n=t.createCategorySection(e);r.appendChild(n)}),n.appendChild(r),n},e.prototype.createCategorySection=function(e){var t=document.createElement("div");t.className="mega-menu-category";var n=document.createElement("h3");if(e.url){var r=document.createElement("a");r.href=e.url,r.textContent=e.label,e.hoverText&&(r.title=e.hoverText),n.appendChild(r)}else{var o=document.createElement("span");o.textContent=e.label,e.hoverText&&(o.title=e.hoverText),n.appendChild(o)}if(t.appendChild(n),e.hasChildren()&&e.items&&e.items.length>0){var i=document.createElement("ul");e.items.forEach(function(e){var t=document.createElement("li"),n=document.createElement("a");n.href=e.url||"#",n.textContent=e.label,e.hoverText&&(n.title=e.hoverText),t.appendChild(n),i.appendChild(t)}),t.appendChild(i)}return t},e.prototype.attachEventListeners=function(){for(var e=document.querySelectorAll('#Mega-Menu > ul > li > a, #Mega-Menu > ul > li > span[role="menuitem"]'),t=0;t ul > li > a, #Mega-Menu > ul > li > span");o||i||s||a||(console.log("Schließe Menu wegen Focus-Verlust"),n.closeMegaMenu(e,t))},150)})},e.prototype.attachGlobalKeyboardNavigation=function(){var e=this;document.addEventListener("keydown",function(t){var n=document.activeElement;if("Escape"===t.key){var r=document.querySelector('.mega-menu[aria-expanded="true"]');if(r){var o=r.previousElementSibling;e.closeMegaMenu(o,r),o.focus()}}if("Tab"===t.key){if(!t.shiftKey){var i=n.closest("#Mega-Menu > ul > li > a, #Mega-Menu > ul > li > span");if(i){var s=i.closest("li"),a=s.querySelector(".mega-menu.js-open");if(a){t.preventDefault();var u=a.querySelector("a");return void(u&&u.focus())}}}if(t.shiftKey){var a=n.closest(".mega-menu");if(a&&a.classList.contains("js-open")){if(n===a.querySelectorAll("a")[0]){t.preventDefault();return void a.previousElementSibling.focus()}}}}})},e.prototype.openMegaMenu=function(e,t){e.setAttribute("aria-expanded","true"),t.setAttribute("aria-expanded","true"),t.classList.add("js-open"),console.log("Menu geöffnet:",e.textContent)},e.prototype.closeMegaMenu=function(e,t){e.setAttribute("aria-expanded","false"),t.setAttribute("aria-expanded","false"),t.classList.remove("js-open"),console.log("Menu geschlossen:",e.textContent)},e.prototype.toggleMegaMenu=function(e,t){"true"===e.getAttribute("aria-expanded")?this.closeMegaMenu(e,t):(this.closeAllMegaMenus(),this.openMegaMenu(e,t))},e.prototype.closeAllMegaMenus=function(){for(var e=document.querySelectorAll('#Mega-Menu > ul > li > a[aria-expanded="true"], #Mega-Menu > ul > li > span[aria-expanded="true"]'),t=0;t0&&s[s.length-1])&&(6===n[0]||2===n[0])){u=0;continue}if(3===n[0]&&(!s||n[1]>s[0]&&n[1]\n

Einstellungen

\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n "},e.prototype._save=function(){if(this._panelElement){var e=this._panelElement.querySelector("#mm-setting-termset"),t=this._panelElement.querySelector("#mm-setting-css");this.saveApplicationCustomizerProps({termSetName:e&&e.value?e.value:"",cssUrl:t&&t.value?t.value:""}),this.close()}},e.prototype._trapFocus=function(e){if(this._panelElement){var t=this._panelElement.querySelectorAll("button, input");if(t&&0!==t.length){var n=t[0],r=t[t.length-1],o=document.activeElement;e.shiftKey&&o===n?(e.preventDefault(),r.focus()):e.shiftKey||o!==r||(e.preventDefault(),n.focus())}}},e.prototype._escape=function(e){return e?e.replace(/&/g,"&").replace(/"/g,""").replace(//g,">"):""},e}()},function(e,t,n){"use strict";n.d(t,"a",function(){return a});var r=n(0),o=n(5),i=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))(function(o,i){function s(e){try{u(r.next(e))}catch(e){i(e)}}function a(e){try{u(r.throw(e))}catch(e){i(e)}}function u(e){e.done?o(e.value):new n(function(t){t(e.value)}).then(s,a)}u((r=r.apply(e,t||[])).next())})},s=this&&this.__generator||function(e,t){function n(e){return function(t){return r([e,t])}}function r(n){if(o)throw new TypeError("Generator is already executing.");for(;u;)try{if(o=1,i&&(s=i[2&n[0]?"return":n[0]?"throw":"next"])&&!(s=s.call(i,n[1])).done)return s;switch(i=0,s&&(n=[0,s.value]),n[0]){case 0:case 1:s=n;break;case 4:return u.label++,{value:n[1],done:!1};case 5:u.label++,i=n[1],n=[0];continue;case 7:n=u.ops.pop(),u.trys.pop();continue;default:if(s=u.trys,!(s=s.length>0&&s[s.length-1])&&(6===n[0]||2===n[0])){u=0;continue}if(3===n[0]&&(!s||n[1]>s[0]&&n[1]ul{margin:0;list-style:none;padding-inline-start:0;display:-ms-grid;display:grid;-ms-grid-columns:(minmax(120px,1fr)) [auto-fit];grid-template-columns:repeat(auto-fit,minmax(120px,1fr));width:100%}.mega-menu-main>ul>li{position:static}.mega-menu-main>ul>li>a,.mega-menu-main>ul>li>span[role=menuitem]{display:block;padding:15px 20px;transition:all .3s ease;outline:0;cursor:pointer}@media (max-width:900px){.mega-menu-main>ul>li>a,.mega-menu-main>ul>li>span[role=menuitem]{font-size:17px}}.mega-menu-main>ul>li:hover>a,.mega-menu-main>ul>li:hover>span[role=menuitem]{color:"[theme:white, default: #ffffff]";background:"[theme:themeLighter, default: #deecf9]"}.mega-menu-main>ul>li>a:focus,.mega-menu-main>ul>li>span[role=menuitem]:focus{color:"[theme:white, default: #ffffff]"}.mega-menu-main>ul>li>a:active,.mega-menu-main>ul>li>span[role=menuitem]:active{transform:translateY(0)}.mega-menu{position:absolute;left:0;right:0;top:100%;width:100%;background:"[theme:white, default: #ffffff]";box-shadow:0 4px 12px rgba(0,0,0,.15);display:none;padding:40px;max-height:calc(100vh - 60px);overflow-y:auto;z-index:1000;visibility:hidden;opacity:0;transition:visibility 0s,opacity .3s}.mega-menu-main>ul>li:hover .mega-menu{visibility:visible;opacity:1;display:block}.mega-menu.js-open{visibility:visible!important;opacity:1!important;display:block!important}.mega-menu-grid{max-width:none;margin:0 auto;display:-ms-grid;display:grid;-ms-grid-columns:(minmax(200px,1fr)) [auto-fit];grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:30px}.mega-menu-category{border-right:1px solid #d3d3d3}.mega-menu-category>h3{margin-bottom:12px;padding-bottom:8px}.mega-menu-category>h3>a,.mega-menu-category>h3>span{color:"[theme:neutralPrimary, default: #333333]";font-size:16px;font-weight:700;display:block}.mega-menu-category>h3>a{text-decoration:none;padding:0;border-radius:0;transition:color .2s ease;outline:0}.mega-menu-category>h3>a:hover{color:"[theme:themePrimary, default: #0078d7]"}.mega-menu-category>h3>a:focus{color:"[theme:white, default: #ffffff]";background:"[theme:error, default: #a80000]";text-decoration:none;padding:4px 0;margin:-4px -8px}.mega-menu-category ul{list-style:none;padding-inline-start:0}.mega-menu-category ul li{margin-bottom:4px}.mega-menu-category ul li a{color:"[theme:neutralSecondary, default: #666666]";text-decoration:none;font-size:14px;transition:all .2s ease;display:block;padding:4px 0;border-radius:4px;outline:0}.mega-menu-category ul li a:hover{padding-left:12px}.mega-menu-category ul li a:focus{color:"[theme:white, default: #ffffff]";padding-left:12px}.mega-menu-category ul li a{position:relative}@media (prefers-contrast:high){.mega-menu-main>ul>li>a:focus,.mega-menu-main>ul>li>span[role=menuitem]:focus{outline:4px solid;outline-offset:2px}.mega-menu-category>h3>a:focus,.mega-menu-category ul li a:focus{outline:3px solid;outline-offset:2px}}.content{padding:40px;max-width:1200px;margin:0 auto}.menu-item-link,.menu-item-text{display:block;padding:15px 20px;color:"[theme:neutralPrimary, default: #333333]";font-weight:600;transition:all .3s ease;border-bottom:3px solid transparent;outline:0;text-decoration:none}.menu-item-text{cursor:pointer}.menu-item-link:hover,.menu-item-text:hover{background-color:"[theme:neutralLighter, default: #f4f4f4]"}.menu-item-link:focus,.menu-item-text:focus{background-color:"[theme:themeDarker, default: #004578]";color:"[theme:white, default: #ffffff]"}.menu-item-settings{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;background:0 0;border:none;cursor:pointer;font:inherit;padding:15px 20px;color:"[theme:neutralPrimary, default: #333333]"}.menu-item-settings:hover{background-color:"[theme:neutralLighter, default: #f4f4f4]"}.menu-item-settings:focus{background-color:"[theme:themeDarker, default: #004578]";color:"[theme:white, default: #ffffff]"}.menu-item-settings__icon{font-size:18px;line-height:1;display:inline-block;transform:translateY(2px)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.mm-settings-overlay{position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:4000;animation:mmFadeIn .2s ease}.mm-settings-panel{position:fixed;top:0;right:0;height:100vh;width:480px;max-width:100%;background:"[theme:white, default: #ffffff]";box-shadow:-4px 0 12px rgba(0,0,0,.2);z-index:4001;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;font-size:17px;font-weight:300;font-family:Segoe UI,"Segoe UI Web (West European)",-apple-system,BlinkMacSystemFont,Roboto,Helvetica Neue,sans-serif;animation:mmSlideIn .25s ease}@media (max-width:600px){.mm-settings-panel{width:100%}}.mm-settings-header{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;padding:16px 20px;border-bottom:1px solid}.mm-settings-title{margin:0;font-size:18px;font-weight:600;font-size:17px;font-weight:300}.mm-settings-close{background:0 0;border:none;font-size:16px;line-height:1;cursor:pointer;padding:4px 8px;font-size:17px;font-weight:300}.mm-settings-close:focus{outline:3px solid;outline-offset:2px}.mm-settings-body{padding:20px;overflow-y:auto;-ms-flex:1;flex:1;font-size:14px;font-weight:400}.mm-settings-field{margin-bottom:16px}.mm-settings-field label{display:block;margin-bottom:4px;font-weight:600}.mm-settings-field input[type=text],.mm-settings-field label{color:"[theme:neutralPrimary, default: #333333]";font-size:14px;font-weight:400}.mm-settings-field input[type=text]{width:100%;padding:8px 12px;border:1px solid;border-radius:2px;box-sizing:border-box;background:"[theme:white, default: #ffffff]"}.mm-settings-field input[type=text]:focus{outline:3px solid;border-color:"[theme:themePrimary, default: #0078d7]"}.mm-settings-footer{padding:14px 20px;border-top:1px solid;display:-ms-flexbox;display:flex;gap:10px;-ms-flex-pack:end;justify-content:flex-end}.mm-settings-cancel,.mm-settings-save{cursor:pointer;border:none;border-radius:4px;padding:8px 16px;font-weight:600;font-size:14px;font-weight:400}.mm-settings-save{background:"[theme:themePrimary, default: #0078d7]";color:"[theme:white, default: #ffffff]"}.mm-settings-save:hover{background:"[theme:themeSecondary, default: #2b88d8]"}.mm-settings-cancel{background:"[theme:neutralTertiaryAlt, default: #c8c8c8]";color:"[theme:neutralPrimary, default: #333333]"}.mm-settings-cancel:hover{background:"[theme:neutralTertiary, default: #a6a6a6]"}.mm-settings-cancel:focus,.mm-settings-save:focus{outline:3px solid;outline-offset:2px}@keyframes mmSlideIn_09a8e1a7{0%{transform:translateX(40px);opacity:0}to{transform:translateX(0);opacity:1}}@keyframes mmFadeIn_09a8e1a7{0%{opacity:0}to{opacity:1}}',""])},function(e,t){function n(e,t){var n=e[1]||"",o=e[3];if(!o)return n;if(t&&"function"==typeof btoa){var i=r(o);return[n].concat(o.sources.map(function(e){return"/*# sourceURL="+o.sourceRoot+e+" */"})).concat([i]).join("\n")}return[n].join("\n")}function r(e){return"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(e))))+" */"}e.exports=function(e){var t=[];return t.toString=function(){return this.map(function(t){var r=n(t,e);return t[2]?"@media "+t[2]+"{"+r+"}":r}).join("")},t.i=function(e,n){"string"==typeof e&&(e=[[null,e,""]]);for(var r={},o=0;o0&&u(t)})}function a(){return setTimeout(function(){O.runState.flushTimer=0,s()},0)}function u(e,t){O.loadStyles?O.loadStyles(f(e).styleString,e):S?m(e,t):g(e)}function c(e){O.theme=e,d()}function l(e){void 0===e&&(e=3),3!==e&&2!==e||(p(O.registeredStyles),O.registeredStyles=[]),3!==e&&1!==e||(p(O.registeredThemableStyles),O.registeredThemableStyles=[])}function p(e){e.forEach(function(e){var t=e&&e.styleElement;t&&t.parentElement&&t.parentElement.removeChild(t)})}function d(){if(O.theme){for(var e=[],t=0,n=O.registeredThemableStyles;t0&&(l(1),u([].concat.apply([],e)))}}function h(e){return e&&(e=f(y(e)).styleString),e}function f(e){var t=O.theme,n=!1;return{styleString:(e||[]).map(function(e){var r=e.theme;if(r){n=!0;var o=t?t[r]:void 0,i=e.defaultValue||"inherit";return t&&!o&&console,o||i}return e.rawString}).join(""),themable:n}}function y(e){var t=[];if(e){for(var n=0,r=void 0;r=w.exec(e);){var o=r.index;o>n&&t.push({rawString:e.substring(n,o)}),t.push({theme:r[1],defaultValue:r[2]}),n=w.lastIndex}t.push({rawString:e.substring(n)})}return t}function g(e){var t=document.getElementsByTagName("head")[0],n=document.createElement("style"),r=f(e),o=r.styleString,i=r.themable;n.type="text/css",n.appendChild(document.createTextNode(o)),O.perf.count++,t.appendChild(n);var s={styleElement:n,themableStyle:e};i?O.registeredThemableStyles.push(s):O.registeredStyles.push(s)}function m(e,t){var n=document.getElementsByTagName("head")[0],r=O.registeredStyles,o=O.lastStyleElement,i=o?o.styleSheet:void 0,s=i?i.cssText:"",a=r[r.length-1],u=f(e).styleString;(!o||s.length+u.length>I)&&(o=document.createElement("style"),o.type="text/css",t?(n.replaceChild(o,t.styleElement),t.styleElement=o):n.appendChild(o),t||(a={styleElement:o,themableStyle:e},r.push(a))),o.styleSheet.cssText+=h(u),Array.prototype.push.apply(a.themableStyle,e),O.lastStyleElement=o}function b(){var e=!1;if("undefined"!=typeof document){var t=document.createElement("style");t.type="text/css",e=!!t.styleSheet}return e}var v=this&&this.__assign||Object.assign||function(e){for(var t,n=1,r=arguments.length;n=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s}function i(e,t,n,r){return new(n||(n=Promise))(function(o,i){function s(e){try{u(r.next(e))}catch(e){i(e)}}function a(e){try{u(r.throw(e))}catch(e){i(e)}}function u(e){e.done?o(e.value):new n(function(t){t(e.value)}).then(s,a)}u((r=r.apply(e,t||[])).next())})}function s(e,t){function n(e){return function(t){return r([e,t])}}function r(n){if(o)throw new TypeError("Generator is already executing.");for(;u;)try{if(o=1,i&&(s=2&n[0]?i.return:n[0]?i.throw||((s=i.return)&&s.call(i),0):i.next)&&!(s=s.call(i,n[1])).done)return s;switch(i=0,s&&(n=[2&n[0],s.value]),n[0]){case 0:case 1:s=n;break;case 4:return u.label++,{value:n[1],done:!1};case 5:u.label++,i=n[1],n=[0];continue;case 7:n=u.ops.pop(),u.trys.pop();continue;default:if(s=u.trys,!(s=s.length>0&&s[s.length-1])&&(6===n[0]||2===n[0])){u=0;continue}if(3===n[0]&&(!s||n[1]>s[0]&&n[1]-1?e.substr(0,t):e}function u(e){var t=[],n=["odata.type","odata.editLink","__metadata","odata.metadata"];return Object(g.j)(e,n[0])&&"SP.Web"===e[n[0]]?Object(g.j)(e,n[1])?t.push(e[n[1]]):Object(g.j)(e,n[2])&&t.push(e.__metadata.uri):Object(g.j)(e,n[3])&&Object(g.j)(e,n[1])?t.push(a(e[n[3]]),"_api",e[n[1]]):Object(g.j)(e,n[1])?t.push("_api",e[n[1]]):Object(g.j)(e,n[2])&&t.push(e.__metadata.uri),t.length<1?(b.a.write("No uri information found in ODataEntity parsing, chaining will fail for this object.",2),""):g.d.apply(void 0,t)}function c(e){return new O(e)}function l(e){g.c.extend(e)}function p(e){return new Promise(function(t){if(Object(g.m)(e))return t(e);if(null!==I.baseUrl)return t(Object(g.d)(I.baseUrl,e));if(void 0!==x._spPageContextInfo){if(Object(g.j)(x._spPageContextInfo,"webAbsoluteUrl"))return t(Object(g.d)(x._spPageContextInfo.webAbsoluteUrl,e));if(Object(g.j)(x._spPageContextInfo,"webServerRelativeUrl"))return t(Object(g.d)(x._spPageContextInfo.webServerRelativeUrl,e))}if(void 0!==x.location){var n=x.location.toString().toLowerCase();["/_layouts/","/siteassets/"].forEach(function(r){var o=n.indexOf(r);if(o>0)return t(Object(g.d)(n.substr(0,o),e))})}return t(e)})}function d(e){return{__metadata:{type:e}}}function h(e){return function(t){return function(t){function n(){for(var n=[],r=0;r1&&void 0!==n[1]?n[1]:e)||this}return r(n,t),n}(t)}}function f(e){return e.length<1?1:Math.max.apply(null,e.map(function(e){return e.order}))+1}function y(e){for(var t=0;tt.lastIndexOf("(")){var o=t.lastIndexOf("/");r._parentUrl=t.slice(0,o),n=Object(g.d)(t.slice(o),n),r._url=Object(g.d)(r._parentUrl,n)}else{var o=t.lastIndexOf("(");r._parentUrl=t.slice(0,o),r._url=Object(g.d)(t,n)}else{r.extend(t,n);var i=t.query.get("@target");void 0!==i&&r.query.set("@target",i)}return r}return r(t,e),t.prototype.as=function(e){var t=new e(this._url,null);return Object(g.f)(t,this,!0)},t.prototype.toUrlAndQuery=function(){var e=new Map(this.query),t=this.toUrl().replace(/'!(@.*?)::(.*?)'/gi,function(t,n,r){return b.a.write("Rewriting aliased parameter from match "+t+" to label: "+n+" value: "+r,0),e.set(n,"'"+r+"'"),n});if(e.size>0){t+=""+(t.indexOf("?")>-1?"&":"?")+Array.from(e).map(function(e){return e[0]+"="+e[1]}).join("&")}return t},t.prototype.select=function(){for(var e=[],t=0;t0&&this.query.set("$select",e.join(",")),this},t.prototype.expand=function(){for(var e=[],t=0;t0&&this.query.set("$expand",e.join(",")),this},t.prototype.getParent=function(e,t,n,r){void 0===t&&(t=this.parentUrl);var o=new e(t,n).configureFrom(this),i="@target";return this.query.has(i)&&o.query.set(i,this.query.get(i)),void 0!==r&&(o=o.inBatch(r)),o},t.prototype.clone=function(t,n,r){void 0===r&&(r=!0);var o=e.prototype._clone.call(this,new t(this,n),{includeBatch:r}),i="@target";return this.query.has(i)&&o.query.set(i,this.query.get(i)),o},t.prototype.toRequestContext=function(e,t,n,r){var o=this;void 0===t&&(t={});var i=this.hasBatch?this._batchDependency:function(){};return p(this.toUrlAndQuery()).then(function(s){return Object(g.p)(t,o._options),{batch:o.batch,batchDependency:i,cachingOptions:o._cachingOptions,clientFactory:function(){return new E},isBatched:o.hasBatch,isCached:o._forceCaching||o._useCaching&&/^get$/i.test(e),options:t,parser:n,pipeline:r,requestAbsoluteUrl:s,requestId:Object(g.h)(),verb:e}})},t}(v.h),j=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.filter=function(e){return this.query.set("$filter",e),this},t.prototype.orderBy=function(e,t){void 0===t&&(t=!0);var n="$orderby",r=this.query.has(n)?this.query.get(n).split(","):[];return r.push(e+" "+(t?"asc":"desc")),this.query.set(n,r.join(",")),this},t.prototype.skip=function(e){return this.query.set("$skip",e.toString()),this},t.prototype.top=function(e){return this.query.set("$top",e.toString()),this},t}(N),R=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype._update=function(e,t){var n=this;return function(r){return n.postCore({body:Object(g.n)(Object(g.f)(d(e),r)),headers:{"X-HTTP-Method":"MERGE"}}).then(function(e){return t(e,r)})}},t.prototype._delete=function(){return this.postCore({headers:{"X-HTTP-Method":"DELETE"}})},t.prototype._deleteWithETag=function(e){return void 0===e&&(e="*"),this.postCore({headers:{"IF-Match":e,"X-HTTP-Method":"DELETE"}})},t}(N),A=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,t.prototype.getById=function(e){return new k(this,"getById("+e+")")},t.prototype.getByEmail=function(e){return new k(this,"getByEmail('"+e+"')")},t.prototype.getByLoginName=function(e){var t=new k(this);return t.concat("('!@v::"+encodeURIComponent(e)+"')"),t},t.prototype.removeById=function(e){return this.clone(n,"removeById("+e+")").postCore()},t.prototype.removeByLoginName=function(e){var t=this.clone(n,"removeByLoginName(@v)");return t.query.set("@v","'"+encodeURIComponent(e)+"'"),t.postCore()},t.prototype.add=function(e){var t=this;return this.clone(n,null).postCore({body:Object(g.n)(Object(g.f)(d("SP.User"),{LoginName:e}))}).then(function(){return t.getByLoginName(e)})};var n;return t=n=o([h("siteusers")],t)}(j),U=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),Object.defineProperty(t.prototype,"groups",{get:function(){return new F(this,"groups")},enumerable:!0,configurable:!0}),t}(R),k=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.update=t._update("SP.User",function(e){return{data:e,user:t}}),t.delete=t._delete,t}return r(t,e),t}(U),L=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t=o([h("currentuser")],t)}(U);!function(e){e[e.None=0]="None",e[e.User=1]="User",e[e.DistributionList=2]="DistributionList",e[e.SecurityGroup=4]="SecurityGroup",e[e.SharePointGroup=8]="SharePointGroup",e[e.All=15]="All"}(m||(m={}));var D,F=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,t.prototype.getById=function(e){var t=new M(this);return t.concat("("+e+")"),t},t.prototype.add=function(e){var t=this,n=Object(g.n)(Object(g.f)(d("SP.Group"),e));return this.postCore({body:n}).then(function(e){return{data:e,group:t.getById(e.Id)}})},t.prototype.getByName=function(e){return new M(this,"getByName('"+e+"')")},t.prototype.removeById=function(e){return this.clone(n,"removeById('"+e+"')").postCore()},t.prototype.removeByLoginName=function(e){return this.clone(n,"removeByLoginName('"+e+"')").postCore()};var n;return t=n=o([h("sitegroups")],t)}(j),M=function(e){function t(){var n=null!==e&&e.apply(this,arguments)||this;return n.update=n._update("SP.Group",function(e,r){var o=n;return Object(g.j)(r,"Title")&&(o=n.getParent(t,n.parentUrl,"getByName('"+r.Title+"')")),{data:e,group:o}}),n}return r(t,e),Object.defineProperty(t.prototype,"users",{get:function(){return new A(this,"users")},enumerable:!0,configurable:!0}),t.prototype.setUserAsOwner=function(e){return i(this,void 0,void 0,function(){return s(this,function(n){return[2,this.clone(t,"SetUserAsOwner("+e+")").postCore()]})})},t}(R),B=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,t.prototype.getById=function(e){var t=new q(this);return t.concat("("+e+")"),t},t.prototype.add=function(e,t){return this.clone(n,"addroleassignment(principalid="+e+", roledefid="+t+")").postCore()},t.prototype.remove=function(e,t){return this.clone(n,"removeroleassignment(principalid="+e+", roledefid="+t+")").postCore()};var n;return t=n=o([h("roleassignments")],t)}(j),q=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.delete=t._delete,t}return r(t,e),Object.defineProperty(t.prototype,"groups",{get:function(){return new F(this,"groups")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"bindings",{get:function(){return new H(this)},enumerable:!0,configurable:!0}),t}(R),G=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.getById=function(e){return new W(this,"getById("+e+")")},t.prototype.getByName=function(e){return new W(this,"getbyname('"+e+"')")},t.prototype.getByType=function(e){return new W(this,"getbytype("+e+")")},t.prototype.add=function(e,t,n,r){var o=this,i=Object(g.n)({BasePermissions:{High:r.High.toString(),Low:r.Low.toString()},Description:t,Name:e,Order:n,__metadata:{type:"SP.RoleDefinition"}});return this.postCore({body:i}).then(function(e){return{data:e,definition:o.getById(e.Id)}})},t=o([h("roledefinitions")],t)}(j),W=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.delete=t._delete,t}return r(t,e),t.prototype.update=function(e){var t=this;void 0!==Object(g.j)(e,"BasePermissions")&&(e.BasePermissions=Object(g.f)({__metadata:{type:"SP.BasePermissions"}},{High:e.BasePermissions.High.toString(),Low:e.BasePermissions.Low.toString()}));var n=Object(g.n)(Object(g.f)(d("SP.RoleDefinition"),e));return this.postCore({body:n,headers:{"X-HTTP-Method":"MERGE"}}).then(function(n){var r=t;if(Object(g.j)(e,"Name")){r=t.getParent(G,t.parentUrl,"").getByName(e.Name)}return{data:n,definition:r}})},t}(R),H=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t=o([h("roledefinitionbindings")],t)}(j);!function(e){e[e.Display=1]="Display",e[e.Edit=2]="Edit",e[e.New=3]="New"}(D||(D={}));var K;!function(e){e[e.Invalid=0]="Invalid",e[e.Integer=1]="Integer",e[e.Text=2]="Text",e[e.Note=3]="Note",e[e.DateTime=4]="DateTime",e[e.Counter=5]="Counter",e[e.Choice=6]="Choice",e[e.Lookup=7]="Lookup",e[e.Boolean=8]="Boolean",e[e.Number=9]="Number",e[e.Currency=10]="Currency",e[e.URL=11]="URL",e[e.Computed=12]="Computed",e[e.Threading=13]="Threading",e[e.Guid=14]="Guid",e[e.MultiChoice=15]="MultiChoice",e[e.GridChoice=16]="GridChoice",e[e.Calculated=17]="Calculated",e[e.File=18]="File",e[e.Attachments=19]="Attachments",e[e.User=20]="User",e[e.Recurrence=21]="Recurrence",e[e.CrossProjectLink=22]="CrossProjectLink",e[e.ModStat=23]="ModStat",e[e.Error=24]="Error",e[e.ContentTypeId=25]="ContentTypeId",e[e.PageSeparator=26]="PageSeparator",e[e.ThreadIndex=27]="ThreadIndex",e[e.WorkflowStatus=28]="WorkflowStatus",e[e.AllDayEvent=29]="AllDayEvent",e[e.WorkflowEventType=30]="WorkflowEventType"}(K||(K={}));var V;!function(e){e[e.DateOnly=0]="DateOnly",e[e.DateTime=1]="DateTime"}(V||(V={}));var Q;!function(e){e[e.Unspecified=0]="Unspecified",e[e.Disabled=1]="Disabled",e[e.Relative=2]="Relative"}(Q||(Q={}));var z;!function(e){e[e.DefaultValue=0]="DefaultValue",e[e.AddToDefaultContentType=1]="AddToDefaultContentType",e[e.AddToNoContentType=2]="AddToNoContentType",e[e.AddToAllContentTypes=4]="AddToAllContentTypes",e[e.AddFieldInternalNameHint=8]="AddFieldInternalNameHint",e[e.AddFieldToDefaultView=16]="AddFieldToDefaultView",e[e.AddFieldCheckDisplayName=32]="AddFieldCheckDisplayName"}(z||(z={}));var X;!function(e){e[e.Gregorian=1]="Gregorian",e[e.Japan=3]="Japan",e[e.Taiwan=4]="Taiwan",e[e.Korea=5]="Korea",e[e.Hijri=6]="Hijri",e[e.Thai=7]="Thai",e[e.Hebrew=8]="Hebrew",e[e.GregorianMEFrench=9]="GregorianMEFrench",e[e.GregorianArabic=10]="GregorianArabic",e[e.GregorianXLITEnglish=11]="GregorianXLITEnglish",e[e.GregorianXLITFrench=12]="GregorianXLITFrench",e[e.KoreaJapanLunar=14]="KoreaJapanLunar",e[e.ChineseLunar=15]="ChineseLunar",e[e.SakaEra=16]="SakaEra",e[e.UmAlQura=23]="UmAlQura"}(X||(X={}));var J;!function(e){e[e.Hyperlink=0]="Hyperlink",e[e.Image=1]="Image"}(J||(J={}));var Y;!function(e){e[e.EmptyMask=0]="EmptyMask",e[e.ViewListItems=1]="ViewListItems",e[e.AddListItems=2]="AddListItems",e[e.EditListItems=3]="EditListItems",e[e.DeleteListItems=4]="DeleteListItems",e[e.ApproveItems=5]="ApproveItems",e[e.OpenItems=6]="OpenItems",e[e.ViewVersions=7]="ViewVersions",e[e.DeleteVersions=8]="DeleteVersions",e[e.CancelCheckout=9]="CancelCheckout",e[e.ManagePersonalViews=10]="ManagePersonalViews",e[e.ManageLists=12]="ManageLists",e[e.ViewFormPages=13]="ViewFormPages",e[e.AnonymousSearchAccessList=14]="AnonymousSearchAccessList",e[e.Open=17]="Open",e[e.ViewPages=18]="ViewPages",e[e.AddAndCustomizePages=19]="AddAndCustomizePages",e[e.ApplyThemeAndBorder=20]="ApplyThemeAndBorder",e[e.ApplyStyleSheets=21]="ApplyStyleSheets",e[e.ViewUsageData=22]="ViewUsageData",e[e.CreateSSCSite=23]="CreateSSCSite",e[e.ManageSubwebs=24]="ManageSubwebs",e[e.CreateGroups=25]="CreateGroups",e[e.ManagePermissions=26]="ManagePermissions",e[e.BrowseDirectories=27]="BrowseDirectories",e[e.BrowseUserInfo=28]="BrowseUserInfo",e[e.AddDelPrivateWebParts=29]="AddDelPrivateWebParts",e[e.UpdatePersonalWebParts=30]="UpdatePersonalWebParts",e[e.ManageWeb=31]="ManageWeb",e[e.AnonymousSearchAccessWebLists=32]="AnonymousSearchAccessWebLists",e[e.UseClientIntegration=37]="UseClientIntegration",e[e.UseRemoteAPIs=38]="UseRemoteAPIs",e[e.ManageAlerts=39]="ManageAlerts",e[e.CreateAlerts=40]="CreateAlerts",e[e.EditMyUserInfo=41]="EditMyUserInfo",e[e.EnumeratePermissions=63]="EnumeratePermissions",e[e.FullMask=65]="FullMask"}(Y||(Y={}));var $;!function(e){e[e.None=0]="None",e[e.User=1]="User",e[e.DistributionList=2]="DistributionList",e[e.SecurityGroup=4]="SecurityGroup",e[e.SharePointGroup=8]="SharePointGroup",e[e.All=15]="All"}($||($={}));var Z;!function(e){e[e.None=0]="None",e[e.UserInfoList=1]="UserInfoList",e[e.Windows=2]="Windows",e[e.MembershipProvider=4]="MembershipProvider",e[e.RoleProvider=8]="RoleProvider",e[e.All=15]="All"}(Z||(Z={}));var ee;!function(e){e[e.None=0]="None",e[e.Guest=1]="Guest",e[e.Reader=2]="Reader",e[e.Contributor=3]="Contributor",e[e.WebDesigner=4]="WebDesigner",e[e.Administrator=5]="Administrator"}(ee||(ee={}));var te;!function(e){e[e.Invalid=-1]="Invalid",e[e.DefaultView=0]="DefaultView",e[e.NormalView=1]="NormalView",e[e.DialogView=2]="DialogView",e[e.View=3]="View",e[e.DisplayForm=4]="DisplayForm",e[e.DisplayFormDialog=5]="DisplayFormDialog",e[e.EditForm=6]="EditForm",e[e.EditFormDialog=7]="EditFormDialog",e[e.NewForm=8]="NewForm",e[e.NewFormDialog=9]="NewFormDialog",e[e.SolutionForm=10]="SolutionForm",e[e.PAGE_MAXITEMS=11]="PAGE_MAXITEMS"}(te||(te={}));var ne;!function(e){e[e.Uninitialized=0]="Uninitialized",e[e.Direct=1]="Direct",e[e.OrganizationView=2]="OrganizationView",e[e.OrganizationEdit=3]="OrganizationEdit",e[e.AnonymousView=4]="AnonymousView",e[e.AnonymousEdit=5]="AnonymousEdit",e[e.Flexible=6]="Flexible"}(ne||(ne={}));var re;!function(e){e[e.None=0]="None",e[e.View=1]="View",e[e.Edit=2]="Edit",e[e.Owner=3]="Owner"}(re||(re={}));var oe;!function(e){e[e.CompletedSuccessfully=0]="CompletedSuccessfully",e[e.AccessRequestsQueued=1]="AccessRequestsQueued",e[e.NoResolvedUsers=-1]="NoResolvedUsers",e[e.AccessDenied=-2]="AccessDenied",e[e.CrossSiteRequestNotSupported=-3]="CrossSiteRequestNotSupported",e[e.UnknowError=-4]="UnknowError",e[e.EmailBodyTooLong=-5]="EmailBodyTooLong",e[e.ListUniqueScopesExceeded=-6]="ListUniqueScopesExceeded",e[e.CapabilityDisabled=-7]="CapabilityDisabled",e[e.ObjectNotSupported=-8]="ObjectNotSupported",e[e.NestedGroupsNotSupported=-9]="NestedGroupsNotSupported"}(oe||(oe={}));var ie;!function(e){e[e.Unknown=0]="Unknown",e[e.File=1]="File",e[e.Folder=2]="Folder",e[e.Item=3]="Item",e[e.List=4]="List",e[e.Web=5]="Web",e[e.Max=6]="Max"}(ie||(ie={}));var se;!function(e){e[e.None=0]="None",e[e.AllowList=1]="AllowList",e[e.BlockList=2]="BlockList"}(se||(se={}));var ae;!function(e){e[e.None=0]="None",e[e.ContextInfo=1]="ContextInfo",e[e.ListData=2]="ListData",e[e.ListSchema=4]="ListSchema",e[e.MenuView=8]="MenuView",e[e.ListContentType=16]="ListContentType",e[e.FileSystemItemId=32]="FileSystemItemId",e[e.ClientFormSchema=64]="ClientFormSchema",e[e.QuickLaunch=128]="QuickLaunch",e[e.Spotlight=256]="Spotlight",e[e.Visualization=512]="Visualization",e[e.ViewMetadata=1024]="ViewMetadata",e[e.DisableAutoHyperlink=2048]="DisableAutoHyperlink",e[e.EnableMediaTAUrls=4096]="EnableMediaTAUrls",e[e.ParentInfo=8192]="ParentInfo",e[e.PageContextInfo=16384]="PageContextInfo",e[e.ClientSideComponentManifest=32768]="ClientSideComponentManifest"}(ae||(ae={}));var ue;!function(e){e[e.PeopleAndGroups=1]="PeopleAndGroups",e[e.PeopleOnly=0]="PeopleOnly"}(ue||(ue={}));var ce;!function(e){e[e.Dropdown=0]="Dropdown",e[e.RadioButtons=1]="RadioButtons"}(ce||(ce={}));var le;!function(e){e[e.DefaultZone=0]="DefaultZone",e[e.Intranet=1]="Intranet",e[e.Internet=2]="Internet",e[e.Custom=3]="Custom",e[e.Extranet=4]="Extranet"}(le||(le={}));var pe,de=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),Object.defineProperty(t.prototype,"roleAssignments",{get:function(){return new B(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"firstUniqueAncestorSecurableObject",{get:function(){return new R(this,"FirstUniqueAncestorSecurableObject")},enumerable:!0,configurable:!0}),t.prototype.getUserEffectivePermissions=function(e){var t=this.clone(N,"getUserEffectivePermissions(@user)");return t.query.set("@user","'"+encodeURIComponent(e)+"'"),t.get().then(function(e){return Object(g.j)(e,"GetUserEffectivePermissions")?e.GetUserEffectivePermissions:e})},t.prototype.getCurrentUserEffectivePermissions=function(){return this.clone(N,"EffectiveBasePermissions").get().then(function(e){return Object(g.j)(e,"EffectiveBasePermissions")?e.EffectiveBasePermissions:e})},t.prototype.breakRoleInheritance=function(e,n){return void 0===e&&(e=!1),void 0===n&&(n=!1),this.clone(t,"breakroleinheritance(copyroleassignments="+e+", clearsubscopes="+n+")").postCore()},t.prototype.resetRoleInheritance=function(){return this.clone(t,"resetroleinheritance").postCore()},t.prototype.userHasPermissions=function(e,t){var n=this;return this.getUserEffectivePermissions(e).then(function(e){return n.hasPermissions(e,t)})},t.prototype.currentUserHasPermissions=function(e){var t=this;return this.getCurrentUserEffectivePermissions().then(function(n){return t.hasPermissions(n,e)})},t.prototype.hasPermissions=function(e,t){if(!t)return!0;if(t===Y.FullMask)return 32767==(32767&e.High)&&65535===e.Low;t-=1;var n=1;return t>=0&&t<32?(n<<=t,0!=(e.Low&n)):t>=32&&t<64&&(n<<=t-32,0!=(e.High&n))},t}(R),he=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.getShareLink=function(e,n){void 0===n&&(n=null);var r=null!==n?n.toISOString():null;return this.clone(t,"shareLink").postCore({body:Object(g.n)({request:{createLink:!0,emailData:null,settings:{expiration:r,linkKind:e}}})})},t.prototype.shareWith=function(e,n,r,o,i){var s=this;void 0===r&&(r=!1),void 0===o&&(o=!1),Array.isArray(e)||(e=[e]);var a=Object(g.n)(e.map(function(e){return{Key:e}})),u=n===re.Edit?ee.Contributor:ee.Reader;return new j("_api/web","roledefinitions").select("Id").filter("RoleTypeKind eq "+u).get().then(function(e){if(!Array.isArray(e)||e.length<1)throw Error("Could not locate a role defintion with RoleTypeKind "+u);var n={includeAnonymousLinkInEmail:r,peoplePickerInput:a,propagateAcl:o,roleValue:"role:"+e[0].Id,useSimplifiedRoles:!0};return void 0!==i&&(n=Object(g.f)(n,{emailBody:i.body,emailSubject:void 0!==i.subject?i.subject:"",sendEmail:!0})),s.clone(t,"shareObject").postCore({body:Object(g.n)(n)})})},t.prototype.shareObject=function(e,t){var n=this;return void 0===t&&(t=!1),t?this.sendShareObjectRequest(e):(e=Object(g.f)(e,{group:null,includeAnonymousLinkInEmail:!1,propagateAcl:!1,useSimplifiedRoles:!0},!0),this.getRoleValue(e.role,e.group).then(function(t){Array.isArray(e.loginNames)||(e.loginNames=[e.loginNames]);var r=Object(g.n)(e.loginNames.map(function(e){return{Key:e}})),o={peoplePickerInput:r,roleValue:t,url:e.url};return void 0!==e.emailData&&null!==e.emailData&&(o=Object(g.f)(o,{emailBody:e.emailData.body,emailSubject:void 0!==e.emailData.subject?e.emailData.subject:"Shared with you.",sendEmail:!0})),n.sendShareObjectRequest(o)}))},t.prototype.unshareObjectWeb=function(e){return this.clone(t,"unshareObject").postCore({body:Object(g.n)({url:e})})},t.prototype.checkPermissions=function(e){return this.clone(t,"checkPermissions").postCore({body:Object(g.n)({recipients:e})})},t.prototype.getSharingInformation=function(e,n){void 0===e&&(e=null);var r=this.clone(t,"getSharingInformation");return r.expand.apply(r,n).postCore({body:Object(g.n)({request:e})})},t.prototype.getObjectSharingSettings=function(e){return void 0===e&&(e=!0),this.clone(t,"getObjectSharingSettings").postCore({body:Object(g.n)({useSimplifiedRoles:e})})},t.prototype.unshareObject=function(){return this.clone(t,"unshareObject").postCore()},t.prototype.deleteLinkByKind=function(e){return this.clone(t,"deleteLinkByKind").postCore({body:Object(g.n)({linkKind:e})})},t.prototype.unshareLink=function(e,n){return void 0===n&&(n="00000000-0000-0000-0000-000000000000"),this.clone(t,"unshareLink").postCore({body:Object(g.n)({linkKind:e,shareId:n})})},t.prototype.getRoleValue=function(e,t){if(void 0===t||null===t){var n=e===re.Edit?ee.Contributor:ee.Reader;return new j("_api/web","roledefinitions").select("Id").top(1).filter("RoleTypeKind eq "+n).get().then(function(e){if(e.length<1)throw Error("Could not locate associated role definition for supplied role. Edit and View are supported");return"role: "+e[0].Id})}switch(t){case ee.Contributor:return new R("_api/web","associatedmembergroup").select("Id").get().then(function(e){return"group: "+e.Id});case ee.Reader:case ee.Guest:return new R("_api/web","associatedvisitorgroup").select("Id").get().then(function(e){return"group: "+e.Id});default:throw Error("Could not determine role value for supplied value. Contributor, Reader, and Guest are supported")}},t.prototype.getShareObjectWeb=function(e){return Promise.resolve(new R(a(e),"/_api/SP.Web.ShareObject"))},t.prototype.sendShareObjectRequest=function(e){return this.getShareObjectWeb(this.toUrl()).then(function(n){return n.expand("UsersWithAccessRequests","GroupsSharedWith").as(t).postCore({body:Object(g.n)(e)})})},t}(N),fe=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.shareWith=function(e,t,n){var r=this;void 0===t&&(t=re.View);var o=this.addBatchDependency();return new R(a(this.toUrl()),"/_api/web/url").get().then(function(i){return o(),r.shareObject(Object(g.d)(i,"/_layouts/15/aclinv.aspx?forSharing=1&mbypass=1"),e,t,n)})},t.prototype.shareObject=function(e,t,n,r,o,i,s,a){return void 0===i&&(i=!1),void 0===s&&(s=!1),void 0===a&&(a=!0),this.clone(he,null).shareObject({emailData:r,group:o,includeAnonymousLinkInEmail:s,loginNames:t,propagateAcl:i,role:n,url:e,useSimplifiedRoles:a})},t.prototype.shareObjectRaw=function(e){return this.clone(he,null).shareObject(e,!0)},t.prototype.unshareObject=function(e){return this.clone(he,null).unshareObjectWeb(e)},t}(de),ye=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.getShareLink=function(e,t){return void 0===e&&(e=ne.OrganizationView),void 0===t&&(t=null),this.clone(he,null).getShareLink(e,t)},t.prototype.shareWith=function(e,t,n,r){return void 0===t&&(t=re.View),void 0===n&&(n=!1),this.clone(he,null).shareWith(e,t,n,!1,r)},t.prototype.checkSharingPermissions=function(e){return this.clone(he,null).checkPermissions(e)},t.prototype.getSharingInformation=function(e,t){return void 0===e&&(e=null),this.clone(he,null).getSharingInformation(e,t)},t.prototype.getObjectSharingSettings=function(e){return void 0===e&&(e=!0),this.clone(he,null).getObjectSharingSettings(e)},t.prototype.unshare=function(){return this.clone(he,null).unshareObject()},t.prototype.deleteSharingLinkByKind=function(e){return this.clone(he,null).deleteLinkByKind(e)},t.prototype.unshareLink=function(e,t){return this.clone(he,null).unshareLink(e,t)},t}(de),me=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.getShareLink=function(e,t){void 0===e&&(e=ne.OrganizationView),void 0===t&&(t=null);var n=this.addBatchDependency();return this.getShareable().then(function(r){return n(),r.getShareLink(e,t)})},t.prototype.checkSharingPermissions=function(e){var t=this.addBatchDependency();return this.getShareable().then(function(n){return t(),n.checkPermissions(e)})},t.prototype.getSharingInformation=function(e,t){void 0===e&&(e=null);var n=this.addBatchDependency();return this.getShareable().then(function(r){return n(),r.getSharingInformation(e,t)})},t.prototype.getObjectSharingSettings=function(e){void 0===e&&(e=!0);var t=this.addBatchDependency();return this.getShareable().then(function(n){return t(),n.getObjectSharingSettings(e)})},t.prototype.unshare=function(){var e=this.addBatchDependency();return this.getShareable().then(function(t){return e(),t.unshareObject()})},t.prototype.deleteSharingLinkByKind=function(e){var t=this.addBatchDependency();return this.getShareable().then(function(n){return t(),n.deleteLinkByKind(e)})},t.prototype.unshareLink=function(e,t){var n=this.addBatchDependency();return this.getShareable().then(function(r){return n(),r.unshareLink(e,t)})},t.prototype.getShareable=function(){var e=this;return this.clone(ge,"listItemAllFields",!1).select("odata.id").get().then(function(t){var n=new he(u(t));return e.hasBatch&&(n=n.inBatch(e.batch)),n})},t}(R),ge=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.shareWith=function(e,t,n,r){void 0===t&&(t=re.View),void 0===n&&(n=!1);var o=this.addBatchDependency();return this.getShareable().then(function(i){return o(),i.shareWith(e,t,n,!1,r)})},t}(me),be=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.shareWith=function(e,t,n,r,o){void 0===t&&(t=re.View),void 0===n&&(n=!1),void 0===r&&(r=!1);var i=this.addBatchDependency();return this.getShareable().then(function(s){return i(),s.shareWith(e,t,n,r,o)})},t}(me),ve=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),Object.defineProperty(t.prototype,"webparts",{get:function(){return new Se(this,"webparts")},enumerable:!0,configurable:!0}),t.prototype.export=function(e){return this.clone(t,"ExportWebPart").postCore({body:Object(g.n)({webPartId:e})})},t.prototype.import=function(e){return this.clone(t,"ImportWebPart").postCore({body:Object(g.n)({webPartXml:e})})},t}(N),Se=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.getById=function(e){return new Te(this,"getbyid('"+e+"')")},t.prototype.getByControlId=function(e){return new Te(this,"getByControlId('"+e+"')")},t}(j),Te=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),Object.defineProperty(t.prototype,"webpart",{get:function(){return new Oe(this)},enumerable:!0,configurable:!0}),t.prototype.saveChanges=function(){return this.clone(t,"SaveWebPartChanges").postCore()},t.prototype.moveTo=function(e,n){return this.clone(t,"MoveWebPartTo(zoneID='"+e+"', zoneIndex="+n+")").postCore()},t.prototype.close=function(){return this.clone(t,"CloseWebPart").postCore()},t.prototype.open=function(){return this.clone(t,"OpenWebPart").postCore()},t.prototype.delete=function(){return this.clone(t,"DeleteWebPart").postCore()},t}(R),Oe=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t=o([h("webpart")],t)}(R),we=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,t.prototype.getByName=function(e){var t=new Ie(this);return t.concat("('"+e+"')"),t},t.prototype.add=function(e){var t=this;return this.clone(n,"add('"+e+"')").postCore().then(function(n){return{data:n,folder:t.getByName(e)}})},t.prototype.addUsingPath=function(e,t){var r=this;return void 0===t&&(t=!1),this.clone(n,"addUsingPath(DecodedUrl='"+e+"',overwrite="+t+")").postCore().then(function(t){return{data:t,folder:new Ie(a(r.toUrl()),"_api/web/getFolderByServerRelativePath(decodedUrl='"+e+"')")}})};var n;return t=n=o([h("folders")],t)}(j),Ie=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.update=t._update("SP.Folder",function(e){return{data:e,folder:t}}),t}return r(t,e),Object.defineProperty(t.prototype,"contentTypeOrder",{get:function(){return new j(this,"contentTypeOrder")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"files",{get:function(){return new et(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"folders",{get:function(){return new we(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"listItemAllFields",{get:function(){return new R(this,"listItemAllFields")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"parentFolder",{get:function(){return new t(this,"parentFolder")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"properties",{get:function(){return new R(this,"properties")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"serverRelativeUrl",{get:function(){return new N(this,"serverRelativeUrl")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"uniqueContentTypeOrder",{get:function(){return new j(this,"uniqueContentTypeOrder")},enumerable:!0,configurable:!0}),t.prototype.delete=function(e){return void 0===e&&(e="*"),this.clone(t,null).postCore({headers:{"IF-Match":e,"X-HTTP-Method":"DELETE"}})},t.prototype.recycle=function(){return this.clone(t,"recycle").postCore()},t.prototype.getItem=function(){for(var e=[],t=0;t0&&r.forEach(function(e,t){return i.query.set(t,e)}),i.postCore({body:Object(g.n)(o)})},t.prototype.renderListFormData=function(e,n,r){return this.clone(t,"renderlistformdata(itemid="+e+", formid='"+n+"', mode='"+r+"')").postCore().then(function(e){return JSON.parse(Object(g.j)(e,"RenderListFormData")?e.RenderListFormData:e)})},t.prototype.reserveListItemId=function(){return this.clone(t,"reservelistitemid").postCore().then(function(e){return Object(g.j)(e,"ReserveListItemId")?e.ReserveListItemId:e})},t.prototype.getListItemEntityTypeFullName=function(){return this.clone(t,null,!1).select("ListItemEntityTypeFullName").get().then(function(e){return e.ListItemEntityTypeFullName})},t.prototype.addValidateUpdateItemUsingPath=function(e,n,r,o){return void 0===r&&(r=!1),this.clone(t,"AddValidateUpdateItemUsingPath()").postCore({body:Object(g.n)({bNewDocumentUpdate:r,checkInComment:o,formValues:e,listItemCreateInfo:{FolderPath:{DecodedUrl:n,__metadata:{type:"SP.ResourcePath"}},__metadata:{type:"SP.ListItemCreationInformationUsingPath"}}})}).then(function(e){return void 0!==e.AddValidateUpdateItemUsingPath?e.AddValidateUpdateItemUsingPath.results:e})},t.prototype.getSiteScript=function(){return i(this,void 0,void 0,function(){var e,n;return s(this,function(r){switch(r.label){case 0:return[4,this.clone(t).rootFolder.select("ServerRelativeUrl").get()];case 1:return e=r.sent(),[4,p(e.ServerRelativeUrl)];case 2:return n=r.sent(),[2,new S.a(this,"").getSiteScriptFromList(n)]}})})},t}(de),He=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,t.prototype.add=function(e){var t=this;"string"==typeof e&&(e={text:e});var r=Object(g.n)(Object(g.f)(d("Microsoft.SharePoint.Comments.comment"),e));return this.clone(n,null).postCore({body:r}).then(function(e){return Object(g.f)(t.getById(e.id),e)})},t.prototype.getById=function(e){var t=new Ke(this);return t.concat("("+e+")"),t},t.prototype.clear=function(){return this.clone(n,"DeleteAll").postCore()};var n;return t=n=o([h("comments")],t)}(j),Ke=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),Object.defineProperty(t.prototype,"replies",{get:function(){return new Ve(this)},enumerable:!0,configurable:!0}),t.prototype.like=function(){return this.clone(t,"Like").postCore()},t.prototype.unlike=function(){return this.clone(t,"Unlike").postCore()},t.prototype.delete=function(){return this.deleteCore()},t}(R),Ve=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,t.prototype.add=function(e){"string"==typeof e&&(e={text:e});var t=Object(g.n)(Object(g.f)(d("Microsoft.SharePoint.Comments.comment"),e));return this.clone(n,null).postCore({body:t}).then(function(e){return Object(g.f)(new Ke(u(e)),e)})};var n;return t=n=o([h("replies")],t)}(j),Qe=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,t.prototype.getById=function(e){var t=new ze(this);return t.concat("("+e+")"),t},t.prototype.getItemByStringId=function(e){return new ze(this.parentUrl,"getItemByStringId('"+e+"')")},t.prototype.skip=function(e,t){return void 0===t&&(t=!1),t?this.query.set("$skiptoken",encodeURIComponent("Paged=TRUE&PagedPrev=TRUE&p_ID="+e)):this.query.set("$skiptoken",encodeURIComponent("Paged=TRUE&p_ID="+e)),this},t.prototype.getPaged=function(e){return void 0===e&&(e=new v.f),this.get(new $e(this,e))},t.prototype.getAll=function(e,t){void 0===e&&(e=2e3),void 0===t&&(t="application/json;odata=nometadata"),b.a.write("Calling items.getAll should be done sparingly. Ensure this is the correct choice. If you are unsure, it is not.",2);var r=new n(this,"").top(e).configure({headers:{Accept:t}});return this.query.forEach(function(e,t){/^\$select|filter|top|expand$/i.test(t)&&r.query.set(t,e)}),new Promise(function(e,t){var n=[],o=function(r){[].push.apply(n,r.results),r.hasNext?r.getNext().then(o).catch(t):e(n)};r.getPaged().then(o).catch(t)})},t.prototype.add=function(e,t){var r=this;void 0===e&&(e={}),void 0===t&&(t=null);var o=this.addBatchDependency();return this.ensureListItemEntityTypeName(t).then(function(t){var i=Object(g.n)(Object(g.f)(d(t),e)),s=r.clone(n,"").postCore({body:i}).then(function(e){return{data:e,item:r.getById(e.Id)}});return o(),s})},t.prototype.ensureListItemEntityTypeName=function(e){return e?Promise.resolve(e):this.getParent(We).getListItemEntityTypeFullName()};var n;return t=n=o([h("items")],t)}(j),ze=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.delete=t._deleteWithETag,t}return r(t,e),Object.defineProperty(t.prototype,"attachmentFiles",{get:function(){return new xe(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"contentType",{get:function(){return new Pe(this,"ContentType")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"comments",{get:function(){return new He(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"effectiveBasePermissions",{get:function(){return new N(this,"EffectiveBasePermissions")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"effectiveBasePermissionsForUI",{get:function(){return new N(this,"EffectiveBasePermissionsForUI")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"fieldValuesAsHTML",{get:function(){return new R(this,"FieldValuesAsHTML")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"fieldValuesAsText",{get:function(){return new R(this,"FieldValuesAsText")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"fieldValuesForEdit",{get:function(){return new R(this,"FieldValuesForEdit")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"folder",{get:function(){return new Ie(this,"folder")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"file",{get:function(){return new tt(this,"file")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"versions",{get:function(){return new Xe(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"list",{get:function(){return this.getParent(We,this.parentUrl.substr(0,this.parentUrl.lastIndexOf("/")))},enumerable:!0,configurable:!0}),t.prototype.update=function(e,t,n){var r=this;return void 0===t&&(t="*"),void 0===n&&(n=null),new Promise(function(o,i){var s=r.addBatchDependency();return r.ensureListItemEntityTypeName(n).then(function(n){var i=Object(g.n)(Object(g.f)(d(n),e));return s(),r.postCore({body:i,headers:{"IF-Match":t,"X-HTTP-Method":"MERGE"}},new Ze).then(function(e){o({data:e,item:r})})}).catch(function(e){return i(e)})})},t.prototype.getLikedBy=function(){return this.clone(t,"likedBy").postCore()},t.prototype.like=function(){return this.clone(t,"like").postCore()},t.prototype.unlike=function(){return this.clone(t,"unlike").postCore()},t.prototype.recycle=function(){return this.clone(t,"recycle").postCore()},t.prototype.getWopiFrameUrl=function(e){void 0===e&&(e=0);var n=this.clone(t,"getWOPIFrameUrl(@action)");return n.query.set("@action",e),n.postCore().then(function(e){return Object(g.j)(e,"GetWOPIFrameUrl")?e.GetWOPIFrameUrl:e})},t.prototype.validateUpdateListItem=function(e,n){return void 0===n&&(n=!1),this.clone(t,"validateupdatelistitem").postCore({body:Object(g.n)({formValues:e,bNewDocumentUpdate:n})})},t.prototype.getLikedByInformation=function(){return this.clone(t,"likedByInformation").expand("likedby").getCore()},t.prototype.ensureListItemEntityTypeName=function(e){return e?Promise.resolve(e):this.list.getListItemEntityTypeFullName()},t}(ye),Xe=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.getById=function(e){var t=new Je(this);return t.concat("("+e+")"),t},t=o([h("versions")],t)}(j),Je=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.delete=t._deleteWithETag,t}return r(t,e),t}(R),Ye=function(){function e(e,t,n,r){this.parent=e,this.nextUrl=t,this.results=n,this.innerParser=r}return Object.defineProperty(e.prototype,"hasNext",{get:function(){return"string"==typeof this.nextUrl&&this.nextUrl.length>0},enumerable:!0,configurable:!0}),e.prototype.getNext=function(){if(this.hasNext){return new Qe(this.nextUrl,null).configureFrom(this.parent).getPaged(this.innerParser)}return new Promise(function(e){return e(null)})},e}(),$e=function(e){function t(t,n){var r=e.call(this)||this;return r._parent=t,r.innerParser=n,r}return r(t,e),t.prototype.parse=function(e){var t=this;return this.innerParser.parse(e).then(function(e){return i(t,void 0,void 0,function(){var t,n;return s(this,function(r){return t=this.innerParser.rawJson,n=Object(g.j)(t,"d")&&Object(g.j)(t.d,"__next")?t.d.__next:t["odata.nextLink"],[2,new Ye(this._parent,n,e,this.innerParser)]})})})},t}(v.g),Ze=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.parse=function(e){return i(this,void 0,void 0,function(){var t=this;return s(this,function(n){return[2,new Promise(function(n,r){t.handleError(e,r)&&n({"odata.etag":e.headers.get("etag")})})]})})},t}(v.g),et=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,t.prototype.getByName=function(e){var t=new tt(this);return t.concat("('"+e+"')"),t},t.prototype.add=function(e,t,r){var o=this;return void 0===r&&(r=!0),new n(this,"add(overwrite="+r+",url='"+e+"')").postCore({body:t}).then(function(t){return{data:t,file:o.getByName(e)}})},t.prototype.addUsingPath=function(e,t,r){var o=this;void 0===r&&(r={Overwrite:!1});var i=["AddUsingPath(decodedurl='"+e+"'"];return r&&(r.Overwrite&&i.push(",Overwrite=true"),r.AutoCheckoutOnInvalidData&&i.push(",AutoCheckoutOnInvalidData=true"),Object(g.r)(r.XorHash)||i.push(",XorHash="+r.XorHash)),i.push(")"),new n(this,i.join("")).postCore({body:t}).then(function(t){return{data:t,file:o.getByName(e)}})},t.prototype.addChunked=function(e,t,r,o,i){var s=this;return void 0===o&&(o=!0),void 0===i&&(i=10485760),this.clone(n,"add(overwrite = "+o+", url = '"+e+"')",!1).postCore().then(function(){return s.getByName(e)}).then(function(e){return e.setContentChunked(t,r,i)})},t.prototype.addTemplateFile=function(e,t){var r=this;return this.clone(n,"addTemplateFile(urloffile = '"+e+"', templatefiletype = "+t+")",!1).postCore().then(function(t){return{data:t,file:r.getByName(e)}})};var n;return t=n=o([h("files")],t)}(j),tt=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),Object.defineProperty(t.prototype,"listItemAllFields",{get:function(){return new R(this,"listItemAllFields")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"versions",{get:function(){return new nt(this)},enumerable:!0,configurable:!0}),t.prototype.approve=function(e){return void 0===e&&(e=""),this.clone(t,"approve(comment = '"+e+"')").postCore()},t.prototype.cancelUpload=function(e){return this.clone(t,"cancelUpload(uploadId = guid'"+e+"')",!1).postCore()},t.prototype.checkin=function(e,n){if(void 0===e&&(e=""),void 0===n&&(n=pe.Major),e.length>1023)throw Error("The maximum comment length is 1023 characters.");return this.clone(t,"checkin(comment = '"+e+"', checkintype = "+n+")").postCore()},t.prototype.checkout=function(){return this.clone(t,"checkout").postCore()},t.prototype.copyTo=function(e,n){return void 0===n&&(n=!0),this.clone(t,"copyTo(strnewurl = '"+e+"', boverwrite = "+n+")").postCore()},t.prototype.delete=function(e){return void 0===e&&(e="*"),this.clone(t,null).postCore({headers:{"IF-Match":e,"X-HTTP-Method":"DELETE"}})},t.prototype.deny=function(e){if(void 0===e&&(e=""),e.length>1023)throw Error("The maximum comment length is 1023 characters.");return this.clone(t,"deny(comment = '"+e+"')").postCore()},t.prototype.getLimitedWebPartManager=function(e){return void 0===e&&(e=ot.Shared),new ve(this,"getLimitedWebPartManager(scope = "+e+")")},t.prototype.moveTo=function(e,n){return void 0===n&&(n=it.Overwrite),this.clone(t,"moveTo(newurl = '"+e+"', flags = "+n+")").postCore()},t.prototype.publish=function(e){if(void 0===e&&(e=""),e.length>1023)throw Error("The maximum comment length is 1023 characters.");return this.clone(t,"publish(comment = '"+e+"')").postCore()},t.prototype.recycle=function(){return this.clone(t,"recycle").postCore()},t.prototype.undoCheckout=function(){return this.clone(t,"undoCheckout").postCore()},t.prototype.unpublish=function(e){if(void 0===e&&(e=""),e.length>1023)throw Error("The maximum comment length is 1023 characters.");return this.clone(t,"unpublish(comment = '"+e+"')").postCore()},t.prototype.getText=function(){return this.clone(t,"$value",!1).get(new v.i,{headers:{binaryStringResponseBody:"true"}})},t.prototype.getBlob=function(){return this.clone(t,"$value",!1).get(new v.a,{headers:{binaryStringResponseBody:"true"}})},t.prototype.getBuffer=function(){return this.clone(t,"$value",!1).get(new v.b,{headers:{binaryStringResponseBody:"true"}})},t.prototype.getJSON=function(){return this.clone(t,"$value",!1).get(new v.d,{headers:{binaryStringResponseBody:"true"}})},t.prototype.setContent=function(e){var n=this;return this.clone(t,"$value",!1).postCore({body:e,headers:{"X-HTTP-Method":"PUT"}}).then(function(e){return new t(n)})},t.prototype.getItem=function(){for(var e=this,t=[],n=0;n0?"tenantappcatalog":"sitecollectionappcatalog";return new t(a(this.toUrl()),"_api/web/"+o+"/add(overwrite="+r+",url='"+e+"')").postCore({body:n}).then(function(e){return{data:e,file:new tt(u(e))}})},t}(j),ct=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.deploy=function(e){return void 0===e&&(e=!1),this.clone(t,"Deploy("+e+")").postCore()},t.prototype.retract=function(){return this.clone(t,"Retract").postCore()},t.prototype.install=function(){return this.clone(t,"Install").postCore()},t.prototype.uninstall=function(){return this.clone(t,"Uninstall").postCore()},t.prototype.upgrade=function(){return this.clone(t,"Upgrade").postCore()},t.prototype.remove=function(){return this.clone(t,"Remove").postCore()},t}(R),lt=function(e){function t(t){var n=e.call(this)||this;return n.baseUrl=t,n}return r(t,e),t.ParseResponse=function(e){return new Promise(function(t,n){for(var r,o,i=[],s=new RegExp("^HTTP/[0-9.]+ +([0-9]+) +(.*)","i"),a=e.split("\n"),u="batch",c=0;c0&&(o.push("--changeset_"+i+"--\n\n"),i=""),o.push("--batch_"+e.batchId+"\n")):(i.length<1&&(i=Object(g.h)(),o.push("--batch_"+e.batchId+"\n"),o.push('Content-Type: multipart/mixed; boundary="changeset_'+i+'"\n\n')),o.push("--changeset_"+i+"\n")),o.push("Content-Type: application/http\n"),o.push("Content-Transfer-Encoding: binary\n\n");var u=new Headers,c=Object(g.m)(a.url)?a.url:Object(g.d)(r,a.url);if(b.a.write("["+e.batchId+"] ("+(new Date).getTime()+") Adding request "+a.method+" "+c+" to batch.",0),"GET"!==a.method){var l=a.method,p=a.options.headers;Object(g.j)(a,"options")&&Object(g.j)(a.options,"headers")&&void 0!==p["X-HTTP-Method"]&&(l=p["X-HTTP-Method"],delete p["X-HTTP-Method"]),o.push(l+" "+c+" HTTP/1.1\n"),u.set("Content-Type","application/json;odata=verbose;charset=utf-8")}else o.push(a.method+" "+c+" HTTP/1.1\n");Object(g.o)(u,I.headers),a.options&&Object(g.o)(u,a.options.headers),u.has("Accept")||u.append("Accept","application/json"),u.has("Content-Type")||u.append("Content-Type","application/json;odata=verbose;charset=utf-8"),u.has("X-ClientService-ClientTag")||u.append("X-ClientService-ClientTag","PnPCoreJS:@pnp-1.3.11"),u.forEach(function(e,t){o.push(t+": "+e+"\n")}),o.push("\n"),a.options.body&&o.push(a.options.body+"\n\n")}i.length>0&&(o.push("--changeset_"+i+"--\n\n"),i=""),o.push("--batch_"+e.batchId+"--\n");var d={body:o.join(""),headers:{"Content-Type":"multipart/mixed; boundary=batch_"+e.batchId},method:"POST"};return b.a.write("["+e.batchId+"] ("+(new Date).getTime()+") Sending batch request.",1),n.fetch(Object(g.d)(r,"/_api/$batch"),d).then(function(e){return e.text()}).then(t.ParseResponse).then(function(t){if(t.length!==e.requests.length)throw Error("Could not properly parse responses to match requests in batch.");return b.a.write("["+e.batchId+"] ("+(new Date).getTime()+") Resolving batched requests.",1),t.reduce(function(t,n,r){var o=e.requests[r];return b.a.write("["+o.id+"] ("+(new Date).getTime()+") Resolving request in batch "+e.batchId+".",1),t.then(function(e){return o.parser.parse(n).then(o.resolve).catch(o.reject)})},Promise.resolve())})})},t}(v.e),pt=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,t.prototype.add=function(e,t){var r=this;return void 0===t&&(t=!1),this.clone(n,"add").postCore({body:Object(g.n)({featdefScope:0,featureId:e,force:t})}).then(function(t){return{data:t,feature:r.getById(e)}})},t.prototype.getById=function(e){var t=new dt(this);return t.concat("('"+e+"')"),t},t.prototype.remove=function(e,t){return void 0===t&&(t=!1),this.clone(n,"remove").postCore({body:Object(g.n)({featureId:e,force:t})})};var n;return t=n=o([h("features")],t)}(j),dt=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.deactivate=function(e){var n=this;void 0===e&&(e=!1);var r=this.addBatchDependency();return new t(this).select("DefinitionId").get().then(function(t){var o=n.getParent(pt,n.parentUrl,"",n.batch).remove(t.DefinitionId,e);return r(),o})},t}(R),ht=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,Object.defineProperty(t.prototype,"rootWeb",{get:function(){return new Ct(this,"rootweb")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"features",{get:function(){return new pt(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"userCustomActions",{get:function(){return new Be(this)},enumerable:!0,configurable:!0}),t.prototype.getRootWeb=function(){return this.rootWeb.select("Url").get().then(function(e){return new Ct(e.Url)})},t.prototype.getContextInfo=function(){return new n(this.parentUrl,"_api/contextinfo").postCore().then(function(e){if(Object(g.j)(e,"GetContextWebInformation")){var t=e.GetContextWebInformation;return t.SupportedSchemaVersions=t.SupportedSchemaVersions.results,t}return e})},t.prototype.getDocumentLibraries=function(e){var t=new N("","_api/sp.web.getdocumentlibraries(@v)");return t.query.set("@v","'"+e+"'"),t.get().then(function(e){return Object(g.j)(e,"GetDocumentLibraries")?e.GetDocumentLibraries:e})},t.prototype.getWebUrlFromPageUrl=function(e){var t=new N("","_api/sp.web.getweburlfrompageurl(@v)");return t.query.set("@v","'"+e+"'"),t.get().then(function(e){return Object(g.j)(e,"GetWebUrlFromPageUrl")?e.GetWebUrlFromPageUrl:e})},t.prototype.getChanges=function(e){var t=Object(g.n)({query:Object(g.f)({__metadata:{type:"SP.ChangeQuery"}},e)});return this.clone(n,"getchanges").postCore({body:t})},t.prototype.delete=function(){return i(this,void 0,void 0,function(){var e,t;return s(this,function(r){switch(r.label){case 0:return[4,this.clone(n,"").select("Id").get()];case 1:return e=r.sent(),t=new n(this.parentUrl,"_api/SPSiteManager/Delete"),[4,t.postCore({body:Object(g.n)({siteId:e.Id})})];case 2:return r.sent(),[2]}})})},t.prototype.createBatch=function(){return new lt(this.parentUrl)},t.prototype.openWebById=function(e){return this.clone(n,"openWebById('"+e+"')").postCore().then(function(e){return{data:e,web:Ct.fromUrl(e["odata.id"]||e.__metadata.uri)}})},t.prototype.joinHubSite=function(e){return this.clone(n,"joinHubSite('"+e+"')").postCore()},t.prototype.registerHubSite=function(){return this.clone(n,"registerHubSite").postCore()},t.prototype.unRegisterHubSite=function(){return this.clone(n,"unRegisterHubSite").postCore()},t.prototype.createCommunicationSite=function(e,t,n,r,o,a,u,c,l){var p=this;void 0===t&&(t=1033),void 0===n&&(n=!1),void 0===o&&(o=""),void 0===a&&(a=""),void 0===u&&(u="00000000-0000-0000-0000-000000000000"),void 0===c&&(c="00000000-0000-0000-0000-000000000000");var d={Classification:a,Description:o,HubSiteId:c,Lcid:t,Owner:l,ShareByEmailEnabled:n,SiteDesignId:u,Title:e,Url:r,WebTemplate:"SITEPAGEPUBLISHING#0",WebTemplateExtensionId:"00000000-0000-0000-0000-000000000000"},h=Object(g.n)({request:Object(g.f)({__metadata:{type:"Microsoft.SharePoint.Portal.SPSiteCreationRequest"}},d)});return this.getRootWeb().then(function(e){return i(p,void 0,void 0,function(){var t,n;return s(this,function(r){return t=new E,n=e.parentUrl+"/_api/SPSiteManager/Create",[2,t.post(n,{body:h,headers:{Accept:"application/json;odata=verbose","Content-Type":"application/json;odata=verbose;charset=utf-8"}}).then(function(e){return e.json()}).then(function(e){if(Object(g.j)(e,"error"))throw e;return Object(g.j)(e,"d")&&Object(g.j)(e.d,"Create")?e.d.Create:e})]})})})},t.prototype.createModernTeamSite=function(e,t,n,r,o,a,u,c,l){var p=this;void 0===n&&(n=!0),void 0===r&&(r=1033),void 0===o&&(o=""),void 0===a&&(a=""),void 0===c&&(c="00000000-0000-0000-0000-000000000000");var d={alias:t,displayName:e,isPublic:n,optionalParams:{Classification:a,CreationOptions:{results:["SPSiteLanguage:"+r,"HubSiteId:"+c]},Description:o,Owners:{results:u||[]}}};return l&&d.optionalParams.CreationOptions.results.push("implicit_formula_292aa8a00786498a87a5ca52d9f4214a_"+l),this.getRootWeb().then(function(e){return i(p,void 0,void 0,function(){var t,n;return s(this,function(r){return t=new E,n=e.parentUrl+"/_api/GroupSiteManager/CreateGroupEx",[2,t.post(n,{body:Object(g.n)(d),headers:{Accept:"application/json;odata=verbose","Content-Type":"application/json;odata=verbose;charset=utf-8"}}).then(function(e){return e.json()})]})})})};var n;return t=n=o([h("_api/site")],t)}(R),ft=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.getById=function(e){var t=new yt(this);return t.concat("("+e+")"),t},t.prototype.add=function(e,n,r){var o=this;void 0===r&&(r=!0);var i=Object(g.n)(Object(g.f)(d("SP.NavigationNode"),{IsVisible:r,Title:e,Url:n}));return this.clone(t,null).postCore({body:i}).then(function(e){return{data:e,node:o.getById(e.Id)}})},t.prototype.moveAfter=function(e,n){var r=Object(g.n)({nodeId:e,previousNodeId:n});return this.clone(t,"MoveAfter").postCore({body:r})},t}(j),yt=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),Object.defineProperty(t.prototype,"children",{get:function(){return new ft(this,"Children")},enumerable:!0,configurable:!0}),t.prototype.delete=function(){return e.prototype.deleteCore.call(this)},t.prototype.update=function(e){var t=this,n=Object(g.n)(Object(g.f)({__metadata:{type:"SP.NavigationNode"}},e));return this.postCore({body:n,headers:{"X-HTTP-Method":"MERGE"}}).then(function(e){return{data:e,node:t}})},t}(R),mt=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),Object.defineProperty(t.prototype,"quicklaunch",{get:function(){return new ft(this,"quicklaunch")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"topNavigationBar",{get:function(){return new ft(this,"topnavigationbar")},enumerable:!0,configurable:!0}),t=o([h("navigation")],t)}(N),gt=function(e){function t(t,n){return void 0===n&&(n=null),e.call(this,t,n)||this}return r(t,e),t.prototype.getMenuState=function(e,n,r,o){return void 0===e&&(e=null),void 0===n&&(n=10),void 0===r&&(r=null),void 0===o&&(o=null),new t(this,"_api/navigation/MenuState").postCore({body:Object(g.n)({customProperties:o,depth:n,mapProviderName:r,menuNodeKey:e})})},t.prototype.getMenuNodeKey=function(e,n){return void 0===n&&(n=null),new t(this,"_api/navigation/MenuNodeKey").postCore({body:Object(g.n)({currentUrl:e,mapProviderName:n})})},t}(N),bt=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,t.FromUrl=function(e){if(null===e)return new n("");var t=e.indexOf("_api/");return new n(t>-1?e.substr(0,t):e)},t.prototype.getRelatedItems=function(e,t){var r=this.clone(n,null);return r.concat(".GetRelatedItems"),r.postCore({body:Object(g.n)({SourceItemID:t,SourceListName:e})})},t.prototype.getPageOneRelatedItems=function(e,t){var r=this.clone(n,null);return r.concat(".GetPageOneRelatedItems"),r.postCore({body:Object(g.n)({SourceItemID:t,SourceListName:e})})},t.prototype.addSingleLink=function(e,t,r,o,i,s,a){void 0===a&&(a=!1);var u=this.clone(n,null);return u.concat(".AddSingleLink"),u.postCore({body:Object(g.n)({SourceItemID:t,SourceListName:e,SourceWebUrl:r,TargetItemID:i,TargetListName:o,TargetWebUrl:s,TryAddReverseLink:a})})},t.prototype.addSingleLinkToUrl=function(e,t,r,o){void 0===o&&(o=!1);var i=this.clone(n,null);return i.concat(".AddSingleLinkToUrl"),i.postCore({body:Object(g.n)({SourceItemID:t,SourceListName:e,TargetItemUrl:r,TryAddReverseLink:o})})},t.prototype.addSingleLinkFromUrl=function(e,t,r,o){void 0===o&&(o=!1);var i=this.clone(n,null);return i.concat(".AddSingleLinkFromUrl"),i.postCore({body:Object(g.n)({SourceItemUrl:e,TargetItemID:r,TargetListName:t,TryAddReverseLink:o})})},t.prototype.deleteSingleLink=function(e,t,r,o,i,s,a){void 0===a&&(a=!1);var u=this.clone(n,null);return u.concat(".DeleteSingleLink"),u.postCore({body:Object(g.n)({SourceItemID:t,SourceListName:e,SourceWebUrl:r,TargetItemID:i,TargetListName:o,TargetWebUrl:s,TryDeleteReverseLink:a})})};var n;return t=n=o([h("_api/SP.RelatedItemManager")],t)}(N),vt=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),Object.defineProperty(t.prototype,"installedLanguages",{get:function(){return new St(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"globalInstalledLanguages",{get:function(){return new St(this,"globalinstalledlanguages")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"timeZone",{get:function(){return new Tt(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"timeZones",{get:function(){return new Ot(this)},enumerable:!0,configurable:!0}),t=o([h("regionalsettings")],t)}(R),St=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t=o([h("installedlanguages")],t)}(j),Tt=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,t.prototype.utcToLocalTime=function(e){var t;return t="string"==typeof e?e:e.toISOString(),this.clone(n,"utctolocaltime('"+t+"')").postCore().then(function(e){return Object(g.j)(e,"UTCToLocalTime")?e.UTCToLocalTime:e})},t.prototype.localTimeToUTC=function(e){var t;return t="string"==typeof e?e:Object(g.e)(e,"minute",-1*e.getTimezoneOffset()).toISOString(),this.clone(n,"localtimetoutc('"+t+"')").postCore().then(function(e){return Object(g.j)(e,"LocalTimeToUTC")?e.LocalTimeToUTC:e})};var n;return t=n=o([h("timezone")],t)}(R),Ot=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,t.prototype.getById=function(e){return this.clone(n,"GetById("+e+")").postCore({},c(Tt))};var n;return t=n=o([h("timezones")],t)}(j),wt=function(e){function t(n,r){return e.call(this,t.getBaseUrl(n),"_api/Microsoft.Sharepoint.Utilities.WebTemplateExtensions.SiteScriptUtility."+r)||this}return r(t,e),t.getBaseUrl=function(e){if("string"==typeof e)return e;var t=e,n=t.toUrl(),r=n.indexOf("_api/");return r<0?n:n.substr(0,r)},t.prototype.execute=function(e){return this.postCore({body:JSON.stringify(e),headers:{"Content-Type":"application/json;charset=utf-8"}})},t.prototype.createSiteDesign=function(e){return i(this,void 0,void 0,function(){return s(this,function(n){switch(n.label){case 0:return[4,this.clone(t,"CreateSiteDesign").execute({info:e})];case 1:return[2,n.sent()]}})})},t.prototype.applySiteDesign=function(e,n){return i(this,void 0,void 0,function(){return s(this,function(r){switch(r.label){case 0:return[4,this.clone(t,"ApplySiteDesign").execute({siteDesignId:e,webUrl:n})];case 1:return[2,r.sent()]}})})},t.prototype.getSiteDesigns=function(){return i(this,void 0,void 0,function(){return s(this,function(e){switch(e.label){case 0:return[4,this.clone(t,"GetSiteDesigns").execute({})];case 1:return[2,e.sent()]}})})},t.prototype.getSiteDesignMetadata=function(e){return i(this,void 0,void 0,function(){return s(this,function(n){switch(n.label){case 0:return[4,this.clone(t,"GetSiteDesignMetadata").execute({id:e})];case 1:return[2,n.sent()]}})})},t.prototype.updateSiteDesign=function(e){return i(this,void 0,void 0,function(){return s(this,function(n){switch(n.label){case 0:return[4,this.clone(t,"UpdateSiteDesign").execute({updateInfo:e})];case 1:return[2,n.sent()]}})})},t.prototype.deleteSiteDesign=function(e){return i(this,void 0,void 0,function(){return s(this,function(n){switch(n.label){case 0:return[4,this.clone(t,"DeleteSiteDesign").execute({id:e})];case 1:return[2,n.sent()]}})})},t.prototype.getSiteDesignRights=function(e){return i(this,void 0,void 0,function(){return s(this,function(n){switch(n.label){case 0:return[4,this.clone(t,"GetSiteDesignRights").execute({id:e})];case 1:return[2,n.sent()]}})})},t.prototype.grantSiteDesignRights=function(e,n,r){return void 0===r&&(r=1),i(this,void 0,void 0,function(){return s(this,function(o){switch(o.label){case 0:return[4,this.clone(t,"GrantSiteDesignRights").execute({grantedRights:r.toString(),id:e,principalNames:n})];case 1:return[2,o.sent()]}})})},t.prototype.revokeSiteDesignRights=function(e,n){return i(this,void 0,void 0,function(){return s(this,function(r){switch(r.label){case 0:return[4,this.clone(t,"RevokeSiteDesignRights").execute({id:e,principalNames:n})];case 1:return[2,r.sent()]}})})},t.prototype.addSiteDesignTask=function(e,n){return i(this,void 0,void 0,function(){return s(this,function(r){switch(r.label){case 0:return[4,this.clone(t,"AddSiteDesignTask").execute({webUrl:e,siteDesignId:n})];case 1:return[2,r.sent()]}})})},t.prototype.addSiteDesignTaskToCurrentWeb=function(e){return i(this,void 0,void 0,function(){return s(this,function(n){switch(n.label){case 0:return[4,this.clone(t,"AddSiteDesignTaskToCurrentWeb").execute({siteDesignId:e})];case 1:return[2,n.sent()]}})})},t.prototype.getSiteDesignTask=function(e){return i(this,void 0,void 0,function(){var n;return s(this,function(r){switch(r.label){case 0:return[4,this.clone(t,"GetSiteDesignTask").execute({taskId:e})];case 1:return n=r.sent(),[2,Object(g.j)(n,"ID")?n:null]}})})},t.prototype.getSiteDesignRun=function(e,n){return i(this,void 0,void 0,function(){return s(this,function(r){switch(r.label){case 0:return[4,this.clone(t,"GetSiteDesignRun").execute({webUrl:e,siteDesignId:n})];case 1:return[2,r.sent()]}})})},t.prototype.getSiteDesignRunStatus=function(e,n){return i(this,void 0,void 0,function(){return s(this,function(r){switch(r.label){case 0:return[4,this.clone(t,"GetSiteDesignRunStatus").execute({webUrl:e,runId:n})];case 1:return[2,r.sent()]}})})},t}(N),It=function(e){function t(n,r){return e.call(this,t.getBaseUrl(n),"_api/Microsoft.Sharepoint.Utilities.WebTemplateExtensions.SiteScriptUtility."+r)||this}return r(t,e),t.getBaseUrl=function(e){if("string"==typeof e)return e;var t=e,n=t.toUrl(),r=n.indexOf("_api/");return r<0?n:n.substr(0,r)},t.prototype.execute=function(e){return this.postCore({body:JSON.stringify(e)})},t.prototype.getSiteScripts=function(){return this.clone(t,"GetSiteScripts",!0).execute({})},t.prototype.createSiteScript=function(e,n,r){return i(this,void 0,void 0,function(){return s(this,function(o){switch(o.label){case 0:return[4,this.clone(t,"CreateSiteScript(Title=@title,Description=@desc)?@title='"+encodeURIComponent(e)+"'&@desc='"+encodeURIComponent(n)+"'").execute(r)];case 1:return[2,o.sent()]}})})},t.prototype.getSiteScriptMetadata=function(e){return i(this,void 0,void 0,function(){return s(this,function(n){switch(n.label){case 0:return[4,this.clone(t,"GetSiteScriptMetadata").execute({id:e})];case 1:return[2,n.sent()]}})})},t.prototype.deleteSiteScript=function(e){return i(this,void 0,void 0,function(){return s(this,function(n){switch(n.label){case 0:return[4,this.clone(t,"DeleteSiteScript").execute({id:e})];case 1:return n.sent(),[2]}})})},t.prototype.updateSiteScript=function(e,n){return i(this,void 0,void 0,function(){return s(this,function(r){switch(r.label){case 0:return n&&(e.Content=JSON.stringify(n)),[4,this.clone(t,"UpdateSiteScript").execute({updateInfo:e})];case 1:return[2,r.sent()]}})})},t.prototype.getSiteScriptFromList=function(e){return i(this,void 0,void 0,function(){return s(this,function(n){switch(n.label){case 0:return[4,this.clone(t,"GetSiteScriptFromList").execute({listUrl:e})];case 1:return[2,n.sent()]}})})},t.prototype.getSiteScriptFromWeb=function(e,n){return i(this,void 0,void 0,function(){return s(this,function(r){switch(r.label){case 0:return[4,this.clone(t,"getSiteScriptFromWeb").execute({webUrl:e,info:n})];case 1:return[2,r.sent()]}})})},t}(N),_t=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,t.prototype.add=function(e,t,r,o,i,s){void 0===r&&(r=""),void 0===o&&(o="STS"),void 0===i&&(i=1033),void 0===s&&(s=!0);var a={Description:r,Language:i,Title:e,Url:t,UseSamePermissionsAsParentSite:s,WebTemplate:o},c=Object(g.n)({parameters:Object(g.f)({__metadata:{type:"SP.WebCreationInformation"}},a)});return this.clone(n,"add").postCore({body:c}).then(function(e){return{data:e,web:new Ct(u(e).replace(/_api\/web\/?/i,""))}})};var n;return t=n=o([h("webs")],t)}(j),Pt=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t=o([h("webinfos")],t)}(j),Ct=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e),n=t,t.fromUrl=function(e,t){return new n(a(e),t)},Object.defineProperty(t.prototype,"webs",{get:function(){return new _t(this)},enumerable:!0,configurable:!0}),t.prototype.getParentWeb=function(){var e=this;return this.select("ParentWeb/Id").expand("ParentWeb").get().then(function(t){var n=t.ParentWeb;return n?new ht(e.parentUrl).openWebById(n.Id):null})},t.prototype.getSubwebsFilteredForCurrentUser=function(e,t){return void 0===e&&(e=-1),void 0===t&&(t=-1),this.clone(_t,"getSubwebsFilteredForCurrentUser(nWebTemplateFilter="+e+",nConfigurationFilter="+t+")")},Object.defineProperty(t.prototype,"allProperties",{get:function(){return this.clone(R,"allproperties")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"webinfos",{get:function(){return new Pt(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"contentTypes",{get:function(){return new _e(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"lists",{get:function(){return new Ge(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"fields",{get:function(){return new Ue(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"features",{get:function(){return new pt(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"availablefields",{get:function(){return new Ue(this,"availablefields")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"navigation",{get:function(){return new mt(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"siteUsers",{get:function(){return new A(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"siteGroups",{get:function(){return new F(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"siteUserInfoList",{get:function(){return new We(this,"siteuserinfolist")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"regionalSettings",{get:function(){return new vt(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"currentUser",{get:function(){return new L(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"folders",{get:function(){return new we(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"userCustomActions",{get:function(){return new Be(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"roleDefinitions",{get:function(){return new G(this)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"relatedItems",{get:function(){return bt.FromUrl(this.toUrl())},enumerable:!0,configurable:!0}),t.prototype.createBatch=function(){return new lt(this.parentUrl)},Object.defineProperty(t.prototype,"rootFolder",{get:function(){return new Ie(this,"rootFolder")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"associatedOwnerGroup",{get:function(){return new M(this,"associatedownergroup")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"associatedMemberGroup",{get:function(){return new M(this,"associatedmembergroup")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"associatedVisitorGroup",{get:function(){return new M(this,"associatedvisitorgroup")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"defaultDocumentLibrary",{get:function(){return new We(this,"DefaultDocumentLibrary")},enumerable:!0,configurable:!0}),t.prototype.getFolderById=function(e){return new Ie(this,"getFolderById('"+e+"')")},t.prototype.getFolderByServerRelativeUrl=function(e){return new Ie(this,"getFolderByServerRelativeUrl('"+e+"')")},t.prototype.getFolderByServerRelativePath=function(e){return new Ie(this,"getFolderByServerRelativePath(decodedUrl='"+e+"')")},t.prototype.getFileById=function(e){return new tt(this,"getFileById('"+e+"')")},t.prototype.getFileByServerRelativeUrl=function(e){return new tt(this,"getFileByServerRelativeUrl('"+e+"')")},t.prototype.getFileByServerRelativePath=function(e){return new tt(this,"getFileByServerRelativePath(decodedUrl='"+e+"')")},t.prototype.getList=function(e){return new We(this,"getList('"+e+"')")},t.prototype.update=function(e){var t=this,n=Object(g.n)(Object(g.f)({__metadata:{type:"SP.Web"}},e));return this.postCore({body:n,headers:{"X-HTTP-Method":"MERGE"}}).then(function(e){return{data:e,web:t}})},t.prototype.delete=function(){return e.prototype.deleteCore.call(this)},t.prototype.applyTheme=function(e,t,r,o){var i=Object(g.n)({backgroundImageUrl:r,colorPaletteUrl:e,fontSchemeUrl:t,shareGenerated:o});return this.clone(n,"applytheme").postCore({body:i})},t.prototype.applyWebTemplate=function(e){var t=this.clone(n,"applywebtemplate");return t.concat("(@t)"),t.query.set("@t",e),t.postCore()},t.prototype.ensureUser=function(e){var t=Object(g.n)({logonName:e});return this.clone(n,"ensureuser").postCore({body:t}).then(function(e){return{data:e,user:new k(u(e))}})},t.prototype.availableWebTemplates=function(e,t){return void 0===e&&(e=1033),void 0===t&&(t=!0),new j(this,"getavailablewebtemplates(lcid="+e+", doincludecrosslanguage="+t+")")},t.prototype.getCatalog=function(e){return this.clone(n,"getcatalog("+e+")").select("Id").get().then(function(e){return new We(u(e))})},t.prototype.getChanges=function(e){var t=Object(g.n)({query:Object(g.f)({__metadata:{type:"SP.ChangeQuery"}},e)});return this.clone(n,"getchanges").postCore({body:t})},Object.defineProperty(t.prototype,"customListTemplate",{get:function(){return new j(this,"getcustomlisttemplates")},enumerable:!0,configurable:!0}),t.prototype.getUserById=function(e){return new k(this,"getUserById("+e+")")},t.prototype.mapToIcon=function(e,t,r){return void 0===t&&(t=0),void 0===r&&(r=""),this.clone(n,"maptoicon(filename='"+e+"', progid='"+r+"', size="+t+")").get()},t.prototype.getStorageEntity=function(e){return this.clone(n,"getStorageEntity('"+e+"')").get()},t.prototype.setStorageEntity=function(e,t,r,o){return void 0===r&&(r=""),void 0===o&&(o=""),this.clone(n,"setStorageEntity").postCore({body:Object(g.n)({comments:o,description:r,key:e,value:t})})},t.prototype.removeStorageEntity=function(e){return this.clone(n,"removeStorageEntity('"+e+"')").postCore()},t.prototype.getAppCatalog=function(e){return new ut(e||this)},t.prototype.getSiteCollectionAppCatalog=function(e){return new ut(e||this,"_api/web/sitecollectionappcatalog/AvailableApps")},t.prototype.getClientSideWebParts=function(){return this.clone(j,"GetClientSideWebParts").get()},t.prototype.addClientSidePage=function(e,t){return void 0===t&&(t=e.replace(/\.[^\/.]+$/,"")),xt.create(this,e,t)},t.prototype.addClientSidePageByPath=function(e,t){return void 0===t&&(t=e.replace(/\.[^\/.]+$/,"")),xt.create(this,e,t)},t.prototype.createDefaultAssociatedGroups=function(e,t,r){var o=this.clone(n,"createDefaultAssociatedGroups(userLogin=@u,userLogin2=@v,groupNameSeed=@s)");return o.query.set("@u","'"+encodeURIComponent(e||"")+"'"),o.query.set("@v","'"+encodeURIComponent(t||"")+"'"),o.query.set("@s","'"+encodeURIComponent(r||"")+"'"),o.postCore()},t.prototype.hubSiteData=function(e){return void 0===e&&(e=!1),i(this,void 0,void 0,function(){return s(this,function(t){return[2,this.clone(n,"hubSiteData("+e+")").get().then(function(e){return JSON.parse(e)})]})})},t.prototype.syncHubSiteTheme=function(){return this.clone(n,"syncHubSiteTheme").postCore()},t.prototype.getSiteDesignRuns=function(e){return new wt(this,"").getSiteDesignRun(void 0,e)},t.prototype.getSiteScript=function(e){return new It(this,"").getSiteScriptFromWeb(void 0,e)},t.prototype.addSiteDesignTask=function(e){return new wt(this,"").addSiteDesignTaskToCurrentWeb(e)},t.prototype.getSiteDesignRunStatus=function(e){return new wt(this,"").getSiteDesignRunStatus(void 0,e)};var n;return t=n=o([h("_api/web")],t)}(fe);!function(e){e[e.NotPromoted=0]="NotPromoted",e[e.PromoteOnPublish=1]="PromoteOnPublish",e[e.Promoted=2]="Promoted"}(at||(at={}));var Et,xt=function(e){function t(n,r,o,i,s,u){void 0===i&&(i=!1),void 0===s&&(s=[]),void 0===u&&(u=!1);var c=e.call(this,n,r)||this;return c.json=o,c.sections=s,c.commentsDisabled=u,c._bannerImageDirty=!1,"string"==typeof n?(c._parentUrl="",c._url=Object(g.d)(a(n),r)):c.extend(t.initFrom(n,null),r),c._pageSettings={controlType:0,pageSettingsSlice:{isDefaultDescription:!0,isDefaultThumbnail:!0}},c._layoutPart=t.getDefaultLayoutPart(),void 0===o||i||c.fromJSON(o),c}return r(t,e),t.create=function(e,n,r,o,a){return void 0===o&&(o="Article"),void 0===a&&(a=0),i(this,void 0,void 0,function(){var i,u;return s(this,function(s){switch(s.label){case 0:return n=n.replace(/\.aspx$/i,""),[4,t.initFrom(e,"_api/sitepages/pages").postCore({body:Object(g.n)(Object.assign(d("SP.Publishing.SitePage"),{PageLayoutType:o,PromotedState:a}))})];case 1:return i=s.sent(),u=new t(e,"",i),u.title=n,[4,u.save(!1)];case 2:return s.sent(),u.title=r,[2,u]}})})},t.fromFile=function(e){return e.getItem().then(function(n){return new t(a(e.toUrl()),"",{Id:n.Id},!0).configureFrom(e).load()})},t.getDefaultLayoutPart=function(){return{dataVersion:"1.4",description:"Title Region Description",id:"cbe7b0a9-3504-44dd-a3a3-0e5cacd07788",instanceId:"cbe7b0a9-3504-44dd-a3a3-0e5cacd07788",properties:{authors:[],layoutType:"FullWidthImage",showPublishDate:!1,showTopicHeader:!1,textAlignment:"Left",title:"",topicHeader:""},serverProcessedContent:{htmlStrings:{},searchablePlainTexts:{},imageSources:{},links:{}},title:"Title area"}},t.initFrom=function(e,n){return new t(a(e.toUrl()),n).configureFrom(e)},Object.defineProperty(t.prototype,"pageLayout",{get:function(){return this.json.PageLayoutType},set:function(e){this.json.PageLayoutType=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"bannerImageUrl",{get:function(){return this.json.BannerImageUrl},set:function(e){this.json.BannerImageUrl=e,this._bannerImageDirty=!0},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"bannerImageSourceType",{get:function(){return this._layoutPart.properties.imageSourceType},set:function(e){this._layoutPart.properties.imageSourceType=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"topicHeader",{get:function(){return Object(g.q)(this.json.TopicHeader)?this.json.TopicHeader:""},set:function(e){this.json.TopicHeader=e,this._layoutPart.properties.topicHeader=e,Object(g.r)(e)&&(this.showTopicHeader=!1)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"title",{get:function(){return this._layoutPart.properties.title},set:function(e){this.json.Title=e,this._layoutPart.properties.title=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"layoutType",{get:function(){return this._layoutPart.properties.layoutType},set:function(e){this._layoutPart.properties.layoutType=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"headerTextAlignment",{get:function(){return this._layoutPart.properties.textAlignment},set:function(e){this._layoutPart.properties.textAlignment=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"showTopicHeader",{get:function(){return this._layoutPart.properties.showTopicHeader},set:function(e){this._layoutPart.properties.showTopicHeader=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"showPublishDate",{get:function(){return this._layoutPart.properties.showPublishDate},set:function(e){this._layoutPart.properties.showPublishDate=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"hasVerticalSection",{get:function(){return this.sections.findIndex(function(e){return 2===e.layoutIndex})>-1},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"verticalSection",{get:function(){return this.hasVerticalSection?this.addVerticalSection():null},enumerable:!0,configurable:!0}),t.prototype.addSection=function(){var e=new Nt(this,f(this.sections),1);return this.sections.push(e),e},t.prototype.addVerticalSection=function(){var e=this.sections.findIndex(function(e){return 2===e.layoutIndex});if(e>-1)return this.sections[e];var t=new Nt(this,f(this.sections),2);return this.sections.push(t),t},t.prototype.fromJSON=function(e){this.json=e;var t=JSON.parse(e.CanvasContent1),n=JSON.parse(e.LayoutWebpartsContent);return n&&n.length>0&&(this._layoutPart=n[0]),this.setControls(t),this},t.prototype.load=function(){var e=this;return this.getItem("Id","CommentsDisabled").then(function(t){return new N(e,"_api/sitepages/pages("+t.Id+")").get().then(function(n){return e.commentsDisabled=t.CommentsDisabled,e.fromJSON(n)})})},t.prototype.save=function(e){var n=this;if(void 0===e&&(e=!0),null===this.json.Id)throw Error("The id for this page is null. If you want to create a new page, please use ClientSidePage.Create");var r=Promise.resolve({});return this._bannerImageDirty&&(r=r.then(function(e){return new Promise(function(e,t){var r=n.json.BannerImageUrl;Object(g.m)(r)&&(r=r.replace(/^https?:\/\/[a-z0-9\.]*?\.[a-z]{2,3}\//i,"/"));var o=new ht(a(n.toUrl())),i=new Ct(a(n.toUrl())),s=i.getFileByServerRelativePath(r),u="",c="",l="",p="",d="";Promise.all([o.select("Id","Url").get().then(function(e){return u=e.Id}),i.select("Id","Url").get().then(function(e){c=e.Id,d=e.Url}),s.listItemAllFields.select("UniqueId","ParentList/Id").expand("ParentList").get().then(function(e){l=e.UniqueId,p=e.ParentList.Id})]).then(function(){var t=new N(d,"_layouts/15/getpreview.ashx");t.query.set("guidSite",""+u),t.query.set("guidWeb",""+c),t.query.set("guidFile",""+l),n.bannerImageUrl=t.toUrlAndQuery(),Object(g.q)(n._layoutPart.serverProcessedContent)||(n._layoutPart.serverProcessedContent={}),n._layoutPart.serverProcessedContent.imageSources={imageSource:r},Object(g.q)(n._layoutPart.serverProcessedContent.customMetadata)||(n._layoutPart.serverProcessedContent.customMetadata={}),n._layoutPart.serverProcessedContent.customMetadata.imageSource={listId:p,siteId:u,uniqueId:l,webId:c},n._layoutPart.properties.webId=c,n._layoutPart.properties.siteId=u,n._layoutPart.properties.listId=p,n._layoutPart.properties.uniqueId=l,e()}).catch(t)})})),this.json.IsPageCheckedOutToCurrentUser||(r=r.then(function(e){return t.initFrom(n,"_api/sitepages/pages("+n.json.Id+")/checkoutpage").postCore()})),r=r.then(function(e){var r=Object.assign(d("SP.Publishing.SitePage"),{AuthorByline:n.json.AuthorByline||[],BannerImageUrl:n.bannerImageUrl,CanvasContent1:n.getCanvasContent1(),LayoutWebpartsContent:n.getLayoutWebpartsContent(),Title:n.title,TopicHeader:n.topicHeader}),o=t.initFrom(n,"_api/sitepages/pages("+n.json.Id+")/savepage");return o.configure({headers:{"if-match":"*"}}),o.postCore({body:Object(g.n)(r)})}),e&&(r=r.then(function(e){return t.initFrom(n,"_api/sitepages/pages("+n.json.Id+")/publish").postCore()}).then(function(e){e&&(n.json.IsPageCheckedOutToCurrentUser=!1)})),r=r.then(function(e){n._bannerImageDirty=!1})},t.prototype.discardPageCheckout=function(){return i(this,void 0,void 0,function(){var e;return s(this,function(n){switch(n.label){case 0:if(null===this.json.Id)throw Error("The id for this page is null. If you want to create a new page, please use ClientSidePage.Create");return[4,t.initFrom(this,"_api/sitepages/pages("+this.json.Id+")/discardPage").postCore({body:Object(g.n)(d("SP.Publishing.SitePage"))})];case 1:return e=n.sent(),this.fromJSON(e),[2]}})})},t.prototype.promoteToNews=function(){return i(this,void 0,void 0,function(){return s(this,function(e){return[2,this.promoteNewsImpl("promoteToNews")]})})},t.prototype.enableComments=function(){var e=this;return this.setCommentsOn(!0).then(function(t){return e.commentsDisabled=!1,t})},t.prototype.disableComments=function(){var e=this;return this.setCommentsOn(!1).then(function(t){return e.commentsDisabled=!0,t})},t.prototype.findControlById=function(e){return this.findControl(function(t){return t.id===e})},t.prototype.findControl=function(e){for(var t=0;t3?{}:{zoneEmphasis:e}},t.prototype.setCommentsOn=function(e){return this.getItem().then(function(t){return new ze(t,"SetCommentsDisabled("+!e+")").update({})})},t.prototype.promoteNewsImpl=function(e){return i(this,void 0,void 0,function(){var n,r;return s(this,function(o){switch(o.label){case 0:return Object(g.r)(this.json.VersionInfo.LastVersionCreatedBy)?(n=new Date(this.json.VersionInfo.LastVersionCreated),n.getFullYear()<2e3?[4,this.save(!0)]:[3,2]):[3,2];case 1:o.sent(),o.label=2;case 2:if(null===this.json.Id)throw Error("The id for this page is null. If you want to create a new page, please use ClientSidePage.Create");return[4,t.initFrom(this,"_api/sitepages/pages("+this.json.Id+")/"+e).postCore({body:Object(g.n)(d("SP.Publishing.SitePage"))})];case 3:return r=o.sent(),[2,r]}})})},t.prototype.mergePartToTree=function(e,t){var n=null,r=12,o=0,i=0,s=1;t&&(Object(g.j)(t,"zoneIndex")&&(i=t.zoneIndex),Object(g.j)(t,"sectionIndex")&&(o=t.sectionIndex),Object(g.j)(t,"sectionFactor")&&(r=t.sectionFactor),Object(g.j)(t,"layoutIndex")&&(s=t.layoutIndex));var a=e.data&&e.data.emphasis&&e.data.emphasis.zoneEmphasis?e.data.emphasis.zoneEmphasis:0,u=this.getOrCreateSection(i,s,a),c=u.columns.filter(function(e){return e.order===o});n=c.length<1?u.addColumn(r,s):c[0],e.column=n,n.addControl(e)},t.prototype.mergeColumnToTree=function(e){var t=Object(g.j)(e.data,"position")&&Object(g.j)(e.data.position,"zoneIndex")?e.data.position.zoneIndex:0,n=Object(g.j)(e.data,"position")&&Object(g.j)(e.data.position,"layoutIndex")?e.data.position.layoutIndex:1,r=this.getOrCreateSection(t,n,e.data.emphasis.zoneEmphasis||0);e.section=r,r.columns.push(e)},t.prototype.getOrCreateSection=function(e,t,n){var r=null,o=this.sections.filter(function(n){return n.order===e&&n.layoutIndex===t});return o.length<1?(r=2===t?this.addVerticalSection():this.addSection(),r.order=e,r.emphasis=n):r=o[0],r},t.prototype.getItem=function(){for(var e=this,n=[],r=0;r")||(e="

"+e+"

"),this.data.innerHTML=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"order",{get:function(){return this.data.position.controlIndex},set:function(e){this.data.position.controlIndex=e},enumerable:!0,configurable:!0}),t.prototype.onColumnChange=function(e){this.data.position.sectionFactor=e.factor,this.data.position.controlIndex=f(e.controls),this.data.position.zoneIndex=e.data.position.zoneIndex,this.data.position.sectionIndex=e.order,this.data.position.layoutIndex=e.data.position.layoutIndex},t.Default={addedFromPersistedData:!1,anchorComponentId:"",controlType:4,displayMode:2,editorType:"CKEditor",emphasis:{},id:"",innerHTML:"",position:{controlIndex:1,layoutIndex:1,sectionFactor:12,sectionIndex:1,zoneIndex:1}},t}(Rt),Ut=function(e){function t(n){return void 0===n&&(n=JSON.parse(JSON.stringify(t.Default))),e.call(this,n)||this}return r(t,e),t.fromComponentDef=function(e){var n=new t;return n.import(e),n},Object.defineProperty(t.prototype,"title",{get:function(){return this.data.webPartData.title},set:function(e){this.data.webPartData.title=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"description",{get:function(){return this.data.webPartData.description},set:function(e){this.data.webPartData.description=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"order",{get:function(){return this.data.position.controlIndex},set:function(e){this.data.position.controlIndex=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"height",{get:function(){return this.data.reservedHeight},set:function(e){this.data.reservedHeight=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"width",{get:function(){return this.data.reservedWidth},set:function(e){this.data.reservedWidth=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"dataVersion",{get:function(){return this.data.webPartData.dataVersion},set:function(e){this.data.webPartData.dataVersion=e},enumerable:!0,configurable:!0}),t.prototype.setProperties=function(e){return this.data.webPartData.properties=Object(g.f)(this.data.webPartData.properties,e),this},t.prototype.getProperties=function(){return this.data.webPartData.properties},t.prototype.onColumnChange=function(e){this.data.position={controlIndex:f(e.controls),layoutIndex:e.data.position.layoutIndex,sectionFactor:e.factor,sectionIndex:e.data.position.sectionIndex,zoneIndex:e.data.position.zoneIndex}},t.prototype.import=function(e){var t=Object(g.h)(),n=e.Id.replace(/^\{|\}$/g,"").toLowerCase(),r=JSON.parse(e.Manifest),o=r.preconfiguredEntries[0];this.setData(Object.assign({},this.data,{id:t,webPartData:{dataVersion:"1.0",description:o.description.default,id:n,instanceId:t,properties:o.properties,title:o.title.default},webPartId:n}))},t.Default={addedFromPersistedData:!1,controlType:3,displayMode:2,emphasis:{},id:null,position:{controlIndex:1,layoutIndex:1,sectionFactor:12,sectionIndex:1,zoneIndex:1},reservedHeight:500,reservedWidth:500,webPartData:null,webPartId:null},t}(Rt),kt=(new Map([["text","Querytext"],["template","QueryTemplate"],["sourceId","SourceId"],["trimDuplicatesIncludeId",""],["startRow",""],["rowLimit",""],["rankingModelId",""],["rowsPerPage",""],["selectProperties",""],["culture",""],["timeZoneId",""],["refinementFilters",""],["refiners",""],["hiddenConstraints",""],["sortList",""],["timeout",""],["hithighlightedProperties",""],["clientType",""],["personalizationData",""],["resultsURL",""],["queryTag",""],["properties",""],["queryTemplatePropertiesUrl",""],["reorderingRules",""],["hitHighlightedMultivaluePropertyLimit",""],["collapseSpecification",""],["uiLanguage",""],["desiredSnippetLength",""],["maxSnippetLength",""],["summaryLength",""]]),new Map([]),function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.execute=function(e){var t=this,n=this.parseQuery(e),r=Object(g.n)({request:Object(g.f)(d("Microsoft.Office.Server.Search.REST.SearchRequest"),Object.assign({},n,{HitHighlightedProperties:this.fixArrProp(n.HitHighlightedProperties),Properties:this.fixArrProp(n.Properties),RefinementFilters:this.fixArrProp(n.RefinementFilters),ReorderingRules:this.fixArrProp(n.ReorderingRules),SelectProperties:this.fixArrProp(n.SelectProperties),SortList:this.fixArrProp(n.SortList)}))});if(this._useCaching){this._forceCaching=!0;var o="PnPjs.SearchWithCaching("+Object(g.i)(r)+")";Object(g.q)(this._cachingOptions)?/\/_api\/search\/postquery$/i.test(this._cachingOptions.key)&&(this._cachingOptions.key=o):this._cachingOptions=new v.c(o)}return this.postCore({body:r}).then(function(e){return new Lt(e,t.toUrl(),n)})},t.prototype.fixArrProp=function(e){return void 0===e?{results:[]}:(e=Object(g.k)(e)?e:[e],Object(g.j)(e,"results")?e:{results:e})},t.prototype.parseQuery=function(e){return"string"==typeof e?{Querytext:e}:e.toSearchQuery?e.toSearchQuery():e},t=o([h("_api/search/postquery")],t)}(R)),Lt=function(){function e(e,t,n,r,o){void 0===r&&(r=null),void 0===o&&(o=null),this._url=t,this._query=n,this._raw=r,this._primary=o,this._raw=e.postquery?e.postquery:e}return Object.defineProperty(e.prototype,"ElapsedTime",{get:function(){return this.RawSearchResults.ElapsedTime},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"RowCount",{get:function(){return this.RawSearchResults.PrimaryQueryResult.RelevantResults.RowCount},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"TotalRows",{get:function(){return this.RawSearchResults.PrimaryQueryResult.RelevantResults.TotalRows},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"TotalRowsIncludingDuplicates",{get:function(){return this.RawSearchResults.PrimaryQueryResult.RelevantResults.TotalRowsIncludingDuplicates},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"RawSearchResults",{get:function(){return this._raw},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"PrimarySearchResults",{get:function(){return null===this._primary&&(this._primary=this.formatSearchResults(this._raw.PrimaryQueryResult.RelevantResults.Table.Rows)),this._primary},enumerable:!0,configurable:!0}),e.prototype.getPage=function(e,t){if(this.TotalRowsthis.TotalRows?Promise.resolve(null):new kt(this._url,null).execute(r)},e.prototype.formatSearchResults=function(e){for(var t=new Array,n=e.results?e.results:e,r=0,o=n;r0&&(n.properties=Object(g.f)(n.properties,{To:{results:e.To}})),e.CC&&e.CC.length>0&&(n.properties=Object(g.f)(n.properties,{CC:{results:e.CC}})),e.BCC&&e.BCC.length>0&&(n.properties=Object(g.f)(n.properties,{BCC:{results:e.BCC}})),e.AdditionalHeaders&&(n.properties=Object(g.f)(n.properties,{AdditionalHeaders:e.AdditionalHeaders})),this.clone(t,"SendEmail",!0).excute(n)},t.prototype.getCurrentUserEmailAddresses=function(){return this.clone(t,"GetCurrentUserEmailAddresses",!0).excute({}).then(function(e){return Object(g.j)(e,"GetCurrentUserEmailAddresses")?e.GetCurrentUserEmailAddresses:e})},t.prototype.resolvePrincipal=function(e,n,r,o,i,s){void 0===s&&(s=!1);var a={addToUserInfoList:i,input:e,inputIsEmailOnly:o,matchUserInfoList:s,scopes:n,sources:r};return this.clone(t,"ResolvePrincipalInCurrentContext",!0).excute(a).then(function(e){return Object(g.j)(e,"ResolvePrincipalInCurrentContext")?e.ResolvePrincipalInCurrentContext:e})},t.prototype.searchPrincipals=function(e,n,r,o,i){var s={groupName:o,input:e,maxCount:i,scopes:n,sources:r};return this.clone(t,"SearchPrincipalsUsingContextWeb",!0).excute(s).then(function(e){return Object(g.j)(e,"SearchPrincipalsUsingContextWeb")?e.SearchPrincipalsUsingContextWeb:e})},t.prototype.createEmailBodyForInvitation=function(e){var n={pageAddress:e};return this.clone(t,"CreateEmailBodyForInvitation",!0).excute(n).then(function(e){return Object(g.j)(e,"CreateEmailBodyForInvitation")?e.CreateEmailBodyForInvitation:e})},t.prototype.expandGroupsToPrincipals=function(e,n){void 0===n&&(n=30);var r={inputs:e,maxCount:n};return this.clone(t,"ExpandGroupsToPrincipals",!0).excute(r).then(function(e){return Object(g.j)(e,"ExpandGroupsToPrincipals")?e.ExpandGroupsToPrincipals:e})},t.prototype.createWikiPage=function(e){return this.clone(t,"CreateWikiPageInContextWeb",!0).excute({parameters:e}).then(function(e){return{data:Object(g.j)(e,"CreateWikiPageInContextWeb")?e.CreateWikiPageInContextWeb:e,file:new tt(u(e))}})},t.prototype.containsInvalidFileFolderChars=function(e,n){return void 0===n&&(n=!1),n?(t.InvalidFileFolderNameCharsOnPremiseRegex.lastIndex=0,t.InvalidFileFolderNameCharsOnPremiseRegex.test(e)):(t.InvalidFileFolderNameCharsOnlineRegex.lastIndex=0,t.InvalidFileFolderNameCharsOnlineRegex.test(e))},t.prototype.stripInvalidFileFolderChars=function(e,n,r){return void 0===n&&(n=""),void 0===r&&(r=!1),r?e.replace(t.InvalidFileFolderNameCharsOnPremiseRegex,n):e.replace(t.InvalidFileFolderNameCharsOnlineRegex,n)},t.InvalidFileFolderNameCharsOnlineRegex=/["*:<>?\/\\|\x00-\x1f\x7f-\x9f]/g,t.InvalidFileFolderNameCharsOnPremiseRegex=/["#%*:<>?\/\\|\x00-\x1f\x7f-\x9f]/g,t}(N),Jt=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.getById=function(e){return new Yt(this,"GetById?hubSiteId='"+e+"'")},t=o([h("_api/hubsites")],t)}(j),Yt=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(R),$t=function(){function e(e,t){void 0===e&&(e={}),void 0===t&&(t=""),this._options=e,this._baseUrl=t}return e.prototype.configure=function(t,n){return void 0===n&&(n=""),new e(t,n)},e.prototype.setup=function(e){l(e)},e.prototype.searchSuggest=function(e){var t;return t="string"==typeof e?{querytext:e}:e,this.create(Bt).execute(t)},e.prototype.search=function(e){return this.create(kt).execute(e)},e.prototype.searchWithCaching=function(e,t){return this.create(kt).usingCaching(t).execute(e)},Object.defineProperty(e.prototype,"site",{get:function(){return this.create(ht)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"web",{get:function(){return this.create(Ct)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"profiles",{get:function(){return this.create(qt)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"social",{get:function(){return this.create(Ht)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"navigation",{get:function(){return this.create(gt)},enumerable:!0,configurable:!0}),e.prototype.createBatch=function(){return this.web.createBatch()},Object.defineProperty(e.prototype,"utility",{get:function(){return this.create(Xt,"")},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"siteScripts",{get:function(){return this.create(It,"")},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"siteDesigns",{get:function(){return this.create(wt,"")},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"hubSites",{get:function(){return this.create(Jt)},enumerable:!0,configurable:!0}),e.prototype.getTenantAppCatalogWeb=function(){var e=this;return this.create(Ct,"_api/SP_TenantSettings_Current").get().then(function(t){return new Ct(t.CorporateCatalogUrl).configure(e._options)})},e.prototype.create=function(e,t){return new e(this._baseUrl,t).configure(this._options)},e}(),Zt=new $t}).call(t,n(1))},function(e,t){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),n.d(t,"UserCustomActionMegaMenuId",function(){return f});var r=n(6),o=(n.n(r),n(7)),i=(n.n(o),n(8)),s=(n.n(i),n(9)),a=(n.n(s),n(10)),u=n(18),c=(n(22),this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}()),l=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},p=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))(function(o,i){function s(e){try{u(r.next(e))}catch(e){i(e)}}function a(e){try{u(r.throw(e))}catch(e){i(e)}}function u(e){e.done?o(e.value):new n(function(t){t(e.value)}).then(s,a)}u((r=r.apply(e,t||[])).next())})},d=this&&this.__generator||function(e,t){function n(e){return function(t){return r([e,t])}}function r(n){if(o)throw new TypeError("Generator is already executing.");for(;u;)try{if(o=1,i&&(s=i[2&n[0]?"return":n[0]?"throw":"next"])&&!(s=s.call(i,n[1])).done)return s;switch(i=0,s&&(n=[0,s.value]),n[0]){case 0:case 1:s=n;break;case 4:return u.label++,{value:n[1],done:!1};case 5:u.label++,i=n[1],n=[0];continue;case 7:n=u.ops.pop(),u.trys.pop();continue;default:if(s=u.trys,!(s=s.length>0&&s[s.length-1])&&(6===n[0]||2===n[0])){u=0;continue}if(3===n[0]&&(!s||n[1]>s[0]&&n[1]\n "),[3,4];case 4:return[2]}})})},t.prototype._loadExternalCss=function(e){var t=document.getElementById("mega-menu-additional-css-34FAB720");if(e&&""!==e.trim()){if(!t){var n=document.getElementsByTagName("head")[0];t=document.createElement("link"),t.rel="stylesheet",t.type="text/css",t.id="mega-menu-additional-css-34FAB720",t.onload=function(){o.Log.info(h,"External CSS loaded successfully from: "+e)},t.onerror=function(){console.warn("Failed to load external CSS from: "+e)},n.appendChild(t)}t.href=e}else t&&t.remove()},t.prototype._onDispose=function(){console.log("[MegaMenuApplicationCustomizer._onDispose] Disposed custom top placeholder.")},l([r.override],t.prototype,"onInit",null),t}(i.BaseApplicationCustomizer);t.default=y},function(e,t,n){"use strict";(function(e){function r(e,t){function n(){this.constructor=e}w(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}function o(e,t){for(var n=[],r=2;r0&&(n=60*this.defaultTimeoutMinutes),t=i(new Date,"second",n)}return f({pnp:1,expiration:t,value:e})},e.prototype.cacheExpirationHandler=function(){var e=this;this.deleteExpired().then(function(t){setTimeout(o(e,e.cacheExpirationHandler),R.cacheExpirationIntervalMilliseconds)}).catch(function(e){console.error(e)})},e}(),U=function(){function e(e){void 0===e&&(e=new Map),this._store=e}return Object.defineProperty(e.prototype,"length",{get:function(){return this._store.size},enumerable:!0,configurable:!0}),e.prototype.clear=function(){this._store.clear()},e.prototype.getItem=function(e){return this._store.get(e)},e.prototype.key=function(e){return Array.from(this._store)[e][0]},e.prototype.removeItem=function(e){this._store.delete(e)},e.prototype.setItem=function(e,t){this._store.set(e,t)},e}(),k=function(){function e(e,t){void 0===e&&(e=null),void 0===t&&(t=null),this._local=e,this._session=t}return Object.defineProperty(e.prototype,"local",{get:function(){return null===this._local&&(this._local=this.getStore("local")),this._local},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"session",{get:function(){return null===this._session&&(this._session=this.getStore("session")),this._session},enumerable:!0,configurable:!0}),e.prototype.getStore=function(e){return new A("local"===e?"undefined"==typeof localStorage?new U:localStorage:"undefined"==typeof sessionStorage?new U:sessionStorage)},e}()}).call(t,n(1))},function(e,t,n){"use strict";n.d(t,"a",function(){return o});/** + * @license + * v1.3.11 + * MIT (https://github.com/pnp/pnpjs/blob/master/LICENSE) + * Copyright (c) 2020 Microsoft + * docs: https://pnp.github.io/pnpjs/ + * source: https://github.com/pnp/pnpjs + * bugs: https://github.com/pnp/pnpjs/issues + */ +var r,o=function(){function e(){}return Object.defineProperty(e,"activeLogLevel",{get:function(){return e.instance.activeLogLevel},set:function(t){e.instance.activeLogLevel=t},enumerable:!0,configurable:!0}),Object.defineProperty(e,"instance",{get:function(){return void 0!==e._instance&&null!==e._instance||(e._instance=new i),e._instance},enumerable:!0,configurable:!0}),e.subscribe=function(){for(var t=[],n=0;n0&&s[s.length-1])&&(6===n[0]||2===n[0])){u=0;continue}if(3===n[0]&&(!s||n[1]>s[0]&&n[1]-1},n.prototype.getCachedToken=function(e){if(!this._hasResource(e))return null;var t=this._getItem(this.CONSTANTS.STORAGE.ACCESS_TOKEN_KEY+e),n=this._getItem(this.CONSTANTS.STORAGE.EXPIRATION_KEY+e),r=this.config.expireOffsetSeconds||300;return n&&n>this._now()+r?t:(this._saveItem(this.CONSTANTS.STORAGE.ACCESS_TOKEN_KEY+e,""),this._saveItem(this.CONSTANTS.STORAGE.EXPIRATION_KEY+e,0),null)},n.prototype.getCachedUser=function(){if(this._user)return this._user;var e=this._getItem(this.CONSTANTS.STORAGE.IDTOKEN);return this._user=this._createUser(e),this._user},n.prototype.registerCallback=function(e,t,n){this._activeRenewals[t]=e,this._callBacksMappedToRenewStates[e]||(this._callBacksMappedToRenewStates[e]=[]);var r=this;this._callBacksMappedToRenewStates[e].push(n),this._callBackMappedToRenewStates[e]||(this._callBackMappedToRenewStates[e]=function(n,o,i,s){r._activeRenewals[t]=null;for(var a=0;a-1)){var t=this._user.profile.upn.split("@");e+="&domain_hint="+encodeURIComponent(t[t.length-1])}return e},n.prototype._createUser=function(e){var t=null,n=this._extractIdToken(e);return n&&n.hasOwnProperty("aud")&&(n.aud.toLowerCase()===this.config.clientId.toLowerCase()?(t={userName:"",profile:n},n.hasOwnProperty("upn")?t.userName=n.upn:n.hasOwnProperty("email")&&(t.userName=n.email)):this.warn("IdToken has invalid aud field")),t},n.prototype._getHash=function(e){return e.indexOf("#/")>-1?e=e.substring(e.indexOf("#/")+2):e.indexOf("#")>-1&&(e=e.substring(1)),e},n.prototype.isCallback=function(e){e=this._getHash(e);var t=this._deserialize(e);return t.hasOwnProperty(this.CONSTANTS.ERROR_DESCRIPTION)||t.hasOwnProperty(this.CONSTANTS.ACCESS_TOKEN)||t.hasOwnProperty(this.CONSTANTS.ID_TOKEN)},n.prototype.getLoginError=function(){return this._getItem(this.CONSTANTS.STORAGE.LOGIN_ERROR)},n.prototype.getRequestInfo=function(e){e=this._getHash(e);var t=this._deserialize(e),n={valid:!1,parameters:{},stateMatch:!1,stateResponse:"",requestType:this.REQUEST_TYPE.UNKNOWN};if(t&&(n.parameters=t,t.hasOwnProperty(this.CONSTANTS.ERROR_DESCRIPTION)||t.hasOwnProperty(this.CONSTANTS.ACCESS_TOKEN)||t.hasOwnProperty(this.CONSTANTS.ID_TOKEN))){n.valid=!0;var r="";if(!t.hasOwnProperty("state"))return this.warn("No state returned"),n;if(this.verbose("State: "+t.state),r=t.state,n.stateResponse=r,this._matchState(n))return n;if(!n.stateMatch&&window.parent){n.requestType=this._requestType;for(var o=this._renewStates,i=0;i-1&&t+1-1)return null;if(this.config&&this.config.endpoints)for(var n in this.config.endpoints)if(e.indexOf(n)>-1)return this.config.endpoints[n];return e.indexOf("http://")>-1||e.indexOf("https://")>-1?this._getHostFromUri(e)===this._getHostFromUri(this.config.redirectUri)?this.config.loginResource:null:this.config.loginResource},n.prototype._getHostFromUri=function(e){var t=String(e).replace(/^(https?:)\/\//,"");return t=t.split("/")[0]},n.prototype.handleWindowCallback=function(e){if(null==e&&(e=window.location.hash),this.isCallback(e)){var t=null,n=!1;this._openedWindows.length>0&&this._openedWindows[this._openedWindows.length-1].opener&&this._openedWindows[this._openedWindows.length-1].opener._adalInstance?(t=this._openedWindows[this._openedWindows.length-1].opener._adalInstance,n=!0):window.parent&&window.parent._adalInstance&&(t=window.parent._adalInstance);var r,o,i=t.getRequestInfo(e),s=null;o=n||window.parent!==window?t._callBackMappedToRenewStates[i.stateResponse]:t.callback,t.info("Returned from redirect url"),t.saveTokenFromHash(i),i.requestType===this.REQUEST_TYPE.RENEW_TOKEN&&window.parent?(window.parent!==window?t.verbose("Window is in iframe, acquiring token silently"):t.verbose("acquiring token interactive in progress"),r=i.parameters[t.CONSTANTS.ACCESS_TOKEN]||i.parameters[t.CONSTANTS.ID_TOKEN],s=t.CONSTANTS.ACCESS_TOKEN):i.requestType===this.REQUEST_TYPE.LOGIN&&(r=i.parameters[t.CONSTANTS.ID_TOKEN],s=t.CONSTANTS.ID_TOKEN);var a=i.parameters[t.CONSTANTS.ERROR_DESCRIPTION],u=i.parameters[t.CONSTANTS.ERROR];try{o&&o(a,r,u,s)}catch(e){t.error("Error occurred in user defined callback function: "+e)}window.parent!==window||n||(t.config.navigateToLoginRequestUrl?window.location.href=t._getItem(t.CONSTANTS.STORAGE.LOGIN_REQUEST):window.location.hash="")}},n.prototype._getNavigateUrl=function(e,t){var n="common";this.config.tenant&&(n=this.config.tenant);var r=this.instance+n+"/oauth2/authorize"+this._serialize(e,this.config,t)+this._addLibMetadata();return this.info("Navigate url:"+r),r},n.prototype._extractIdToken=function(e){var t=this._decodeJwt(e);if(!t)return null;try{var n=t.JWSPayload,r=this._base64DecodeStringUrlSafe(n);return r?JSON.parse(r):(this.info("The returned id_token could not be base64 url safe decoded."),null)}catch(e){this.error("The returned id_token could not be decoded",e)}return null},n.prototype._base64DecodeStringUrlSafe=function(e){return e=e.replace(/-/g,"+").replace(/_/g,"/"),window.atob?decodeURIComponent(escape(window.atob(e))):decodeURIComponent(escape(this._decode(e)))},n.prototype._decode=function(e){var t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";e=String(e).replace(/=+$/,"");var n=e.length;if(n%4==1)throw new Error("The token to be decoded is not correctly encoded.");for(var r,o,i,s,a,u,c,l,p="",d=0;d>16&255,c=a>>8&255,p+=String.fromCharCode(u,c);break}if(d+1===n-1){a=r<<18|o<<12,u=a>>16&255,p+=String.fromCharCode(u);break}a=r<<18|o<<12|i<<6|s,u=a>>16&255,c=a>>8&255,l=255&a,p+=String.fromCharCode(u,c,l)}return p},n.prototype._decodeJwt=function(e){if(this._isEmpty(e))return null;var t=/^([^\.\s]*)\.([^\.\s]+)\.([^\.\s]*)$/,n=t.exec(e);return!n||n.length<4?(this.warn("The returned id_token is not parseable."),null):{header:n[1],JWSPayload:n[2],JWSSig:n[3]}},n.prototype._convertUrlSafeToRegularBase64EncodedString=function(e){return e.replace("-","+").replace("_","/")},n.prototype._serialize=function(e,t,n){var r=[];if(null!==t){r.push("?response_type="+e),r.push("client_id="+encodeURIComponent(t.clientId)),n&&r.push("resource="+encodeURIComponent(n)),r.push("redirect_uri="+encodeURIComponent(t.redirectUri)),r.push("state="+encodeURIComponent(t.state)),t.hasOwnProperty("slice")&&r.push("slice="+encodeURIComponent(t.slice)),t.hasOwnProperty("extraQueryParameter")&&r.push(t.extraQueryParameter);var o=t.correlationId?t.correlationId:this._guid();r.push("client-request-id="+encodeURIComponent(o))}return r.join("&")},n.prototype._deserialize=function(e){var t,n=/\+/g,r=/([^&=]+)=([^&]*)/g,o=function(e){return decodeURIComponent(e.replace(n," "))},i={};for(t=r.exec(e);t;)i[o(t[1])]=o(t[2]),t=r.exec(e);return i},n.prototype._decimalToHex=function(e){for(var t=e.toString(16);t.length<2;)t="0"+t;return t},n.prototype._guid=function(){var e=window.crypto||window.msCrypto;if(e&&e.getRandomValues){var t=new Uint8Array(16);return e.getRandomValues(t),t[6]|=64,t[6]&=79,t[8]|=128,t[8]&=191,this._decimalToHex(t[0])+this._decimalToHex(t[1])+this._decimalToHex(t[2])+this._decimalToHex(t[3])+"-"+this._decimalToHex(t[4])+this._decimalToHex(t[5])+"-"+this._decimalToHex(t[6])+this._decimalToHex(t[7])+"-"+this._decimalToHex(t[8])+this._decimalToHex(t[9])+"-"+this._decimalToHex(t[10])+this._decimalToHex(t[11])+this._decimalToHex(t[12])+this._decimalToHex(t[13])+this._decimalToHex(t[14])+this._decimalToHex(t[15])}for(var n="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx",r="0123456789abcdef",o=0,i="",s=0;s<36;s++)"-"!==n[s]&&"4"!==n[s]&&(o=16*Math.random()|0),"x"===n[s]?i+=r[o]:"y"===n[s]?(o&=3,o|=8,i+=r[o]):i+=n[s];return i},n.prototype._expiresIn=function(e){return e||(e=3599),this._now()+parseInt(e,10)},n.prototype._now=function(){return Math.round((new Date).getTime()/1e3)},n.prototype._addAdalFrame=function(e){if(void 0!==e){this.info("Add adal frame to document:"+e);var t=document.getElementById(e);if(!t){if(document.createElement&&document.documentElement&&(window.opera||-1===window.navigator.userAgent.indexOf("MSIE 5.0"))){var n=document.createElement("iframe");n.setAttribute("id",e),n.setAttribute("aria-hidden","true"),n.style.visibility="hidden",n.style.position="absolute",n.style.width=n.style.height=n.borderWidth="0px",t=document.getElementsByTagName("body")[0].appendChild(n)}else document.body&&document.body.insertAdjacentHTML&&document.body.insertAdjacentHTML("beforeEnd",'');window.frames&&window.frames[e]&&(t=window.frames[e])}return t}},n.prototype._saveItem=function(e,t,n){if(this.config&&this.config.cacheLocation&&"localStorage"===this.config.cacheLocation){if(!this._supportsLocalStorage())return this.info("Local storage is not supported"),!1;if(n){var r=this._getItem(e)||"";localStorage.setItem(e,r+t+this.CONSTANTS.CACHE_DELIMETER)}else localStorage.setItem(e,t);return!0}return this._supportsSessionStorage()?(sessionStorage.setItem(e,t),!0):(this.info("Session storage is not supported"),!1)},n.prototype._getItem=function(e){return this.config&&this.config.cacheLocation&&"localStorage"===this.config.cacheLocation?this._supportsLocalStorage()?localStorage.getItem(e):(this.info("Local storage is not supported"),null):this._supportsSessionStorage()?sessionStorage.getItem(e):(this.info("Session storage is not supported"),null)},n.prototype._supportsLocalStorage=function(){try{return!!window.localStorage&&(window.localStorage.setItem("storageTest","A"),"A"==window.localStorage.getItem("storageTest")&&(window.localStorage.removeItem("storageTest"),!window.localStorage.getItem("storageTest")))}catch(e){return!1}},n.prototype._supportsSessionStorage=function(){try{return!!window.sessionStorage&&(window.sessionStorage.setItem("storageTest","A"),"A"==window.sessionStorage.getItem("storageTest")&&(window.sessionStorage.removeItem("storageTest"),!window.sessionStorage.getItem("storageTest")))}catch(e){return!1}},n.prototype._cloneConfig=function(e){if(null===e||"object"!=typeof e)return e;var t={};for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t},n.prototype._addLibMetadata=function(){return"&x-client-SKU=Js&x-client-Ver="+this._libVersion()},n.prototype.log=function(e,t,n,r){if(e<=Logging.level){if(!Logging.piiLoggingEnabled&&r)return;var o=(new Date).toUTCString(),i="";i=this.config.correlationId?o+":"+this.config.correlationId+"-"+this._libVersion()+"-"+this.CONSTANTS.LEVEL_STRING_MAP[e]+" "+t:o+":"+this._libVersion()+"-"+this.CONSTANTS.LEVEL_STRING_MAP[e]+" "+t,n&&(i+="\nstack:\n"+n.stack),Logging.log(i)}},n.prototype.error=function(e,t){this.log(this.CONSTANTS.LOGGING_LEVEL.ERROR,e,t)},n.prototype.warn=function(e){this.log(this.CONSTANTS.LOGGING_LEVEL.WARN,e,null)},n.prototype.info=function(e){this.log(this.CONSTANTS.LOGGING_LEVEL.INFO,e,null)},n.prototype.verbose=function(e){this.log(this.CONSTANTS.LOGGING_LEVEL.VERBOSE,e,null)},n.prototype.errorPii=function(e,t){this.log(this.CONSTANTS.LOGGING_LEVEL.ERROR,e,t,!0)},n.prototype.warnPii=function(e){this.log(this.CONSTANTS.LOGGING_LEVEL.WARN,e,null,!0)},n.prototype.infoPii=function(e){this.log(this.CONSTANTS.LOGGING_LEVEL.INFO,e,null,!0)},n.prototype.verbosePii=function(e){this.log(this.CONSTANTS.LOGGING_LEVEL.VERBOSE,e,null,!0)},n.prototype._libVersion=function(){return"1.0.17"},void 0!==e&&e.exports&&(e.exports=n,e.exports.inject=function(e){return new n(e)}),n}()},function(e,t,n){"use strict";function r(e,t){function n(){this.constructor=e}y(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}function o(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s}function i(e){return d.a.log({data:0===d.a.activeLogLevel?e.result:{},level:1,message:"["+e.requestId+"] ("+(new Date).getTime()+") Returning result from pipeline. Set logging to verbose to see data."}),Promise.resolve(e.result)}function s(e,t){return new Promise(function(n){e.result=t,e.hasResult=!0,n(e)})}function a(e){return e.pipeline.length>0?e.pipeline.shift()(e):Promise.resolve(e)}function u(e){e.pipeline.length<1&&d.a.write("["+e.requestId+"] ("+(new Date).getTime()+") Request pipeline contains no methods!",2);var t=a(e).then(function(e){return i(e)}).catch(function(e){throw d.a.error(e),e});return e.isBatched&&e.batch.addResolveBatchDependency(t),t}function c(e){return void 0===e&&(e=!1),function(t,n,r){var o=r.value;r.value=function(){for(var r=[],i=0;i0&&Object(p.j)(r[0],"hasResult")&&r[0].hasResult?(d.a.write("["+r[0].requestId+"] ("+(new Date).getTime()+") Skipping request pipeline method "+n+", existing result in pipeline.",0),Promise.resolve(r[0])):(d.a.write("["+r[0].requestId+"] ("+(new Date).getTime()+") Calling request pipeline method "+n+".",0),o.apply(t,r).then(function(e){return a(e)}))}}}function l(){return[w.logStart,w.caching,w.send,w.logEnd].slice(0)}n.d(t,"c",function(){return h}),n.d(t,"g",function(){return g}),n.d(t,"f",function(){return b}),n.d(t,"i",function(){return v}),n.d(t,"a",function(){return S}),n.d(t,"d",function(){return T}),n.d(t,"b",function(){return O}),n.d(t,"h",function(){return _}),n.d(t,"e",function(){return P});var p=n(3),d=n(4),h=function(){function e(e){this.key=e,this.expiration=Object(p.e)(new Date,"second",p.c.defaultCachingTimeoutSeconds),this.storeName=p.c.defaultCachingStore}return Object.defineProperty(e.prototype,"store",{get:function(){return"local"===this.storeName?e.storage.local:e.storage.session},enumerable:!0,configurable:!0}),e.storage=new p.b,e}(),f=function(){function e(e,t){this.parser=e,this.cacheOptions=t}return e.prototype.parse=function(e){var t=this;return this.parser.parse(e).then(function(e){return t.cacheData(e)})},e.prototype.cacheData=function(e){return null!==this.cacheOptions.store&&this.cacheOptions.store.put(this.cacheOptions.key,e,this.cacheOptions.expiration),e},e}(),y=function(e,t){return(y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)},m=function(e){function t(t,n,r,o){void 0===r&&(r=n.status),void 0===o&&(o=n.statusText);var i=e.call(this,t)||this;return i.response=n,i.status=r,i.statusText=o,i.isHttpRequestError=!0,i}return r(t,e),t.init=function(e){return e.clone().text().then(function(n){return new t("Error making HttpClient request in queryable ["+e.status+"] "+e.statusText+" ::> "+n,e.clone())})},t}(Error),g=function(){function e(){this.rawJson={}}return e.prototype.parse=function(e){var t=this;return new Promise(function(n,r){t.handleError(e,r)&&t.parseImpl(e,n,r)})},e.prototype.parseImpl=function(e,t,n){var r=this;e.headers.has("Content-Length")&&0===parseFloat(e.headers.get("Content-Length"))||204===e.status?t({}):e.text().then(function(e){return e.replace(/\s/gi,"").length>0?JSON.parse(e):{}}).then(function(e){return t(r.parseODataJSON(e))}).catch(function(e){return n(e)})},e.prototype.handleError=function(e,t){return e.ok||m.init(e).then(t),e.ok},e.prototype.parseODataJSON=function(e){this.rawJson=e;var t=e;return Object(p.j)(e,"d")?t=Object(p.j)(e.d,"results")?e.d.results:e.d:Object(p.j)(e,"value")&&(t=e.value),t},e}(),b=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(g),v=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.parseImpl=function(e,t){e.text().then(t)},t}(g),S=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.parseImpl=function(e,t){e.blob().then(t)},t}(g),T=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.parseImpl=function(e,t){e.json().then(t)},t}(g),O=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t.prototype.parseImpl=function(e,t){Object(p.l)(e.arrayBuffer)?e.arrayBuffer().then(t):e.buffer().then(t)},t}(g),w=(function(e){function t(t){var n=e.call(this)||this;return n.parser=t,n}r(t,e),t.prototype.parseImpl=function(e,t){this.parser(e).then(t)}}(g),function(){function e(){}return e.logStart=function(e){return new Promise(function(t){d.a.log({data:1===d.a.activeLogLevel?{}:e,level:1,message:"["+e.requestId+"] ("+(new Date).getTime()+") Beginning "+e.verb+" request ("+e.requestAbsoluteUrl+")"}),t(e)})},e.caching=function(e){return new Promise(function(t){if(e.isCached){d.a.write("["+e.requestId+"] ("+(new Date).getTime()+") Caching is enabled for request, checking cache...",1);var n=new h(e.requestAbsoluteUrl.toLowerCase());if(void 0!==e.cachingOptions&&(n=Object(p.f)(n,e.cachingOptions)),null!==n.store){var r=n.store.get(n.key);if(null!==r)return d.a.log({data:1===d.a.activeLogLevel?{}:r,level:1,message:"["+e.requestId+"] ("+(new Date).getTime()+") Value returned from cache."}),Object(p.l)(e.batchDependency)&&e.batchDependency(),Object(p.j)(e.parser,"hydrate")&&(r=e.parser.hydrate(r)),s(e,r).then(function(e){return t(e)})}d.a.write("["+e.requestId+"] ("+(new Date).getTime()+") Value not found in cache.",1),e.parser=new f(e.parser,n)}return t(e)})},e.send=function(e){return new Promise(function(t,n){if(e.isBatched){var r=e.batch.add(e.requestAbsoluteUrl,e.verb,e.options,e.parser,e.requestId);Object(p.l)(e.batchDependency)&&e.batchDependency(),d.a.write("["+e.requestId+"] ("+(new Date).getTime()+") Batching request in batch "+e.batch.batchId+".",1),t(s(e,r))}else{d.a.write("["+e.requestId+"] ("+(new Date).getTime()+") Sending request.",1);var o=e.clientFactory(),i=Object(p.f)(e.options||{},{method:e.verb});o.fetch(e.requestAbsoluteUrl,i).then(function(t){return e.parser.parse(t)}).then(function(t){return s(e,t)}).then(function(e){return t(e)}).catch(function(e){return n(e)})}})},e.logEnd=function(e){return new Promise(function(t){e.isBatched?d.a.log({data:1===d.a.activeLogLevel?{}:e,level:1,message:"["+e.requestId+"] ("+(new Date).getTime()+") "+e.verb+" request will complete in batch "+e.batch.batchId+"."}):d.a.log({data:1===d.a.activeLogLevel?{}:e,level:1,message:"["+e.requestId+"] ("+(new Date).getTime()+") Completing "+e.verb+" request."}),t(e)})},o([c(!0)],e,"logStart",null),o([c()],e,"caching",null),o([c()],e,"send",null),o([c(!0)],e,"logEnd",null),e}()),I=function(){function e(){this._query=new Map,this._options={},this._url="",this._parentUrl="",this._useCaching=!1,this._cachingOptions=null,this._cloneParentWasCaching=!1,this._cloneParentCacheOptions=null,this._requestPipeline=null}return e.prototype.toUrl=function(){return this._url},e.prototype.concat=function(e){return this._url+=e,this},Object.defineProperty(e.prototype,"query",{get:function(){return this._query},enumerable:!0,configurable:!0}),e.prototype.configure=function(e){return Object(p.p)(this._options,e),this},e.prototype.configureFrom=function(e){return Object(p.p)(this._options,e._options),this},e.prototype.usingCaching=function(e){return p.c.globalCacheDisable||(this._useCaching=!0,void 0!==e&&(this._cachingOptions=e)),this},e.prototype.withPipeline=function(e){return this._requestPipeline=e.slice(0),this},e.prototype.getCore=function(e,t){return void 0===e&&(e=new T),void 0===t&&(t={}),this._cloneParentWasCaching&&this.usingCaching(this._cloneParentCacheOptions),this.reqImpl("GET",t,e)},e.prototype.postCore=function(e,t){return void 0===e&&(e={}),void 0===t&&(t=new T),this.reqImpl("POST",e,t)},e.prototype.patchCore=function(e,t){return void 0===e&&(e={}),void 0===t&&(t=new T),this.reqImpl("PATCH",e,t)},e.prototype.deleteCore=function(e,t){return void 0===e&&(e={}),void 0===t&&(t=new T),this.reqImpl("DELETE",e,t)},e.prototype.putCore=function(e,t){return void 0===e&&(e={}),void 0===t&&(t=new T),this.reqImpl("PUT",e,t)},e.prototype.reqImpl=function(e,t,n){var r=this;return void 0===t&&(t={}),this.getRequestPipeline(e,t,n).then(function(o){return r.toRequestContext(e,t,n,o)}).then(function(e){return u(e)})},e.prototype.append=function(e){this._url=Object(p.d)(this._url,e)},Object.defineProperty(e.prototype,"parentUrl",{get:function(){return this._parentUrl},enumerable:!0,configurable:!0}),e.prototype.extend=function(e,t){this._parentUrl=e._url,this._url=Object(p.d)(this._parentUrl,t||""),this.configureFrom(e)},e.prototype._clone=function(e,t){return e.configureFrom(this),this._useCaching&&(e._cloneParentWasCaching=!0,e._cloneParentCacheOptions=this._cachingOptions),e},e.prototype.getRequestPipeline=function(e,t,n){var r=this;return void 0===t&&(t={}),new Promise(function(e){e(Object(p.q)(r._requestPipeline)&&Object(p.k)(r._requestPipeline)?r._requestPipeline:l())})},e}(),_=function(e){function t(){var t=e.call(this)||this;return t._batch=null,t._batchDependency=null,t}return r(t,e),t.prototype.inBatch=function(e){if(null!==this.batch)throw Error("This query is already part of a batch.");return Object(p.q)(e)&&(this._batch=e),this},t.prototype.toUrl=function(){return this._url},t.prototype.get=function(e,t){return void 0===e&&(e=new b),void 0===t&&(t={}),this.getCore(e,t)},t.prototype.getCore=function(t,n){return void 0===t&&(t=new b),void 0===n&&(n={}),e.prototype.getCore.call(this,t,n)},t.prototype.postCore=function(t,n){return void 0===t&&(t={}),void 0===n&&(n=new b),e.prototype.postCore.call(this,t,n)},t.prototype.patchCore=function(t,n){return void 0===t&&(t={}),void 0===n&&(n=new b),e.prototype.patchCore.call(this,t,n)},t.prototype.deleteCore=function(t,n){return void 0===t&&(t={}),void 0===n&&(n=new b),e.prototype.deleteCore.call(this,t,n)},t.prototype.putCore=function(t,n){return void 0===t&&(t={}),void 0===n&&(n=new b),e.prototype.putCore.call(this,t,n)},t.prototype.reqImpl=function(t,n,r){return void 0===n&&(n={}),this.hasBatch&&(this._batchDependency=this.addBatchDependency()),e.prototype.reqImpl.call(this,t,n,r)},t.prototype.addBatchDependency=function(){return null!==this._batch?this._batch.addDependency():function(){return null}},Object.defineProperty(t.prototype,"hasBatch",{get:function(){return Object(p.q)(this._batch)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"batch",{get:function(){return this.hasBatch?this._batch:null},enumerable:!0,configurable:!0}),t.prototype._clone=function(t,n){return t=e.prototype._clone.call(this,t,n),n.includeBatch&&(t=t.inBatch(this._batch)),t},t}(I),P=function(){function e(e){void 0===e&&(e=Object(p.h)()),this._batchId=e,this._reqs=[],this._deps=[],this._rDeps=[]}return Object.defineProperty(e.prototype,"batchId",{get:function(){return this._batchId},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"requests",{get:function(){return this._reqs},enumerable:!0,configurable:!0}),e.prototype.add=function(e,t,n,r,o){var i={id:o,method:t.toUpperCase(),options:n,parser:r,reject:null,resolve:null,url:e},s=new Promise(function(e,t){i.resolve=e,i.reject=t});return this._reqs.push(i),s},e.prototype.addDependency=function(){var e=function(){};return this._deps.push(new Promise(function(t){e=t})),e},e.prototype.addResolveBatchDependency=function(e){this._rDeps.push(e)},e.prototype.execute=function(){var e=this;return Promise.all(this._deps).then(function(){return Promise.all(e._deps)}).then(function(){return e.executeImpl()}).then(function(){return Promise.all(e._rDeps)}).then(function(){})},e}()},function(e,t,n){"use strict";n.d(t,"a",function(){return r});var r=function(){function e(e,t,n){this.level=t,this.id=e.Id,this.label=e.Name,this.hoverText=e.LocalCustomProperties._Sys_Nav_HoverText,this.pathDepth=e.PathDepth;var r=e.LocalCustomProperties._Sys_Nav_SimpleLinkUrl||e.LocalCustomProperties._Sys_Nav_TargetUrl;r&&(this.url=n&&0===r.indexOf("~sitecollection")?n+r.substring("~sitecollection".length):r),this.items=[]}return e.prototype.hasChildren=function(){return this.items&&this.items.length>0},e.prototype.command=function(){this.url&&(window.location.href=this.url)},e}()},function(e,t,n){"use strict";var r=n(15),o=(n.n(r),n(16)),i=(n.n(o),this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))(function(o,i){function s(e){try{u(r.next(e))}catch(e){i(e)}}function a(e){try{u(r.throw(e))}catch(e){i(e)}}function u(e){e.done?o(e.value):new n(function(t){t(e.value)}).then(s,a)}u((r=r.apply(e,t||[])).next())})}),s=this&&this.__generator||function(e,t){function n(e){return function(t){return r([e,t])}}function r(n){if(o)throw new TypeError("Generator is already executing.");for(;u;)try{if(o=1,i&&(s=i[2&n[0]?"return":n[0]?"throw":"next"])&&!(s=s.call(i,n[1])).done)return s;switch(i=0,s&&(n=[0,s.value]),n[0]){case 0:case 1:s=n;break;case 4:return u.label++,{value:n[1],done:!1};case 5:u.label++,i=n[1],n=[0];continue;case 7:n=u.ops.pop(),u.trys.pop();continue;default:if(s=u.trys,!(s=s.length>0&&s[s.length-1])&&(6===n[0]||2===n[0])){u=0;continue}if(3===n[0]&&(!s||n[1]>s[0]&&n[1]",o=new Headers,o.append("accept","application/json"),o.append("content-type","application/xml"),i={headers:o,body:n},[4,this.context.spHttpClient.post(this.clientServiceUrl,r.SPHttpClient.configurations.v1,i)];case 2:return a=s.sent(),[4,a.json()];case 3:return u=s.sent(),c=u.find(function(e){return"SP.Taxonomy.Term"===e._ObjectType_}),c&&c.Labels&&c.Labels._Child_Items_&&(t=c.Labels._Child_Items_.map(function(e){return e.Value})),[3,5];case 4:return l=s.sent(),t=null,console.log(l.message),[3,5];case 5:return[2,t]}})})},e.prototype.getTermStores=function(){var e=this,t=new Headers;t.append("accept","application/json"),t.append("content-type","application/xml");var n={headers:t,body:''};return this.context.spHttpClient.post(this.clientServiceUrl,r.SPHttpClient.configurations.v1,n).then(function(t){return t.json().then(function(t){var n=t.filter(function(e){return"SP.Taxonomy.TermStore"===e._ObjectType_});return n.length>0?e.props.termsetNameOrID?n.map(function(t){var n=t.Groups._Child_Items_;if(e.props.termsetNameOrID){var r=e.props.termsetNameOrID;n=n.map(function(t){return t.TermSets._Child_Items_=t.TermSets._Child_Items_.filter(function(t){return t.Name===r||e.cleanGuid(t.Id).toLowerCase()===e.cleanGuid(r).toLowerCase()}),t})}return n=n.filter(function(e){return!e.IsSystemGroup}),n=n.filter(function(e){return e.TermSets._Child_Items_.length>0}),t.Groups._Child_Items_=n,t}):n:[]})})},e.prototype.getTermSet=function(){return i(this,void 0,void 0,function(){var e;return s(this,function(t){switch(t.label){case 0:return[4,this.getTermStores()];case 1:return e=t.sent(),[2,this.getTermSetId(e,this.props.termsetNameOrID)]}})})},e.prototype.getAllTerms=function(e,t,n,o){return void 0===o&&(o=!0),i(this,void 0,void 0,function(){var i,a,u,c,l,p,d,h=this;return s(this,function(s){switch(s.label){case 0:return i=e,this.isGuid(e)?[3,2]:[4,this.getTermStores()];case 1:if(a=s.sent(),!(u=this.getTermSetId(a,e)))return[2,null];i=this.cleanGuid(u.Id),s.label=2;case 2:return(c=this.getTermsById(i,o))?[2,c]:(l=''+i+'',p=new Headers,p.append("accept","application/json"),p.append("content-type","application/xml"),d={headers:p,body:l},[2,this.context.spHttpClient.post(this.clientServiceUrl,r.SPHttpClient.configurations.v1,d).then(function(e){return e.json().then(function(e){var r=e.filter(function(e){return"SP.Taxonomy.TermSet"===e._ObjectType_});if(r.length>0){var s=r[0];s.Terms=[];var a=e.filter(function(e){return"SP.Taxonomy.TermCollection"===e._ObjectType_});if(a.length>0){var u=a[0]._Child_Items_;!0===t&&(u=u.filter(function(e){return!1===e.IsDeprecated})),!0===n&&(u=u.filter(function(e){return!0===e.IsAvailableForTagging})),u=u.map(function(e){return e.IsRoot?e.CustomSortOrderIndex=s.CustomSortOrder?s.CustomSortOrder.split(":").indexOf(h.cleanGuid(e.Id)):-1:e.CustomSortOrderIndex=e.Parent.CustomSortOrder?e.Parent.CustomSortOrder.split(":").indexOf(h.cleanGuid(e.Id)):-1,e.Id=h.cleanGuid(e.Id),e.PathDepth=e.PathOfTerm.split(";").length,e.TermSet={Id:h.cleanGuid(s.Id),Name:s.Name},e.Parent&&(e.ParentId=h.cleanGuid(e.Parent.Id)),e}),u.length>0&&(u=h.sortTerms(u),s.Terms=u)}try{o&&window.sessionStorage&&window.sessionStorage.setItem(i,JSON.stringify(s))}catch(e){}return s}return null})})])}})})},e.prototype.searchTermsByName=function(e){return this.searchTermsByTermSet(e)},e.prototype.searchTermsByTermId=function(e,t){return i(this,void 0,void 0,function(){var n,r,o,i,a,u,c;return s(this,function(s){switch(s.label){case 0:return n=this.props.useSessionStorage,r=this.getTermsById(t,n),r?[2,this.searchTermsBySearchText(r,e)]:[3,1];case 1:return o=this.props,i=o.termsetNameOrID,a=o.hideDeprecatedTags,u=o.hideTagsNotAvailableForTagging,[4,this.getAllTermsByAnchorId(i,t,a,u,n)];case 2:if(c=s.sent())return[2,this.searchTermsBySearchText(c,e)];s.label=3;case 3:return[2,null]}})})},e.prototype.getAllTermsByAnchorId=function(e,t,n,r,o){return void 0===o&&(o=!0),i(this,void 0,void 0,function(){var i,a,u,c,l,p,d,h=this;return s(this,function(s){switch(s.label){case 0:return i=[],a=this.getTermsById(t,o),a?[2,a]:[4,this.getAllTerms(e,n,r)];case 1:if(u=s.sent(),c=u.Terms,t){if(l=c.filter(function(e){return e.Id.toLowerCase()===t.toLowerCase()}).shift()){p=l.PathOfTerm+";",d=c.filter(function(e){return e.PathOfTerm.substring(0,p.length)===p&&e.Id!==l.Id}),d.forEach(function(e){i.push(h.convertTermToPickerTerm(e))});try{o&&window.sessionStorage&&window.sessionStorage.setItem(t,JSON.stringify(i))}catch(e){}}}else c.forEach(function(e){i.push(h.convertTermToPickerTerm(e))});return[2,i]}})})},e.prototype.cleanGuid=function(e){return void 0!==e?e.replace("/Guid(","").replace("/","").replace(")",""):""},e.prototype.getTermSetId=function(e,t){if(e&&e.length>0&&t){var n=e[0];if(n.Groups&&n.Groups._Child_Items_)for(var r=0,o=n.Groups._Child_Items_;r-1}):[]},e.prototype.searchTermsByTermSet=function(e){var t=this;return new Promise(function(n){t.getTermStores().then(function(o){var i=t.props.termsetNameOrID;if(!t.isGuid(i)){var s=t.getTermSetId(o,i);if(!s)return void n(null);i=t.cleanGuid(s.Id)}if(void 0===o||0===o.length)return void n(null);var u="de-de"===t.context.pageContext.cultureInfo.currentUICultureName?1031:1033,c={start:e,lcid:0!==u?u:t.context.pageContext.web.language,sspList:t.cleanGuid(o[0].Id),termSetList:i,anchorId:t.props.anchorId?t.props.anchorId:a,isSpanTermStores:!1,isSpanTermSets:!1,isIncludeUnavailable:!0===t.props.hideTagsNotAvailableForTagging,isIncludeDeprecated:!0===t.props.hideDeprecatedTags,isAddTerms:!1,isIncludePathData:!1,excludeKeyword:!1,excludedTermset:a},l=new Headers;l.append("accept","application/json"),l.append("content-type","application/json");var p={headers:l,body:JSON.stringify(c)};return t.context.spHttpClient.post(t.suggestionServiceUrl,r.SPHttpClient.configurations.v1,p).then(function(e){return e.json().then(function(e){var r=e.d.Groups;if(r&&r.length>0){var o=r[0].Suggestions;if(o.length>0){var i=o.map(function(e){return t.convertSuggestTermToPickerTerm(e)});return void n(i)}}n([])})})})})},e.prototype.isGuid=function(e){return/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/.test(e)},e.prototype.sortTerms=function(e){for(var t=[],n=!0,r=1;n;){var i=e.filter(function(e){return e.PathDepth===r});if(i&&i.length>0){if(i=i.sort(this.sortTermByPath),1!==r){i=i.reverse();for(var s=0,a=i;st.PathOfTerm.toLowerCase()?1:0:e.CustomSortOrderIndext.CustomSortOrderIndex?1:0},e.prototype.convertTermToPickerTerm=function(e){return{key:this.cleanGuid(e.Id),name:e.Name,path:e.PathOfTerm,termSet:this.cleanGuid(e.TermSet.Id),termSetName:e.TermSet.Name}},e.prototype.convertSuggestTermToPickerTerm=function(e){var t="",n="";if(e.Paths&&e.Paths.length>0){var r=e.Paths[0].replace(/^\[/,"").replace(/\]$/,""),o=r.split(":");t=o.join(";")+";"+e.DefaultLabel,n=o[0]}return{key:this.cleanGuid(e.Id),name:e.DefaultLabel,path:t,termSet:a,termSetName:n}},e}();t.a=u},function(e,t){e.exports=o},function(e,t){e.exports=i},function(e,t,n){"use strict";n.d(t,"a",function(){return r});var r=function(){function e(){}return e.prototype.Get=function(e){return this[e]},e.prototype.Add=function(e,t){this[e]=t},e}()},function(e,t,n){"use strict";n.d(t,"a",function(){return i});var r=n(19),o=(n.n(r),n(20)),i=function(){function e(e,t,n){this.context=e,this.menuItems=t,this.updateCallback=n}return e.prototype.render=function(e){var t=this;e.innerHTML="",e.id="CustomNavigation";var n=document.createElement("nav");n.id="Mega-Menu",n.className="mega-menu-main",n.setAttribute("role","navigation"),n.setAttribute("aria-label","Hauptnavigation");var o=document.createElement("ul");o.setAttribute("role","menubar"),this.menuItems.forEach(function(e){var n=t.createTopLevelItem(e);o.appendChild(n)}),this.context.pageContext.web.permissions.hasPermission(r.SPPermission.manageWeb)&&o.appendChild(this.createSettingsItem()),n.appendChild(o),e.appendChild(n),this.attachEventListeners(),this.createScreenReaderAnnouncer()},e.prototype.createSettingsItem=function(){var e=this,t=document.createElement("li");t.setAttribute("role","none");var n=document.createElement("button");n.type="button",n.className="menu-item-link menu-item-settings",n.setAttribute("role","menuitem"),n.setAttribute("tabindex","0"),n.setAttribute("aria-haspopup","false"),n.setAttribute("aria-label","Einstellungen"),n.title="Einstellungen";var r=document.createElement("span");return r.className="ms-Icon ms-Icon--Settings menu-item-settings__icon",r.setAttribute("aria-hidden","true"),n.appendChild(r),n.addEventListener("click",function(){return e.openSettings()}),n.addEventListener("keydown",function(t){"Enter"!==t.key&&" "!==t.key||(t.preventDefault(),e.openSettings())}),t.appendChild(n),t},e.prototype.openSettings=function(){this._settingsPanel||(this._settingsPanel=new o.a(this.context,this.updateCallback)),this._settingsPanel.open()},e.prototype.createTopLevelItem=function(e){var t=document.createElement("li");t.setAttribute("role","none");var n=this.createTopLevelElement(e);if(t.appendChild(n),e.hasChildren()&&e.items&&e.items.length>0){var r=this.createMegaMenu(e);t.appendChild(r)}return t},e.prototype.createTopLevelElement=function(e){var t;return e.url?(t=document.createElement("a"),t.href=e.url,t.className="menu-item-link"):(t=document.createElement("span"),t.className="menu-item-text",t.setAttribute("tabindex","0")),t.setAttribute("role","menuitem"),t.setAttribute("aria-haspopup","true"),t.setAttribute("aria-expanded","false"),t.textContent=e.label,e.hoverText&&(t.title=e.hoverText),t},e.prototype.createMegaMenu=function(e){var t=this,n=document.createElement("div");n.className="mega-menu",n.setAttribute("role","menu"),n.setAttribute("aria-label",e.label+" Unterkategorien");var r=document.createElement("div");return r.className="mega-menu-grid",e.items&&e.items.forEach(function(e){var n=t.createCategorySection(e);r.appendChild(n)}),n.appendChild(r),n},e.prototype.createCategorySection=function(e){var t=document.createElement("div");t.className="mega-menu-category";var n=document.createElement("h3");if(e.url){var r=document.createElement("a");r.href=e.url,r.textContent=e.label,e.hoverText&&(r.title=e.hoverText),n.appendChild(r)}else{var o=document.createElement("span");o.textContent=e.label,e.hoverText&&(o.title=e.hoverText),n.appendChild(o)}if(t.appendChild(n),e.hasChildren()&&e.items&&e.items.length>0){var i=document.createElement("ul");e.items.forEach(function(e){var t=document.createElement("li"),n=document.createElement("a");n.href=e.url||"#",n.textContent=e.label,e.hoverText&&(n.title=e.hoverText),t.appendChild(n),i.appendChild(t)}),t.appendChild(i)}return t},e.prototype.attachEventListeners=function(){for(var e=document.querySelectorAll('#Mega-Menu > ul > li > a, #Mega-Menu > ul > li > span[role="menuitem"]'),t=0;t ul > li > a, #Mega-Menu > ul > li > span");o||i||s||a||(console.log("Schließe Menu wegen Focus-Verlust"),n.closeMegaMenu(e,t))},150)})},e.prototype.attachGlobalKeyboardNavigation=function(){var e=this;document.addEventListener("keydown",function(t){var n=document.activeElement;if("Escape"===t.key){var r=document.querySelector('.mega-menu[aria-expanded="true"]');if(r){var o=r.previousElementSibling;e.closeMegaMenu(o,r),o.focus()}}if("Tab"===t.key){if(!t.shiftKey){var i=n.closest("#Mega-Menu > ul > li > a, #Mega-Menu > ul > li > span");if(i){var s=i.closest("li"),a=s.querySelector(".mega-menu.js-open");if(a){t.preventDefault();var u=a.querySelector("a");return void(u&&u.focus())}}}if(t.shiftKey){var a=n.closest(".mega-menu");if(a&&a.classList.contains("js-open")){if(n===a.querySelectorAll("a")[0]){t.preventDefault();return void a.previousElementSibling.focus()}}}}})},e.prototype.openMegaMenu=function(e,t){e.setAttribute("aria-expanded","true"),t.setAttribute("aria-expanded","true"),t.classList.add("js-open"),console.log("Menu geöffnet:",e.textContent)},e.prototype.closeMegaMenu=function(e,t){e.setAttribute("aria-expanded","false"),t.setAttribute("aria-expanded","false"),t.classList.remove("js-open"),console.log("Menu geschlossen:",e.textContent)},e.prototype.toggleMegaMenu=function(e,t){"true"===e.getAttribute("aria-expanded")?this.closeMegaMenu(e,t):(this.closeAllMegaMenus(),this.openMegaMenu(e,t))},e.prototype.closeAllMegaMenus=function(){for(var e=document.querySelectorAll('#Mega-Menu > ul > li > a[aria-expanded="true"], #Mega-Menu > ul > li > span[aria-expanded="true"]'),t=0;t0&&s[s.length-1])&&(6===n[0]||2===n[0])){u=0;continue}if(3===n[0]&&(!s||n[1]>s[0]&&n[1]\n

Einstellungen

\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n "},e.prototype._save=function(){if(this._panelElement){var e=this._panelElement.querySelector("#mm-setting-termset"),t=this._panelElement.querySelector("#mm-setting-css");this.saveApplicationCustomizerProps({termSetName:e&&e.value?e.value:"",cssUrl:t&&t.value?t.value:""}),this.close()}},e.prototype._trapFocus=function(e){if(this._panelElement){var t=this._panelElement.querySelectorAll("button, input");if(t&&0!==t.length){var n=t[0],r=t[t.length-1],o=document.activeElement;e.shiftKey&&o===n?(e.preventDefault(),r.focus()):e.shiftKey||o!==r||(e.preventDefault(),n.focus())}}},e.prototype._escape=function(e){return e?e.replace(/&/g,"&").replace(/"/g,""").replace(//g,">"):""},e}()},function(e,t,n){"use strict";n.d(t,"a",function(){return a});var r=n(0),o=n(5),i=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))(function(o,i){function s(e){try{u(r.next(e))}catch(e){i(e)}}function a(e){try{u(r.throw(e))}catch(e){i(e)}}function u(e){e.done?o(e.value):new n(function(t){t(e.value)}).then(s,a)}u((r=r.apply(e,t||[])).next())})},s=this&&this.__generator||function(e,t){function n(e){return function(t){return r([e,t])}}function r(n){if(o)throw new TypeError("Generator is already executing.");for(;u;)try{if(o=1,i&&(s=i[2&n[0]?"return":n[0]?"throw":"next"])&&!(s=s.call(i,n[1])).done)return s;switch(i=0,s&&(n=[0,s.value]),n[0]){case 0:case 1:s=n;break;case 4:return u.label++,{value:n[1],done:!1};case 5:u.label++,i=n[1],n=[0];continue;case 7:n=u.ops.pop(),u.trys.pop();continue;default:if(s=u.trys,!(s=s.length>0&&s[s.length-1])&&(6===n[0]||2===n[0])){u=0;continue}if(3===n[0]&&(!s||n[1]>s[0]&&n[1]ul{margin:0;list-style:none;display:-ms-grid;display:grid;-ms-grid-columns:(minmax(120px,1fr)) [auto-fit];grid-template-columns:repeat(auto-fit,minmax(120px,1fr));width:100%}.mega-menu-main>ul>li{position:static}.mega-menu-main>ul>li>a,.mega-menu-main>ul>li>span[role=menuitem]{display:block;padding:15px 20px;transition:all .3s ease;border-bottom:3px solid transparent;outline:0;cursor:pointer}@media (max-width:900px){.mega-menu-main>ul>li>a,.mega-menu-main>ul>li>span[role=menuitem]{font-size:17px}}.mega-menu-main>ul>li:hover>a,.mega-menu-main>ul>li:hover>span[role=menuitem]{background:linear-gradient(135deg,"[theme:themePrimary, default: #0078d7]","[theme:themeSecondary, default: #2b88d8]");color:"[theme:white, default: #ffffff]";border-bottom:3px solid;transform:translateY(-2px);box-shadow:0 4px 8px rgba(0,0,0,.2)}.mega-menu-main>ul>li>a:focus,.mega-menu-main>ul>li>span[role=menuitem]:focus{background:linear-gradient(135deg,"[theme:error, default: #a80000]","[theme:themeDarker, default: #004578]");color:"[theme:white, default: #ffffff]";border-bottom:3px solid;transform:translateY(-2px);box-shadow:0 0 0 3px "[theme:warning, default: #767676]",0 4px 8px rgba(0,0,0,.2);outline:3px solid;outline-offset:2px}.mega-menu-main>ul>li>a:active,.mega-menu-main>ul>li>span[role=menuitem]:active{transform:translateY(0);box-shadow:0 2px 4px rgba(0,0,0,.2)}.mega-menu{position:absolute;left:0;right:0;top:100%;width:100%;background:"[theme:white, default: #ffffff]";box-shadow:0 4px 12px rgba(0,0,0,.15);display:none;padding:40px;max-height:calc(100vh - 60px);overflow-y:auto;z-index:1000;visibility:hidden;opacity:0;transition:visibility 0s,opacity .3s}.mega-menu-main>ul>li:hover .mega-menu{visibility:visible;opacity:1;display:block}.mega-menu.js-open{visibility:visible!important;opacity:1!important;display:block!important}.mega-menu-grid{max-width:none;margin:0 auto;display:-ms-grid;display:grid;-ms-grid-columns:(minmax(200px,1fr)) [auto-fit];grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:30px}.mega-menu-category>h3{margin-bottom:12px;padding-bottom:8px;border-bottom:2px solid}.mega-menu-category>h3>a,.mega-menu-category>h3>span{color:"[theme:neutralPrimary, default: #333333]";font-size:16px;font-weight:700;display:block}.mega-menu-category>h3>a{text-decoration:none;padding:0;border-radius:0;transition:color .2s ease;outline:0}.mega-menu-category>h3>a:hover{color:"[theme:themePrimary, default: #0078d7]"}.mega-menu-category>h3>a:focus{color:"[theme:white, default: #ffffff]";background:"[theme:error, default: #a80000]";text-decoration:none;padding:4px 8px;border-radius:4px;margin:-4px -8px;outline:3px solid;outline-offset:2px;box-shadow:0 0 0 1px "[theme:white, default: #ffffff]",0 2px 8px rgba(0,0,0,.2)}.mega-menu-category ul{list-style:none}.mega-menu-category ul li{margin-bottom:4px}.mega-menu-category ul li a{color:"[theme:neutralSecondary, default: #666666]";text-decoration:none;font-size:14px;transition:all .2s ease;display:block;padding:4px 8px;border-radius:4px;outline:0}.mega-menu-category ul li a:hover{color:"[theme:themePrimary, default: #0078d7]";background:"[theme:themeLight, default: #c7e0f4]";padding-left:12px;transform:translateX(4px)}.mega-menu-category ul li a:focus{color:"[theme:white, default: #ffffff]";background:"[theme:error, default: #a80000]";padding-left:12px;transform:translateX(4px);box-shadow:0 0 0 2px "[theme:warning, default: #767676]";outline:2px solid;outline-offset:2px}.mega-menu-category ul li a{position:relative}@media (prefers-contrast:high){.mega-menu-main>ul>li>a:focus,.mega-menu-main>ul>li>span[role=menuitem]:focus{outline:4px solid;outline-offset:2px}.mega-menu-category>h3>a:focus,.mega-menu-category ul li a:focus{outline:3px solid;outline-offset:2px}}.content{padding:40px;max-width:1200px;margin:0 auto}.menu-item-link,.menu-item-text{display:block;padding:15px 20px;color:"[theme:neutralPrimary, default: #333333]";font-weight:600;transition:all .3s ease;border-bottom:3px solid transparent;outline:0;text-decoration:none}.menu-item-text{cursor:pointer}.menu-item-link:hover,.menu-item-text:hover{background-color:"[theme:neutralLighter, default: #f4f4f4]";border-bottom-color:"[theme:themePrimary, default: #0078d7]"}.menu-item-link:focus,.menu-item-text:focus{background-color:"[theme:themeDarker, default: #004578]";color:"[theme:white, default: #ffffff]";border-bottom-color:"[theme:themeDark, default: #005a9e]";outline:3px solid;outline-offset:2px;box-shadow:0 0 0 6px rgba(243,156,18,.3)}.menu-item-settings{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;background:0 0;border:none;cursor:pointer;font:inherit;padding:15px 20px;color:"[theme:neutralPrimary, default: #333333]"}.menu-item-settings:hover{background-color:"[theme:neutralLighter, default: #f4f4f4]";border-bottom:3px solid}.menu-item-settings:focus{background-color:"[theme:themeDarker, default: #004578]";color:"[theme:white, default: #ffffff]";border-bottom:3px solid;outline:3px solid;outline-offset:2px;box-shadow:0 0 0 6px rgba(243,156,18,.3)}.menu-item-settings__icon{font-size:18px;line-height:1;display:inline-block;transform:translateY(2px)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.mm-settings-overlay{position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:4000;animation:mmFadeIn .2s ease}.mm-settings-panel{position:fixed;top:0;right:0;height:100vh;width:480px;max-width:100%;background:"[theme:white, default: #ffffff]";box-shadow:-4px 0 12px rgba(0,0,0,.2);z-index:4001;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;font-size:17px;font-weight:300;font-family:Segoe UI,"Segoe UI Web (West European)",-apple-system,BlinkMacSystemFont,Roboto,Helvetica Neue,sans-serif;animation:mmSlideIn .25s ease}@media (max-width:600px){.mm-settings-panel{width:100%}}.mm-settings-header{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;padding:16px 20px;border-bottom:1px solid}.mm-settings-title{margin:0;font-size:18px;font-weight:600;font-size:17px;font-weight:300}.mm-settings-close{background:0 0;border:none;font-size:16px;line-height:1;cursor:pointer;padding:4px 8px;font-size:17px;font-weight:300}.mm-settings-close:focus{outline:3px solid;outline-offset:2px}.mm-settings-body{padding:20px;overflow-y:auto;-ms-flex:1;flex:1;font-size:14px;font-weight:400}.mm-settings-field{margin-bottom:16px}.mm-settings-field label{display:block;margin-bottom:4px;font-weight:600}.mm-settings-field input[type=text],.mm-settings-field label{color:"[theme:neutralPrimary, default: #333333]";font-size:14px;font-weight:400}.mm-settings-field input[type=text]{width:100%;padding:8px 12px;border:1px solid;border-radius:2px;box-sizing:border-box;background:"[theme:white, default: #ffffff]"}.mm-settings-field input[type=text]:focus{outline:3px solid;border-color:"[theme:themePrimary, default: #0078d7]"}.mm-settings-footer{padding:14px 20px;border-top:1px solid;display:-ms-flexbox;display:flex;gap:10px;-ms-flex-pack:end;justify-content:flex-end}.mm-settings-cancel,.mm-settings-save{cursor:pointer;border:none;border-radius:4px;padding:8px 16px;font-weight:600;font-size:14px;font-weight:400}.mm-settings-save{background:"[theme:themePrimary, default: #0078d7]";color:"[theme:white, default: #ffffff]"}.mm-settings-save:hover{background:"[theme:themeSecondary, default: #2b88d8]"}.mm-settings-cancel{background:"[theme:neutralTertiaryAlt, default: #c8c8c8]";color:"[theme:neutralPrimary, default: #333333]"}.mm-settings-cancel:hover{background:"[theme:neutralTertiary, default: #a6a6a6]"}.mm-settings-cancel:focus,.mm-settings-save:focus{outline:3px solid;outline-offset:2px}@keyframes mmSlideIn_3c772eac{0%{transform:translateX(40px);opacity:0}to{transform:translateX(0);opacity:1}}@keyframes mmFadeIn_3c772eac{0%{opacity:0}to{opacity:1}}',""])},function(e,t){function n(e,t){var n=e[1]||"",o=e[3];if(!o)return n;if(t&&"function"==typeof btoa){var i=r(o);return[n].concat(o.sources.map(function(e){return"/*# sourceURL="+o.sourceRoot+e+" */"})).concat([i]).join("\n")}return[n].join("\n")}function r(e){return"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(e))))+" */"}e.exports=function(e){var t=[];return t.toString=function(){return this.map(function(t){var r=n(t,e);return t[2]?"@media "+t[2]+"{"+r+"}":r}).join("")},t.i=function(e,n){"string"==typeof e&&(e=[[null,e,""]]);for(var r={},o=0;o0&&u(t)})}function a(){return setTimeout(function(){O.runState.flushTimer=0,s()},0)}function u(e,t){O.loadStyles?O.loadStyles(f(e).styleString,e):S?g(e,t):m(e)}function c(e){O.theme=e,d()}function l(e){void 0===e&&(e=3),3!==e&&2!==e||(p(O.registeredStyles),O.registeredStyles=[]),3!==e&&1!==e||(p(O.registeredThemableStyles),O.registeredThemableStyles=[])}function p(e){e.forEach(function(e){var t=e&&e.styleElement;t&&t.parentElement&&t.parentElement.removeChild(t)})}function d(){if(O.theme){for(var e=[],t=0,n=O.registeredThemableStyles;t0&&(l(1),u([].concat.apply([],e)))}}function h(e){return e&&(e=f(y(e)).styleString),e}function f(e){var t=O.theme,n=!1;return{styleString:(e||[]).map(function(e){var r=e.theme;if(r){n=!0;var o=t?t[r]:void 0,i=e.defaultValue||"inherit";return t&&!o&&console,o||i}return e.rawString}).join(""),themable:n}}function y(e){var t=[];if(e){for(var n=0,r=void 0;r=w.exec(e);){var o=r.index;o>n&&t.push({rawString:e.substring(n,o)}),t.push({theme:r[1],defaultValue:r[2]}),n=w.lastIndex}t.push({rawString:e.substring(n)})}return t}function m(e){var t=document.getElementsByTagName("head")[0],n=document.createElement("style"),r=f(e),o=r.styleString,i=r.themable;n.type="text/css",n.appendChild(document.createTextNode(o)),O.perf.count++,t.appendChild(n);var s={styleElement:n,themableStyle:e};i?O.registeredThemableStyles.push(s):O.registeredStyles.push(s)}function g(e,t){var n=document.getElementsByTagName("head")[0],r=O.registeredStyles,o=O.lastStyleElement,i=o?o.styleSheet:void 0,s=i?i.cssText:"",a=r[r.length-1],u=f(e).styleString;(!o||s.length+u.length>I)&&(o=document.createElement("style"),o.type="text/css",t?(n.replaceChild(o,t.styleElement),t.styleElement=o):n.appendChild(o),t||(a={styleElement:o,themableStyle:e},r.push(a))),o.styleSheet.cssText+=h(u),Array.prototype.push.apply(a.themableStyle,e),O.lastStyleElement=o}function b(){var e=!1;if("undefined"!=typeof document){var t=document.createElement("style");t.type="text/css",e=!!t.styleSheet}return e}var v=this&&this.__assign||Object.assign||function(e){for(var t,n=1,r=arguments.length;n -1000 && num < 1000) + || $test.call(/e/, str) + ) { + return str; + } + var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g; + if (typeof num === 'number') { + var int = num < 0 ? -$floor(-num) : $floor(num); // trunc(num) + if (int !== num) { + var intStr = String(int); + var dec = $slice.call(str, intStr.length + 1); + return $replace.call(intStr, sepRegex, '$&_') + '.' + $replace.call($replace.call(dec, /([0-9]{3})/g, '$&_'), /_$/, ''); + } + } + return $replace.call(str, sepRegex, '$&_'); +} + +var utilInspect = __webpack_require__(23); +var inspectCustom = utilInspect.custom; +var inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null; + +var quotes = { + __proto__: null, + 'double': '"', + single: "'" +}; +var quoteREs = { + __proto__: null, + 'double': /(["\\])/g, + single: /(['\\])/g +}; + +module.exports = function inspect_(obj, options, depth, seen) { + var opts = options || {}; + + if (has(opts, 'quoteStyle') && !has(quotes, opts.quoteStyle)) { + throw new TypeError('option "quoteStyle" must be "single" or "double"'); + } + if ( + has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number' + ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity + : opts.maxStringLength !== null + ) + ) { + throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`'); + } + var customInspect = has(opts, 'customInspect') ? opts.customInspect : true; + if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') { + throw new TypeError('option "customInspect", if provided, must be `true`, `false`, or `\'symbol\'`'); + } + + if ( + has(opts, 'indent') + && opts.indent !== null + && opts.indent !== '\t' + && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0) + ) { + throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`'); + } + if (has(opts, 'numericSeparator') && typeof opts.numericSeparator !== 'boolean') { + throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`'); + } + var numericSeparator = opts.numericSeparator; + + if (typeof obj === 'undefined') { + return 'undefined'; + } + if (obj === null) { + return 'null'; + } + if (typeof obj === 'boolean') { + return obj ? 'true' : 'false'; + } + + if (typeof obj === 'string') { + return inspectString(obj, opts); + } + if (typeof obj === 'number') { + if (obj === 0) { + return Infinity / obj > 0 ? '0' : '-0'; + } + var str = String(obj); + return numericSeparator ? addNumericSeparator(obj, str) : str; + } + if (typeof obj === 'bigint') { + var bigIntStr = String(obj) + 'n'; + return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr; + } + + var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth; + if (typeof depth === 'undefined') { depth = 0; } + if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') { + return isArray(obj) ? '[Array]' : '[Object]'; + } + + var indent = getIndent(opts, depth); + + if (typeof seen === 'undefined') { + seen = []; + } else if (indexOf(seen, obj) >= 0) { + return '[Circular]'; + } + + function inspect(value, from, noIndent) { + if (from) { + seen = $arrSlice.call(seen); + seen.push(from); + } + if (noIndent) { + var newOpts = { + depth: opts.depth + }; + if (has(opts, 'quoteStyle')) { + newOpts.quoteStyle = opts.quoteStyle; + } + return inspect_(value, newOpts, depth + 1, seen); + } + return inspect_(value, opts, depth + 1, seen); + } + + if (typeof obj === 'function' && !isRegExp(obj)) { // in older engines, regexes are callable + var name = nameOf(obj); + var keys = arrObjKeys(obj, inspect); + return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + $join.call(keys, ', ') + ' }' : ''); + } + if (isSymbol(obj)) { + var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\(.*\))_[^)]*$/, '$1') : symToString.call(obj); + return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString; + } + if (isElement(obj)) { + var s = '<' + $toLowerCase.call(String(obj.nodeName)); + var attrs = obj.attributes || []; + for (var i = 0; i < attrs.length; i++) { + s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts); + } + s += '>'; + if (obj.childNodes && obj.childNodes.length) { s += '...'; } + s += ''; + return s; + } + if (isArray(obj)) { + if (obj.length === 0) { return '[]'; } + var xs = arrObjKeys(obj, inspect); + if (indent && !singleLineValues(xs)) { + return '[' + indentedJoin(xs, indent) + ']'; + } + return '[ ' + $join.call(xs, ', ') + ' ]'; + } + if (isError(obj)) { + var parts = arrObjKeys(obj, inspect); + if (!('cause' in Error.prototype) && 'cause' in obj && !isEnumerable.call(obj, 'cause')) { + return '{ [' + String(obj) + '] ' + $join.call($concat.call('[cause]: ' + inspect(obj.cause), parts), ', ') + ' }'; + } + if (parts.length === 0) { return '[' + String(obj) + ']'; } + return '{ [' + String(obj) + '] ' + $join.call(parts, ', ') + ' }'; + } + if (typeof obj === 'object' && customInspect) { + if (inspectSymbol && typeof obj[inspectSymbol] === 'function' && utilInspect) { + return utilInspect(obj, { depth: maxDepth - depth }); + } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') { + return obj.inspect(); + } + } + if (isMap(obj)) { + var mapParts = []; + if (mapForEach) { + mapForEach.call(obj, function (value, key) { + mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj)); + }); + } + return collectionOf('Map', mapSize.call(obj), mapParts, indent); + } + if (isSet(obj)) { + var setParts = []; + if (setForEach) { + setForEach.call(obj, function (value) { + setParts.push(inspect(value, obj)); + }); + } + return collectionOf('Set', setSize.call(obj), setParts, indent); + } + if (isWeakMap(obj)) { + return weakCollectionOf('WeakMap'); + } + if (isWeakSet(obj)) { + return weakCollectionOf('WeakSet'); + } + if (isWeakRef(obj)) { + return weakCollectionOf('WeakRef'); + } + if (isNumber(obj)) { + return markBoxed(inspect(Number(obj))); + } + if (isBigInt(obj)) { + return markBoxed(inspect(bigIntValueOf.call(obj))); + } + if (isBoolean(obj)) { + return markBoxed(booleanValueOf.call(obj)); + } + if (isString(obj)) { + return markBoxed(inspect(String(obj))); + } + // note: in IE 8, sometimes `global !== window` but both are the prototypes of each other + /* eslint-env browser */ + if (typeof window !== 'undefined' && obj === window) { + return '{ [object Window] }'; + } + if ( + (typeof globalThis !== 'undefined' && obj === globalThis) + || (typeof global !== 'undefined' && obj === global) + ) { + return '{ [object globalThis] }'; + } + if (!isDate(obj) && !isRegExp(obj)) { + var ys = arrObjKeys(obj, inspect); + var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object; + var protoTag = obj instanceof Object ? '' : 'null prototype'; + var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? 'Object' : ''; + var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : ''; + var tag = constructorTag + (stringTag || protoTag ? '[' + $join.call($concat.call([], stringTag || [], protoTag || []), ': ') + '] ' : ''); + if (ys.length === 0) { return tag + '{}'; } + if (indent) { + return tag + '{' + indentedJoin(ys, indent) + '}'; + } + return tag + '{ ' + $join.call(ys, ', ') + ' }'; + } + return String(obj); +}; + +function wrapQuotes(s, defaultStyle, opts) { + var style = opts.quoteStyle || defaultStyle; + var quoteChar = quotes[style]; + return quoteChar + s + quoteChar; +} + +function quote(s) { + return $replace.call(String(s), /"/g, '"'); +} + +function canTrustToString(obj) { + return !toStringTag || !(typeof obj === 'object' && (toStringTag in obj || typeof obj[toStringTag] !== 'undefined')); +} +function isArray(obj) { return toStr(obj) === '[object Array]' && canTrustToString(obj); } +function isDate(obj) { return toStr(obj) === '[object Date]' && canTrustToString(obj); } +function isRegExp(obj) { return toStr(obj) === '[object RegExp]' && canTrustToString(obj); } +function isError(obj) { return toStr(obj) === '[object Error]' && canTrustToString(obj); } +function isString(obj) { return toStr(obj) === '[object String]' && canTrustToString(obj); } +function isNumber(obj) { return toStr(obj) === '[object Number]' && canTrustToString(obj); } +function isBoolean(obj) { return toStr(obj) === '[object Boolean]' && canTrustToString(obj); } + +// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives +function isSymbol(obj) { + if (hasShammedSymbols) { + return obj && typeof obj === 'object' && obj instanceof Symbol; + } + if (typeof obj === 'symbol') { + return true; + } + if (!obj || typeof obj !== 'object' || !symToString) { + return false; + } + try { + symToString.call(obj); + return true; + } catch (e) {} + return false; +} + +function isBigInt(obj) { + if (!obj || typeof obj !== 'object' || !bigIntValueOf) { + return false; + } + try { + bigIntValueOf.call(obj); + return true; + } catch (e) {} + return false; +} + +var hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; }; +function has(obj, key) { + return hasOwn.call(obj, key); +} + +function toStr(obj) { + return objectToString.call(obj); +} + +function nameOf(f) { + if (f.name) { return f.name; } + var m = $match.call(functionToString.call(f), /^function\s*([\w$]+)/); + if (m) { return m[1]; } + return null; +} + +function indexOf(xs, x) { + if (xs.indexOf) { return xs.indexOf(x); } + for (var i = 0, l = xs.length; i < l; i++) { + if (xs[i] === x) { return i; } + } + return -1; +} + +function isMap(x) { + if (!mapSize || !x || typeof x !== 'object') { + return false; + } + try { + mapSize.call(x); + try { + setSize.call(x); + } catch (s) { + return true; + } + return x instanceof Map; // core-js workaround, pre-v2.5.0 + } catch (e) {} + return false; +} + +function isWeakMap(x) { + if (!weakMapHas || !x || typeof x !== 'object') { + return false; + } + try { + weakMapHas.call(x, weakMapHas); + try { + weakSetHas.call(x, weakSetHas); + } catch (s) { + return true; + } + return x instanceof WeakMap; // core-js workaround, pre-v2.5.0 + } catch (e) {} + return false; +} + +function isWeakRef(x) { + if (!weakRefDeref || !x || typeof x !== 'object') { + return false; + } + try { + weakRefDeref.call(x); + return true; + } catch (e) {} + return false; +} + +function isSet(x) { + if (!setSize || !x || typeof x !== 'object') { + return false; + } + try { + setSize.call(x); + try { + mapSize.call(x); + } catch (m) { + return true; + } + return x instanceof Set; // core-js workaround, pre-v2.5.0 + } catch (e) {} + return false; +} + +function isWeakSet(x) { + if (!weakSetHas || !x || typeof x !== 'object') { + return false; + } + try { + weakSetHas.call(x, weakSetHas); + try { + weakMapHas.call(x, weakMapHas); + } catch (s) { + return true; + } + return x instanceof WeakSet; // core-js workaround, pre-v2.5.0 + } catch (e) {} + return false; +} + +function isElement(x) { + if (!x || typeof x !== 'object') { return false; } + if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) { + return true; + } + return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function'; +} + +function inspectString(str, opts) { + if (str.length > opts.maxStringLength) { + var remaining = str.length - opts.maxStringLength; + var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : ''); + return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer; + } + var quoteRE = quoteREs[opts.quoteStyle || 'single']; + quoteRE.lastIndex = 0; + // eslint-disable-next-line no-control-regex + var s = $replace.call($replace.call(str, quoteRE, '\\$1'), /[\x00-\x1f]/g, lowbyte); + return wrapQuotes(s, 'single', opts); +} + +function lowbyte(c) { + var n = c.charCodeAt(0); + var x = { + 8: 'b', + 9: 't', + 10: 'n', + 12: 'f', + 13: 'r' + }[n]; + if (x) { return '\\' + x; } + return '\\x' + (n < 0x10 ? '0' : '') + $toUpperCase.call(n.toString(16)); +} + +function markBoxed(str) { + return 'Object(' + str + ')'; +} + +function weakCollectionOf(type) { + return type + ' { ? }'; +} + +function collectionOf(type, size, entries, indent) { + var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ', '); + return type + ' (' + size + ') {' + joinedEntries + '}'; +} + +function singleLineValues(xs) { + for (var i = 0; i < xs.length; i++) { + if (indexOf(xs[i], '\n') >= 0) { + return false; + } + } + return true; +} + +function getIndent(opts, depth) { + var baseIndent; + if (opts.indent === '\t') { + baseIndent = '\t'; + } else if (typeof opts.indent === 'number' && opts.indent > 0) { + baseIndent = $join.call(Array(opts.indent + 1), ' '); + } else { + return null; + } + return { + base: baseIndent, + prev: $join.call(Array(depth + 1), baseIndent) + }; +} + +function indentedJoin(xs, indent) { + if (xs.length === 0) { return ''; } + var lineJoiner = '\n' + indent.prev + indent.base; + return lineJoiner + $join.call(xs, ',' + lineJoiner) + '\n' + indent.prev; +} + +function arrObjKeys(obj, inspect) { + var isArr = isArray(obj); + var xs = []; + if (isArr) { + xs.length = obj.length; + for (var i = 0; i < obj.length; i++) { + xs[i] = has(obj, i) ? inspect(obj[i], obj) : ''; + } + } + var syms = typeof gOPS === 'function' ? gOPS(obj) : []; + var symMap; + if (hasShammedSymbols) { + symMap = {}; + for (var k = 0; k < syms.length; k++) { + symMap['$' + syms[k]] = syms[k]; + } + } + + for (var key in obj) { // eslint-disable-line no-restricted-syntax + if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue + if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue + if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) { + // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section + continue; // eslint-disable-line no-restricted-syntax, no-continue + } else if ($test.call(/[^\w$]/, key)) { + xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj)); + } else { + xs.push(key + ': ' + inspect(obj[key], obj)); + } + } + if (typeof gOPS === 'function') { + for (var j = 0; j < syms.length; j++) { + if (isEnumerable.call(obj, syms[j])) { + xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj)); + } + } + } + return xs; +} + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(6))) + +/***/ }), +/* 2 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var implementation = __webpack_require__(45); + +module.exports = Function.prototype.bind || implementation; + + +/***/ }), +/* 3 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var undefined; + +var $Object = __webpack_require__(8); + +var $Error = __webpack_require__(25); +var $EvalError = __webpack_require__(26); +var $RangeError = __webpack_require__(27); +var $ReferenceError = __webpack_require__(28); +var $SyntaxError = __webpack_require__(29); +var $TypeError = __webpack_require__(0); +var $URIError = __webpack_require__(30); + +var abs = __webpack_require__(31); +var floor = __webpack_require__(32); +var max = __webpack_require__(33); +var min = __webpack_require__(34); +var pow = __webpack_require__(35); +var round = __webpack_require__(36); +var sign = __webpack_require__(37); + +var $Function = Function; + +// eslint-disable-next-line consistent-return +var getEvalledConstructor = function (expressionSyntax) { + try { + return $Function('"use strict"; return (' + expressionSyntax + ').constructor;')(); + } catch (e) {} +}; + +var $gOPD = __webpack_require__(9); +var $defineProperty = __webpack_require__(40); + +var throwTypeError = function () { + throw new $TypeError(); +}; +var ThrowTypeError = $gOPD + ? (function () { + try { + // eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties + arguments.callee; // IE 8 does not throw here + return throwTypeError; + } catch (calleeThrows) { + try { + // IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '') + return $gOPD(arguments, 'callee').get; + } catch (gOPDthrows) { + return throwTypeError; + } + } + }()) + : throwTypeError; + +var hasSymbols = __webpack_require__(41)(); + +var getProto = __webpack_require__(43); +var $ObjectGPO = __webpack_require__(11); +var $ReflectGPO = __webpack_require__(10); + +var $apply = __webpack_require__(13); +var $call = __webpack_require__(4); + +var needsEval = {}; + +var TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array); + +var INTRINSICS = { + __proto__: null, + '%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError, + '%Array%': Array, + '%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer, + '%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined, + '%AsyncFromSyncIteratorPrototype%': undefined, + '%AsyncFunction%': needsEval, + '%AsyncGenerator%': needsEval, + '%AsyncGeneratorFunction%': needsEval, + '%AsyncIteratorPrototype%': needsEval, + '%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics, + '%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt, + '%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array, + '%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array, + '%Boolean%': Boolean, + '%DataView%': typeof DataView === 'undefined' ? undefined : DataView, + '%Date%': Date, + '%decodeURI%': decodeURI, + '%decodeURIComponent%': decodeURIComponent, + '%encodeURI%': encodeURI, + '%encodeURIComponent%': encodeURIComponent, + '%Error%': $Error, + '%eval%': eval, // eslint-disable-line no-eval + '%EvalError%': $EvalError, + '%Float16Array%': typeof Float16Array === 'undefined' ? undefined : Float16Array, + '%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array, + '%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array, + '%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry, + '%Function%': $Function, + '%GeneratorFunction%': needsEval, + '%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array, + '%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array, + '%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array, + '%isFinite%': isFinite, + '%isNaN%': isNaN, + '%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined, + '%JSON%': typeof JSON === 'object' ? JSON : undefined, + '%Map%': typeof Map === 'undefined' ? undefined : Map, + '%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()), + '%Math%': Math, + '%Number%': Number, + '%Object%': $Object, + '%Object.getOwnPropertyDescriptor%': $gOPD, + '%parseFloat%': parseFloat, + '%parseInt%': parseInt, + '%Promise%': typeof Promise === 'undefined' ? undefined : Promise, + '%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy, + '%RangeError%': $RangeError, + '%ReferenceError%': $ReferenceError, + '%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect, + '%RegExp%': RegExp, + '%Set%': typeof Set === 'undefined' ? undefined : Set, + '%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()), + '%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer, + '%String%': String, + '%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined, + '%Symbol%': hasSymbols ? Symbol : undefined, + '%SyntaxError%': $SyntaxError, + '%ThrowTypeError%': ThrowTypeError, + '%TypedArray%': TypedArray, + '%TypeError%': $TypeError, + '%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array, + '%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray, + '%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array, + '%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array, + '%URIError%': $URIError, + '%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap, + '%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef, + '%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet, + + '%Function.prototype.call%': $call, + '%Function.prototype.apply%': $apply, + '%Object.defineProperty%': $defineProperty, + '%Object.getPrototypeOf%': $ObjectGPO, + '%Math.abs%': abs, + '%Math.floor%': floor, + '%Math.max%': max, + '%Math.min%': min, + '%Math.pow%': pow, + '%Math.round%': round, + '%Math.sign%': sign, + '%Reflect.getPrototypeOf%': $ReflectGPO +}; + +if (getProto) { + try { + null.error; // eslint-disable-line no-unused-expressions + } catch (e) { + // https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229 + var errorProto = getProto(getProto(e)); + INTRINSICS['%Error.prototype%'] = errorProto; + } +} + +var doEval = function doEval(name) { + var value; + if (name === '%AsyncFunction%') { + value = getEvalledConstructor('async function () {}'); + } else if (name === '%GeneratorFunction%') { + value = getEvalledConstructor('function* () {}'); + } else if (name === '%AsyncGeneratorFunction%') { + value = getEvalledConstructor('async function* () {}'); + } else if (name === '%AsyncGenerator%') { + var fn = doEval('%AsyncGeneratorFunction%'); + if (fn) { + value = fn.prototype; + } + } else if (name === '%AsyncIteratorPrototype%') { + var gen = doEval('%AsyncGenerator%'); + if (gen && getProto) { + value = getProto(gen.prototype); + } + } + + INTRINSICS[name] = value; + + return value; +}; + +var LEGACY_ALIASES = { + __proto__: null, + '%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'], + '%ArrayPrototype%': ['Array', 'prototype'], + '%ArrayProto_entries%': ['Array', 'prototype', 'entries'], + '%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'], + '%ArrayProto_keys%': ['Array', 'prototype', 'keys'], + '%ArrayProto_values%': ['Array', 'prototype', 'values'], + '%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'], + '%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'], + '%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'], + '%BooleanPrototype%': ['Boolean', 'prototype'], + '%DataViewPrototype%': ['DataView', 'prototype'], + '%DatePrototype%': ['Date', 'prototype'], + '%ErrorPrototype%': ['Error', 'prototype'], + '%EvalErrorPrototype%': ['EvalError', 'prototype'], + '%Float32ArrayPrototype%': ['Float32Array', 'prototype'], + '%Float64ArrayPrototype%': ['Float64Array', 'prototype'], + '%FunctionPrototype%': ['Function', 'prototype'], + '%Generator%': ['GeneratorFunction', 'prototype'], + '%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'], + '%Int8ArrayPrototype%': ['Int8Array', 'prototype'], + '%Int16ArrayPrototype%': ['Int16Array', 'prototype'], + '%Int32ArrayPrototype%': ['Int32Array', 'prototype'], + '%JSONParse%': ['JSON', 'parse'], + '%JSONStringify%': ['JSON', 'stringify'], + '%MapPrototype%': ['Map', 'prototype'], + '%NumberPrototype%': ['Number', 'prototype'], + '%ObjectPrototype%': ['Object', 'prototype'], + '%ObjProto_toString%': ['Object', 'prototype', 'toString'], + '%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'], + '%PromisePrototype%': ['Promise', 'prototype'], + '%PromiseProto_then%': ['Promise', 'prototype', 'then'], + '%Promise_all%': ['Promise', 'all'], + '%Promise_reject%': ['Promise', 'reject'], + '%Promise_resolve%': ['Promise', 'resolve'], + '%RangeErrorPrototype%': ['RangeError', 'prototype'], + '%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'], + '%RegExpPrototype%': ['RegExp', 'prototype'], + '%SetPrototype%': ['Set', 'prototype'], + '%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'], + '%StringPrototype%': ['String', 'prototype'], + '%SymbolPrototype%': ['Symbol', 'prototype'], + '%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'], + '%TypedArrayPrototype%': ['TypedArray', 'prototype'], + '%TypeErrorPrototype%': ['TypeError', 'prototype'], + '%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'], + '%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'], + '%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'], + '%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'], + '%URIErrorPrototype%': ['URIError', 'prototype'], + '%WeakMapPrototype%': ['WeakMap', 'prototype'], + '%WeakSetPrototype%': ['WeakSet', 'prototype'] +}; + +var bind = __webpack_require__(2); +var hasOwn = __webpack_require__(48); +var $concat = bind.call($call, Array.prototype.concat); +var $spliceApply = bind.call($apply, Array.prototype.splice); +var $replace = bind.call($call, String.prototype.replace); +var $strSlice = bind.call($call, String.prototype.slice); +var $exec = bind.call($call, RegExp.prototype.exec); + +/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */ +var rePropName = /[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g; +var reEscapeChar = /\\(\\)?/g; /** Used to match backslashes in property paths. */ +var stringToPath = function stringToPath(string) { + var first = $strSlice(string, 0, 1); + var last = $strSlice(string, -1); + if (first === '%' && last !== '%') { + throw new $SyntaxError('invalid intrinsic syntax, expected closing `%`'); + } else if (last === '%' && first !== '%') { + throw new $SyntaxError('invalid intrinsic syntax, expected opening `%`'); + } + var result = []; + $replace(string, rePropName, function (match, number, quote, subString) { + result[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match; + }); + return result; +}; +/* end adaptation */ + +var getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) { + var intrinsicName = name; + var alias; + if (hasOwn(LEGACY_ALIASES, intrinsicName)) { + alias = LEGACY_ALIASES[intrinsicName]; + intrinsicName = '%' + alias[0] + '%'; + } + + if (hasOwn(INTRINSICS, intrinsicName)) { + var value = INTRINSICS[intrinsicName]; + if (value === needsEval) { + value = doEval(intrinsicName); + } + if (typeof value === 'undefined' && !allowMissing) { + throw new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!'); + } + + return { + alias: alias, + name: intrinsicName, + value: value + }; + } + + throw new $SyntaxError('intrinsic ' + name + ' does not exist!'); +}; + +module.exports = function GetIntrinsic(name, allowMissing) { + if (typeof name !== 'string' || name.length === 0) { + throw new $TypeError('intrinsic name must be a non-empty string'); + } + if (arguments.length > 1 && typeof allowMissing !== 'boolean') { + throw new $TypeError('"allowMissing" argument must be a boolean'); + } + + if ($exec(/^%?[^%]*%?$/, name) === null) { + throw new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name'); + } + var parts = stringToPath(name); + var intrinsicBaseName = parts.length > 0 ? parts[0] : ''; + + var intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing); + var intrinsicRealName = intrinsic.name; + var value = intrinsic.value; + var skipFurtherCaching = false; + + var alias = intrinsic.alias; + if (alias) { + intrinsicBaseName = alias[0]; + $spliceApply(parts, $concat([0, 1], alias)); + } + + for (var i = 1, isOwn = true; i < parts.length; i += 1) { + var part = parts[i]; + var first = $strSlice(part, 0, 1); + var last = $strSlice(part, -1); + if ( + ( + (first === '"' || first === "'" || first === '`') + || (last === '"' || last === "'" || last === '`') + ) + && first !== last + ) { + throw new $SyntaxError('property names with quotes must have matching quotes'); + } + if (part === 'constructor' || !isOwn) { + skipFurtherCaching = true; + } + + intrinsicBaseName += '.' + part; + intrinsicRealName = '%' + intrinsicBaseName + '%'; + + if (hasOwn(INTRINSICS, intrinsicRealName)) { + value = INTRINSICS[intrinsicRealName]; + } else if (value != null) { + if (!(part in value)) { + if (!allowMissing) { + throw new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.'); + } + return void undefined; + } + if ($gOPD && (i + 1) >= parts.length) { + var desc = $gOPD(value, part); + isOwn = !!desc; + + // By convention, when a data property is converted to an accessor + // property to emulate a data property that does not suffer from + // the override mistake, that accessor's getter is marked with + // an `originalValue` property. Here, when we detect this, we + // uphold the illusion by pretending to see that original data + // property, i.e., returning the value rather than the getter + // itself. + if (isOwn && 'get' in desc && !('originalValue' in desc.get)) { + value = desc.get; + } else { + value = value[part]; + } + } else { + isOwn = hasOwn(value, part); + value = value[part]; + } + + if (isOwn && !skipFurtherCaching) { + INTRINSICS[intrinsicRealName] = value; + } + } + } + return value; +}; + + +/***/ }), +/* 4 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +/** @type {import('./functionCall')} */ +module.exports = Function.prototype.call; + + +/***/ }), +/* 5 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var replace = String.prototype.replace; +var percentTwenties = /%20/g; + +var Format = { + RFC1738: 'RFC1738', + RFC3986: 'RFC3986' +}; + +module.exports = { + 'default': Format.RFC3986, + formatters: { + RFC1738: function (value) { + return replace.call(value, percentTwenties, '+'); + }, + RFC3986: function (value) { + return String(value); + } + }, + RFC1738: Format.RFC1738, + RFC3986: Format.RFC3986 +}; + + +/***/ }), +/* 6 */ +/***/ (function(module, exports) { + +var g; + +// This works in non-strict mode +g = (function() { + return this; +})(); + +try { + // This works if eval is allowed (see CSP) + g = g || Function("return this")() || (1,eval)("this"); +} catch(e) { + // This works if the window reference is available + if(typeof window === "object") + g = window; +} + +// g can still be undefined, but nothing to do about it... +// We return undefined, instead of nothing here, so it's +// easier to handle this case. if(!global) { ...} + +module.exports = g; + + +/***/ }), +/* 7 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var GetIntrinsic = __webpack_require__(3); +var callBound = __webpack_require__(14); +var inspect = __webpack_require__(1); + +var $TypeError = __webpack_require__(0); +var $Map = GetIntrinsic('%Map%', true); + +/** @type {(thisArg: Map, key: K) => V} */ +var $mapGet = callBound('Map.prototype.get', true); +/** @type {(thisArg: Map, key: K, value: V) => void} */ +var $mapSet = callBound('Map.prototype.set', true); +/** @type {(thisArg: Map, key: K) => boolean} */ +var $mapHas = callBound('Map.prototype.has', true); +/** @type {(thisArg: Map, key: K) => boolean} */ +var $mapDelete = callBound('Map.prototype.delete', true); +/** @type {(thisArg: Map) => number} */ +var $mapSize = callBound('Map.prototype.size', true); + +/** @type {import('.')} */ +module.exports = !!$Map && /** @type {Exclude} */ function getSideChannelMap() { + /** @typedef {ReturnType} Channel */ + /** @typedef {Parameters[0]} K */ + /** @typedef {Parameters[1]} V */ + + /** @type {Map | undefined} */ var $m; + + /** @type {Channel} */ + var channel = { + assert: function (key) { + if (!channel.has(key)) { + throw new $TypeError('Side channel does not contain ' + inspect(key)); + } + }, + 'delete': function (key) { + if ($m) { + var result = $mapDelete($m, key); + if ($mapSize($m) === 0) { + $m = void undefined; + } + return result; + } + return false; + }, + get: function (key) { // eslint-disable-line consistent-return + if ($m) { + return $mapGet($m, key); + } + }, + has: function (key) { + if ($m) { + return $mapHas($m, key); + } + return false; + }, + set: function (key, value) { + if (!$m) { + // @ts-expect-error TS can't handle narrowing a variable inside a closure + $m = new $Map(); + } + $mapSet($m, key, value); + } + }; + + // @ts-expect-error TODO: figure out why TS is erroring here + return channel; +}; + + +/***/ }), +/* 8 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +/** @type {import('.')} */ +module.exports = Object; + + +/***/ }), +/* 9 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +/** @type {import('.')} */ +var $gOPD = __webpack_require__(39); + +if ($gOPD) { + try { + $gOPD([], 'length'); + } catch (e) { + // IE 8 has a broken gOPD + $gOPD = null; + } +} + +module.exports = $gOPD; + + +/***/ }), +/* 10 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +/** @type {import('./Reflect.getPrototypeOf')} */ +module.exports = (typeof Reflect !== 'undefined' && Reflect.getPrototypeOf) || null; + + +/***/ }), +/* 11 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var $Object = __webpack_require__(8); + +/** @type {import('./Object.getPrototypeOf')} */ +module.exports = $Object.getPrototypeOf || null; + + +/***/ }), +/* 12 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var bind = __webpack_require__(2); +var $TypeError = __webpack_require__(0); + +var $call = __webpack_require__(4); +var $actualApply = __webpack_require__(46); + +/** @type {(args: [Function, thisArg?: unknown, ...args: unknown[]]) => Function} TODO FIXME, find a way to use import('.') */ +module.exports = function callBindBasic(args) { + if (args.length < 1 || typeof args[0] !== 'function') { + throw new $TypeError('a function is required'); + } + return $actualApply(bind, $call, args); +}; + + +/***/ }), +/* 13 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +/** @type {import('./functionApply')} */ +module.exports = Function.prototype.apply; + + +/***/ }), +/* 14 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var GetIntrinsic = __webpack_require__(3); + +var callBindBasic = __webpack_require__(12); + +/** @type {(thisArg: string, searchString: string, position?: number) => number} */ +var $indexOf = callBindBasic([GetIntrinsic('%String.prototype.indexOf%')]); + +/** @type {import('.')} */ +module.exports = function callBoundIntrinsic(name, allowMissing) { + /* eslint no-extra-parens: 0 */ + + var intrinsic = /** @type {(this: unknown, ...args: unknown[]) => unknown} */ (GetIntrinsic(name, !!allowMissing)); + if (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) { + return callBindBasic(/** @type {const} */ ([intrinsic])); + } + return intrinsic; +}; + + +/***/ }), +/* 15 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var formats = __webpack_require__(5); + +var has = Object.prototype.hasOwnProperty; +var isArray = Array.isArray; + +var hexTable = (function () { + var array = []; + for (var i = 0; i < 256; ++i) { + array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase()); + } + + return array; +}()); + +var compactQueue = function compactQueue(queue) { + while (queue.length > 1) { + var item = queue.pop(); + var obj = item.obj[item.prop]; + + if (isArray(obj)) { + var compacted = []; + + for (var j = 0; j < obj.length; ++j) { + if (typeof obj[j] !== 'undefined') { + compacted.push(obj[j]); + } + } + + item.obj[item.prop] = compacted; + } + } +}; + +var arrayToObject = function arrayToObject(source, options) { + var obj = options && options.plainObjects ? { __proto__: null } : {}; + for (var i = 0; i < source.length; ++i) { + if (typeof source[i] !== 'undefined') { + obj[i] = source[i]; + } + } + + return obj; +}; + +var merge = function merge(target, source, options) { + /* eslint no-param-reassign: 0 */ + if (!source) { + return target; + } + + if (typeof source !== 'object' && typeof source !== 'function') { + if (isArray(target)) { + target.push(source); + } else if (target && typeof target === 'object') { + if ( + (options && (options.plainObjects || options.allowPrototypes)) + || !has.call(Object.prototype, source) + ) { + target[source] = true; + } + } else { + return [target, source]; + } + + return target; + } + + if (!target || typeof target !== 'object') { + return [target].concat(source); + } + + var mergeTarget = target; + if (isArray(target) && !isArray(source)) { + mergeTarget = arrayToObject(target, options); + } + + if (isArray(target) && isArray(source)) { + source.forEach(function (item, i) { + if (has.call(target, i)) { + var targetItem = target[i]; + if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') { + target[i] = merge(targetItem, item, options); + } else { + target.push(item); + } + } else { + target[i] = item; + } + }); + return target; + } + + return Object.keys(source).reduce(function (acc, key) { + var value = source[key]; + + if (has.call(acc, key)) { + acc[key] = merge(acc[key], value, options); + } else { + acc[key] = value; + } + return acc; + }, mergeTarget); +}; + +var assign = function assignSingleSource(target, source) { + return Object.keys(source).reduce(function (acc, key) { + acc[key] = source[key]; + return acc; + }, target); +}; + +var decode = function (str, defaultDecoder, charset) { + var strWithoutPlus = str.replace(/\+/g, ' '); + if (charset === 'iso-8859-1') { + // unescape never throws, no try...catch needed: + return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape); + } + // utf-8 + try { + return decodeURIComponent(strWithoutPlus); + } catch (e) { + return strWithoutPlus; + } +}; + +var limit = 1024; + +/* eslint operator-linebreak: [2, "before"] */ + +var encode = function encode(str, defaultEncoder, charset, kind, format) { + // This code was originally written by Brian White (mscdex) for the io.js core querystring library. + // It has been adapted here for stricter adherence to RFC 3986 + if (str.length === 0) { + return str; + } + + var string = str; + if (typeof str === 'symbol') { + string = Symbol.prototype.toString.call(str); + } else if (typeof str !== 'string') { + string = String(str); + } + + if (charset === 'iso-8859-1') { + return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) { + return '%26%23' + parseInt($0.slice(2), 16) + '%3B'; + }); + } + + var out = ''; + for (var j = 0; j < string.length; j += limit) { + var segment = string.length >= limit ? string.slice(j, j + limit) : string; + var arr = []; + + for (var i = 0; i < segment.length; ++i) { + var c = segment.charCodeAt(i); + if ( + c === 0x2D // - + || c === 0x2E // . + || c === 0x5F // _ + || c === 0x7E // ~ + || (c >= 0x30 && c <= 0x39) // 0-9 + || (c >= 0x41 && c <= 0x5A) // a-z + || (c >= 0x61 && c <= 0x7A) // A-Z + || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( ) + ) { + arr[arr.length] = segment.charAt(i); + continue; + } + + if (c < 0x80) { + arr[arr.length] = hexTable[c]; + continue; + } + + if (c < 0x800) { + arr[arr.length] = hexTable[0xC0 | (c >> 6)] + + hexTable[0x80 | (c & 0x3F)]; + continue; + } + + if (c < 0xD800 || c >= 0xE000) { + arr[arr.length] = hexTable[0xE0 | (c >> 12)] + + hexTable[0x80 | ((c >> 6) & 0x3F)] + + hexTable[0x80 | (c & 0x3F)]; + continue; + } + + i += 1; + c = 0x10000 + (((c & 0x3FF) << 10) | (segment.charCodeAt(i) & 0x3FF)); + + arr[arr.length] = hexTable[0xF0 | (c >> 18)] + + hexTable[0x80 | ((c >> 12) & 0x3F)] + + hexTable[0x80 | ((c >> 6) & 0x3F)] + + hexTable[0x80 | (c & 0x3F)]; + } + + out += arr.join(''); + } + + return out; +}; + +var compact = function compact(value) { + var queue = [{ obj: { o: value }, prop: 'o' }]; + var refs = []; + + for (var i = 0; i < queue.length; ++i) { + var item = queue[i]; + var obj = item.obj[item.prop]; + + var keys = Object.keys(obj); + for (var j = 0; j < keys.length; ++j) { + var key = keys[j]; + var val = obj[key]; + if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) { + queue.push({ obj: obj, prop: key }); + refs.push(val); + } + } + } + + compactQueue(queue); + + return value; +}; + +var isRegExp = function isRegExp(obj) { + return Object.prototype.toString.call(obj) === '[object RegExp]'; +}; + +var isBuffer = function isBuffer(obj) { + if (!obj || typeof obj !== 'object') { + return false; + } + + return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj)); +}; + +var combine = function combine(a, b) { + return [].concat(a, b); +}; + +var maybeMap = function maybeMap(val, fn) { + if (isArray(val)) { + var mapped = []; + for (var i = 0; i < val.length; i += 1) { + mapped.push(fn(val[i])); + } + return mapped; + } + return fn(val); +}; + +module.exports = { + arrayToObject: arrayToObject, + assign: assign, + combine: combine, + compact: compact, + decode: decode, + encode: encode, + isBuffer: isBuffer, + isRegExp: isRegExp, + maybeMap: maybeMap, + merge: merge +}; + + +/***/ }), +/* 16 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +/** + * @copyright Microsoft Corporation. All rights reserved. + * + * @file manifestsFile.ts + */ +Object.defineProperty(exports, "__esModule", { value: true }); +var url = __webpack_require__(17); +/** + * Get the manifest array with each of the base URLs rewritten to point to the local + * page's protocol, hostname, and port. This function is useful for automated tests + * that run locally and use an unpredictable port. + */ +function getLocalPageManifests() { + // Clone manifestsArray + var manifests = JSON.parse(JSON.stringify(getManifests())); + // tslint:disable-next-line:no-function-expression ES5 browsers don't support lambda functions + manifests.forEach(function (manifest) { + var baseUrls = manifest.loaderConfig.internalModuleBaseUrls; + var baseUrl = url.parse(baseUrls[0]); + var pageUrl = url.parse(window.location.toString()); + baseUrl.protocol = pageUrl.protocol; + baseUrl.host = pageUrl.host; + baseUrls[0] = url.format(baseUrl); + }); + return manifests; +} +exports.getLocalPageManifests = getLocalPageManifests; +/** + * Get the manifest array. + */ +function getManifests() { + return [ + { + "id": "f97266fb-ccb7-430e-9384-4124d05295d3", + "alias": "Decorators", + "componentType": "Library", + "version": "1.4.1", + "manifestVersion": 2, + "loaderConfig": { + "entryModuleId": "decorators", + "internalModuleBaseUrls": [ + "https://localhost:4321/node_modules/@microsoft/decorators/" + ], + "scriptResources": { + "decorators": { + "type": "path", + "path": "dist/decorators.js" + } + } + }, + "isInternal": true + }, + { + "id": "73e1dc6c-8441-42cc-ad47-4bd3659f8a3a", + "alias": "SPLodashSubset", + "componentType": "Library", + "version": "1.4.1", + "manifestVersion": 2, + "loaderConfig": { + "entryModuleId": "sp-lodash-subset", + "internalModuleBaseUrls": [ + "https://localhost:4321/node_modules/@microsoft/sp-lodash-subset/" + ], + "scriptResources": { + "sp-lodash-subset": { + "type": "path", + "path": "dist/sp-lodash-subset.js" + } + } + }, + "isInternal": true + }, + { + "id": "7263c7d0-1d6a-45ec-8d85-d4d1d234171b", + "alias": "SPCoreLibrary", + "componentType": "Library", + "version": "1.4.1", + "manifestVersion": 2, + "loaderConfig": { + "entryModuleId": "sp-core-library", + "internalModuleBaseUrls": [ + "https://localhost:4321/node_modules/@microsoft/sp-core-library/" + ], + "scriptResources": { + "sp-core-library": { + "type": "localizedPath", + "defaultPath": "dist/sp-core-library_en-us.js" + }, + "@microsoft/sp-lodash-subset": { + "type": "component", + "version": "1.4.1", + "id": "73e1dc6c-8441-42cc-ad47-4bd3659f8a3a" + } + } + }, + "isInternal": true + }, + { + "id": "02a01e42-69ab-403d-8a16-acd128661f8e", + "alias": "OfficeUIFabricReact", + "componentType": "Library", + "version": "1.4.1", + "manifestVersion": 2, + "loaderConfig": { + "entryModuleId": "office-ui-fabric-react-bundle", + "internalModuleBaseUrls": [ + "https://localhost:4321/node_modules/@microsoft/office-ui-fabric-react-bundle/" + ], + "scriptResources": { + "office-ui-fabric-react-bundle": { + "type": "path", + "path": "dist/office-ui-fabric-react-bundle.js" + }, + "react": { + "type": "component", + "version": "15.6.2", + "id": "0d910c1c-13b9-4e1c-9aa4-b008c5e42d7d", + "failoverPath": "node_modules/react/dist/react.js" + }, + "react-dom": { + "type": "component", + "version": "15.6.2", + "id": "aa0a46ec-1505-43cd-a44a-93f3a5aa460a", + "failoverPath": "node_modules/react-dom/dist/react-dom.js" + } + } + }, + "isInternal": true + }, + { + "id": "1e384972-6346-49b4-93c7-b2e6763938e6", + "alias": "sp-polyfills", + "componentType": "Library", + "version": "1.4.1", + "manifestVersion": 2, + "loaderConfig": { + "entryModuleId": "sp-polyfills", + "internalModuleBaseUrls": [ + "/" + ], + "scriptResources": { + "sp-polyfills": { + "type": "path", + "path": "dist/sp-polyfills.js" + } + } + } + }, + { + "id": "1c6c9123-7aac-41f3-a376-3caea41ed83f", + "alias": "SPLoader", + "componentType": "Library", + "version": "1.4.1", + "manifestVersion": 2, + "loaderConfig": { + "entryModuleId": "sp-loader", + "internalModuleBaseUrls": [ + "https://localhost:4321/node_modules/@microsoft/sp-loader/" + ], + "scriptResources": { + "sp-loader": { + "type": "localizedPath", + "defaultPath": "dist/sp-loader_en-us.js" + }, + "@microsoft/sp-core-library": { + "type": "component", + "version": "1.4.1", + "id": "7263c7d0-1d6a-45ec-8d85-d4d1d234171b" + }, + "@ms/sp-telemetry": { + "type": "component", + "version": "0.2.2", + "id": "8217e442-8ed3-41fd-957d-b112e841286a" + }, + "@microsoft/sp-lodash-subset": { + "type": "component", + "version": "1.4.1", + "id": "73e1dc6c-8441-42cc-ad47-4bd3659f8a3a" + } + } + }, + "isInternal": true + }, + { + "id": "c07208f0-ea3b-4c1a-9965-ac1b825211a6", + "alias": "SPHttp", + "componentType": "Library", + "version": "1.4.1", + "manifestVersion": 2, + "loaderConfig": { + "entryModuleId": "sp-http", + "internalModuleBaseUrls": [ + "https://localhost:4321/node_modules/@microsoft/sp-http/" + ], + "scriptResources": { + "sp-http": { + "type": "localizedPath", + "defaultPath": "dist/sp-http_en-us.js" + }, + "@microsoft/sp-core-library": { + "type": "component", + "version": "1.4.1", + "id": "7263c7d0-1d6a-45ec-8d85-d4d1d234171b" + }, + "@microsoft/decorators": { + "type": "component", + "version": "1.4.1", + "id": "f97266fb-ccb7-430e-9384-4124d05295d3" + }, + "@ms/sp-telemetry": { + "type": "component", + "version": "0.2.2", + "id": "8217e442-8ed3-41fd-957d-b112e841286a" + }, + "@microsoft/sp-lodash-subset": { + "type": "component", + "version": "1.4.1", + "id": "73e1dc6c-8441-42cc-ad47-4bd3659f8a3a" + } + } + }, + "isInternal": true + }, + { + "id": "1c4541f7-5c31-41aa-9fa8-fbc9dc14c0a8", + "alias": "SPPageContext", + "componentType": "Library", + "version": "1.4.1", + "manifestVersion": 2, + "loaderConfig": { + "entryModuleId": "sp-page-context", + "internalModuleBaseUrls": [ + "https://localhost:4321/node_modules/@microsoft/sp-page-context/" + ], + "scriptResources": { + "sp-page-context": { + "type": "path", + "path": "dist/sp-page-context.js" + }, + "@microsoft/sp-core-library": { + "type": "component", + "version": "1.4.1", + "id": "7263c7d0-1d6a-45ec-8d85-d4d1d234171b" + }, + "@ms/sp-telemetry": { + "type": "component", + "version": "0.2.2", + "id": "8217e442-8ed3-41fd-957d-b112e841286a" + }, + "@microsoft/sp-http": { + "type": "component", + "version": "1.4.1", + "id": "c07208f0-ea3b-4c1a-9965-ac1b825211a6" + } + } + }, + "isInternal": true + }, + { + "id": "467dc675-7cc5-4709-8aac-78e3b71bd2f6", + "alias": "SPComponentBase", + "componentType": "Library", + "version": "1.4.1", + "manifestVersion": 2, + "loaderConfig": { + "entryModuleId": "sp-component-base", + "internalModuleBaseUrls": [ + "https://localhost:4321/node_modules/@microsoft/sp-component-base/" + ], + "scriptResources": { + "sp-component-base": { + "type": "path", + "path": "dist/sp-component-base.js" + }, + "@microsoft/decorators": { + "type": "component", + "version": "1.4.1", + "id": "f97266fb-ccb7-430e-9384-4124d05295d3" + }, + "@microsoft/sp-core-library": { + "type": "component", + "version": "1.4.1", + "id": "7263c7d0-1d6a-45ec-8d85-d4d1d234171b" + }, + "@ms/sp-telemetry": { + "type": "component", + "version": "0.2.2", + "id": "8217e442-8ed3-41fd-957d-b112e841286a" + }, + "@microsoft/sp-page-context": { + "type": "component", + "version": "1.4.1", + "id": "1c4541f7-5c31-41aa-9fa8-fbc9dc14c0a8" + } + } + }, + "isInternal": true + }, + { + "id": "0773bd53-a69e-4293-87e6-ba80ea4d614b", + "alias": "SPExtensionBase", + "componentType": "Library", + "version": "1.4.1", + "manifestVersion": 2, + "loaderConfig": { + "entryModuleId": "sp-extension-base", + "internalModuleBaseUrls": [ + "https://localhost:4321/node_modules/@microsoft/sp-extension-base/" + ], + "scriptResources": { + "sp-extension-base": { + "type": "localizedPath", + "defaultPath": "dist/sp-extension-base_en-us.js" + }, + "@ms/sp-telemetry": { + "type": "component", + "version": "0.2.2", + "id": "8217e442-8ed3-41fd-957d-b112e841286a" + }, + "@microsoft/sp-component-base": { + "type": "component", + "version": "1.4.1", + "id": "467dc675-7cc5-4709-8aac-78e3b71bd2f6" + }, + "@microsoft/decorators": { + "type": "component", + "version": "1.4.1", + "id": "f97266fb-ccb7-430e-9384-4124d05295d3" + }, + "@microsoft/sp-http": { + "type": "component", + "version": "1.4.1", + "id": "c07208f0-ea3b-4c1a-9965-ac1b825211a6" + }, + "@microsoft/sp-core-library": { + "type": "component", + "version": "1.4.1", + "id": "7263c7d0-1d6a-45ec-8d85-d4d1d234171b" + }, + "@microsoft/sp-loader": { + "type": "component", + "version": "1.4.1", + "id": "1c6c9123-7aac-41f3-a376-3caea41ed83f" + } + } + }, + "isInternal": true + }, + { + "id": "4df9bb86-ab0a-4aab-ab5f-48bf167048fb", + "alias": "SPApplicationBase", + "componentType": "Library", + "version": "1.4.1", + "manifestVersion": 2, + "loaderConfig": { + "entryModuleId": "sp-application-base", + "internalModuleBaseUrls": [ + "https://localhost:4321/node_modules/@microsoft/sp-application-base/" + ], + "scriptResources": { + "sp-application-base": { + "type": "localizedPath", + "defaultPath": "dist/sp-application-base_en-us.js" + }, + "@microsoft/sp-core-library": { + "type": "component", + "version": "1.4.1", + "id": "7263c7d0-1d6a-45ec-8d85-d4d1d234171b" + }, + "@ms/sp-telemetry": { + "type": "component", + "version": "0.2.2", + "id": "8217e442-8ed3-41fd-957d-b112e841286a" + }, + "@microsoft/sp-http": { + "type": "component", + "version": "1.4.1", + "id": "c07208f0-ea3b-4c1a-9965-ac1b825211a6" + }, + "@microsoft/sp-loader": { + "type": "component", + "version": "1.4.1", + "id": "1c6c9123-7aac-41f3-a376-3caea41ed83f" + }, + "@microsoft/sp-page-context": { + "type": "component", + "version": "1.4.1", + "id": "1c4541f7-5c31-41aa-9fa8-fbc9dc14c0a8" + }, + "@microsoft/sp-extension-base": { + "type": "component", + "version": "1.4.1", + "id": "0773bd53-a69e-4293-87e6-ba80ea4d614b" + }, + "@microsoft/sp-component-base": { + "type": "component", + "version": "1.4.1", + "id": "467dc675-7cc5-4709-8aac-78e3b71bd2f6" + }, + "@microsoft/decorators": { + "type": "component", + "version": "1.4.1", + "id": "f97266fb-ccb7-430e-9384-4124d05295d3" + }, + "@microsoft/sp-lodash-subset": { + "type": "component", + "version": "1.4.1", + "id": "73e1dc6c-8441-42cc-ad47-4bd3659f8a3a" + } + } + }, + "isInternal": true + }, + { + "id": "974a7777-0990-4136-8fa6-95d80114c2e0", + "alias": "SPWebPartBase", + "componentType": "Library", + "version": "1.4.1", + "manifestVersion": 2, + "loaderConfig": { + "entryModuleId": "sp-webpart-base", + "internalModuleBaseUrls": [ + "https://localhost:4321/node_modules/@microsoft/sp-webpart-base/" + ], + "scriptResources": { + "sp-webpart-base": { + "type": "localizedPath", + "defaultPath": "dist/sp-webpart-base_en-us.js" + }, + "@microsoft/sp-core-library": { + "type": "component", + "version": "1.4.1", + "id": "7263c7d0-1d6a-45ec-8d85-d4d1d234171b" + }, + "@microsoft/decorators": { + "type": "component", + "version": "1.4.1", + "id": "f97266fb-ccb7-430e-9384-4124d05295d3" + }, + "react": { + "type": "component", + "version": "15.6.2", + "id": "0d910c1c-13b9-4e1c-9aa4-b008c5e42d7d", + "failoverPath": "node_modules/react/dist/react.js" + }, + "@ms/sp-telemetry": { + "type": "component", + "version": "0.2.2", + "id": "8217e442-8ed3-41fd-957d-b112e841286a" + }, + "@microsoft/sp-lodash-subset": { + "type": "component", + "version": "1.4.1", + "id": "73e1dc6c-8441-42cc-ad47-4bd3659f8a3a" + }, + "office-ui-fabric-react": { + "type": "component", + "version": "1.4.1", + "id": "02a01e42-69ab-403d-8a16-acd128661f8e" + }, + "react-dom": { + "type": "component", + "version": "15.6.2", + "id": "aa0a46ec-1505-43cd-a44a-93f3a5aa460a", + "failoverPath": "node_modules/react-dom/dist/react-dom.js" + }, + "@microsoft/sp-http": { + "type": "component", + "version": "1.4.1", + "id": "c07208f0-ea3b-4c1a-9965-ac1b825211a6" + }, + "@microsoft/sp-component-base": { + "type": "component", + "version": "1.4.1", + "id": "467dc675-7cc5-4709-8aac-78e3b71bd2f6" + }, + "@microsoft/sp-loader": { + "type": "component", + "version": "1.4.1", + "id": "1c6c9123-7aac-41f3-a376-3caea41ed83f" + }, + "@microsoft/sp-page-context": { + "type": "component", + "version": "1.4.1", + "id": "1c4541f7-5c31-41aa-9fa8-fbc9dc14c0a8" + }, + "@microsoft/office-ui-fabric-react-bundle": { + "type": "component", + "version": "1.4.1", + "id": "02a01e42-69ab-403d-8a16-acd128661f8e" + } + } + }, + "isInternal": true + }, + { + "id": "c0c518b8-701b-4f6f-956d-5782772bb731", + "alias": "SPDialog", + "componentType": "Library", + "version": "1.4.1", + "manifestVersion": 2, + "loaderConfig": { + "entryModuleId": "sp-dialog", + "internalModuleBaseUrls": [ + "https://localhost:4321/node_modules/@microsoft/sp-dialog/" + ], + "scriptResources": { + "sp-dialog": { + "type": "path", + "path": "dist/sp-dialog.js" + }, + "react": { + "type": "component", + "version": "15.6.2", + "id": "0d910c1c-13b9-4e1c-9aa4-b008c5e42d7d", + "failoverPath": "node_modules/react/dist/react.js" + }, + "react-dom": { + "type": "component", + "version": "15.6.2", + "id": "aa0a46ec-1505-43cd-a44a-93f3a5aa460a", + "failoverPath": "node_modules/react-dom/dist/react-dom.js" + }, + "office-ui-fabric-react": { + "type": "component", + "version": "1.4.1", + "id": "02a01e42-69ab-403d-8a16-acd128661f8e" + }, + "@microsoft/decorators": { + "type": "component", + "version": "1.4.1", + "id": "f97266fb-ccb7-430e-9384-4124d05295d3" + }, + "@ms/sp-telemetry": { + "type": "component", + "version": "0.2.2", + "id": "8217e442-8ed3-41fd-957d-b112e841286a" + }, + "@microsoft/sp-core-library": { + "type": "component", + "version": "1.4.1", + "id": "7263c7d0-1d6a-45ec-8d85-d4d1d234171b" + }, + "@microsoft/sp-application-base": { + "type": "component", + "version": "1.4.1", + "id": "4df9bb86-ab0a-4aab-ab5f-48bf167048fb" + }, + "@microsoft/office-ui-fabric-react-bundle": { + "type": "component", + "version": "1.4.1", + "id": "02a01e42-69ab-403d-8a16-acd128661f8e" + }, + "@microsoft/sp-webpart-base": { + "type": "component", + "version": "1.4.1", + "id": "974a7777-0990-4136-8fa6-95d80114c2e0" + } + } + }, + "isInternal": true + }, + { + "id": "29bd516f-4ece-40b7-8028-597cbc65a223", + "alias": "SpOfficeUIFabricCore", + "componentType": "Library", + "version": "1.4.1", + "manifestVersion": 2, + "loaderConfig": { + "entryModuleId": "office-ui-fabric-core", + "internalModuleBaseUrls": [ + "https://localhost:4321/node_modules/@microsoft/sp-office-ui-fabric-core/" + ], + "scriptResources": { + "office-ui-fabric-core": { + "type": "path", + "path": "dist/office-ui-fabric-core.js" + } + } + }, + "isInternal": true + }, + { + "id": "4d5eb168-6729-49a8-aec7-0e397f486b6e", + "alias": "SPClientPreview", + "componentType": "Library", + "version": "1.4.1", + "manifestVersion": 2, + "loaderConfig": { + "entryModuleId": "sp-client-preview", + "internalModuleBaseUrls": [ + "https://localhost:4321/node_modules/@microsoft/sp-client-preview/" + ], + "scriptResources": { + "sp-client-preview": { + "type": "path", + "path": "dist/sp-client-preview.js" + }, + "@microsoft/sp-core-library": { + "type": "component", + "version": "1.4.1", + "id": "7263c7d0-1d6a-45ec-8d85-d4d1d234171b" + }, + "@microsoft/sp-lodash-subset": { + "type": "component", + "version": "1.4.1", + "id": "73e1dc6c-8441-42cc-ad47-4bd3659f8a3a" + }, + "@ms/sp-telemetry": { + "type": "component", + "version": "0.2.2", + "id": "8217e442-8ed3-41fd-957d-b112e841286a" + }, + "@microsoft/sp-http": { + "type": "component", + "version": "1.4.1", + "id": "c07208f0-ea3b-4c1a-9965-ac1b825211a6" + } + } + }, + "isInternal": true + }, + { + "id": "8be81a5c-af38-4bb2-af97-afa3b64dfbed", + "alias": "WebPartWorkbench", + "componentType": "Application", + "version": "1.4.1", + "manifestVersion": 2, + "title": { + "default": "WebpartWorkbench" + }, + "description": { + "default": "WebpartWorkbench" + }, + "assemblyId": "5dae53c4-db1e-4d0b-b8b2-88c874dabf83", + "preloadComponents": [ + "8217e442-8ed3-41fd-957d-b112e841286a", + "4df9bb86-ab0a-4aab-ab5f-48bf167048fb", + "05ed6956-59ad-4aa6-9e4e-b832c96ae87b" + ], + "preloadOptions": { + "shouldPreloadWeb": true, + "shouldPreloadUser": true, + "shouldPreloadList": false, + "shouldPreloadItem": true, + "shouldPreloadQuickLaunch": true + }, + "loaderConfig": { + "entryModuleId": "sp-webpart-workbench", + "internalModuleBaseUrls": [ + "https://localhost:4321/node_modules/@microsoft/sp-webpart-workbench/" + ], + "scriptResources": { + "sp-webpart-workbench": { + "type": "localizedPath", + "defaultPath": "dist/sp-webpart-workbench_en-us.js" + }, + "react": { + "type": "component", + "version": "15.6.2", + "id": "0d910c1c-13b9-4e1c-9aa4-b008c5e42d7d", + "failoverPath": "node_modules/react/dist/react.js" + }, + "office-ui-fabric-react": { + "type": "component", + "version": "1.4.1", + "id": "02a01e42-69ab-403d-8a16-acd128661f8e" + }, + "@microsoft/sp-core-library": { + "type": "component", + "version": "1.4.1", + "id": "7263c7d0-1d6a-45ec-8d85-d4d1d234171b" + }, + "@ms/sp-telemetry": { + "type": "component", + "version": "0.2.2", + "id": "8217e442-8ed3-41fd-957d-b112e841286a" + }, + "@microsoft/sp-lodash-subset": { + "type": "component", + "version": "1.4.1", + "id": "73e1dc6c-8441-42cc-ad47-4bd3659f8a3a" + }, + "@microsoft/sp-webpart-base": { + "type": "component", + "version": "1.4.1", + "id": "974a7777-0990-4136-8fa6-95d80114c2e0" + }, + "react-dom": { + "type": "component", + "version": "15.6.2", + "id": "aa0a46ec-1505-43cd-a44a-93f3a5aa460a", + "failoverPath": "node_modules/react-dom/dist/react-dom.js" + }, + "@microsoft/office-ui-fabric-react-bundle": { + "type": "component", + "version": "1.4.1", + "id": "02a01e42-69ab-403d-8a16-acd128661f8e" + }, + "@microsoft/sp-page-context": { + "type": "component", + "version": "1.4.1", + "id": "1c4541f7-5c31-41aa-9fa8-fbc9dc14c0a8" + }, + "@microsoft/sp-http": { + "type": "component", + "version": "1.4.1", + "id": "c07208f0-ea3b-4c1a-9965-ac1b825211a6" + }, + "@microsoft/sp-application-base": { + "type": "component", + "version": "1.4.1", + "id": "4df9bb86-ab0a-4aab-ab5f-48bf167048fb" + }, + "@microsoft/sp-loader": { + "type": "component", + "version": "1.4.1", + "id": "1c6c9123-7aac-41f3-a376-3caea41ed83f" + } + } + }, + "isInternal": true + }, + { + "id": "abc3361f-bb2d-491f-aba3-cd51c19a299b", + "alias": "MegaMenuApplicationCustomizer", + "componentType": "Extension", + "extensionType": "ApplicationCustomizer", + "version": "1.0.4", + "manifestVersion": 2, + "requiresCustomScript": false, + "loaderConfig": { + "entryModuleId": "mega-menu-application-customizer", + "internalModuleBaseUrls": [ + "https://localhost:4321/" + ], + "scriptResources": { + "mega-menu-application-customizer": { + "type": "path", + "path": "dist/mega-menu-application-customizer.js" + }, + "MegaMenuApplicationCustomizerStrings": { + "defaultPath": "lib/extensions/megaMenu/loc/en-us.js", + "type": "localizedPath", + "paths": {} + }, + "@microsoft/decorators": { + "type": "component", + "version": "1.4.1", + "id": "f97266fb-ccb7-430e-9384-4124d05295d3" + }, + "@microsoft/sp-core-library": { + "type": "component", + "version": "1.4.1", + "id": "7263c7d0-1d6a-45ec-8d85-d4d1d234171b" + }, + "@microsoft/sp-application-base": { + "type": "component", + "version": "1.4.1", + "id": "4df9bb86-ab0a-4aab-ab5f-48bf167048fb" + }, + "@microsoft/sp-http": { + "type": "component", + "version": "1.4.1", + "id": "c07208f0-ea3b-4c1a-9965-ac1b825211a6" + }, + "@microsoft/sp-lodash-subset": { + "type": "component", + "version": "1.4.1", + "id": "73e1dc6c-8441-42cc-ad47-4bd3659f8a3a" + }, + "@microsoft/sp-page-context": { + "type": "component", + "version": "1.4.1", + "id": "1c4541f7-5c31-41aa-9fa8-fbc9dc14c0a8" + } + } + } + } +]; +} +exports.getManifests = getManifests; + +//# sourceMappingURL=manifestsFile.js.map + + +/***/ }), +/* 17 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/* + * Copyright Joyent, Inc. and other Node contributors. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to permit + * persons to whom the Software is furnished to do so, subject to the + * following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + * NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + * USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + + + +var punycode = __webpack_require__(18); + +function Url() { + this.protocol = null; + this.slashes = null; + this.auth = null; + this.host = null; + this.port = null; + this.hostname = null; + this.hash = null; + this.search = null; + this.query = null; + this.pathname = null; + this.path = null; + this.href = null; +} + +// Reference: RFC 3986, RFC 1808, RFC 2396 + +/* + * define these here so at least they only have to be + * compiled once on the first module load. + */ +var protocolPattern = /^([a-z0-9.+-]+:)/i, + portPattern = /:[0-9]*$/, + + // Special case for a simple path URL + simplePathPattern = /^(\/\/?(?!\/)[^?\s]*)(\?[^\s]*)?$/, + + /* + * RFC 2396: characters reserved for delimiting URLs. + * We actually just auto-escape these. + */ + delims = [ + '<', '>', '"', '`', ' ', '\r', '\n', '\t' + ], + + // RFC 2396: characters not allowed for various reasons. + unwise = [ + '{', '}', '|', '\\', '^', '`' + ].concat(delims), + + // Allowed by RFCs, but cause of XSS attacks. Always escape these. + autoEscape = ['\''].concat(unwise), + /* + * Characters that are never ever allowed in a hostname. + * Note that any invalid chars are also handled, but these + * are the ones that are *expected* to be seen, so we fast-path + * them. + */ + nonHostChars = [ + '%', '/', '?', ';', '#' + ].concat(autoEscape), + hostEndingChars = [ + '/', '?', '#' + ], + hostnameMaxLen = 255, + hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/, + hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/, + // protocols that can allow "unsafe" and "unwise" chars. + unsafeProtocol = { + javascript: true, + 'javascript:': true + }, + // protocols that never have a hostname. + hostlessProtocol = { + javascript: true, + 'javascript:': true + }, + // protocols that always contain a // bit. + slashedProtocol = { + http: true, + https: true, + ftp: true, + gopher: true, + file: true, + 'http:': true, + 'https:': true, + 'ftp:': true, + 'gopher:': true, + 'file:': true + }, + querystring = __webpack_require__(20); + +function urlParse(url, parseQueryString, slashesDenoteHost) { + if (url && typeof url === 'object' && url instanceof Url) { return url; } + + var u = new Url(); + u.parse(url, parseQueryString, slashesDenoteHost); + return u; +} + +Url.prototype.parse = function (url, parseQueryString, slashesDenoteHost) { + if (typeof url !== 'string') { + throw new TypeError("Parameter 'url' must be a string, not " + typeof url); + } + + /* + * Copy chrome, IE, opera backslash-handling behavior. + * Back slashes before the query string get converted to forward slashes + * See: https://code.google.com/p/chromium/issues/detail?id=25916 + */ + var queryIndex = url.indexOf('?'), + splitter = queryIndex !== -1 && queryIndex < url.indexOf('#') ? '?' : '#', + uSplit = url.split(splitter), + slashRegex = /\\/g; + uSplit[0] = uSplit[0].replace(slashRegex, '/'); + url = uSplit.join(splitter); + + var rest = url; + + /* + * trim before proceeding. + * This is to support parse stuff like " http://foo.com \n" + */ + rest = rest.trim(); + + if (!slashesDenoteHost && url.split('#').length === 1) { + // Try fast path regexp + var simplePath = simplePathPattern.exec(rest); + if (simplePath) { + this.path = rest; + this.href = rest; + this.pathname = simplePath[1]; + if (simplePath[2]) { + this.search = simplePath[2]; + if (parseQueryString) { + this.query = querystring.parse(this.search.substr(1)); + } else { + this.query = this.search.substr(1); + } + } else if (parseQueryString) { + this.search = ''; + this.query = {}; + } + return this; + } + } + + var proto = protocolPattern.exec(rest); + if (proto) { + proto = proto[0]; + var lowerProto = proto.toLowerCase(); + this.protocol = lowerProto; + rest = rest.substr(proto.length); + } + + /* + * figure out if it's got a host + * user@server is *always* interpreted as a hostname, and url + * resolution will treat //foo/bar as host=foo,path=bar because that's + * how the browser resolves relative URLs. + */ + if (slashesDenoteHost || proto || rest.match(/^\/\/[^@/]+@[^@/]+/)) { + var slashes = rest.substr(0, 2) === '//'; + if (slashes && !(proto && hostlessProtocol[proto])) { + rest = rest.substr(2); + this.slashes = true; + } + } + + if (!hostlessProtocol[proto] && (slashes || (proto && !slashedProtocol[proto]))) { + + /* + * there's a hostname. + * the first instance of /, ?, ;, or # ends the host. + * + * If there is an @ in the hostname, then non-host chars *are* allowed + * to the left of the last @ sign, unless some host-ending character + * comes *before* the @-sign. + * URLs are obnoxious. + * + * ex: + * http://a@b@c/ => user:a@b host:c + * http://a@b?@c => user:a host:c path:/?@c + */ + + /* + * v0.12 TODO(isaacs): This is not quite how Chrome does things. + * Review our test case against browsers more comprehensively. + */ + + // find the first instance of any hostEndingChars + var hostEnd = -1; + for (var i = 0; i < hostEndingChars.length; i++) { + var hec = rest.indexOf(hostEndingChars[i]); + if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) { hostEnd = hec; } + } + + /* + * at this point, either we have an explicit point where the + * auth portion cannot go past, or the last @ char is the decider. + */ + var auth, atSign; + if (hostEnd === -1) { + // atSign can be anywhere. + atSign = rest.lastIndexOf('@'); + } else { + /* + * atSign must be in auth portion. + * http://a@b/c@d => host:b auth:a path:/c@d + */ + atSign = rest.lastIndexOf('@', hostEnd); + } + + /* + * Now we have a portion which is definitely the auth. + * Pull that off. + */ + if (atSign !== -1) { + auth = rest.slice(0, atSign); + rest = rest.slice(atSign + 1); + this.auth = decodeURIComponent(auth); + } + + // the host is the remaining to the left of the first non-host char + hostEnd = -1; + for (var i = 0; i < nonHostChars.length; i++) { + var hec = rest.indexOf(nonHostChars[i]); + if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) { hostEnd = hec; } + } + // if we still have not hit it, then the entire thing is a host. + if (hostEnd === -1) { hostEnd = rest.length; } + + this.host = rest.slice(0, hostEnd); + rest = rest.slice(hostEnd); + + // pull out port. + this.parseHost(); + + /* + * we've indicated that there is a hostname, + * so even if it's empty, it has to be present. + */ + this.hostname = this.hostname || ''; + + /* + * if hostname begins with [ and ends with ] + * assume that it's an IPv6 address. + */ + var ipv6Hostname = this.hostname[0] === '[' && this.hostname[this.hostname.length - 1] === ']'; + + // validate a little. + if (!ipv6Hostname) { + var hostparts = this.hostname.split(/\./); + for (var i = 0, l = hostparts.length; i < l; i++) { + var part = hostparts[i]; + if (!part) { continue; } + if (!part.match(hostnamePartPattern)) { + var newpart = ''; + for (var j = 0, k = part.length; j < k; j++) { + if (part.charCodeAt(j) > 127) { + /* + * we replace non-ASCII char with a temporary placeholder + * we need this to make sure size of hostname is not + * broken by replacing non-ASCII by nothing + */ + newpart += 'x'; + } else { + newpart += part[j]; + } + } + // we test again with ASCII char only + if (!newpart.match(hostnamePartPattern)) { + var validParts = hostparts.slice(0, i); + var notHost = hostparts.slice(i + 1); + var bit = part.match(hostnamePartStart); + if (bit) { + validParts.push(bit[1]); + notHost.unshift(bit[2]); + } + if (notHost.length) { + rest = '/' + notHost.join('.') + rest; + } + this.hostname = validParts.join('.'); + break; + } + } + } + } + + if (this.hostname.length > hostnameMaxLen) { + this.hostname = ''; + } else { + // hostnames are always lower case. + this.hostname = this.hostname.toLowerCase(); + } + + if (!ipv6Hostname) { + /* + * IDNA Support: Returns a punycoded representation of "domain". + * It only converts parts of the domain name that + * have non-ASCII characters, i.e. it doesn't matter if + * you call it with a domain that already is ASCII-only. + */ + this.hostname = punycode.toASCII(this.hostname); + } + + var p = this.port ? ':' + this.port : ''; + var h = this.hostname || ''; + this.host = h + p; + this.href += this.host; + + /* + * strip [ and ] from the hostname + * the host field still retains them, though + */ + if (ipv6Hostname) { + this.hostname = this.hostname.substr(1, this.hostname.length - 2); + if (rest[0] !== '/') { + rest = '/' + rest; + } + } + } + + /* + * now rest is set to the post-host stuff. + * chop off any delim chars. + */ + if (!unsafeProtocol[lowerProto]) { + + /* + * First, make 100% sure that any "autoEscape" chars get + * escaped, even if encodeURIComponent doesn't think they + * need to be. + */ + for (var i = 0, l = autoEscape.length; i < l; i++) { + var ae = autoEscape[i]; + if (rest.indexOf(ae) === -1) { continue; } + var esc = encodeURIComponent(ae); + if (esc === ae) { + esc = escape(ae); + } + rest = rest.split(ae).join(esc); + } + } + + // chop off from the tail first. + var hash = rest.indexOf('#'); + if (hash !== -1) { + // got a fragment string. + this.hash = rest.substr(hash); + rest = rest.slice(0, hash); + } + var qm = rest.indexOf('?'); + if (qm !== -1) { + this.search = rest.substr(qm); + this.query = rest.substr(qm + 1); + if (parseQueryString) { + this.query = querystring.parse(this.query); + } + rest = rest.slice(0, qm); + } else if (parseQueryString) { + // no query string, but parseQueryString still requested + this.search = ''; + this.query = {}; + } + if (rest) { this.pathname = rest; } + if (slashedProtocol[lowerProto] && this.hostname && !this.pathname) { + this.pathname = '/'; + } + + // to support http.request + if (this.pathname || this.search) { + var p = this.pathname || ''; + var s = this.search || ''; + this.path = p + s; + } + + // finally, reconstruct the href based on what has been validated. + this.href = this.format(); + return this; +}; + +// format a parsed object into a url string +function urlFormat(obj) { + /* + * ensure it's an object, and not a string url. + * If it's an obj, this is a no-op. + * this way, you can call url_format() on strings + * to clean up potentially wonky urls. + */ + if (typeof obj === 'string') { obj = urlParse(obj); } + if (!(obj instanceof Url)) { return Url.prototype.format.call(obj); } + return obj.format(); +} + +Url.prototype.format = function () { + var auth = this.auth || ''; + if (auth) { + auth = encodeURIComponent(auth); + auth = auth.replace(/%3A/i, ':'); + auth += '@'; + } + + var protocol = this.protocol || '', + pathname = this.pathname || '', + hash = this.hash || '', + host = false, + query = ''; + + if (this.host) { + host = auth + this.host; + } else if (this.hostname) { + host = auth + (this.hostname.indexOf(':') === -1 ? this.hostname : '[' + this.hostname + ']'); + if (this.port) { + host += ':' + this.port; + } + } + + if (this.query && typeof this.query === 'object' && Object.keys(this.query).length) { + query = querystring.stringify(this.query, { + arrayFormat: 'repeat', + addQueryPrefix: false + }); + } + + var search = this.search || (query && ('?' + query)) || ''; + + if (protocol && protocol.substr(-1) !== ':') { protocol += ':'; } + + /* + * only the slashedProtocols get the //. Not mailto:, xmpp:, etc. + * unless they had them to begin with. + */ + if (this.slashes || (!protocol || slashedProtocol[protocol]) && host !== false) { + host = '//' + (host || ''); + if (pathname && pathname.charAt(0) !== '/') { pathname = '/' + pathname; } + } else if (!host) { + host = ''; + } + + if (hash && hash.charAt(0) !== '#') { hash = '#' + hash; } + if (search && search.charAt(0) !== '?') { search = '?' + search; } + + pathname = pathname.replace(/[?#]/g, function (match) { + return encodeURIComponent(match); + }); + search = search.replace('#', '%23'); + + return protocol + host + pathname + search + hash; +}; + +function urlResolve(source, relative) { + return urlParse(source, false, true).resolve(relative); +} + +Url.prototype.resolve = function (relative) { + return this.resolveObject(urlParse(relative, false, true)).format(); +}; + +function urlResolveObject(source, relative) { + if (!source) { return relative; } + return urlParse(source, false, true).resolveObject(relative); +} + +Url.prototype.resolveObject = function (relative) { + if (typeof relative === 'string') { + var rel = new Url(); + rel.parse(relative, false, true); + relative = rel; + } + + var result = new Url(); + var tkeys = Object.keys(this); + for (var tk = 0; tk < tkeys.length; tk++) { + var tkey = tkeys[tk]; + result[tkey] = this[tkey]; + } + + /* + * hash is always overridden, no matter what. + * even href="" will remove it. + */ + result.hash = relative.hash; + + // if the relative url is empty, then there's nothing left to do here. + if (relative.href === '') { + result.href = result.format(); + return result; + } + + // hrefs like //foo/bar always cut to the protocol. + if (relative.slashes && !relative.protocol) { + // take everything except the protocol from relative + var rkeys = Object.keys(relative); + for (var rk = 0; rk < rkeys.length; rk++) { + var rkey = rkeys[rk]; + if (rkey !== 'protocol') { result[rkey] = relative[rkey]; } + } + + // urlParse appends trailing / to urls like http://www.example.com + if (slashedProtocol[result.protocol] && result.hostname && !result.pathname) { + result.pathname = '/'; + result.path = result.pathname; + } + + result.href = result.format(); + return result; + } + + if (relative.protocol && relative.protocol !== result.protocol) { + /* + * if it's a known url protocol, then changing + * the protocol does weird things + * first, if it's not file:, then we MUST have a host, + * and if there was a path + * to begin with, then we MUST have a path. + * if it is file:, then the host is dropped, + * because that's known to be hostless. + * anything else is assumed to be absolute. + */ + if (!slashedProtocol[relative.protocol]) { + var keys = Object.keys(relative); + for (var v = 0; v < keys.length; v++) { + var k = keys[v]; + result[k] = relative[k]; + } + result.href = result.format(); + return result; + } + + result.protocol = relative.protocol; + if (!relative.host && !hostlessProtocol[relative.protocol]) { + var relPath = (relative.pathname || '').split('/'); + while (relPath.length && !(relative.host = relPath.shift())) { } + if (!relative.host) { relative.host = ''; } + if (!relative.hostname) { relative.hostname = ''; } + if (relPath[0] !== '') { relPath.unshift(''); } + if (relPath.length < 2) { relPath.unshift(''); } + result.pathname = relPath.join('/'); + } else { + result.pathname = relative.pathname; + } + result.search = relative.search; + result.query = relative.query; + result.host = relative.host || ''; + result.auth = relative.auth; + result.hostname = relative.hostname || relative.host; + result.port = relative.port; + // to support http.request + if (result.pathname || result.search) { + var p = result.pathname || ''; + var s = result.search || ''; + result.path = p + s; + } + result.slashes = result.slashes || relative.slashes; + result.href = result.format(); + return result; + } + + var isSourceAbs = result.pathname && result.pathname.charAt(0) === '/', + isRelAbs = relative.host || relative.pathname && relative.pathname.charAt(0) === '/', + mustEndAbs = isRelAbs || isSourceAbs || (result.host && relative.pathname), + removeAllDots = mustEndAbs, + srcPath = result.pathname && result.pathname.split('/') || [], + relPath = relative.pathname && relative.pathname.split('/') || [], + psychotic = result.protocol && !slashedProtocol[result.protocol]; + + /* + * if the url is a non-slashed url, then relative + * links like ../.. should be able + * to crawl up to the hostname, as well. This is strange. + * result.protocol has already been set by now. + * Later on, put the first path part into the host field. + */ + if (psychotic) { + result.hostname = ''; + result.port = null; + if (result.host) { + if (srcPath[0] === '') { srcPath[0] = result.host; } else { srcPath.unshift(result.host); } + } + result.host = ''; + if (relative.protocol) { + relative.hostname = null; + relative.port = null; + if (relative.host) { + if (relPath[0] === '') { relPath[0] = relative.host; } else { relPath.unshift(relative.host); } + } + relative.host = null; + } + mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === ''); + } + + if (isRelAbs) { + // it's absolute. + result.host = relative.host || relative.host === '' ? relative.host : result.host; + result.hostname = relative.hostname || relative.hostname === '' ? relative.hostname : result.hostname; + result.search = relative.search; + result.query = relative.query; + srcPath = relPath; + // fall through to the dot-handling below. + } else if (relPath.length) { + /* + * it's relative + * throw away the existing file, and take the new path instead. + */ + if (!srcPath) { srcPath = []; } + srcPath.pop(); + srcPath = srcPath.concat(relPath); + result.search = relative.search; + result.query = relative.query; + } else if (relative.search != null) { + /* + * just pull out the search. + * like href='?foo'. + * Put this after the other two cases because it simplifies the booleans + */ + if (psychotic) { + result.host = srcPath.shift(); + result.hostname = result.host; + /* + * occationaly the auth can get stuck only in host + * this especially happens in cases like + * url.resolveObject('mailto:local1@domain1', 'local2@domain2') + */ + var authInHost = result.host && result.host.indexOf('@') > 0 ? result.host.split('@') : false; + if (authInHost) { + result.auth = authInHost.shift(); + result.hostname = authInHost.shift(); + result.host = result.hostname; + } + } + result.search = relative.search; + result.query = relative.query; + // to support http.request + if (result.pathname !== null || result.search !== null) { + result.path = (result.pathname ? result.pathname : '') + (result.search ? result.search : ''); + } + result.href = result.format(); + return result; + } + + if (!srcPath.length) { + /* + * no path at all. easy. + * we've already handled the other stuff above. + */ + result.pathname = null; + // to support http.request + if (result.search) { + result.path = '/' + result.search; + } else { + result.path = null; + } + result.href = result.format(); + return result; + } + + /* + * if a url ENDs in . or .., then it must get a trailing slash. + * however, if it ends in anything else non-slashy, + * then it must NOT get a trailing slash. + */ + var last = srcPath.slice(-1)[0]; + var hasTrailingSlash = (result.host || relative.host || srcPath.length > 1) && (last === '.' || last === '..') || last === ''; + + /* + * strip single dots, resolve double dots to parent dir + * if the path tries to go above the root, `up` ends up > 0 + */ + var up = 0; + for (var i = srcPath.length; i >= 0; i--) { + last = srcPath[i]; + if (last === '.') { + srcPath.splice(i, 1); + } else if (last === '..') { + srcPath.splice(i, 1); + up++; + } else if (up) { + srcPath.splice(i, 1); + up--; + } + } + + // if the path is allowed to go above the root, restore leading ..s + if (!mustEndAbs && !removeAllDots) { + for (; up--; up) { + srcPath.unshift('..'); + } + } + + if (mustEndAbs && srcPath[0] !== '' && (!srcPath[0] || srcPath[0].charAt(0) !== '/')) { + srcPath.unshift(''); + } + + if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) { + srcPath.push(''); + } + + var isAbsolute = srcPath[0] === '' || (srcPath[0] && srcPath[0].charAt(0) === '/'); + + // put the host back + if (psychotic) { + result.hostname = isAbsolute ? '' : srcPath.length ? srcPath.shift() : ''; + result.host = result.hostname; + /* + * occationaly the auth can get stuck only in host + * this especially happens in cases like + * url.resolveObject('mailto:local1@domain1', 'local2@domain2') + */ + var authInHost = result.host && result.host.indexOf('@') > 0 ? result.host.split('@') : false; + if (authInHost) { + result.auth = authInHost.shift(); + result.hostname = authInHost.shift(); + result.host = result.hostname; + } + } + + mustEndAbs = mustEndAbs || (result.host && srcPath.length); + + if (mustEndAbs && !isAbsolute) { + srcPath.unshift(''); + } + + if (srcPath.length > 0) { + result.pathname = srcPath.join('/'); + } else { + result.pathname = null; + result.path = null; + } + + // to support request.http + if (result.pathname !== null || result.search !== null) { + result.path = (result.pathname ? result.pathname : '') + (result.search ? result.search : ''); + } + result.auth = relative.auth || result.auth; + result.slashes = result.slashes || relative.slashes; + result.href = result.format(); + return result; +}; + +Url.prototype.parseHost = function () { + var host = this.host; + var port = portPattern.exec(host); + if (port) { + port = port[0]; + if (port !== ':') { + this.port = port.substr(1); + } + host = host.substr(0, host.length - port.length); + } + if (host) { this.hostname = host; } +}; + +exports.parse = urlParse; +exports.resolve = urlResolve; +exports.resolveObject = urlResolveObject; +exports.format = urlFormat; + +exports.Url = Url; + + +/***/ }), +/* 18 */ +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(module, global) {var __WEBPACK_AMD_DEFINE_RESULT__;/*! https://mths.be/punycode v1.4.1 by @mathias */ +;(function(root) { + + /** Detect free variables */ + var freeExports = typeof exports == 'object' && exports && + !exports.nodeType && exports; + var freeModule = typeof module == 'object' && module && + !module.nodeType && module; + var freeGlobal = typeof global == 'object' && global; + if ( + freeGlobal.global === freeGlobal || + freeGlobal.window === freeGlobal || + freeGlobal.self === freeGlobal + ) { + root = freeGlobal; + } + + /** + * The `punycode` object. + * @name punycode + * @type Object + */ + var punycode, + + /** Highest positive signed 32-bit float value */ + maxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1 + + /** Bootstring parameters */ + base = 36, + tMin = 1, + tMax = 26, + skew = 38, + damp = 700, + initialBias = 72, + initialN = 128, // 0x80 + delimiter = '-', // '\x2D' + + /** Regular expressions */ + regexPunycode = /^xn--/, + regexNonASCII = /[^\x20-\x7E]/, // unprintable ASCII chars + non-ASCII chars + regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g, // RFC 3490 separators + + /** Error messages */ + errors = { + 'overflow': 'Overflow: input needs wider integers to process', + 'not-basic': 'Illegal input >= 0x80 (not a basic code point)', + 'invalid-input': 'Invalid input' + }, + + /** Convenience shortcuts */ + baseMinusTMin = base - tMin, + floor = Math.floor, + stringFromCharCode = String.fromCharCode, + + /** Temporary variable */ + key; + + /*--------------------------------------------------------------------------*/ + + /** + * A generic error utility function. + * @private + * @param {String} type The error type. + * @returns {Error} Throws a `RangeError` with the applicable error message. + */ + function error(type) { + throw new RangeError(errors[type]); + } + + /** + * A generic `Array#map` utility function. + * @private + * @param {Array} array The array to iterate over. + * @param {Function} callback The function that gets called for every array + * item. + * @returns {Array} A new array of values returned by the callback function. + */ + function map(array, fn) { + var length = array.length; + var result = []; + while (length--) { + result[length] = fn(array[length]); + } + return result; + } + + /** + * A simple `Array#map`-like wrapper to work with domain name strings or email + * addresses. + * @private + * @param {String} domain The domain name or email address. + * @param {Function} callback The function that gets called for every + * character. + * @returns {Array} A new string of characters returned by the callback + * function. + */ + function mapDomain(string, fn) { + var parts = string.split('@'); + var result = ''; + if (parts.length > 1) { + // In email addresses, only the domain name should be punycoded. Leave + // the local part (i.e. everything up to `@`) intact. + result = parts[0] + '@'; + string = parts[1]; + } + // Avoid `split(regex)` for IE8 compatibility. See #17. + string = string.replace(regexSeparators, '\x2E'); + var labels = string.split('.'); + var encoded = map(labels, fn).join('.'); + return result + encoded; + } + + /** + * Creates an array containing the numeric code points of each Unicode + * character in the string. While JavaScript uses UCS-2 internally, + * this function will convert a pair of surrogate halves (each of which + * UCS-2 exposes as separate characters) into a single code point, + * matching UTF-16. + * @see `punycode.ucs2.encode` + * @see + * @memberOf punycode.ucs2 + * @name decode + * @param {String} string The Unicode input string (UCS-2). + * @returns {Array} The new array of code points. + */ + function ucs2decode(string) { + var output = [], + counter = 0, + length = string.length, + value, + extra; + while (counter < length) { + value = string.charCodeAt(counter++); + if (value >= 0xD800 && value <= 0xDBFF && counter < length) { + // high surrogate, and there is a next character + extra = string.charCodeAt(counter++); + if ((extra & 0xFC00) == 0xDC00) { // low surrogate + output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000); + } else { + // unmatched surrogate; only append this code unit, in case the next + // code unit is the high surrogate of a surrogate pair + output.push(value); + counter--; + } + } else { + output.push(value); + } + } + return output; + } + + /** + * Creates a string based on an array of numeric code points. + * @see `punycode.ucs2.decode` + * @memberOf punycode.ucs2 + * @name encode + * @param {Array} codePoints The array of numeric code points. + * @returns {String} The new Unicode string (UCS-2). + */ + function ucs2encode(array) { + return map(array, function(value) { + var output = ''; + if (value > 0xFFFF) { + value -= 0x10000; + output += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800); + value = 0xDC00 | value & 0x3FF; + } + output += stringFromCharCode(value); + return output; + }).join(''); + } + + /** + * Converts a basic code point into a digit/integer. + * @see `digitToBasic()` + * @private + * @param {Number} codePoint The basic numeric code point value. + * @returns {Number} The numeric value of a basic code point (for use in + * representing integers) in the range `0` to `base - 1`, or `base` if + * the code point does not represent a value. + */ + function basicToDigit(codePoint) { + if (codePoint - 48 < 10) { + return codePoint - 22; + } + if (codePoint - 65 < 26) { + return codePoint - 65; + } + if (codePoint - 97 < 26) { + return codePoint - 97; + } + return base; + } + + /** + * Converts a digit/integer into a basic code point. + * @see `basicToDigit()` + * @private + * @param {Number} digit The numeric value of a basic code point. + * @returns {Number} The basic code point whose value (when used for + * representing integers) is `digit`, which needs to be in the range + * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is + * used; else, the lowercase form is used. The behavior is undefined + * if `flag` is non-zero and `digit` has no uppercase form. + */ + function digitToBasic(digit, flag) { + // 0..25 map to ASCII a..z or A..Z + // 26..35 map to ASCII 0..9 + return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5); + } + + /** + * Bias adaptation function as per section 3.4 of RFC 3492. + * https://tools.ietf.org/html/rfc3492#section-3.4 + * @private + */ + function adapt(delta, numPoints, firstTime) { + var k = 0; + delta = firstTime ? floor(delta / damp) : delta >> 1; + delta += floor(delta / numPoints); + for (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) { + delta = floor(delta / baseMinusTMin); + } + return floor(k + (baseMinusTMin + 1) * delta / (delta + skew)); + } + + /** + * Converts a Punycode string of ASCII-only symbols to a string of Unicode + * symbols. + * @memberOf punycode + * @param {String} input The Punycode string of ASCII-only symbols. + * @returns {String} The resulting string of Unicode symbols. + */ + function decode(input) { + // Don't use UCS-2 + var output = [], + inputLength = input.length, + out, + i = 0, + n = initialN, + bias = initialBias, + basic, + j, + index, + oldi, + w, + k, + digit, + t, + /** Cached calculation results */ + baseMinusT; + + // Handle the basic code points: let `basic` be the number of input code + // points before the last delimiter, or `0` if there is none, then copy + // the first basic code points to the output. + + basic = input.lastIndexOf(delimiter); + if (basic < 0) { + basic = 0; + } + + for (j = 0; j < basic; ++j) { + // if it's not a basic code point + if (input.charCodeAt(j) >= 0x80) { + error('not-basic'); + } + output.push(input.charCodeAt(j)); + } + + // Main decoding loop: start just after the last delimiter if any basic code + // points were copied; start at the beginning otherwise. + + for (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) { + + // `index` is the index of the next character to be consumed. + // Decode a generalized variable-length integer into `delta`, + // which gets added to `i`. The overflow checking is easier + // if we increase `i` as we go, then subtract off its starting + // value at the end to obtain `delta`. + for (oldi = i, w = 1, k = base; /* no condition */; k += base) { + + if (index >= inputLength) { + error('invalid-input'); + } + + digit = basicToDigit(input.charCodeAt(index++)); + + if (digit >= base || digit > floor((maxInt - i) / w)) { + error('overflow'); + } + + i += digit * w; + t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); + + if (digit < t) { + break; + } + + baseMinusT = base - t; + if (w > floor(maxInt / baseMinusT)) { + error('overflow'); + } + + w *= baseMinusT; + + } + + out = output.length + 1; + bias = adapt(i - oldi, out, oldi == 0); + + // `i` was supposed to wrap around from `out` to `0`, + // incrementing `n` each time, so we'll fix that now: + if (floor(i / out) > maxInt - n) { + error('overflow'); + } + + n += floor(i / out); + i %= out; + + // Insert `n` at position `i` of the output + output.splice(i++, 0, n); + + } + + return ucs2encode(output); + } + + /** + * Converts a string of Unicode symbols (e.g. a domain name label) to a + * Punycode string of ASCII-only symbols. + * @memberOf punycode + * @param {String} input The string of Unicode symbols. + * @returns {String} The resulting Punycode string of ASCII-only symbols. + */ + function encode(input) { + var n, + delta, + handledCPCount, + basicLength, + bias, + j, + m, + q, + k, + t, + currentValue, + output = [], + /** `inputLength` will hold the number of code points in `input`. */ + inputLength, + /** Cached calculation results */ + handledCPCountPlusOne, + baseMinusT, + qMinusT; + + // Convert the input in UCS-2 to Unicode + input = ucs2decode(input); + + // Cache the length + inputLength = input.length; + + // Initialize the state + n = initialN; + delta = 0; + bias = initialBias; + + // Handle the basic code points + for (j = 0; j < inputLength; ++j) { + currentValue = input[j]; + if (currentValue < 0x80) { + output.push(stringFromCharCode(currentValue)); + } + } + + handledCPCount = basicLength = output.length; + + // `handledCPCount` is the number of code points that have been handled; + // `basicLength` is the number of basic code points. + + // Finish the basic string - if it is not empty - with a delimiter + if (basicLength) { + output.push(delimiter); + } + + // Main encoding loop: + while (handledCPCount < inputLength) { + + // All non-basic code points < n have been handled already. Find the next + // larger one: + for (m = maxInt, j = 0; j < inputLength; ++j) { + currentValue = input[j]; + if (currentValue >= n && currentValue < m) { + m = currentValue; + } + } + + // Increase `delta` enough to advance the decoder's state to , + // but guard against overflow + handledCPCountPlusOne = handledCPCount + 1; + if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) { + error('overflow'); + } + + delta += (m - n) * handledCPCountPlusOne; + n = m; + + for (j = 0; j < inputLength; ++j) { + currentValue = input[j]; + + if (currentValue < n && ++delta > maxInt) { + error('overflow'); + } + + if (currentValue == n) { + // Represent delta as a generalized variable-length integer + for (q = delta, k = base; /* no condition */; k += base) { + t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); + if (q < t) { + break; + } + qMinusT = q - t; + baseMinusT = base - t; + output.push( + stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0)) + ); + q = floor(qMinusT / baseMinusT); + } + + output.push(stringFromCharCode(digitToBasic(q, 0))); + bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength); + delta = 0; + ++handledCPCount; + } + } + + ++delta; + ++n; + + } + return output.join(''); + } + + /** + * Converts a Punycode string representing a domain name or an email address + * to Unicode. Only the Punycoded parts of the input will be converted, i.e. + * it doesn't matter if you call it on a string that has already been + * converted to Unicode. + * @memberOf punycode + * @param {String} input The Punycoded domain name or email address to + * convert to Unicode. + * @returns {String} The Unicode representation of the given Punycode + * string. + */ + function toUnicode(input) { + return mapDomain(input, function(string) { + return regexPunycode.test(string) + ? decode(string.slice(4).toLowerCase()) + : string; + }); + } + + /** + * Converts a Unicode string representing a domain name or an email address to + * Punycode. Only the non-ASCII parts of the domain name will be converted, + * i.e. it doesn't matter if you call it with a domain that's already in + * ASCII. + * @memberOf punycode + * @param {String} input The domain name or email address to convert, as a + * Unicode string. + * @returns {String} The Punycode representation of the given domain name or + * email address. + */ + function toASCII(input) { + return mapDomain(input, function(string) { + return regexNonASCII.test(string) + ? 'xn--' + encode(string) + : string; + }); + } + + /*--------------------------------------------------------------------------*/ + + /** Define the public API */ + punycode = { + /** + * A string representing the current Punycode.js version number. + * @memberOf punycode + * @type String + */ + 'version': '1.4.1', + /** + * An object of methods to convert from JavaScript's internal character + * representation (UCS-2) to Unicode code points, and back. + * @see + * @memberOf punycode + * @type Object + */ + 'ucs2': { + 'decode': ucs2decode, + 'encode': ucs2encode + }, + 'decode': decode, + 'encode': encode, + 'toASCII': toASCII, + 'toUnicode': toUnicode + }; + + /** Expose `punycode` */ + // Some AMD build optimizers, like r.js, check for specific condition patterns + // like the following: + if ( + true + ) { + !(__WEBPACK_AMD_DEFINE_RESULT__ = function() { + return punycode; + }.call(exports, __webpack_require__, exports, module), + __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); + } else if (freeExports && freeModule) { + if (module.exports == freeExports) { + // in Node.js, io.js, or RingoJS v0.8.0+ + freeModule.exports = punycode; + } else { + // in Narwhal or RingoJS v0.7.0- + for (key in punycode) { + punycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]); + } + } + } else { + // in Rhino or a web browser + root.punycode = punycode; + } + +}(this)); + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(19)(module), __webpack_require__(6))) + +/***/ }), +/* 19 */ +/***/ (function(module, exports) { + +module.exports = function(module) { + if(!module.webpackPolyfill) { + module.deprecate = function() {}; + module.paths = []; + // module.parent = undefined by default + if(!module.children) module.children = []; + Object.defineProperty(module, "loaded", { + enumerable: true, + get: function() { + return module.l; + } + }); + Object.defineProperty(module, "id", { + enumerable: true, + get: function() { + return module.i; + } + }); + module.webpackPolyfill = 1; + } + return module; +}; + + +/***/ }), +/* 20 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var stringify = __webpack_require__(21); +var parse = __webpack_require__(50); +var formats = __webpack_require__(5); + +module.exports = { + formats: formats, + parse: parse, + stringify: stringify +}; + + +/***/ }), +/* 21 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var getSideChannel = __webpack_require__(22); +var utils = __webpack_require__(15); +var formats = __webpack_require__(5); +var has = Object.prototype.hasOwnProperty; + +var arrayPrefixGenerators = { + brackets: function brackets(prefix) { + return prefix + '[]'; + }, + comma: 'comma', + indices: function indices(prefix, key) { + return prefix + '[' + key + ']'; + }, + repeat: function repeat(prefix) { + return prefix; + } +}; + +var isArray = Array.isArray; +var push = Array.prototype.push; +var pushToArray = function (arr, valueOrArray) { + push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]); +}; + +var toISO = Date.prototype.toISOString; + +var defaultFormat = formats['default']; +var defaults = { + addQueryPrefix: false, + allowDots: false, + allowEmptyArrays: false, + arrayFormat: 'indices', + charset: 'utf-8', + charsetSentinel: false, + commaRoundTrip: false, + delimiter: '&', + encode: true, + encodeDotInKeys: false, + encoder: utils.encode, + encodeValuesOnly: false, + filter: void undefined, + format: defaultFormat, + formatter: formats.formatters[defaultFormat], + // deprecated + indices: false, + serializeDate: function serializeDate(date) { + return toISO.call(date); + }, + skipNulls: false, + strictNullHandling: false +}; + +var isNonNullishPrimitive = function isNonNullishPrimitive(v) { + return typeof v === 'string' + || typeof v === 'number' + || typeof v === 'boolean' + || typeof v === 'symbol' + || typeof v === 'bigint'; +}; + +var sentinel = {}; + +var stringify = function stringify( + object, + prefix, + generateArrayPrefix, + commaRoundTrip, + allowEmptyArrays, + strictNullHandling, + skipNulls, + encodeDotInKeys, + encoder, + filter, + sort, + allowDots, + serializeDate, + format, + formatter, + encodeValuesOnly, + charset, + sideChannel +) { + var obj = object; + + var tmpSc = sideChannel; + var step = 0; + var findFlag = false; + while ((tmpSc = tmpSc.get(sentinel)) !== void undefined && !findFlag) { + // Where object last appeared in the ref tree + var pos = tmpSc.get(object); + step += 1; + if (typeof pos !== 'undefined') { + if (pos === step) { + throw new RangeError('Cyclic object value'); + } else { + findFlag = true; // Break while + } + } + if (typeof tmpSc.get(sentinel) === 'undefined') { + step = 0; + } + } + + if (typeof filter === 'function') { + obj = filter(prefix, obj); + } else if (obj instanceof Date) { + obj = serializeDate(obj); + } else if (generateArrayPrefix === 'comma' && isArray(obj)) { + obj = utils.maybeMap(obj, function (value) { + if (value instanceof Date) { + return serializeDate(value); + } + return value; + }); + } + + if (obj === null) { + if (strictNullHandling) { + return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key', format) : prefix; + } + + obj = ''; + } + + if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) { + if (encoder) { + var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format); + return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))]; + } + return [formatter(prefix) + '=' + formatter(String(obj))]; + } + + var values = []; + + if (typeof obj === 'undefined') { + return values; + } + + var objKeys; + if (generateArrayPrefix === 'comma' && isArray(obj)) { + // we need to join elements in + if (encodeValuesOnly && encoder) { + obj = utils.maybeMap(obj, encoder); + } + objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }]; + } else if (isArray(filter)) { + objKeys = filter; + } else { + var keys = Object.keys(obj); + objKeys = sort ? keys.sort(sort) : keys; + } + + var encodedPrefix = encodeDotInKeys ? String(prefix).replace(/\./g, '%2E') : String(prefix); + + var adjustedPrefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? encodedPrefix + '[]' : encodedPrefix; + + if (allowEmptyArrays && isArray(obj) && obj.length === 0) { + return adjustedPrefix + '[]'; + } + + for (var j = 0; j < objKeys.length; ++j) { + var key = objKeys[j]; + var value = typeof key === 'object' && key && typeof key.value !== 'undefined' + ? key.value + : obj[key]; + + if (skipNulls && value === null) { + continue; + } + + var encodedKey = allowDots && encodeDotInKeys ? String(key).replace(/\./g, '%2E') : String(key); + var keyPrefix = isArray(obj) + ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(adjustedPrefix, encodedKey) : adjustedPrefix + : adjustedPrefix + (allowDots ? '.' + encodedKey : '[' + encodedKey + ']'); + + sideChannel.set(object, step); + var valueSideChannel = getSideChannel(); + valueSideChannel.set(sentinel, sideChannel); + pushToArray(values, stringify( + value, + keyPrefix, + generateArrayPrefix, + commaRoundTrip, + allowEmptyArrays, + strictNullHandling, + skipNulls, + encodeDotInKeys, + generateArrayPrefix === 'comma' && encodeValuesOnly && isArray(obj) ? null : encoder, + filter, + sort, + allowDots, + serializeDate, + format, + formatter, + encodeValuesOnly, + charset, + valueSideChannel + )); + } + + return values; +}; + +var normalizeStringifyOptions = function normalizeStringifyOptions(opts) { + if (!opts) { + return defaults; + } + + if (typeof opts.allowEmptyArrays !== 'undefined' && typeof opts.allowEmptyArrays !== 'boolean') { + throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided'); + } + + if (typeof opts.encodeDotInKeys !== 'undefined' && typeof opts.encodeDotInKeys !== 'boolean') { + throw new TypeError('`encodeDotInKeys` option can only be `true` or `false`, when provided'); + } + + if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') { + throw new TypeError('Encoder has to be a function.'); + } + + var charset = opts.charset || defaults.charset; + if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') { + throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined'); + } + + var format = formats['default']; + if (typeof opts.format !== 'undefined') { + if (!has.call(formats.formatters, opts.format)) { + throw new TypeError('Unknown format option provided.'); + } + format = opts.format; + } + var formatter = formats.formatters[format]; + + var filter = defaults.filter; + if (typeof opts.filter === 'function' || isArray(opts.filter)) { + filter = opts.filter; + } + + var arrayFormat; + if (opts.arrayFormat in arrayPrefixGenerators) { + arrayFormat = opts.arrayFormat; + } else if ('indices' in opts) { + arrayFormat = opts.indices ? 'indices' : 'repeat'; + } else { + arrayFormat = defaults.arrayFormat; + } + + if ('commaRoundTrip' in opts && typeof opts.commaRoundTrip !== 'boolean') { + throw new TypeError('`commaRoundTrip` must be a boolean, or absent'); + } + + var allowDots = typeof opts.allowDots === 'undefined' ? opts.encodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots; + + return { + addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix, + allowDots: allowDots, + allowEmptyArrays: typeof opts.allowEmptyArrays === 'boolean' ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays, + arrayFormat: arrayFormat, + charset: charset, + charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel, + commaRoundTrip: !!opts.commaRoundTrip, + delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter, + encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode, + encodeDotInKeys: typeof opts.encodeDotInKeys === 'boolean' ? opts.encodeDotInKeys : defaults.encodeDotInKeys, + encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder, + encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly, + filter: filter, + format: format, + formatter: formatter, + serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate, + skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls, + sort: typeof opts.sort === 'function' ? opts.sort : null, + strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling + }; +}; + +module.exports = function (object, opts) { + var obj = object; + var options = normalizeStringifyOptions(opts); + + var objKeys; + var filter; + + if (typeof options.filter === 'function') { + filter = options.filter; + obj = filter('', obj); + } else if (isArray(options.filter)) { + filter = options.filter; + objKeys = filter; + } + + var keys = []; + + if (typeof obj !== 'object' || obj === null) { + return ''; + } + + var generateArrayPrefix = arrayPrefixGenerators[options.arrayFormat]; + var commaRoundTrip = generateArrayPrefix === 'comma' && options.commaRoundTrip; + + if (!objKeys) { + objKeys = Object.keys(obj); + } + + if (options.sort) { + objKeys.sort(options.sort); + } + + var sideChannel = getSideChannel(); + for (var i = 0; i < objKeys.length; ++i) { + var key = objKeys[i]; + var value = obj[key]; + + if (options.skipNulls && value === null) { + continue; + } + pushToArray(keys, stringify( + value, + key, + generateArrayPrefix, + commaRoundTrip, + options.allowEmptyArrays, + options.strictNullHandling, + options.skipNulls, + options.encodeDotInKeys, + options.encode ? options.encoder : null, + options.filter, + options.sort, + options.allowDots, + options.serializeDate, + options.format, + options.formatter, + options.encodeValuesOnly, + options.charset, + sideChannel + )); + } + + var joined = keys.join(options.delimiter); + var prefix = options.addQueryPrefix === true ? '?' : ''; + + if (options.charsetSentinel) { + if (options.charset === 'iso-8859-1') { + // encodeURIComponent('✓'), the "numeric entity" representation of a checkmark + prefix += 'utf8=%26%2310003%3B&'; + } else { + // encodeURIComponent('✓') + prefix += 'utf8=%E2%9C%93&'; + } + } + + return joined.length > 0 ? prefix + joined : ''; +}; + + +/***/ }), +/* 22 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var $TypeError = __webpack_require__(0); +var inspect = __webpack_require__(1); +var getSideChannelList = __webpack_require__(24); +var getSideChannelMap = __webpack_require__(7); +var getSideChannelWeakMap = __webpack_require__(49); + +var makeChannel = getSideChannelWeakMap || getSideChannelMap || getSideChannelList; + +/** @type {import('.')} */ +module.exports = function getSideChannel() { + /** @typedef {ReturnType} Channel */ + + /** @type {Channel | undefined} */ var $channelData; + + /** @type {Channel} */ + var channel = { + assert: function (key) { + if (!channel.has(key)) { + throw new $TypeError('Side channel does not contain ' + inspect(key)); + } + }, + 'delete': function (key) { + return !!$channelData && $channelData['delete'](key); + }, + get: function (key) { + return $channelData && $channelData.get(key); + }, + has: function (key) { + return !!$channelData && $channelData.has(key); + }, + set: function (key, value) { + if (!$channelData) { + $channelData = makeChannel(); + } + + $channelData.set(key, value); + } + }; + // @ts-expect-error TODO: figure out why this is erroring + return channel; +}; + + +/***/ }), +/* 23 */ +/***/ (function(module, exports) { + +/* (ignored) */ + +/***/ }), +/* 24 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var inspect = __webpack_require__(1); + +var $TypeError = __webpack_require__(0); + +/* +* This function traverses the list returning the node corresponding to the given key. +* +* That node is also moved to the head of the list, so that if it's accessed again we don't need to traverse the whole list. +* By doing so, all the recently used nodes can be accessed relatively quickly. +*/ +/** @type {import('./list.d.ts').listGetNode} */ +// eslint-disable-next-line consistent-return +var listGetNode = function (list, key, isDelete) { + /** @type {typeof list | NonNullable<(typeof list)['next']>} */ + var prev = list; + /** @type {(typeof list)['next']} */ + var curr; + // eslint-disable-next-line eqeqeq + for (; (curr = prev.next) != null; prev = curr) { + if (curr.key === key) { + prev.next = curr.next; + if (!isDelete) { + // eslint-disable-next-line no-extra-parens + curr.next = /** @type {NonNullable} */ (list.next); + list.next = curr; // eslint-disable-line no-param-reassign + } + return curr; + } + } +}; + +/** @type {import('./list.d.ts').listGet} */ +var listGet = function (objects, key) { + if (!objects) { + return void undefined; + } + var node = listGetNode(objects, key); + return node && node.value; +}; +/** @type {import('./list.d.ts').listSet} */ +var listSet = function (objects, key, value) { + var node = listGetNode(objects, key); + if (node) { + node.value = value; + } else { + // Prepend the new node to the beginning of the list + objects.next = /** @type {import('./list.d.ts').ListNode} */ ({ // eslint-disable-line no-param-reassign, no-extra-parens + key: key, + next: objects.next, + value: value + }); + } +}; +/** @type {import('./list.d.ts').listHas} */ +var listHas = function (objects, key) { + if (!objects) { + return false; + } + return !!listGetNode(objects, key); +}; +/** @type {import('./list.d.ts').listDelete} */ +// eslint-disable-next-line consistent-return +var listDelete = function (objects, key) { + if (objects) { + return listGetNode(objects, key, true); + } +}; + +/** @type {import('.')} */ +module.exports = function getSideChannelList() { + /** @typedef {ReturnType} Channel */ + /** @typedef {Parameters[0]} K */ + /** @typedef {Parameters[1]} V */ + + /** @type {import('./list.d.ts').RootNode | undefined} */ var $o; + + /** @type {Channel} */ + var channel = { + assert: function (key) { + if (!channel.has(key)) { + throw new $TypeError('Side channel does not contain ' + inspect(key)); + } + }, + 'delete': function (key) { + var root = $o && $o.next; + var deletedNode = listDelete($o, key); + if (deletedNode && root && root === deletedNode) { + $o = void undefined; + } + return !!deletedNode; + }, + get: function (key) { + return listGet($o, key); + }, + has: function (key) { + return listHas($o, key); + }, + set: function (key, value) { + if (!$o) { + // Initialize the linked list as an empty node, so that we don't have to special-case handling of the first node: we can always refer to it as (previous node).next, instead of something like (list).head + $o = { + next: void undefined + }; + } + // eslint-disable-next-line no-extra-parens + listSet(/** @type {NonNullable} */ ($o), key, value); + } + }; + // @ts-expect-error TODO: figure out why this is erroring + return channel; +}; + + +/***/ }), +/* 25 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +/** @type {import('.')} */ +module.exports = Error; + + +/***/ }), +/* 26 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +/** @type {import('./eval')} */ +module.exports = EvalError; + + +/***/ }), +/* 27 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +/** @type {import('./range')} */ +module.exports = RangeError; + + +/***/ }), +/* 28 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +/** @type {import('./ref')} */ +module.exports = ReferenceError; + + +/***/ }), +/* 29 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +/** @type {import('./syntax')} */ +module.exports = SyntaxError; + + +/***/ }), +/* 30 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +/** @type {import('./uri')} */ +module.exports = URIError; + + +/***/ }), +/* 31 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +/** @type {import('./abs')} */ +module.exports = Math.abs; + + +/***/ }), +/* 32 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +/** @type {import('./floor')} */ +module.exports = Math.floor; + + +/***/ }), +/* 33 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +/** @type {import('./max')} */ +module.exports = Math.max; + + +/***/ }), +/* 34 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +/** @type {import('./min')} */ +module.exports = Math.min; + + +/***/ }), +/* 35 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +/** @type {import('./pow')} */ +module.exports = Math.pow; + + +/***/ }), +/* 36 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +/** @type {import('./round')} */ +module.exports = Math.round; + + +/***/ }), +/* 37 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var $isNaN = __webpack_require__(38); + +/** @type {import('./sign')} */ +module.exports = function sign(number) { + if ($isNaN(number) || number === 0) { + return number; + } + return number < 0 ? -1 : +1; +}; + + +/***/ }), +/* 38 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +/** @type {import('./isNaN')} */ +module.exports = Number.isNaN || function isNaN(a) { + return a !== a; +}; + + +/***/ }), +/* 39 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +/** @type {import('./gOPD')} */ +module.exports = Object.getOwnPropertyDescriptor; + + +/***/ }), +/* 40 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +/** @type {import('.')} */ +var $defineProperty = Object.defineProperty || false; +if ($defineProperty) { + try { + $defineProperty({}, 'a', { value: 1 }); + } catch (e) { + // IE 8 has a broken defineProperty + $defineProperty = false; + } +} + +module.exports = $defineProperty; + + +/***/ }), +/* 41 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var origSymbol = typeof Symbol !== 'undefined' && Symbol; +var hasSymbolSham = __webpack_require__(42); + +/** @type {import('.')} */ +module.exports = function hasNativeSymbols() { + if (typeof origSymbol !== 'function') { return false; } + if (typeof Symbol !== 'function') { return false; } + if (typeof origSymbol('foo') !== 'symbol') { return false; } + if (typeof Symbol('bar') !== 'symbol') { return false; } + + return hasSymbolSham(); +}; + + +/***/ }), +/* 42 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +/** @type {import('./shams')} */ +/* eslint complexity: [2, 18], max-statements: [2, 33] */ +module.exports = function hasSymbols() { + if (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; } + if (typeof Symbol.iterator === 'symbol') { return true; } + + /** @type {{ [k in symbol]?: unknown }} */ + var obj = {}; + var sym = Symbol('test'); + var symObj = Object(sym); + if (typeof sym === 'string') { return false; } + + if (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; } + if (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; } + + // temp disabled per https://github.com/ljharb/object.assign/issues/17 + // if (sym instanceof Symbol) { return false; } + // temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4 + // if (!(symObj instanceof Symbol)) { return false; } + + // if (typeof Symbol.prototype.toString !== 'function') { return false; } + // if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; } + + var symVal = 42; + obj[sym] = symVal; + for (var _ in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop + if (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; } + + if (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; } + + var syms = Object.getOwnPropertySymbols(obj); + if (syms.length !== 1 || syms[0] !== sym) { return false; } + + if (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; } + + if (typeof Object.getOwnPropertyDescriptor === 'function') { + // eslint-disable-next-line no-extra-parens + var descriptor = /** @type {PropertyDescriptor} */ (Object.getOwnPropertyDescriptor(obj, sym)); + if (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; } + } + + return true; +}; + + +/***/ }), +/* 43 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var reflectGetProto = __webpack_require__(10); +var originalGetProto = __webpack_require__(11); + +var getDunderProto = __webpack_require__(44); + +/** @type {import('.')} */ +module.exports = reflectGetProto + ? function getProto(O) { + // @ts-expect-error TS can't narrow inside a closure, for some reason + return reflectGetProto(O); + } + : originalGetProto + ? function getProto(O) { + if (!O || (typeof O !== 'object' && typeof O !== 'function')) { + throw new TypeError('getProto: not an object'); + } + // @ts-expect-error TS can't narrow inside a closure, for some reason + return originalGetProto(O); + } + : getDunderProto + ? function getProto(O) { + // @ts-expect-error TS can't narrow inside a closure, for some reason + return getDunderProto(O); + } + : null; + + +/***/ }), +/* 44 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var callBind = __webpack_require__(12); +var gOPD = __webpack_require__(9); + +var hasProtoAccessor; +try { + // eslint-disable-next-line no-extra-parens, no-proto + hasProtoAccessor = /** @type {{ __proto__?: typeof Array.prototype }} */ ([]).__proto__ === Array.prototype; +} catch (e) { + if (!e || typeof e !== 'object' || !('code' in e) || e.code !== 'ERR_PROTO_ACCESS') { + throw e; + } +} + +// eslint-disable-next-line no-extra-parens +var desc = !!hasProtoAccessor && gOPD && gOPD(Object.prototype, /** @type {keyof typeof Object.prototype} */ ('__proto__')); + +var $Object = Object; +var $getPrototypeOf = $Object.getPrototypeOf; + +/** @type {import('./get')} */ +module.exports = desc && typeof desc.get === 'function' + ? callBind([desc.get]) + : typeof $getPrototypeOf === 'function' + ? /** @type {import('./get')} */ function getDunder(value) { + // eslint-disable-next-line eqeqeq + return $getPrototypeOf(value == null ? value : $Object(value)); + } + : false; + + +/***/ }), +/* 45 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +/* eslint no-invalid-this: 1 */ + +var ERROR_MESSAGE = 'Function.prototype.bind called on incompatible '; +var toStr = Object.prototype.toString; +var max = Math.max; +var funcType = '[object Function]'; + +var concatty = function concatty(a, b) { + var arr = []; + + for (var i = 0; i < a.length; i += 1) { + arr[i] = a[i]; + } + for (var j = 0; j < b.length; j += 1) { + arr[j + a.length] = b[j]; + } + + return arr; +}; + +var slicy = function slicy(arrLike, offset) { + var arr = []; + for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) { + arr[j] = arrLike[i]; + } + return arr; +}; + +var joiny = function (arr, joiner) { + var str = ''; + for (var i = 0; i < arr.length; i += 1) { + str += arr[i]; + if (i + 1 < arr.length) { + str += joiner; + } + } + return str; +}; + +module.exports = function bind(that) { + var target = this; + if (typeof target !== 'function' || toStr.apply(target) !== funcType) { + throw new TypeError(ERROR_MESSAGE + target); + } + var args = slicy(arguments, 1); + + var bound; + var binder = function () { + if (this instanceof bound) { + var result = target.apply( + this, + concatty(args, arguments) + ); + if (Object(result) === result) { + return result; + } + return this; + } + return target.apply( + that, + concatty(args, arguments) + ); + + }; + + var boundLength = max(0, target.length - args.length); + var boundArgs = []; + for (var i = 0; i < boundLength; i++) { + boundArgs[i] = '$' + i; + } + + bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder); + + if (target.prototype) { + var Empty = function Empty() {}; + Empty.prototype = target.prototype; + bound.prototype = new Empty(); + Empty.prototype = null; + } + + return bound; +}; + + +/***/ }), +/* 46 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var bind = __webpack_require__(2); + +var $apply = __webpack_require__(13); +var $call = __webpack_require__(4); +var $reflectApply = __webpack_require__(47); + +/** @type {import('./actualApply')} */ +module.exports = $reflectApply || bind.call($call, $apply); + + +/***/ }), +/* 47 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +/** @type {import('./reflectApply')} */ +module.exports = typeof Reflect !== 'undefined' && Reflect && Reflect.apply; + + +/***/ }), +/* 48 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var call = Function.prototype.call; +var $hasOwn = Object.prototype.hasOwnProperty; +var bind = __webpack_require__(2); + +/** @type {import('.')} */ +module.exports = bind.call(call, $hasOwn); + + +/***/ }), +/* 49 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var GetIntrinsic = __webpack_require__(3); +var callBound = __webpack_require__(14); +var inspect = __webpack_require__(1); +var getSideChannelMap = __webpack_require__(7); + +var $TypeError = __webpack_require__(0); +var $WeakMap = GetIntrinsic('%WeakMap%', true); + +/** @type {(thisArg: WeakMap, key: K) => V} */ +var $weakMapGet = callBound('WeakMap.prototype.get', true); +/** @type {(thisArg: WeakMap, key: K, value: V) => void} */ +var $weakMapSet = callBound('WeakMap.prototype.set', true); +/** @type {(thisArg: WeakMap, key: K) => boolean} */ +var $weakMapHas = callBound('WeakMap.prototype.has', true); +/** @type {(thisArg: WeakMap, key: K) => boolean} */ +var $weakMapDelete = callBound('WeakMap.prototype.delete', true); + +/** @type {import('.')} */ +module.exports = $WeakMap + ? /** @type {Exclude} */ function getSideChannelWeakMap() { + /** @typedef {ReturnType} Channel */ + /** @typedef {Parameters[0]} K */ + /** @typedef {Parameters[1]} V */ + + /** @type {WeakMap | undefined} */ var $wm; + /** @type {Channel | undefined} */ var $m; + + /** @type {Channel} */ + var channel = { + assert: function (key) { + if (!channel.has(key)) { + throw new $TypeError('Side channel does not contain ' + inspect(key)); + } + }, + 'delete': function (key) { + if ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) { + if ($wm) { + return $weakMapDelete($wm, key); + } + } else if (getSideChannelMap) { + if ($m) { + return $m['delete'](key); + } + } + return false; + }, + get: function (key) { + if ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) { + if ($wm) { + return $weakMapGet($wm, key); + } + } + return $m && $m.get(key); + }, + has: function (key) { + if ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) { + if ($wm) { + return $weakMapHas($wm, key); + } + } + return !!$m && $m.has(key); + }, + set: function (key, value) { + if ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) { + if (!$wm) { + $wm = new $WeakMap(); + } + $weakMapSet($wm, key, value); + } else if (getSideChannelMap) { + if (!$m) { + $m = getSideChannelMap(); + } + // eslint-disable-next-line no-extra-parens + /** @type {NonNullable} */ ($m).set(key, value); + } + } + }; + + // @ts-expect-error TODO: figure out why this is erroring + return channel; + } + : getSideChannelMap; + + +/***/ }), +/* 50 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__(15); + +var has = Object.prototype.hasOwnProperty; +var isArray = Array.isArray; + +var defaults = { + allowDots: false, + allowEmptyArrays: false, + allowPrototypes: false, + allowSparse: false, + arrayLimit: 20, + charset: 'utf-8', + charsetSentinel: false, + comma: false, + decodeDotInKeys: false, + decoder: utils.decode, + delimiter: '&', + depth: 5, + duplicates: 'combine', + ignoreQueryPrefix: false, + interpretNumericEntities: false, + parameterLimit: 1000, + parseArrays: true, + plainObjects: false, + strictDepth: false, + strictNullHandling: false, + throwOnLimitExceeded: false +}; + +var interpretNumericEntities = function (str) { + return str.replace(/&#(\d+);/g, function ($0, numberStr) { + return String.fromCharCode(parseInt(numberStr, 10)); + }); +}; + +var parseArrayValue = function (val, options, currentArrayLength) { + if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) { + return val.split(','); + } + + if (options.throwOnLimitExceeded && currentArrayLength >= options.arrayLimit) { + throw new RangeError('Array limit exceeded. Only ' + options.arrayLimit + ' element' + (options.arrayLimit === 1 ? '' : 's') + ' allowed in an array.'); + } + + return val; +}; + +// This is what browsers will submit when the ✓ character occurs in an +// application/x-www-form-urlencoded body and the encoding of the page containing +// the form is iso-8859-1, or when the submitted form has an accept-charset +// attribute of iso-8859-1. Presumably also with other charsets that do not contain +// the ✓ character, such as us-ascii. +var isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('✓') + +// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded. +var charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓') + +var parseValues = function parseQueryStringValues(str, options) { + var obj = { __proto__: null }; + + var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\?/, '') : str; + cleanStr = cleanStr.replace(/%5B/gi, '[').replace(/%5D/gi, ']'); + + var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit; + var parts = cleanStr.split( + options.delimiter, + options.throwOnLimitExceeded ? limit + 1 : limit + ); + + if (options.throwOnLimitExceeded && parts.length > limit) { + throw new RangeError('Parameter limit exceeded. Only ' + limit + ' parameter' + (limit === 1 ? '' : 's') + ' allowed.'); + } + + var skipIndex = -1; // Keep track of where the utf8 sentinel was found + var i; + + var charset = options.charset; + if (options.charsetSentinel) { + for (i = 0; i < parts.length; ++i) { + if (parts[i].indexOf('utf8=') === 0) { + if (parts[i] === charsetSentinel) { + charset = 'utf-8'; + } else if (parts[i] === isoSentinel) { + charset = 'iso-8859-1'; + } + skipIndex = i; + i = parts.length; // The eslint settings do not allow break; + } + } + } + + for (i = 0; i < parts.length; ++i) { + if (i === skipIndex) { + continue; + } + var part = parts[i]; + + var bracketEqualsPos = part.indexOf(']='); + var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1; + + var key; + var val; + if (pos === -1) { + key = options.decoder(part, defaults.decoder, charset, 'key'); + val = options.strictNullHandling ? null : ''; + } else { + key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key'); + + val = utils.maybeMap( + parseArrayValue( + part.slice(pos + 1), + options, + isArray(obj[key]) ? obj[key].length : 0 + ), + function (encodedVal) { + return options.decoder(encodedVal, defaults.decoder, charset, 'value'); + } + ); + } + + if (val && options.interpretNumericEntities && charset === 'iso-8859-1') { + val = interpretNumericEntities(String(val)); + } + + if (part.indexOf('[]=') > -1) { + val = isArray(val) ? [val] : val; + } + + var existing = has.call(obj, key); + if (existing && options.duplicates === 'combine') { + obj[key] = utils.combine(obj[key], val); + } else if (!existing || options.duplicates === 'last') { + obj[key] = val; + } + } + + return obj; +}; + +var parseObject = function (chain, val, options, valuesParsed) { + var currentArrayLength = 0; + if (chain.length > 0 && chain[chain.length - 1] === '[]') { + var parentKey = chain.slice(0, -1).join(''); + currentArrayLength = Array.isArray(val) && val[parentKey] ? val[parentKey].length : 0; + } + + var leaf = valuesParsed ? val : parseArrayValue(val, options, currentArrayLength); + + for (var i = chain.length - 1; i >= 0; --i) { + var obj; + var root = chain[i]; + + if (root === '[]' && options.parseArrays) { + obj = options.allowEmptyArrays && (leaf === '' || (options.strictNullHandling && leaf === null)) + ? [] + : utils.combine([], leaf); + } else { + obj = options.plainObjects ? { __proto__: null } : {}; + var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root; + var decodedRoot = options.decodeDotInKeys ? cleanRoot.replace(/%2E/g, '.') : cleanRoot; + var index = parseInt(decodedRoot, 10); + if (!options.parseArrays && decodedRoot === '') { + obj = { 0: leaf }; + } else if ( + !isNaN(index) + && root !== decodedRoot + && String(index) === decodedRoot + && index >= 0 + && (options.parseArrays && index <= options.arrayLimit) + ) { + obj = []; + obj[index] = leaf; + } else if (decodedRoot !== '__proto__') { + obj[decodedRoot] = leaf; + } + } + + leaf = obj; + } + + return leaf; +}; + +var parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) { + if (!givenKey) { + return; + } + + // Transform dot notation to bracket notation + var key = options.allowDots ? givenKey.replace(/\.([^.[]+)/g, '[$1]') : givenKey; + + // The regex chunks + + var brackets = /(\[[^[\]]*])/; + var child = /(\[[^[\]]*])/g; + + // Get the parent + + var segment = options.depth > 0 && brackets.exec(key); + var parent = segment ? key.slice(0, segment.index) : key; + + // Stash the parent if it exists + + var keys = []; + if (parent) { + // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties + if (!options.plainObjects && has.call(Object.prototype, parent)) { + if (!options.allowPrototypes) { + return; + } + } + + keys.push(parent); + } + + // Loop through children appending to the array until we hit depth + + var i = 0; + while (options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth) { + i += 1; + if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) { + if (!options.allowPrototypes) { + return; + } + } + keys.push(segment[1]); + } + + // If there's a remainder, check strictDepth option for throw, else just add whatever is left + + if (segment) { + if (options.strictDepth === true) { + throw new RangeError('Input depth exceeded depth option of ' + options.depth + ' and strictDepth is true'); + } + keys.push('[' + key.slice(segment.index) + ']'); + } + + return parseObject(keys, val, options, valuesParsed); +}; + +var normalizeParseOptions = function normalizeParseOptions(opts) { + if (!opts) { + return defaults; + } + + if (typeof opts.allowEmptyArrays !== 'undefined' && typeof opts.allowEmptyArrays !== 'boolean') { + throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided'); + } + + if (typeof opts.decodeDotInKeys !== 'undefined' && typeof opts.decodeDotInKeys !== 'boolean') { + throw new TypeError('`decodeDotInKeys` option can only be `true` or `false`, when provided'); + } + + if (opts.decoder !== null && typeof opts.decoder !== 'undefined' && typeof opts.decoder !== 'function') { + throw new TypeError('Decoder has to be a function.'); + } + + if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') { + throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined'); + } + + if (typeof opts.throwOnLimitExceeded !== 'undefined' && typeof opts.throwOnLimitExceeded !== 'boolean') { + throw new TypeError('`throwOnLimitExceeded` option must be a boolean'); + } + + var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset; + + var duplicates = typeof opts.duplicates === 'undefined' ? defaults.duplicates : opts.duplicates; + + if (duplicates !== 'combine' && duplicates !== 'first' && duplicates !== 'last') { + throw new TypeError('The duplicates option must be either combine, first, or last'); + } + + var allowDots = typeof opts.allowDots === 'undefined' ? opts.decodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots; + + return { + allowDots: allowDots, + allowEmptyArrays: typeof opts.allowEmptyArrays === 'boolean' ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays, + allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes, + allowSparse: typeof opts.allowSparse === 'boolean' ? opts.allowSparse : defaults.allowSparse, + arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit, + charset: charset, + charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel, + comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma, + decodeDotInKeys: typeof opts.decodeDotInKeys === 'boolean' ? opts.decodeDotInKeys : defaults.decodeDotInKeys, + decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder, + delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter, + // eslint-disable-next-line no-implicit-coercion, no-extra-parens + depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth, + duplicates: duplicates, + ignoreQueryPrefix: opts.ignoreQueryPrefix === true, + interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities, + parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit, + parseArrays: opts.parseArrays !== false, + plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects, + strictDepth: typeof opts.strictDepth === 'boolean' ? !!opts.strictDepth : defaults.strictDepth, + strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling, + throwOnLimitExceeded: typeof opts.throwOnLimitExceeded === 'boolean' ? opts.throwOnLimitExceeded : false + }; +}; + +module.exports = function (str, opts) { + var options = normalizeParseOptions(opts); + + if (str === '' || str === null || typeof str === 'undefined') { + return options.plainObjects ? { __proto__: null } : {}; + } + + var tempObj = typeof str === 'string' ? parseValues(str, options) : str; + var obj = options.plainObjects ? { __proto__: null } : {}; + + // Iterate over the keys and setup the new object + + var keys = Object.keys(tempObj); + for (var i = 0; i < keys.length; ++i) { + var key = keys[i]; + var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string'); + obj = utils.merge(obj, newObj, options); + } + + if (options.allowSparse === true) { + return obj; + } + + return utils.compact(obj); +}; + + +/***/ }) +/******/ ]); +}); \ No newline at end of file diff --git a/temp/manifests.json b/temp/manifests.json new file mode 100644 index 0000000..48e5740 --- /dev/null +++ b/temp/manifests.json @@ -0,0 +1,749 @@ +[ + { + "id": "f97266fb-ccb7-430e-9384-4124d05295d3", + "alias": "Decorators", + "componentType": "Library", + "version": "1.4.1", + "manifestVersion": 2, + "loaderConfig": { + "entryModuleId": "decorators", + "internalModuleBaseUrls": [ + "https://localhost:4321/node_modules/@microsoft/decorators/" + ], + "scriptResources": { + "decorators": { + "type": "path", + "path": "dist/decorators.js" + } + } + }, + "isInternal": true + }, + { + "id": "73e1dc6c-8441-42cc-ad47-4bd3659f8a3a", + "alias": "SPLodashSubset", + "componentType": "Library", + "version": "1.4.1", + "manifestVersion": 2, + "loaderConfig": { + "entryModuleId": "sp-lodash-subset", + "internalModuleBaseUrls": [ + "https://localhost:4321/node_modules/@microsoft/sp-lodash-subset/" + ], + "scriptResources": { + "sp-lodash-subset": { + "type": "path", + "path": "dist/sp-lodash-subset.js" + } + } + }, + "isInternal": true + }, + { + "id": "7263c7d0-1d6a-45ec-8d85-d4d1d234171b", + "alias": "SPCoreLibrary", + "componentType": "Library", + "version": "1.4.1", + "manifestVersion": 2, + "loaderConfig": { + "entryModuleId": "sp-core-library", + "internalModuleBaseUrls": [ + "https://localhost:4321/node_modules/@microsoft/sp-core-library/" + ], + "scriptResources": { + "sp-core-library": { + "type": "localizedPath", + "defaultPath": "dist/sp-core-library_en-us.js" + }, + "@microsoft/sp-lodash-subset": { + "type": "component", + "version": "1.4.1", + "id": "73e1dc6c-8441-42cc-ad47-4bd3659f8a3a" + } + } + }, + "isInternal": true + }, + { + "id": "02a01e42-69ab-403d-8a16-acd128661f8e", + "alias": "OfficeUIFabricReact", + "componentType": "Library", + "version": "1.4.1", + "manifestVersion": 2, + "loaderConfig": { + "entryModuleId": "office-ui-fabric-react-bundle", + "internalModuleBaseUrls": [ + "https://localhost:4321/node_modules/@microsoft/office-ui-fabric-react-bundle/" + ], + "scriptResources": { + "office-ui-fabric-react-bundle": { + "type": "path", + "path": "dist/office-ui-fabric-react-bundle.js" + }, + "react": { + "type": "component", + "version": "15.6.2", + "id": "0d910c1c-13b9-4e1c-9aa4-b008c5e42d7d", + "failoverPath": "node_modules/react/dist/react.js" + }, + "react-dom": { + "type": "component", + "version": "15.6.2", + "id": "aa0a46ec-1505-43cd-a44a-93f3a5aa460a", + "failoverPath": "node_modules/react-dom/dist/react-dom.js" + } + } + }, + "isInternal": true + }, + { + "id": "1e384972-6346-49b4-93c7-b2e6763938e6", + "alias": "sp-polyfills", + "componentType": "Library", + "version": "1.4.1", + "manifestVersion": 2, + "loaderConfig": { + "entryModuleId": "sp-polyfills", + "internalModuleBaseUrls": [ + "/" + ], + "scriptResources": { + "sp-polyfills": { + "type": "path", + "path": "dist/sp-polyfills.js" + } + } + } + }, + { + "id": "1c6c9123-7aac-41f3-a376-3caea41ed83f", + "alias": "SPLoader", + "componentType": "Library", + "version": "1.4.1", + "manifestVersion": 2, + "loaderConfig": { + "entryModuleId": "sp-loader", + "internalModuleBaseUrls": [ + "https://localhost:4321/node_modules/@microsoft/sp-loader/" + ], + "scriptResources": { + "sp-loader": { + "type": "localizedPath", + "defaultPath": "dist/sp-loader_en-us.js" + }, + "@microsoft/sp-core-library": { + "type": "component", + "version": "1.4.1", + "id": "7263c7d0-1d6a-45ec-8d85-d4d1d234171b" + }, + "@ms/sp-telemetry": { + "type": "component", + "version": "0.2.2", + "id": "8217e442-8ed3-41fd-957d-b112e841286a" + }, + "@microsoft/sp-lodash-subset": { + "type": "component", + "version": "1.4.1", + "id": "73e1dc6c-8441-42cc-ad47-4bd3659f8a3a" + } + } + }, + "isInternal": true + }, + { + "id": "c07208f0-ea3b-4c1a-9965-ac1b825211a6", + "alias": "SPHttp", + "componentType": "Library", + "version": "1.4.1", + "manifestVersion": 2, + "loaderConfig": { + "entryModuleId": "sp-http", + "internalModuleBaseUrls": [ + "https://localhost:4321/node_modules/@microsoft/sp-http/" + ], + "scriptResources": { + "sp-http": { + "type": "localizedPath", + "defaultPath": "dist/sp-http_en-us.js" + }, + "@microsoft/sp-core-library": { + "type": "component", + "version": "1.4.1", + "id": "7263c7d0-1d6a-45ec-8d85-d4d1d234171b" + }, + "@microsoft/decorators": { + "type": "component", + "version": "1.4.1", + "id": "f97266fb-ccb7-430e-9384-4124d05295d3" + }, + "@ms/sp-telemetry": { + "type": "component", + "version": "0.2.2", + "id": "8217e442-8ed3-41fd-957d-b112e841286a" + }, + "@microsoft/sp-lodash-subset": { + "type": "component", + "version": "1.4.1", + "id": "73e1dc6c-8441-42cc-ad47-4bd3659f8a3a" + } + } + }, + "isInternal": true + }, + { + "id": "1c4541f7-5c31-41aa-9fa8-fbc9dc14c0a8", + "alias": "SPPageContext", + "componentType": "Library", + "version": "1.4.1", + "manifestVersion": 2, + "loaderConfig": { + "entryModuleId": "sp-page-context", + "internalModuleBaseUrls": [ + "https://localhost:4321/node_modules/@microsoft/sp-page-context/" + ], + "scriptResources": { + "sp-page-context": { + "type": "path", + "path": "dist/sp-page-context.js" + }, + "@microsoft/sp-core-library": { + "type": "component", + "version": "1.4.1", + "id": "7263c7d0-1d6a-45ec-8d85-d4d1d234171b" + }, + "@ms/sp-telemetry": { + "type": "component", + "version": "0.2.2", + "id": "8217e442-8ed3-41fd-957d-b112e841286a" + }, + "@microsoft/sp-http": { + "type": "component", + "version": "1.4.1", + "id": "c07208f0-ea3b-4c1a-9965-ac1b825211a6" + } + } + }, + "isInternal": true + }, + { + "id": "467dc675-7cc5-4709-8aac-78e3b71bd2f6", + "alias": "SPComponentBase", + "componentType": "Library", + "version": "1.4.1", + "manifestVersion": 2, + "loaderConfig": { + "entryModuleId": "sp-component-base", + "internalModuleBaseUrls": [ + "https://localhost:4321/node_modules/@microsoft/sp-component-base/" + ], + "scriptResources": { + "sp-component-base": { + "type": "path", + "path": "dist/sp-component-base.js" + }, + "@microsoft/decorators": { + "type": "component", + "version": "1.4.1", + "id": "f97266fb-ccb7-430e-9384-4124d05295d3" + }, + "@microsoft/sp-core-library": { + "type": "component", + "version": "1.4.1", + "id": "7263c7d0-1d6a-45ec-8d85-d4d1d234171b" + }, + "@ms/sp-telemetry": { + "type": "component", + "version": "0.2.2", + "id": "8217e442-8ed3-41fd-957d-b112e841286a" + }, + "@microsoft/sp-page-context": { + "type": "component", + "version": "1.4.1", + "id": "1c4541f7-5c31-41aa-9fa8-fbc9dc14c0a8" + } + } + }, + "isInternal": true + }, + { + "id": "0773bd53-a69e-4293-87e6-ba80ea4d614b", + "alias": "SPExtensionBase", + "componentType": "Library", + "version": "1.4.1", + "manifestVersion": 2, + "loaderConfig": { + "entryModuleId": "sp-extension-base", + "internalModuleBaseUrls": [ + "https://localhost:4321/node_modules/@microsoft/sp-extension-base/" + ], + "scriptResources": { + "sp-extension-base": { + "type": "localizedPath", + "defaultPath": "dist/sp-extension-base_en-us.js" + }, + "@ms/sp-telemetry": { + "type": "component", + "version": "0.2.2", + "id": "8217e442-8ed3-41fd-957d-b112e841286a" + }, + "@microsoft/sp-component-base": { + "type": "component", + "version": "1.4.1", + "id": "467dc675-7cc5-4709-8aac-78e3b71bd2f6" + }, + "@microsoft/decorators": { + "type": "component", + "version": "1.4.1", + "id": "f97266fb-ccb7-430e-9384-4124d05295d3" + }, + "@microsoft/sp-http": { + "type": "component", + "version": "1.4.1", + "id": "c07208f0-ea3b-4c1a-9965-ac1b825211a6" + }, + "@microsoft/sp-core-library": { + "type": "component", + "version": "1.4.1", + "id": "7263c7d0-1d6a-45ec-8d85-d4d1d234171b" + }, + "@microsoft/sp-loader": { + "type": "component", + "version": "1.4.1", + "id": "1c6c9123-7aac-41f3-a376-3caea41ed83f" + } + } + }, + "isInternal": true + }, + { + "id": "4df9bb86-ab0a-4aab-ab5f-48bf167048fb", + "alias": "SPApplicationBase", + "componentType": "Library", + "version": "1.4.1", + "manifestVersion": 2, + "loaderConfig": { + "entryModuleId": "sp-application-base", + "internalModuleBaseUrls": [ + "https://localhost:4321/node_modules/@microsoft/sp-application-base/" + ], + "scriptResources": { + "sp-application-base": { + "type": "localizedPath", + "defaultPath": "dist/sp-application-base_en-us.js" + }, + "@microsoft/sp-core-library": { + "type": "component", + "version": "1.4.1", + "id": "7263c7d0-1d6a-45ec-8d85-d4d1d234171b" + }, + "@ms/sp-telemetry": { + "type": "component", + "version": "0.2.2", + "id": "8217e442-8ed3-41fd-957d-b112e841286a" + }, + "@microsoft/sp-http": { + "type": "component", + "version": "1.4.1", + "id": "c07208f0-ea3b-4c1a-9965-ac1b825211a6" + }, + "@microsoft/sp-loader": { + "type": "component", + "version": "1.4.1", + "id": "1c6c9123-7aac-41f3-a376-3caea41ed83f" + }, + "@microsoft/sp-page-context": { + "type": "component", + "version": "1.4.1", + "id": "1c4541f7-5c31-41aa-9fa8-fbc9dc14c0a8" + }, + "@microsoft/sp-extension-base": { + "type": "component", + "version": "1.4.1", + "id": "0773bd53-a69e-4293-87e6-ba80ea4d614b" + }, + "@microsoft/sp-component-base": { + "type": "component", + "version": "1.4.1", + "id": "467dc675-7cc5-4709-8aac-78e3b71bd2f6" + }, + "@microsoft/decorators": { + "type": "component", + "version": "1.4.1", + "id": "f97266fb-ccb7-430e-9384-4124d05295d3" + }, + "@microsoft/sp-lodash-subset": { + "type": "component", + "version": "1.4.1", + "id": "73e1dc6c-8441-42cc-ad47-4bd3659f8a3a" + } + } + }, + "isInternal": true + }, + { + "id": "974a7777-0990-4136-8fa6-95d80114c2e0", + "alias": "SPWebPartBase", + "componentType": "Library", + "version": "1.4.1", + "manifestVersion": 2, + "loaderConfig": { + "entryModuleId": "sp-webpart-base", + "internalModuleBaseUrls": [ + "https://localhost:4321/node_modules/@microsoft/sp-webpart-base/" + ], + "scriptResources": { + "sp-webpart-base": { + "type": "localizedPath", + "defaultPath": "dist/sp-webpart-base_en-us.js" + }, + "@microsoft/sp-core-library": { + "type": "component", + "version": "1.4.1", + "id": "7263c7d0-1d6a-45ec-8d85-d4d1d234171b" + }, + "@microsoft/decorators": { + "type": "component", + "version": "1.4.1", + "id": "f97266fb-ccb7-430e-9384-4124d05295d3" + }, + "react": { + "type": "component", + "version": "15.6.2", + "id": "0d910c1c-13b9-4e1c-9aa4-b008c5e42d7d", + "failoverPath": "node_modules/react/dist/react.js" + }, + "@ms/sp-telemetry": { + "type": "component", + "version": "0.2.2", + "id": "8217e442-8ed3-41fd-957d-b112e841286a" + }, + "@microsoft/sp-lodash-subset": { + "type": "component", + "version": "1.4.1", + "id": "73e1dc6c-8441-42cc-ad47-4bd3659f8a3a" + }, + "office-ui-fabric-react": { + "type": "component", + "version": "1.4.1", + "id": "02a01e42-69ab-403d-8a16-acd128661f8e" + }, + "react-dom": { + "type": "component", + "version": "15.6.2", + "id": "aa0a46ec-1505-43cd-a44a-93f3a5aa460a", + "failoverPath": "node_modules/react-dom/dist/react-dom.js" + }, + "@microsoft/sp-http": { + "type": "component", + "version": "1.4.1", + "id": "c07208f0-ea3b-4c1a-9965-ac1b825211a6" + }, + "@microsoft/sp-component-base": { + "type": "component", + "version": "1.4.1", + "id": "467dc675-7cc5-4709-8aac-78e3b71bd2f6" + }, + "@microsoft/sp-loader": { + "type": "component", + "version": "1.4.1", + "id": "1c6c9123-7aac-41f3-a376-3caea41ed83f" + }, + "@microsoft/sp-page-context": { + "type": "component", + "version": "1.4.1", + "id": "1c4541f7-5c31-41aa-9fa8-fbc9dc14c0a8" + }, + "@microsoft/office-ui-fabric-react-bundle": { + "type": "component", + "version": "1.4.1", + "id": "02a01e42-69ab-403d-8a16-acd128661f8e" + } + } + }, + "isInternal": true + }, + { + "id": "c0c518b8-701b-4f6f-956d-5782772bb731", + "alias": "SPDialog", + "componentType": "Library", + "version": "1.4.1", + "manifestVersion": 2, + "loaderConfig": { + "entryModuleId": "sp-dialog", + "internalModuleBaseUrls": [ + "https://localhost:4321/node_modules/@microsoft/sp-dialog/" + ], + "scriptResources": { + "sp-dialog": { + "type": "path", + "path": "dist/sp-dialog.js" + }, + "react": { + "type": "component", + "version": "15.6.2", + "id": "0d910c1c-13b9-4e1c-9aa4-b008c5e42d7d", + "failoverPath": "node_modules/react/dist/react.js" + }, + "react-dom": { + "type": "component", + "version": "15.6.2", + "id": "aa0a46ec-1505-43cd-a44a-93f3a5aa460a", + "failoverPath": "node_modules/react-dom/dist/react-dom.js" + }, + "office-ui-fabric-react": { + "type": "component", + "version": "1.4.1", + "id": "02a01e42-69ab-403d-8a16-acd128661f8e" + }, + "@microsoft/decorators": { + "type": "component", + "version": "1.4.1", + "id": "f97266fb-ccb7-430e-9384-4124d05295d3" + }, + "@ms/sp-telemetry": { + "type": "component", + "version": "0.2.2", + "id": "8217e442-8ed3-41fd-957d-b112e841286a" + }, + "@microsoft/sp-core-library": { + "type": "component", + "version": "1.4.1", + "id": "7263c7d0-1d6a-45ec-8d85-d4d1d234171b" + }, + "@microsoft/sp-application-base": { + "type": "component", + "version": "1.4.1", + "id": "4df9bb86-ab0a-4aab-ab5f-48bf167048fb" + }, + "@microsoft/office-ui-fabric-react-bundle": { + "type": "component", + "version": "1.4.1", + "id": "02a01e42-69ab-403d-8a16-acd128661f8e" + }, + "@microsoft/sp-webpart-base": { + "type": "component", + "version": "1.4.1", + "id": "974a7777-0990-4136-8fa6-95d80114c2e0" + } + } + }, + "isInternal": true + }, + { + "id": "29bd516f-4ece-40b7-8028-597cbc65a223", + "alias": "SpOfficeUIFabricCore", + "componentType": "Library", + "version": "1.4.1", + "manifestVersion": 2, + "loaderConfig": { + "entryModuleId": "office-ui-fabric-core", + "internalModuleBaseUrls": [ + "https://localhost:4321/node_modules/@microsoft/sp-office-ui-fabric-core/" + ], + "scriptResources": { + "office-ui-fabric-core": { + "type": "path", + "path": "dist/office-ui-fabric-core.js" + } + } + }, + "isInternal": true + }, + { + "id": "4d5eb168-6729-49a8-aec7-0e397f486b6e", + "alias": "SPClientPreview", + "componentType": "Library", + "version": "1.4.1", + "manifestVersion": 2, + "loaderConfig": { + "entryModuleId": "sp-client-preview", + "internalModuleBaseUrls": [ + "https://localhost:4321/node_modules/@microsoft/sp-client-preview/" + ], + "scriptResources": { + "sp-client-preview": { + "type": "path", + "path": "dist/sp-client-preview.js" + }, + "@microsoft/sp-core-library": { + "type": "component", + "version": "1.4.1", + "id": "7263c7d0-1d6a-45ec-8d85-d4d1d234171b" + }, + "@microsoft/sp-lodash-subset": { + "type": "component", + "version": "1.4.1", + "id": "73e1dc6c-8441-42cc-ad47-4bd3659f8a3a" + }, + "@ms/sp-telemetry": { + "type": "component", + "version": "0.2.2", + "id": "8217e442-8ed3-41fd-957d-b112e841286a" + }, + "@microsoft/sp-http": { + "type": "component", + "version": "1.4.1", + "id": "c07208f0-ea3b-4c1a-9965-ac1b825211a6" + } + } + }, + "isInternal": true + }, + { + "id": "8be81a5c-af38-4bb2-af97-afa3b64dfbed", + "alias": "WebPartWorkbench", + "componentType": "Application", + "version": "1.4.1", + "manifestVersion": 2, + "title": { + "default": "WebpartWorkbench" + }, + "description": { + "default": "WebpartWorkbench" + }, + "assemblyId": "5dae53c4-db1e-4d0b-b8b2-88c874dabf83", + "preloadComponents": [ + "8217e442-8ed3-41fd-957d-b112e841286a", + "4df9bb86-ab0a-4aab-ab5f-48bf167048fb", + "05ed6956-59ad-4aa6-9e4e-b832c96ae87b" + ], + "preloadOptions": { + "shouldPreloadWeb": true, + "shouldPreloadUser": true, + "shouldPreloadList": false, + "shouldPreloadItem": true, + "shouldPreloadQuickLaunch": true + }, + "loaderConfig": { + "entryModuleId": "sp-webpart-workbench", + "internalModuleBaseUrls": [ + "https://localhost:4321/node_modules/@microsoft/sp-webpart-workbench/" + ], + "scriptResources": { + "sp-webpart-workbench": { + "type": "localizedPath", + "defaultPath": "dist/sp-webpart-workbench_en-us.js" + }, + "react": { + "type": "component", + "version": "15.6.2", + "id": "0d910c1c-13b9-4e1c-9aa4-b008c5e42d7d", + "failoverPath": "node_modules/react/dist/react.js" + }, + "office-ui-fabric-react": { + "type": "component", + "version": "1.4.1", + "id": "02a01e42-69ab-403d-8a16-acd128661f8e" + }, + "@microsoft/sp-core-library": { + "type": "component", + "version": "1.4.1", + "id": "7263c7d0-1d6a-45ec-8d85-d4d1d234171b" + }, + "@ms/sp-telemetry": { + "type": "component", + "version": "0.2.2", + "id": "8217e442-8ed3-41fd-957d-b112e841286a" + }, + "@microsoft/sp-lodash-subset": { + "type": "component", + "version": "1.4.1", + "id": "73e1dc6c-8441-42cc-ad47-4bd3659f8a3a" + }, + "@microsoft/sp-webpart-base": { + "type": "component", + "version": "1.4.1", + "id": "974a7777-0990-4136-8fa6-95d80114c2e0" + }, + "react-dom": { + "type": "component", + "version": "15.6.2", + "id": "aa0a46ec-1505-43cd-a44a-93f3a5aa460a", + "failoverPath": "node_modules/react-dom/dist/react-dom.js" + }, + "@microsoft/office-ui-fabric-react-bundle": { + "type": "component", + "version": "1.4.1", + "id": "02a01e42-69ab-403d-8a16-acd128661f8e" + }, + "@microsoft/sp-page-context": { + "type": "component", + "version": "1.4.1", + "id": "1c4541f7-5c31-41aa-9fa8-fbc9dc14c0a8" + }, + "@microsoft/sp-http": { + "type": "component", + "version": "1.4.1", + "id": "c07208f0-ea3b-4c1a-9965-ac1b825211a6" + }, + "@microsoft/sp-application-base": { + "type": "component", + "version": "1.4.1", + "id": "4df9bb86-ab0a-4aab-ab5f-48bf167048fb" + }, + "@microsoft/sp-loader": { + "type": "component", + "version": "1.4.1", + "id": "1c6c9123-7aac-41f3-a376-3caea41ed83f" + } + } + }, + "isInternal": true + }, + { + "id": "abc3361f-bb2d-491f-aba3-cd51c19a299b", + "alias": "MegaMenuApplicationCustomizer", + "componentType": "Extension", + "extensionType": "ApplicationCustomizer", + "version": "1.0.4", + "manifestVersion": 2, + "requiresCustomScript": false, + "loaderConfig": { + "entryModuleId": "mega-menu-application-customizer", + "internalModuleBaseUrls": [ + "https://localhost:4321/" + ], + "scriptResources": { + "mega-menu-application-customizer": { + "type": "path", + "path": "dist/mega-menu-application-customizer.js" + }, + "MegaMenuApplicationCustomizerStrings": { + "defaultPath": "lib/extensions/megaMenu/loc/en-us.js", + "type": "localizedPath", + "paths": {} + }, + "@microsoft/decorators": { + "type": "component", + "version": "1.4.1", + "id": "f97266fb-ccb7-430e-9384-4124d05295d3" + }, + "@microsoft/sp-core-library": { + "type": "component", + "version": "1.4.1", + "id": "7263c7d0-1d6a-45ec-8d85-d4d1d234171b" + }, + "@microsoft/sp-application-base": { + "type": "component", + "version": "1.4.1", + "id": "4df9bb86-ab0a-4aab-ab5f-48bf167048fb" + }, + "@microsoft/sp-http": { + "type": "component", + "version": "1.4.1", + "id": "c07208f0-ea3b-4c1a-9965-ac1b825211a6" + }, + "@microsoft/sp-lodash-subset": { + "type": "component", + "version": "1.4.1", + "id": "73e1dc6c-8441-42cc-ad47-4bd3659f8a3a" + }, + "@microsoft/sp-page-context": { + "type": "component", + "version": "1.4.1", + "id": "1c4541f7-5c31-41aa-9fa8-fbc9dc14c0a8" + } + } + } + } +] \ No newline at end of file diff --git a/temp/tslint-tsconfig.json b/temp/tslint-tsconfig.json new file mode 100644 index 0000000..e0d9f90 --- /dev/null +++ b/temp/tslint-tsconfig.json @@ -0,0 +1,26 @@ +{ + "compilerOptions": { + "target": "es5", + "forceConsistentCasingInFileNames": true, + "module": "esnext", + "moduleResolution": "node", + "jsx": "react", + "declaration": true, + "sourceMap": true, + "experimentalDecorators": true, + "skipLibCheck": true, + "typeRoots": [ + "./node_modules/@types", + "./node_modules/@microsoft" + ], + "types": [ + "es6-promise", + "webpack-env" + ], + "lib": [ + "es5", + "dom", + "es2015.collection" + ] + } +} \ No newline at end of file diff --git a/temp/tslint.json b/temp/tslint.json new file mode 100644 index 0000000..5999381 --- /dev/null +++ b/temp/tslint.json @@ -0,0 +1,158 @@ +{ + "rules": { + "class-name": true, + "comment-format": [ + true, + "check-space" + ], + "curly": true, + "eofline": false, + "export-name": true, + "forin": true, + "indent": [ + true, + "spaces", + 2 + ], + "interface-name": true, + "label-position": true, + "max-line-length": [ + true, + 120 + ], + "member-access": true, + "member-ordering": [ + true, + { + "order": [ + "public-static-field", + "protected-static-field", + "private-static-field", + "public-instance-field", + "protected-instance-field", + "private-instance-field", + "public-static-method", + "protected-static-method", + "private-static-method", + "public-constructor", + "public-instance-method", + "protected-constructor", + "protected-instance-method", + "private-constructor", + "private-instance-method" + ] + } + ], + "missing-optional-annotation": true, + "no-arg": true, + "no-any": true, + "no-bitwise": true, + "no-consecutive-blank-lines": true, + "no-console": [ + true, + "debug", + "info", + "time", + "timeEnd", + "trace" + ], + "no-constant-condition": true, + "no-construct": true, + "no-debugger": true, + "no-duplicate-case": true, + "no-duplicate-parameter-names": true, + "no-duplicate-variable": true, + "no-empty": true, + "no-eval": true, + "no-function-expression": true, + "no-inferrable-types": false, + "no-internal-module": true, + "no-null-keyword": true, + "no-shadowed-variable": true, + "no-string-literal": true, + "no-switch-case-fall-through": true, + "no-trailing-whitespace": true, + "no-unnecessary-semicolons": true, + "no-unused-expression": true, + "no-unused-variable": true, + "no-use-before-declare": true, + "no-with-statement": true, + "no-var-keyword": true, + "object-literal-sort-keys": false, + "one-line": [ + true, + "check-open-brace", + "check-catch", + "check-else", + "check-whitespace" + ], + "quotemark": [ + true, + "single", + "avoid-escape" + ], + "prefer-const": true, + "radix": true, + "semicolon": true, + "trailing-comma": [ + true, + { + "multiline": "never", + "singleline": "never" + } + ], + "triple-equals": [ + true, + "allow-null-check" + ], + "typedef": [ + true, + "call-signature", + "parameter", + "property-declaration", + "variable-declaration", + "member-variable-declaration" + ], + "typedef-whitespace": [ + true, + { + "call-signature": "nospace", + "index-signature": "nospace", + "parameter": "nospace", + "property-declaration": "nospace", + "variable-declaration": "nospace" + } + ], + "use-isnan": true, + "use-named-parameter": true, + "valid-typeof": true, + "variable-name": [ + true, + "check-format", + "allow-leading-underscore", + "ban-keywords" + ], + "whitespace": [ + true, + "check-branch", + "check-decl", + "check-operator", + "check-separator", + "check-type" + ], + "react-a11y-aria-unsupported-elements": true, + "react-a11y-event-has-role": true, + "react-a11y-image-button-has-alt": true, + "react-a11y-img-has-alt": true, + "react-a11y-lang": true, + "react-a11y-anchors": false, + "react-a11y-meta": true, + "react-a11y-props": true, + "react-a11y-proptypes": true, + "react-a11y-role-has-required-aria-props": true, + "react-a11y-role-supports-aria-props": true, + "react-a11y-role": true, + "react-a11y-tabindex-no-positive": true, + "react-a11y-titles": true + } +} \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..0c292a8 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,26 @@ +{ + "compilerOptions": { + "target": "es5", + "forceConsistentCasingInFileNames": true, + "module": "esnext", + "moduleResolution": "node", + "jsx": "react", + "declaration": true, + "sourceMap": true, + "experimentalDecorators": true, + "skipLibCheck": true, + "typeRoots": [ + "./node_modules/@types", + "./node_modules/@microsoft" + ], + "types": [ + "es6-promise", + "webpack-env" + ], + "lib": [ + "es5", + "dom", + "es2015.collection" + ] + } +} diff --git a/tslint.json b/tslint.json new file mode 100644 index 0000000..23fa2aa --- /dev/null +++ b/tslint.json @@ -0,0 +1,30 @@ +{ + "extends": "@microsoft/sp-tslint-rules/base-tslint.json", + "rules": { + "class-name": false, + "export-name": false, + "forin": false, + "label-position": false, + "member-access": true, + "no-arg": false, + "no-console": false, + "no-construct": false, + "no-duplicate-variable": true, + "no-eval": false, + "no-function-expression": true, + "no-internal-module": true, + "no-shadowed-variable": true, + "no-switch-case-fall-through": true, + "no-unnecessary-semicolons": true, + "no-unused-expression": true, + "no-use-before-declare": true, + "no-with-statement": true, + "semicolon": true, + "trailing-comma": false, + "typedef": false, + "typedef-whitespace": false, + "use-named-parameter": true, + "variable-name": false, + "whitespace": false + } +} \ No newline at end of file