@onivoro/app-server-bucketvore 24.33.21 โ†’ 24.34.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,17 +1,17 @@
1
1
  {
2
2
  "name": "@onivoro/app-server-bucketvore",
3
- "version": "24.33.21",
3
+ "version": "24.34.7",
4
4
  "description": "BucketVore NestJS application for S3 bucket management",
5
5
  "license": "MIT",
6
6
  "type": "commonjs",
7
7
  "main": "./src/index.js",
8
8
  "types": "./src/index.d.ts",
9
9
  "bin": {
10
- "bucketvore": "./main.js"
10
+ "bucketvore": "main.js"
11
11
  },
12
12
  "repository": {
13
13
  "type": "git",
14
- "url": "https://github.com/onivoro/monorepo.git"
14
+ "url": "git+https://github.com/onivoro/starvores.git"
15
15
  },
16
16
  "keywords": [
17
17
  "nestjs",
@@ -38,7 +38,7 @@
38
38
  "dependencies": {
39
39
  "@aws-sdk/client-s3": "3.782.0",
40
40
  "@aws-sdk/credential-providers": "3.782.0",
41
- "@aws-sdk/s3-request-presigner": "3.859.0",
41
+ "@aws-sdk/s3-request-presigner": "3.1032.0",
42
42
  "@nestjs/common": "10.4.20",
43
43
  "@nestjs/core": "10.4.20",
44
44
  "@nestjs/platform-express": "10.4.20",
package/assets/.gitkeep DELETED
@@ -1 +0,0 @@
1
- # Assets folder
@@ -1,96 +0,0 @@
1
- /*
2
- * ATTENTION: An "eval-source-map" devtool has been used.
3
- * This devtool is neither made for production nor for readable output files.
4
- * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools.
5
- * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
6
- * or disable the default devtool with "devtool: false".
7
- * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
8
- */
9
- /******/ (() => { // webpackBootstrap
10
- /******/ "use strict";
11
- /******/ var __webpack_modules__ = ({
12
-
13
- /***/ "./apps/server/bucketvore/src/app/client/s3-explorer.client.ts":
14
- /*!*********************************************************************!*\
15
- !*** ./apps/server/bucketvore/src/app/client/s3-explorer.client.ts ***!
16
- \*********************************************************************/
17
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
18
-
19
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ s3Explorer: () => (/* binding */ s3Explorer)\n/* harmony export */ });\n/* harmony import */ var _utils_clipboard_client__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils/clipboard.client */ \"./apps/server/bucketvore/src/app/client/utils/clipboard.client.ts\");\n/**\n * S3 Explorer Alpine.js Component\n * Client-side TypeScript with full IDE support\n */\n\nfunction s3Explorer() {\n return {\n // State\n selectedBucket: '',\n currentPrefix: '',\n buckets: [],\n files: [],\n folders: [],\n viewMode: 'list',\n bucketsHtml: '<div class=\"loading\"><div class=\"spinner\"></div><p>Loading buckets...</p></div>',\n filesHtml: '',\n breadcrumbsHtml: '',\n bucketFilter: '',\n fileFilter: '',\n showUpload: false,\n showPreview: false,\n uploadProgress: [],\n uploadProgressHtml: '',\n previewHtml: '',\n activeTab: 'data',\n // Computed properties\n get filteredBucketsHtml() {\n if (!this.bucketFilter.trim()) {\n return this.bucketsHtml;\n }\n const parser = new DOMParser();\n const doc = parser.parseFromString(this.bucketsHtml, 'text/html');\n const bucketItems = doc.querySelectorAll('.bucket-item');\n bucketItems.forEach((item) => {\n const bucketName = item.querySelector('.bucket-name')?.textContent?.toLowerCase() || '';\n if (bucketName.includes(this.bucketFilter.toLowerCase())) {\n item.style.display = '';\n }\n else {\n item.style.display = 'none';\n }\n });\n const visibleCount = doc.querySelectorAll('.bucket-item:not([style*=\"display: none\"])').length;\n if (visibleCount === 0) {\n return '<div class=\"empty-state\"><div class=\"empty-state-icon\">๐Ÿ”</div><p>No buckets match your filter</p></div>';\n }\n return doc.body.innerHTML;\n },\n get filteredFilesHtml() {\n if (!this.fileFilter.trim() || !this.filesHtml) {\n return this.filesHtml;\n }\n const parser = new DOMParser();\n const doc = parser.parseFromString(this.filesHtml, 'text/html');\n const fileItems = doc.querySelectorAll('.file-item');\n fileItems.forEach((item) => {\n const fileName = item.querySelector('.file-name')?.textContent?.toLowerCase() || '';\n if (fileName.includes(this.fileFilter.toLowerCase())) {\n item.style.display = '';\n }\n else {\n item.style.display = 'none';\n }\n });\n const visibleCount = doc.querySelectorAll('.file-item:not([style*=\"display: none\"])').length;\n if (visibleCount === 0) {\n return '<div class=\"empty-state\"><div class=\"empty-state-icon\">๐Ÿ”</div><p>No files match your filter</p></div>';\n }\n return doc.body.innerHTML;\n },\n // Initialization\n async init() {\n await this.loadBuckets();\n this.restoreStateFromUrl();\n this.setupUrlSync();\n },\n // Deep linking: restore state from URL\n restoreStateFromUrl() {\n const params = new URLSearchParams(window.location.search);\n const bucket = params.get('bucket');\n const prefix = params.get('prefix') || '';\n if (bucket) {\n this.selectedBucket = bucket;\n this.currentPrefix = prefix;\n this.loadFiles();\n }\n },\n // Deep linking: update URL when state changes\n updateUrl() {\n const params = new URLSearchParams();\n if (this.selectedBucket) {\n params.set('bucket', this.selectedBucket);\n if (this.currentPrefix) {\n params.set('prefix', this.currentPrefix);\n }\n }\n const newUrl = params.toString()\n ? `${window.location.pathname}?${params.toString()}`\n : window.location.pathname;\n window.history.pushState({}, '', newUrl);\n },\n // Setup browser back/forward button support\n setupUrlSync() {\n window.addEventListener('popstate', () => {\n this.restoreStateFromUrl();\n });\n },\n // API Methods\n async loadBuckets() {\n try {\n const response = await fetch('/api/buckets');\n this.bucketsHtml = await response.text();\n }\n catch (error) {\n this.bucketsHtml = '<div class=\"error\"><div class=\"error-icon\">โš ๏ธ</div><p>Error loading buckets</p></div>';\n }\n },\n async selectBucket(bucketName) {\n this.selectedBucket = bucketName;\n this.currentPrefix = '';\n this.fileFilter = '';\n this.updateUrl();\n await this.loadFiles();\n },\n async loadFiles() {\n try {\n const params = new URLSearchParams({\n bucket: this.selectedBucket,\n prefix: this.currentPrefix\n });\n const response = await fetch(`/api/files?${params}`);\n const data = await response.json();\n this.filesHtml = data.filesHtml || '';\n this.breadcrumbsHtml = data.breadcrumbsHtml || '';\n }\n catch (error) {\n this.filesHtml = '<div class=\"error\"><div class=\"error-icon\">โš ๏ธ</div><p>Error loading files</p></div>';\n }\n },\n async navigateToFolder(prefix) {\n this.currentPrefix = prefix;\n this.fileFilter = '';\n this.updateUrl();\n await this.loadFiles();\n },\n async previewFile(key) {\n try {\n const params = new URLSearchParams({\n bucket: this.selectedBucket,\n key: key\n });\n const response = await fetch(`/api/files/preview?${params}`);\n this.previewHtml = await response.text();\n this.showPreview = true;\n }\n catch (error) {\n alert('Error loading preview');\n }\n },\n closePreview() {\n this.showPreview = false;\n this.previewHtml = '';\n },\n async downloadFile(key) {\n try {\n const params = new URLSearchParams({\n bucket: this.selectedBucket,\n key: key\n });\n const response = await fetch(`/api/files/download?${params}`);\n const data = await response.json();\n window.open(data.url, '_blank');\n }\n catch (error) {\n alert('Error generating download link');\n }\n },\n async deleteFile(key) {\n if (!confirm(`Delete ${key}?`))\n return;\n try {\n await fetch(`/api/files/delete`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ bucket: this.selectedBucket, key })\n });\n await this.loadFiles();\n }\n catch (error) {\n alert('Error deleting file');\n }\n },\n async copyS3Path(key) {\n const element = event?.target;\n await (0,_utils_clipboard_client__WEBPACK_IMPORTED_MODULE_0__.copyS3PathToClipboard)(this.selectedBucket, key, element);\n },\n async deleteFolder(prefix) {\n if (!confirm(`Delete folder ${prefix} and all its contents?`))\n return;\n try {\n await fetch(`/api/files/delete-folder`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ bucket: this.selectedBucket, prefix })\n });\n await this.loadFiles();\n }\n catch (error) {\n alert('Error deleting folder');\n }\n },\n // Upload functionality\n handleFileSelect(event) {\n const input = event.target;\n if (input.files) {\n const files = Array.from(input.files);\n this.uploadFiles(files);\n }\n },\n handleDrop(event) {\n event.target.classList.remove('drag-over');\n if (event.dataTransfer?.files) {\n const files = Array.from(event.dataTransfer.files);\n this.uploadFiles(files);\n }\n },\n async uploadFiles(files) {\n this.uploadProgress = files.map(f => ({ name: f.name, status: 'Uploading...' }));\n for (let i = 0; i < files.length; i++) {\n const file = files[i];\n const formData = new FormData();\n formData.append('file', file);\n formData.append('bucket', this.selectedBucket);\n formData.append('prefix', this.currentPrefix);\n try {\n await fetch('/api/upload', {\n method: 'POST',\n body: formData\n });\n this.uploadProgress[i].status = 'โœ“ Complete';\n }\n catch (error) {\n this.uploadProgress[i].status = 'โœ— Failed';\n }\n }\n setTimeout(async () => {\n this.uploadProgress = [];\n this.showUpload = false;\n await this.loadFiles();\n }, 2000);\n },\n async refresh() {\n await this.loadFiles();\n },\n filterBuckets() {\n // Reactive computed property handles this\n },\n filterFiles() {\n // Reactive computed property handles this\n }\n };\n}\n// Auto-register with Alpine when it initializes\nif (typeof window !== 'undefined') {\n // Register immediately if Alpine is already available\n if (window.Alpine) {\n window.Alpine.data('s3Explorer', s3Explorer);\n }\n else {\n // Otherwise wait for Alpine to initialize\n document.addEventListener('alpine:init', () => {\n window.Alpine.data('s3Explorer', s3Explorer);\n });\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9hcHBzL3NlcnZlci9idWNrZXR2b3JlL3NyYy9hcHAvY2xpZW50L3MzLWV4cGxvcmVyLmNsaWVudC50cyIsIm1hcHBpbmdzIjoiOzs7OztBQUFBOzs7R0FHRztBQUU4RDtBQVMxRCxTQUFTLFVBQVU7SUFDeEIsT0FBTztRQUNMLFFBQVE7UUFDUixjQUFjLEVBQUUsRUFBRTtRQUNsQixhQUFhLEVBQUUsRUFBRTtRQUNqQixPQUFPLEVBQUUsRUFBRTtRQUNYLEtBQUssRUFBRSxFQUFFO1FBQ1QsT0FBTyxFQUFFLEVBQUU7UUFDWCxRQUFRLEVBQUUsTUFBTTtRQUNoQixXQUFXLEVBQUUsaUZBQWlGO1FBQzlGLFNBQVMsRUFBRSxFQUFFO1FBQ2IsZUFBZSxFQUFFLEVBQUU7UUFDbkIsWUFBWSxFQUFFLEVBQUU7UUFDaEIsVUFBVSxFQUFFLEVBQUU7UUFDZCxVQUFVLEVBQUUsS0FBSztRQUNqQixXQUFXLEVBQUUsS0FBSztRQUNsQixjQUFjLEVBQUUsRUFBc0I7UUFDdEMsa0JBQWtCLEVBQUUsRUFBRTtRQUN0QixXQUFXLEVBQUUsRUFBRTtRQUNmLFNBQVMsRUFBRSxNQUFNO1FBRWpCLHNCQUFzQjtRQUN0QixJQUFJLG1CQUFtQjtZQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO2dCQUM5QixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7WUFDMUIsQ0FBQztZQUVELE1BQU0sTUFBTSxHQUFHLElBQUksU0FBUyxFQUFFLENBQUM7WUFDL0IsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1lBQ2xFLE1BQU0sV0FBVyxHQUFHLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUV6RCxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7Z0JBQzNCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsQ0FBQztnQkFDeEYsSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUMsRUFBRSxDQUFDO29CQUN4RCxJQUFvQixDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO2dCQUMzQyxDQUFDO3FCQUFNLENBQUM7b0JBQ0wsSUFBb0IsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztnQkFDL0MsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1lBRUgsTUFBTSxZQUFZLEdBQUcsR0FBRyxDQUFDLGdCQUFnQixDQUFDLDRDQUE0QyxDQUFDLENBQUMsTUFBTSxDQUFDO1lBQy9GLElBQUksWUFBWSxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUN2QixPQUFPLDBHQUEwRyxDQUFDO1lBQ3BILENBQUM7WUFFRCxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQzVCLENBQUM7UUFFRCxJQUFJLGlCQUFpQjtZQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDL0MsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ3hCLENBQUM7WUFFRCxNQUFNLE1BQU0sR0FBRyxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQy9CLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxXQUFXLENBQUMsQ0FBQztZQUNoRSxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLENBQUM7WUFFckQsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO2dCQUN6QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUM7Z0JBQ3BGLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQUUsQ0FBQztvQkFDcEQsSUFBb0IsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztnQkFDM0MsQ0FBQztxQkFBTSxDQUFDO29CQUNMLElBQW9CLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7Z0JBQy9DLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztZQUVILE1BQU0sWUFBWSxHQUFHLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztZQUM3RixJQUFJLFlBQVksS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDdkIsT0FBTyx3R0FBd0csQ0FBQztZQUNsSCxDQUFDO1lBRUQsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUM1QixDQUFDO1FBRUQsaUJBQWlCO1FBQ2pCLEtBQUssQ0FBQyxJQUFJO1lBQ1IsTUFBTSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3RCLENBQUM7UUFFRCx1Q0FBdUM7UUFDdkMsbUJBQW1CO1lBQ2pCLE1BQU0sTUFBTSxHQUFHLElBQUksZUFBZSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDM0QsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNwQyxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUUxQyxJQUFJLE1BQU0sRUFBRSxDQUFDO2dCQUNYLElBQUksQ0FBQyxjQUFjLEdBQUcsTUFBTSxDQUFDO2dCQUM3QixJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQztnQkFDNUIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ25CLENBQUM7UUFDSCxDQUFDO1FBRUQsOENBQThDO1FBQzlDLFNBQVM7WUFDUCxNQUFNLE1BQU0sR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1lBRXJDLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN4QixNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7Z0JBRTFDLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO29CQUN2QixNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBQzNDLENBQUM7WUFDSCxDQUFDO1lBRUQsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFFBQVEsRUFBRTtnQkFDOUIsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLElBQUksTUFBTSxDQUFDLFFBQVEsRUFBRSxFQUFFO2dCQUNwRCxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7WUFFN0IsTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUMzQyxDQUFDO1FBRUQsNENBQTRDO1FBQzVDLFlBQVk7WUFDVixNQUFNLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRTtnQkFDdkMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDN0IsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsY0FBYztRQUNkLEtBQUssQ0FBQyxXQUFXO1lBQ2YsSUFBSSxDQUFDO2dCQUNILE1BQU0sUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUM3QyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzNDLENBQUM7WUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUNmLElBQUksQ0FBQyxXQUFXLEdBQUcsdUZBQXVGLENBQUM7WUFDN0csQ0FBQztRQUNILENBQUM7UUFFRCxLQUFLLENBQUMsWUFBWSxDQUFDLFVBQWtCO1lBQ25DLElBQUksQ0FBQyxjQUFjLEdBQUcsVUFBVSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNqQixNQUFNLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUN6QixDQUFDO1FBRUQsS0FBSyxDQUFDLFNBQVM7WUFDYixJQUFJLENBQUM7Z0JBQ0gsTUFBTSxNQUFNLEdBQUcsSUFBSSxlQUFlLENBQUM7b0JBQ2pDLE1BQU0sRUFBRSxJQUFJLENBQUMsY0FBYztvQkFDM0IsTUFBTSxFQUFFLElBQUksQ0FBQyxhQUFhO2lCQUMzQixDQUFDLENBQUM7Z0JBRUgsTUFBTSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUMsY0FBYyxNQUFNLEVBQUUsQ0FBQyxDQUFDO2dCQUNyRCxNQUFNLElBQUksR0FBRyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFFbkMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQztnQkFDdEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsZUFBZSxJQUFJLEVBQUUsQ0FBQztZQUNwRCxDQUFDO1lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztnQkFDZixJQUFJLENBQUMsU0FBUyxHQUFHLHFGQUFxRixDQUFDO1lBQ3pHLENBQUM7UUFDSCxDQUFDO1FBRUQsS0FBSyxDQUFDLGdCQUFnQixDQUFDLE1BQWM7WUFDbkMsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUM7WUFDNUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2pCLE1BQU0sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3pCLENBQUM7UUFFRCxLQUFLLENBQUMsV0FBVyxDQUFDLEdBQVc7WUFDM0IsSUFBSSxDQUFDO2dCQUNILE1BQU0sTUFBTSxHQUFHLElBQUksZUFBZSxDQUFDO29CQUNqQyxNQUFNLEVBQUUsSUFBSSxDQUFDLGNBQWM7b0JBQzNCLEdBQUcsRUFBRSxHQUFHO2lCQUNULENBQUMsQ0FBQztnQkFFSCxNQUFNLFFBQVEsR0FBRyxNQUFNLEtBQUssQ0FBQyxzQkFBc0IsTUFBTSxFQUFFLENBQUMsQ0FBQztnQkFDN0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDekMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7WUFDMUIsQ0FBQztZQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7Z0JBQ2YsS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUM7WUFDakMsQ0FBQztRQUNILENBQUM7UUFFRCxZQUFZO1lBQ1YsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7WUFDekIsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFDeEIsQ0FBQztRQUVELEtBQUssQ0FBQyxZQUFZLENBQUMsR0FBVztZQUM1QixJQUFJLENBQUM7Z0JBQ0gsTUFBTSxNQUFNLEdBQUcsSUFBSSxlQUFlLENBQUM7b0JBQ2pDLE1BQU0sRUFBRSxJQUFJLENBQUMsY0FBYztvQkFDM0IsR0FBRyxFQUFFLEdBQUc7aUJBQ1QsQ0FBQyxDQUFDO2dCQUVILE1BQU0sUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUFDLHVCQUF1QixNQUFNLEVBQUUsQ0FBQyxDQUFDO2dCQUM5RCxNQUFNLElBQUksR0FBRyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDbkMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ2xDLENBQUM7WUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUNmLEtBQUssQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO1lBQzFDLENBQUM7UUFDSCxDQUFDO1FBRUQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFXO1lBQzFCLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQztnQkFBRSxPQUFPO1lBRXZDLElBQUksQ0FBQztnQkFDSCxNQUFNLEtBQUssQ0FBQyxtQkFBbUIsRUFBRTtvQkFDL0IsTUFBTSxFQUFFLE1BQU07b0JBQ2QsT0FBTyxFQUFFLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFO29CQUMvQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLEdBQUcsRUFBRSxDQUFDO2lCQUMzRCxDQUFDLENBQUM7Z0JBQ0gsTUFBTSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDekIsQ0FBQztZQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7Z0JBQ2YsS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUM7WUFDL0IsQ0FBQztRQUNILENBQUM7UUFFRCxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQVc7WUFDMUIsTUFBTSxPQUFPLEdBQUksS0FBYSxFQUFFLE1BQWlDLENBQUM7WUFDbEUsTUFBTSw4RUFBcUIsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNqRSxDQUFDO1FBRUQsS0FBSyxDQUFDLFlBQVksQ0FBQyxNQUFjO1lBQy9CLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLE1BQU0sd0JBQXdCLENBQUM7Z0JBQUUsT0FBTztZQUV0RSxJQUFJLENBQUM7Z0JBQ0gsTUFBTSxLQUFLLENBQUMsMEJBQTBCLEVBQUU7b0JBQ3RDLE1BQU0sRUFBRSxNQUFNO29CQUNkLE9BQU8sRUFBRSxFQUFFLGNBQWMsRUFBRSxrQkFBa0IsRUFBRTtvQkFDL0MsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxNQUFNLEVBQUUsQ0FBQztpQkFDOUQsQ0FBQyxDQUFDO2dCQUNILE1BQU0sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3pCLENBQUM7WUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUNmLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1lBQ2pDLENBQUM7UUFDSCxDQUFDO1FBRUQsdUJBQXVCO1FBQ3ZCLGdCQUFnQixDQUFDLEtBQVk7WUFDM0IsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQTBCLENBQUM7WUFDL0MsSUFBSSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ2hCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN0QyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzFCLENBQUM7UUFDSCxDQUFDO1FBRUQsVUFBVSxDQUFDLEtBQWdCO1lBQ3hCLEtBQUssQ0FBQyxNQUFzQixDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDNUQsSUFBSSxLQUFLLENBQUMsWUFBWSxFQUFFLEtBQUssRUFBRSxDQUFDO2dCQUM5QixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ25ELElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDMUIsQ0FBQztRQUNILENBQUM7UUFFRCxLQUFLLENBQUMsV0FBVyxDQUFDLEtBQWE7WUFDN0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFFakYsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDdEMsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN0QixNQUFNLFFBQVEsR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDO2dCQUNoQyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDOUIsUUFBUSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUMvQyxRQUFRLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBRTlDLElBQUksQ0FBQztvQkFDSCxNQUFNLEtBQUssQ0FBQyxhQUFhLEVBQUU7d0JBQ3pCLE1BQU0sRUFBRSxNQUFNO3dCQUNkLElBQUksRUFBRSxRQUFRO3FCQUNmLENBQUMsQ0FBQztvQkFDSCxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxZQUFZLENBQUM7Z0JBQy9DLENBQUM7Z0JBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztvQkFDZixJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUM7Z0JBQzdDLENBQUM7WUFDSCxDQUFDO1lBRUQsVUFBVSxDQUFDLEtBQUssSUFBSSxFQUFFO2dCQUNwQixJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztnQkFDekIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7Z0JBQ3hCLE1BQU0sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3pCLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNYLENBQUM7UUFFRCxLQUFLLENBQUMsT0FBTztZQUNYLE1BQU0sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3pCLENBQUM7UUFFRCxhQUFhO1lBQ1gsMENBQTBDO1FBQzVDLENBQUM7UUFFRCxXQUFXO1lBQ1QsMENBQTBDO1FBQzVDLENBQUM7S0FDRixDQUFDO0FBQ0osQ0FBQztBQUVELGdEQUFnRDtBQUNoRCxJQUFJLE9BQU8sTUFBTSxLQUFLLFdBQVcsRUFBRSxDQUFDO0lBQ2xDLHNEQUFzRDtJQUN0RCxJQUFLLE1BQWMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUMxQixNQUFjLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDeEQsQ0FBQztTQUFNLENBQUM7UUFDTiwwQ0FBMEM7UUFDMUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsRUFBRSxHQUFHLEVBQUU7WUFDM0MsTUFBYyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ3hELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9vbml2b3JvLy4vYXBwcy9zZXJ2ZXIvYnVja2V0dm9yZS9zcmMvYXBwL2NsaWVudC9zMy1leHBsb3Jlci5jbGllbnQudHM/MzNkZiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFMzIEV4cGxvcmVyIEFscGluZS5qcyBDb21wb25lbnRcbiAqIENsaWVudC1zaWRlIFR5cGVTY3JpcHQgd2l0aCBmdWxsIElERSBzdXBwb3J0XG4gKi9cblxuaW1wb3J0IHsgY29weVMzUGF0aFRvQ2xpcGJvYXJkIH0gZnJvbSAnLi91dGlscy9jbGlwYm9hcmQuY2xpZW50JztcbmltcG9ydCB0eXBlIHsgUzNDbGllbnRTdGF0ZSwgVXBsb2FkUHJvZ3Jlc3MgfSBmcm9tICcuLi9zaGFyZWQvdHlwZXMuc2hhcmVkJztcblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgV2luZG93IHtcbiAgICBBbHBpbmU6IGFueTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gczNFeHBsb3JlcigpOiBTM0NsaWVudFN0YXRlICYgUmVjb3JkPHN0cmluZywgYW55PiB7XG4gIHJldHVybiB7XG4gICAgLy8gU3RhdGVcbiAgICBzZWxlY3RlZEJ1Y2tldDogJycsXG4gICAgY3VycmVudFByZWZpeDogJycsXG4gICAgYnVja2V0czogW10sXG4gICAgZmlsZXM6IFtdLFxuICAgIGZvbGRlcnM6IFtdLFxuICAgIHZpZXdNb2RlOiAnbGlzdCcsXG4gICAgYnVja2V0c0h0bWw6ICc8ZGl2IGNsYXNzPVwibG9hZGluZ1wiPjxkaXYgY2xhc3M9XCJzcGlubmVyXCI+PC9kaXY+PHA+TG9hZGluZyBidWNrZXRzLi4uPC9wPjwvZGl2PicsXG4gICAgZmlsZXNIdG1sOiAnJyxcbiAgICBicmVhZGNydW1ic0h0bWw6ICcnLFxuICAgIGJ1Y2tldEZpbHRlcjogJycsXG4gICAgZmlsZUZpbHRlcjogJycsXG4gICAgc2hvd1VwbG9hZDogZmFsc2UsXG4gICAgc2hvd1ByZXZpZXc6IGZhbHNlLFxuICAgIHVwbG9hZFByb2dyZXNzOiBbXSBhcyBVcGxvYWRQcm9ncmVzc1tdLFxuICAgIHVwbG9hZFByb2dyZXNzSHRtbDogJycsXG4gICAgcHJldmlld0h0bWw6ICcnLFxuICAgIGFjdGl2ZVRhYjogJ2RhdGEnLFxuXG4gICAgLy8gQ29tcHV0ZWQgcHJvcGVydGllc1xuICAgIGdldCBmaWx0ZXJlZEJ1Y2tldHNIdG1sKCk6IHN0cmluZyB7XG4gICAgICBpZiAoIXRoaXMuYnVja2V0RmlsdGVyLnRyaW0oKSkge1xuICAgICAgICByZXR1cm4gdGhpcy5idWNrZXRzSHRtbDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcGFyc2VyID0gbmV3IERPTVBhcnNlcigpO1xuICAgICAgY29uc3QgZG9jID0gcGFyc2VyLnBhcnNlRnJvbVN0cmluZyh0aGlzLmJ1Y2tldHNIdG1sLCAndGV4dC9odG1sJyk7XG4gICAgICBjb25zdCBidWNrZXRJdGVtcyA9IGRvYy5xdWVyeVNlbGVjdG9yQWxsKCcuYnVja2V0LWl0ZW0nKTtcblxuICAgICAgYnVja2V0SXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICBjb25zdCBidWNrZXROYW1lID0gaXRlbS5xdWVyeVNlbGVjdG9yKCcuYnVja2V0LW5hbWUnKT8udGV4dENvbnRlbnQ/LnRvTG93ZXJDYXNlKCkgfHwgJyc7XG4gICAgICAgIGlmIChidWNrZXROYW1lLmluY2x1ZGVzKHRoaXMuYnVja2V0RmlsdGVyLnRvTG93ZXJDYXNlKCkpKSB7XG4gICAgICAgICAgKGl0ZW0gYXMgSFRNTEVsZW1lbnQpLnN0eWxlLmRpc3BsYXkgPSAnJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAoaXRlbSBhcyBIVE1MRWxlbWVudCkuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHZpc2libGVDb3VudCA9IGRvYy5xdWVyeVNlbGVjdG9yQWxsKCcuYnVja2V0LWl0ZW06bm90KFtzdHlsZSo9XCJkaXNwbGF5OiBub25lXCJdKScpLmxlbmd0aDtcbiAgICAgIGlmICh2aXNpYmxlQ291bnQgPT09IDApIHtcbiAgICAgICAgcmV0dXJuICc8ZGl2IGNsYXNzPVwiZW1wdHktc3RhdGVcIj48ZGl2IGNsYXNzPVwiZW1wdHktc3RhdGUtaWNvblwiPvCflI08L2Rpdj48cD5ObyBidWNrZXRzIG1hdGNoIHlvdXIgZmlsdGVyPC9wPjwvZGl2Pic7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBkb2MuYm9keS5pbm5lckhUTUw7XG4gICAgfSxcblxuICAgIGdldCBmaWx0ZXJlZEZpbGVzSHRtbCgpOiBzdHJpbmcge1xuICAgICAgaWYgKCF0aGlzLmZpbGVGaWx0ZXIudHJpbSgpIHx8ICF0aGlzLmZpbGVzSHRtbCkge1xuICAgICAgICByZXR1cm4gdGhpcy5maWxlc0h0bWw7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHBhcnNlciA9IG5ldyBET01QYXJzZXIoKTtcbiAgICAgIGNvbnN0IGRvYyA9IHBhcnNlci5wYXJzZUZyb21TdHJpbmcodGhpcy5maWxlc0h0bWwsICd0ZXh0L2h0bWwnKTtcbiAgICAgIGNvbnN0IGZpbGVJdGVtcyA9IGRvYy5xdWVyeVNlbGVjdG9yQWxsKCcuZmlsZS1pdGVtJyk7XG5cbiAgICAgIGZpbGVJdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgIGNvbnN0IGZpbGVOYW1lID0gaXRlbS5xdWVyeVNlbGVjdG9yKCcuZmlsZS1uYW1lJyk/LnRleHRDb250ZW50Py50b0xvd2VyQ2FzZSgpIHx8ICcnO1xuICAgICAgICBpZiAoZmlsZU5hbWUuaW5jbHVkZXModGhpcy5maWxlRmlsdGVyLnRvTG93ZXJDYXNlKCkpKSB7XG4gICAgICAgICAgKGl0ZW0gYXMgSFRNTEVsZW1lbnQpLnN0eWxlLmRpc3BsYXkgPSAnJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAoaXRlbSBhcyBIVE1MRWxlbWVudCkuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHZpc2libGVDb3VudCA9IGRvYy5xdWVyeVNlbGVjdG9yQWxsKCcuZmlsZS1pdGVtOm5vdChbc3R5bGUqPVwiZGlzcGxheTogbm9uZVwiXSknKS5sZW5ndGg7XG4gICAgICBpZiAodmlzaWJsZUNvdW50ID09PSAwKSB7XG4gICAgICAgIHJldHVybiAnPGRpdiBjbGFzcz1cImVtcHR5LXN0YXRlXCI+PGRpdiBjbGFzcz1cImVtcHR5LXN0YXRlLWljb25cIj7wn5SNPC9kaXY+PHA+Tm8gZmlsZXMgbWF0Y2ggeW91ciBmaWx0ZXI8L3A+PC9kaXY+JztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGRvYy5ib2R5LmlubmVySFRNTDtcbiAgICB9LFxuXG4gICAgLy8gSW5pdGlhbGl6YXRpb25cbiAgICBhc3luYyBpbml0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgYXdhaXQgdGhpcy5sb2FkQnVja2V0cygpO1xuICAgICAgdGhpcy5yZXN0b3JlU3RhdGVGcm9tVXJsKCk7XG4gICAgICB0aGlzLnNldHVwVXJsU3luYygpO1xuICAgIH0sXG5cbiAgICAvLyBEZWVwIGxpbmtpbmc6IHJlc3RvcmUgc3RhdGUgZnJvbSBVUkxcbiAgICByZXN0b3JlU3RhdGVGcm9tVXJsKCk6IHZvaWQge1xuICAgICAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24uc2VhcmNoKTtcbiAgICAgIGNvbnN0IGJ1Y2tldCA9IHBhcmFtcy5nZXQoJ2J1Y2tldCcpO1xuICAgICAgY29uc3QgcHJlZml4ID0gcGFyYW1zLmdldCgncHJlZml4JykgfHwgJyc7XG5cbiAgICAgIGlmIChidWNrZXQpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEJ1Y2tldCA9IGJ1Y2tldDtcbiAgICAgICAgdGhpcy5jdXJyZW50UHJlZml4ID0gcHJlZml4O1xuICAgICAgICB0aGlzLmxvYWRGaWxlcygpO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICAvLyBEZWVwIGxpbmtpbmc6IHVwZGF0ZSBVUkwgd2hlbiBzdGF0ZSBjaGFuZ2VzXG4gICAgdXBkYXRlVXJsKCk6IHZvaWQge1xuICAgICAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpO1xuXG4gICAgICBpZiAodGhpcy5zZWxlY3RlZEJ1Y2tldCkge1xuICAgICAgICBwYXJhbXMuc2V0KCdidWNrZXQnLCB0aGlzLnNlbGVjdGVkQnVja2V0KTtcblxuICAgICAgICBpZiAodGhpcy5jdXJyZW50UHJlZml4KSB7XG4gICAgICAgICAgcGFyYW1zLnNldCgncHJlZml4JywgdGhpcy5jdXJyZW50UHJlZml4KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCBuZXdVcmwgPSBwYXJhbXMudG9TdHJpbmcoKVxuICAgICAgICA/IGAke3dpbmRvdy5sb2NhdGlvbi5wYXRobmFtZX0/JHtwYXJhbXMudG9TdHJpbmcoKX1gXG4gICAgICAgIDogd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lO1xuXG4gICAgICB3aW5kb3cuaGlzdG9yeS5wdXNoU3RhdGUoe30sICcnLCBuZXdVcmwpO1xuICAgIH0sXG5cbiAgICAvLyBTZXR1cCBicm93c2VyIGJhY2svZm9yd2FyZCBidXR0b24gc3VwcG9ydFxuICAgIHNldHVwVXJsU3luYygpOiB2b2lkIHtcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdwb3BzdGF0ZScsICgpID0+IHtcbiAgICAgICAgdGhpcy5yZXN0b3JlU3RhdGVGcm9tVXJsKCk7XG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgLy8gQVBJIE1ldGhvZHNcbiAgICBhc3luYyBsb2FkQnVja2V0cygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goJy9hcGkvYnVja2V0cycpO1xuICAgICAgICB0aGlzLmJ1Y2tldHNIdG1sID0gYXdhaXQgcmVzcG9uc2UudGV4dCgpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgdGhpcy5idWNrZXRzSHRtbCA9ICc8ZGl2IGNsYXNzPVwiZXJyb3JcIj48ZGl2IGNsYXNzPVwiZXJyb3ItaWNvblwiPuKaoO+4jzwvZGl2PjxwPkVycm9yIGxvYWRpbmcgYnVja2V0czwvcD48L2Rpdj4nO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBhc3luYyBzZWxlY3RCdWNrZXQoYnVja2V0TmFtZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICB0aGlzLnNlbGVjdGVkQnVja2V0ID0gYnVja2V0TmFtZTtcbiAgICAgIHRoaXMuY3VycmVudFByZWZpeCA9ICcnO1xuICAgICAgdGhpcy5maWxlRmlsdGVyID0gJyc7XG4gICAgICB0aGlzLnVwZGF0ZVVybCgpO1xuICAgICAgYXdhaXQgdGhpcy5sb2FkRmlsZXMoKTtcbiAgICB9LFxuXG4gICAgYXN5bmMgbG9hZEZpbGVzKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh7XG4gICAgICAgICAgYnVja2V0OiB0aGlzLnNlbGVjdGVkQnVja2V0LFxuICAgICAgICAgIHByZWZpeDogdGhpcy5jdXJyZW50UHJlZml4XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYC9hcGkvZmlsZXM/JHtwYXJhbXN9YCk7XG4gICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XG5cbiAgICAgICAgdGhpcy5maWxlc0h0bWwgPSBkYXRhLmZpbGVzSHRtbCB8fCAnJztcbiAgICAgICAgdGhpcy5icmVhZGNydW1ic0h0bWwgPSBkYXRhLmJyZWFkY3J1bWJzSHRtbCB8fCAnJztcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHRoaXMuZmlsZXNIdG1sID0gJzxkaXYgY2xhc3M9XCJlcnJvclwiPjxkaXYgY2xhc3M9XCJlcnJvci1pY29uXCI+4pqg77iPPC9kaXY+PHA+RXJyb3IgbG9hZGluZyBmaWxlczwvcD48L2Rpdj4nO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBhc3luYyBuYXZpZ2F0ZVRvRm9sZGVyKHByZWZpeDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICB0aGlzLmN1cnJlbnRQcmVmaXggPSBwcmVmaXg7XG4gICAgICB0aGlzLmZpbGVGaWx0ZXIgPSAnJztcbiAgICAgIHRoaXMudXBkYXRlVXJsKCk7XG4gICAgICBhd2FpdCB0aGlzLmxvYWRGaWxlcygpO1xuICAgIH0sXG5cbiAgICBhc3luYyBwcmV2aWV3RmlsZShrZXk6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh7XG4gICAgICAgICAgYnVja2V0OiB0aGlzLnNlbGVjdGVkQnVja2V0LFxuICAgICAgICAgIGtleToga2V5XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYC9hcGkvZmlsZXMvcHJldmlldz8ke3BhcmFtc31gKTtcbiAgICAgICAgdGhpcy5wcmV2aWV3SHRtbCA9IGF3YWl0IHJlc3BvbnNlLnRleHQoKTtcbiAgICAgICAgdGhpcy5zaG93UHJldmlldyA9IHRydWU7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBhbGVydCgnRXJyb3IgbG9hZGluZyBwcmV2aWV3Jyk7XG4gICAgICB9XG4gICAgfSxcblxuICAgIGNsb3NlUHJldmlldygpOiB2b2lkIHtcbiAgICAgIHRoaXMuc2hvd1ByZXZpZXcgPSBmYWxzZTtcbiAgICAgIHRoaXMucHJldmlld0h0bWwgPSAnJztcbiAgICB9LFxuXG4gICAgYXN5bmMgZG93bmxvYWRGaWxlKGtleTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHtcbiAgICAgICAgICBidWNrZXQ6IHRoaXMuc2VsZWN0ZWRCdWNrZXQsXG4gICAgICAgICAga2V5OiBrZXlcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgL2FwaS9maWxlcy9kb3dubG9hZD8ke3BhcmFtc31gKTtcbiAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcbiAgICAgICAgd2luZG93Lm9wZW4oZGF0YS51cmwsICdfYmxhbmsnKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGFsZXJ0KCdFcnJvciBnZW5lcmF0aW5nIGRvd25sb2FkIGxpbmsnKTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgYXN5bmMgZGVsZXRlRmlsZShrZXk6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgaWYgKCFjb25maXJtKGBEZWxldGUgJHtrZXl9P2ApKSByZXR1cm47XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGZldGNoKGAvYXBpL2ZpbGVzL2RlbGV0ZWAsIHtcbiAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICBoZWFkZXJzOiB7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicgfSxcbiAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IGJ1Y2tldDogdGhpcy5zZWxlY3RlZEJ1Y2tldCwga2V5IH0pXG4gICAgICAgIH0pO1xuICAgICAgICBhd2FpdCB0aGlzLmxvYWRGaWxlcygpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgYWxlcnQoJ0Vycm9yIGRlbGV0aW5nIGZpbGUnKTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgYXN5bmMgY29weVMzUGF0aChrZXk6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgY29uc3QgZWxlbWVudCA9IChldmVudCBhcyBhbnkpPy50YXJnZXQgYXMgSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQ7XG4gICAgICBhd2FpdCBjb3B5UzNQYXRoVG9DbGlwYm9hcmQodGhpcy5zZWxlY3RlZEJ1Y2tldCwga2V5LCBlbGVtZW50KTtcbiAgICB9LFxuXG4gICAgYXN5bmMgZGVsZXRlRm9sZGVyKHByZWZpeDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICBpZiAoIWNvbmZpcm0oYERlbGV0ZSBmb2xkZXIgJHtwcmVmaXh9IGFuZCBhbGwgaXRzIGNvbnRlbnRzP2ApKSByZXR1cm47XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGZldGNoKGAvYXBpL2ZpbGVzL2RlbGV0ZS1mb2xkZXJgLCB7XG4gICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgaGVhZGVyczogeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH0sXG4gICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoeyBidWNrZXQ6IHRoaXMuc2VsZWN0ZWRCdWNrZXQsIHByZWZpeCB9KVxuICAgICAgICB9KTtcbiAgICAgICAgYXdhaXQgdGhpcy5sb2FkRmlsZXMoKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGFsZXJ0KCdFcnJvciBkZWxldGluZyBmb2xkZXInKTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgLy8gVXBsb2FkIGZ1bmN0aW9uYWxpdHlcbiAgICBoYW5kbGVGaWxlU2VsZWN0KGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICAgIGlmIChpbnB1dC5maWxlcykge1xuICAgICAgICBjb25zdCBmaWxlcyA9IEFycmF5LmZyb20oaW5wdXQuZmlsZXMpO1xuICAgICAgICB0aGlzLnVwbG9hZEZpbGVzKGZpbGVzKTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgaGFuZGxlRHJvcChldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XG4gICAgICAoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5jbGFzc0xpc3QucmVtb3ZlKCdkcmFnLW92ZXInKTtcbiAgICAgIGlmIChldmVudC5kYXRhVHJhbnNmZXI/LmZpbGVzKSB7XG4gICAgICAgIGNvbnN0IGZpbGVzID0gQXJyYXkuZnJvbShldmVudC5kYXRhVHJhbnNmZXIuZmlsZXMpO1xuICAgICAgICB0aGlzLnVwbG9hZEZpbGVzKGZpbGVzKTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgYXN5bmMgdXBsb2FkRmlsZXMoZmlsZXM6IEZpbGVbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgdGhpcy51cGxvYWRQcm9ncmVzcyA9IGZpbGVzLm1hcChmID0+ICh7IG5hbWU6IGYubmFtZSwgc3RhdHVzOiAnVXBsb2FkaW5nLi4uJyB9KSk7XG5cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZmlsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgZmlsZSA9IGZpbGVzW2ldO1xuICAgICAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ2ZpbGUnLCBmaWxlKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdidWNrZXQnLCB0aGlzLnNlbGVjdGVkQnVja2V0KTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdwcmVmaXgnLCB0aGlzLmN1cnJlbnRQcmVmaXgpO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgZmV0Y2goJy9hcGkvdXBsb2FkJywge1xuICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgICBib2R5OiBmb3JtRGF0YVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMudXBsb2FkUHJvZ3Jlc3NbaV0uc3RhdHVzID0gJ+KckyBDb21wbGV0ZSc7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgdGhpcy51cGxvYWRQcm9ncmVzc1tpXS5zdGF0dXMgPSAn4pyXIEZhaWxlZCc7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgc2V0VGltZW91dChhc3luYyAoKSA9PiB7XG4gICAgICAgIHRoaXMudXBsb2FkUHJvZ3Jlc3MgPSBbXTtcbiAgICAgICAgdGhpcy5zaG93VXBsb2FkID0gZmFsc2U7XG4gICAgICAgIGF3YWl0IHRoaXMubG9hZEZpbGVzKCk7XG4gICAgICB9LCAyMDAwKTtcbiAgICB9LFxuXG4gICAgYXN5bmMgcmVmcmVzaCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgIGF3YWl0IHRoaXMubG9hZEZpbGVzKCk7XG4gICAgfSxcblxuICAgIGZpbHRlckJ1Y2tldHMoKTogdm9pZCB7XG4gICAgICAvLyBSZWFjdGl2ZSBjb21wdXRlZCBwcm9wZXJ0eSBoYW5kbGVzIHRoaXNcbiAgICB9LFxuXG4gICAgZmlsdGVyRmlsZXMoKTogdm9pZCB7XG4gICAgICAvLyBSZWFjdGl2ZSBjb21wdXRlZCBwcm9wZXJ0eSBoYW5kbGVzIHRoaXNcbiAgICB9XG4gIH07XG59XG5cbi8vIEF1dG8tcmVnaXN0ZXIgd2l0aCBBbHBpbmUgd2hlbiBpdCBpbml0aWFsaXplc1xuaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gIC8vIFJlZ2lzdGVyIGltbWVkaWF0ZWx5IGlmIEFscGluZSBpcyBhbHJlYWR5IGF2YWlsYWJsZVxuICBpZiAoKHdpbmRvdyBhcyBhbnkpLkFscGluZSkge1xuICAgICh3aW5kb3cgYXMgYW55KS5BbHBpbmUuZGF0YSgnczNFeHBsb3JlcicsIHMzRXhwbG9yZXIpO1xuICB9IGVsc2Uge1xuICAgIC8vIE90aGVyd2lzZSB3YWl0IGZvciBBbHBpbmUgdG8gaW5pdGlhbGl6ZVxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2FscGluZTppbml0JywgKCkgPT4ge1xuICAgICAgKHdpbmRvdyBhcyBhbnkpLkFscGluZS5kYXRhKCdzM0V4cGxvcmVyJywgczNFeHBsb3Jlcik7XG4gICAgfSk7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./apps/server/bucketvore/src/app/client/s3-explorer.client.ts\n");
20
-
21
- /***/ }),
22
-
23
- /***/ "./apps/server/bucketvore/src/app/client/utils/clipboard.client.ts":
24
- /*!*************************************************************************!*\
25
- !*** ./apps/server/bucketvore/src/app/client/utils/clipboard.client.ts ***!
26
- \*************************************************************************/
27
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
28
-
29
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ copyS3PathToClipboard: () => (/* binding */ copyS3PathToClipboard),\n/* harmony export */ copyToClipboard: () => (/* binding */ copyToClipboard)\n/* harmony export */ });\n/**\n * Client-side utility for clipboard operations\n */\nasync function copyToClipboard(text, element) {\n try {\n await navigator.clipboard.writeText(text);\n // Provide visual feedback if element is provided\n if (element) {\n const originalText = element.textContent || '';\n const originalBg = element.style.backgroundColor;\n element.textContent = 'โœ“ Copied!';\n element.style.backgroundColor = 'var(--color-success)';\n setTimeout(() => {\n element.textContent = originalText;\n element.style.backgroundColor = originalBg;\n }, 1500);\n }\n return true;\n }\n catch (error) {\n console.error('Clipboard API failed:', error);\n // Fallback to prompt\n const userCopy = prompt('Copy to clipboard:', text);\n return userCopy !== null;\n }\n}\nasync function copyS3PathToClipboard(bucket, key, element) {\n try {\n // Fetch bucket region\n const response = await fetch(`/api/buckets/${encodeURIComponent(bucket)}/region`);\n const data = await response.json();\n const region = data.region || 'us-east-1';\n // Construct HTTPS URL\n const url = `https://s3.${region}.amazonaws.com/${bucket}/${key}`;\n await copyToClipboard(url, element);\n }\n catch (error) {\n console.error('Error getting S3 URL:', error);\n // Fallback to s3:// protocol\n const s3Path = `s3://${bucket}/${key}`;\n prompt('Copy S3 path (fallback):', s3Path);\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9hcHBzL3NlcnZlci9idWNrZXR2b3JlL3NyYy9hcHAvY2xpZW50L3V0aWxzL2NsaXBib2FyZC5jbGllbnQudHMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTs7R0FFRztBQUVJLEtBQUssVUFBVSxlQUFlLENBQUMsSUFBWSxFQUFFLE9BQXFCO0lBQ3ZFLElBQUksQ0FBQztRQUNILE1BQU0sU0FBUyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFMUMsaURBQWlEO1FBQ2pELElBQUksT0FBTyxFQUFFLENBQUM7WUFDWixNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQztZQUMvQyxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQztZQUVqRCxPQUFPLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztZQUNsQyxPQUFPLENBQUMsS0FBSyxDQUFDLGVBQWUsR0FBRyxzQkFBc0IsQ0FBQztZQUV2RCxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNkLE9BQU8sQ0FBQyxXQUFXLEdBQUcsWUFBWSxDQUFDO2dCQUNuQyxPQUFPLENBQUMsS0FBSyxDQUFDLGVBQWUsR0FBRyxVQUFVLENBQUM7WUFDN0MsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ1gsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixPQUFPLENBQUMsS0FBSyxDQUFDLHVCQUF1QixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRTlDLHFCQUFxQjtRQUNyQixNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDcEQsT0FBTyxRQUFRLEtBQUssSUFBSSxDQUFDO0lBQzNCLENBQUM7QUFDSCxDQUFDO0FBRU0sS0FBSyxVQUFVLHFCQUFxQixDQUN6QyxNQUFjLEVBQ2QsR0FBVyxFQUNYLE9BQXFCO0lBRXJCLElBQUksQ0FBQztRQUNILHNCQUFzQjtRQUN0QixNQUFNLFFBQVEsR0FBRyxNQUFNLEtBQUssQ0FBQyxnQkFBZ0Isa0JBQWtCLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2xGLE1BQU0sSUFBSSxHQUFHLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ25DLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLElBQUksV0FBVyxDQUFDO1FBRTFDLHNCQUFzQjtRQUN0QixNQUFNLEdBQUcsR0FBRyxjQUFjLE1BQU0sa0JBQWtCLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUVsRSxNQUFNLGVBQWUsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixPQUFPLENBQUMsS0FBSyxDQUFDLHVCQUF1QixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRTlDLDZCQUE2QjtRQUM3QixNQUFNLE1BQU0sR0FBRyxRQUFRLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUN2QyxNQUFNLENBQUMsMEJBQTBCLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDN0MsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9vbml2b3JvLy4vYXBwcy9zZXJ2ZXIvYnVja2V0dm9yZS9zcmMvYXBwL2NsaWVudC91dGlscy9jbGlwYm9hcmQuY2xpZW50LnRzP2IzZmUiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDbGllbnQtc2lkZSB1dGlsaXR5IGZvciBjbGlwYm9hcmQgb3BlcmF0aW9uc1xuICovXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjb3B5VG9DbGlwYm9hcmQodGV4dDogc3RyaW5nLCBlbGVtZW50PzogSFRNTEVsZW1lbnQpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgdHJ5IHtcbiAgICBhd2FpdCBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCh0ZXh0KTtcblxuICAgIC8vIFByb3ZpZGUgdmlzdWFsIGZlZWRiYWNrIGlmIGVsZW1lbnQgaXMgcHJvdmlkZWRcbiAgICBpZiAoZWxlbWVudCkge1xuICAgICAgY29uc3Qgb3JpZ2luYWxUZXh0ID0gZWxlbWVudC50ZXh0Q29udGVudCB8fCAnJztcbiAgICAgIGNvbnN0IG9yaWdpbmFsQmcgPSBlbGVtZW50LnN0eWxlLmJhY2tncm91bmRDb2xvcjtcblxuICAgICAgZWxlbWVudC50ZXh0Q29udGVudCA9ICfinJMgQ29waWVkISc7XG4gICAgICBlbGVtZW50LnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICd2YXIoLS1jb2xvci1zdWNjZXNzKSc7XG5cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBlbGVtZW50LnRleHRDb250ZW50ID0gb3JpZ2luYWxUZXh0O1xuICAgICAgICBlbGVtZW50LnN0eWxlLmJhY2tncm91bmRDb2xvciA9IG9yaWdpbmFsQmc7XG4gICAgICB9LCAxNTAwKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBjb25zb2xlLmVycm9yKCdDbGlwYm9hcmQgQVBJIGZhaWxlZDonLCBlcnJvcik7XG5cbiAgICAvLyBGYWxsYmFjayB0byBwcm9tcHRcbiAgICBjb25zdCB1c2VyQ29weSA9IHByb21wdCgnQ29weSB0byBjbGlwYm9hcmQ6JywgdGV4dCk7XG4gICAgcmV0dXJuIHVzZXJDb3B5ICE9PSBudWxsO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjb3B5UzNQYXRoVG9DbGlwYm9hcmQoXG4gIGJ1Y2tldDogc3RyaW5nLFxuICBrZXk6IHN0cmluZyxcbiAgZWxlbWVudD86IEhUTUxFbGVtZW50XG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgdHJ5IHtcbiAgICAvLyBGZXRjaCBidWNrZXQgcmVnaW9uXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgL2FwaS9idWNrZXRzLyR7ZW5jb2RlVVJJQ29tcG9uZW50KGJ1Y2tldCl9L3JlZ2lvbmApO1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XG4gICAgY29uc3QgcmVnaW9uID0gZGF0YS5yZWdpb24gfHwgJ3VzLWVhc3QtMSc7XG5cbiAgICAvLyBDb25zdHJ1Y3QgSFRUUFMgVVJMXG4gICAgY29uc3QgdXJsID0gYGh0dHBzOi8vczMuJHtyZWdpb259LmFtYXpvbmF3cy5jb20vJHtidWNrZXR9LyR7a2V5fWA7XG5cbiAgICBhd2FpdCBjb3B5VG9DbGlwYm9hcmQodXJsLCBlbGVtZW50KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBjb25zb2xlLmVycm9yKCdFcnJvciBnZXR0aW5nIFMzIFVSTDonLCBlcnJvcik7XG5cbiAgICAvLyBGYWxsYmFjayB0byBzMzovLyBwcm90b2NvbFxuICAgIGNvbnN0IHMzUGF0aCA9IGBzMzovLyR7YnVja2V0fS8ke2tleX1gO1xuICAgIHByb21wdCgnQ29weSBTMyBwYXRoIChmYWxsYmFjayk6JywgczNQYXRoKTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./apps/server/bucketvore/src/app/client/utils/clipboard.client.ts\n");
30
-
31
- /***/ })
32
-
33
- /******/ });
34
- /************************************************************************/
35
- /******/ // The module cache
36
- /******/ var __webpack_module_cache__ = {};
37
- /******/
38
- /******/ // The require function
39
- /******/ function __webpack_require__(moduleId) {
40
- /******/ // Check if module is in cache
41
- /******/ var cachedModule = __webpack_module_cache__[moduleId];
42
- /******/ if (cachedModule !== undefined) {
43
- /******/ return cachedModule.exports;
44
- /******/ }
45
- /******/ // Create a new module (and put it into the cache)
46
- /******/ var module = __webpack_module_cache__[moduleId] = {
47
- /******/ // no module.id needed
48
- /******/ // no module.loaded needed
49
- /******/ exports: {}
50
- /******/ };
51
- /******/
52
- /******/ // Execute the module function
53
- /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
54
- /******/
55
- /******/ // Return the exports of the module
56
- /******/ return module.exports;
57
- /******/ }
58
- /******/
59
- /************************************************************************/
60
- /******/ /* webpack/runtime/define property getters */
61
- /******/ (() => {
62
- /******/ // define getter functions for harmony exports
63
- /******/ __webpack_require__.d = (exports, definition) => {
64
- /******/ for(var key in definition) {
65
- /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
66
- /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
67
- /******/ }
68
- /******/ }
69
- /******/ };
70
- /******/ })();
71
- /******/
72
- /******/ /* webpack/runtime/hasOwnProperty shorthand */
73
- /******/ (() => {
74
- /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
75
- /******/ })();
76
- /******/
77
- /******/ /* webpack/runtime/make namespace object */
78
- /******/ (() => {
79
- /******/ // define __esModule on exports
80
- /******/ __webpack_require__.r = (exports) => {
81
- /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
82
- /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
83
- /******/ }
84
- /******/ Object.defineProperty(exports, '__esModule', { value: true });
85
- /******/ };
86
- /******/ })();
87
- /******/
88
- /************************************************************************/
89
- /******/
90
- /******/ // startup
91
- /******/ // Load entry module and return exports
92
- /******/ // This entry module can't be inlined because the eval-source-map devtool is used.
93
- /******/ var __webpack_exports__ = __webpack_require__("./apps/server/bucketvore/src/app/client/s3-explorer.client.ts");
94
- /******/
95
- /******/ })()
96
- ;
package/main.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"main.js","mappings":"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","sources":["webpack://@onivoro/app-server-bucketvore/./apps/server/bucketvore/src/index.ts","webpack://@onivoro/app-server-bucketvore/external commonjs \"@nestjs/core\"","webpack://@onivoro/app-server-bucketvore/external node-commonjs \"path\"","webpack://@onivoro/app-server-bucketvore/./apps/server/bucketvore/src/app/app-server-bucketvore.module.ts","webpack://@onivoro/app-server-bucketvore/external commonjs \"tslib\"","webpack://@onivoro/app-server-bucketvore/external commonjs \"@nestjs/common\"","webpack://@onivoro/app-server-bucketvore/./apps/server/bucketvore/src/app/controllers/app.controller.ts","webpack://@onivoro/app-server-bucketvore/./libs/server/html/src/index.ts","webpack://@onivoro/app-server-bucketvore/./libs/server/html/src/lib/deprecated/a.function.ts","webpack://@onivoro/app-server-bucketvore/./libs/server/html/src/lib/deprecated/html-element-renderer.type.ts","webpack://@onivoro/app-server-bucketvore/./libs/server/html/src/lib/deprecated/html.function.ts","webpack://@onivoro/app-server-bucketvore/./libs/server/html/src/lib/deprecated/tags.ts","webpack://@onivoro/app-server-bucketvore/./libs/server/html/src/lib/deprecated/self-closing-tag.function.ts","webpack://@onivoro/app-server-bucketvore/./libs/server/html/src/lib/deprecated/tag.function.ts","webpack://@onivoro/app-server-bucketvore/./libs/server/html/src/lib/primitives/format-attributes.function.ts","webpack://@onivoro/app-server-bucketvore/./libs/server/html/src/lib/primitives/escape-html-attr.function.ts","webpack://@onivoro/app-server-bucketvore/./libs/server/html/src/lib/primitives/inline-style.function.ts","webpack://@onivoro/app-server-bucketvore/./libs/server/html/src/lib/deprecated/login-button.function.ts","webpack://@onivoro/app-server-bucketvore/./libs/server/html/src/lib/primitives/elements.ts","webpack://@onivoro/app-server-bucketvore/./libs/server/html/src/lib/primitives/element.function.ts","webpack://@onivoro/app-server-bucketvore/./libs/server/html/src/lib/primitives/self-closing-element.function.ts","webpack://@onivoro/app-server-bucketvore/./libs/server/html/src/lib/styles/button-styles.constant.ts","webpack://@onivoro/app-server-bucketvore/./libs/server/html/src/lib/deprecated/self-closing-html-element-renderer.type.ts","webpack://@onivoro/app-server-bucketvore/./libs/server/html/src/lib/styles/font-styles.constant.ts","webpack://@onivoro/app-server-bucketvore/./libs/server/html/src/lib/types/attributes.type.ts","webpack://@onivoro/app-server-bucketvore/./libs/server/html/src/lib/dom/lib/types/css-properties.type.ts","webpack://@onivoro/app-server-bucketvore/./libs/server/html/src/lib/types/element-renderer.type.ts","webpack://@onivoro/app-server-bucketvore/./libs/server/html/src/lib/types/self-closing-element-renderer.type.ts","webpack://@onivoro/app-server-bucketvore/./libs/server/html/src/lib/email-body.function.ts","webpack://@onivoro/app-server-bucketvore/./libs/server/html/src/lib/table.function.ts","webpack://@onivoro/app-server-bucketvore/./libs/server/html/src/lib/dom/index.ts","webpack://@onivoro/app-server-bucketvore/./libs/server/html/src/lib/dom/lib/types/element-props.type.ts","webpack://@onivoro/app-server-bucketvore/./libs/server/html/src/lib/dom/lib/constants/style-manager.constant.ts","webpack://@onivoro/app-server-bucketvore/./libs/server/html/src/lib/dom/lib/functions/as-id.function.ts","webpack://@onivoro/app-server-bucketvore/./libs/server/html/src/lib/dom/lib/functions/as-element-factory.function.ts","webpack://@onivoro/app-server-bucketvore/./libs/server/html/src/lib/dom/lib/functions/extract-style.function.ts","webpack://@onivoro/app-server-bucketvore/./libs/server/html/src/lib/dom/lib/functions/set-element-attributes.function.ts","webpack://@onivoro/app-server-bucketvore/./libs/server/html/src/lib/dom/lib/functions/set-element-style.function.ts","webpack://@onivoro/app-server-bucketvore/./libs/server/html/src/lib/dom/lib/functions/set-element-styles.function.ts","webpack://@onivoro/app-server-bucketvore/./libs/server/html/src/lib/dom/lib/functions/style-on.function.ts","webpack://@onivoro/app-server-bucketvore/./libs/server/html/src/lib/dom/lib/functions/style-on-focus.function.ts","webpack://@onivoro/app-server-bucketvore/./libs/server/html/src/lib/dom/lib/functions/style-on-pointer-enter.function.ts","webpack://@onivoro/app-server-bucketvore/./libs/server/html/src/lib/dom/lib/functions/styled.function.ts","webpack://@onivoro/app-server-bucketvore/./apps/server/bucketvore/src/app/app-server-bucketvore-config.class.ts","webpack://@onivoro/app-server-bucketvore/./apps/server/bucketvore/src/app/styles/design-system.ts","webpack://@onivoro/app-server-bucketvore/./apps/server/bucketvore/src/app/controllers/buckets.controller.ts","webpack://@onivoro/app-server-bucketvore/./apps/server/bucketvore/src/app/services/s3.service.ts","webpack://@onivoro/app-server-bucketvore/external commonjs \"@aws-sdk/client-s3\"","webpack://@onivoro/app-server-bucketvore/external commonjs \"@aws-sdk/s3-request-presigner\"","webpack://@onivoro/app-server-bucketvore/external commonjs \"@aws-sdk/credential-providers\"","webpack://@onivoro/app-server-bucketvore/./apps/server/bucketvore/src/app/services/html-generator.service.ts","webpack://@onivoro/app-server-bucketvore/./apps/server/bucketvore/src/app/services/file-preview.service.ts","webpack://@onivoro/app-server-bucketvore/./apps/server/bucketvore/src/app/controllers/files.controller.ts","webpack://@onivoro/app-server-bucketvore/./apps/server/bucketvore/src/app/controllers/upload.controller.ts","webpack://@onivoro/app-server-bucketvore/external commonjs \"@nestjs/platform-express\"","webpack://@onivoro/app-server-bucketvore/webpack/bootstrap","webpack://@onivoro/app-server-bucketvore/./apps/server/bucketvore/src/main.ts"],"sourcesContent":["import { NestFactory } from '@nestjs/core';\nimport { NestExpressApplication } from '@nestjs/platform-express';\nimport { join } from 'path';\nimport { AppServerBucketvoreModule } from './app/app-server-bucketvore.module';\nimport { AppServerBucketvoreConfig } from './app/app-server-bucketvore-config.class';\n\nexport async function bootstrap() {\n const app = await NestFactory.create<NestExpressApplication>(\n AppServerBucketvoreModule,\n { logger: console }\n );\n\n // Serve static assets (including client bundles)\n app.useStaticAssets(join(__dirname, 'assets'), {\n prefix: '/assets/',\n });\n\n const port = Number(new AppServerBucketvoreConfig().HTTP_PORT);\n await app.listen(port);\n console.log(`BucketVore available at: http://localhost:${port}`);\n}\n","module.exports = require(\"@nestjs/core\");","module.exports = require(\"path\");","import { Module } from '@nestjs/common';\nimport { AppController } from './controllers/app.controller';\nimport { BucketsController } from './controllers/buckets.controller';\nimport { FilesController } from './controllers/files.controller';\nimport { UploadController } from './controllers/upload.controller';\nimport { AppServerBucketvoreConfig } from './app-server-bucketvore-config.class';\nimport { S3Client } from '@aws-sdk/client-s3';\nimport { fromIni } from '@aws-sdk/credential-providers';\nimport { S3Service } from './services/s3.service';\nimport { HtmlGeneratorService } from './services/html-generator.service';\nimport { FilePreviewService } from './services/file-preview.service';\n\nconst bucketvoreConfig = new AppServerBucketvoreConfig();\n\n@Module({\n imports: [],\n controllers: [\n AppController,\n BucketsController,\n FilesController,\n UploadController,\n ],\n providers: [\n S3Service,\n HtmlGeneratorService,\n FilePreviewService,\n { provide: AppServerBucketvoreConfig, useValue: bucketvoreConfig },\n {\n provide: S3Client,\n useFactory: () => {\n const clientConfig: any = {\n region: 'us-east-1', // Default region for initial client (bucket regions are auto-detected)\n };\n\n if (bucketvoreConfig.AWS_PROFILE) {\n clientConfig.credentials = fromIni({ profile: bucketvoreConfig.AWS_PROFILE });\n }\n\n return new S3Client(clientConfig);\n }\n }\n ]\n})\nexport class AppServerBucketvoreModule {}\n","module.exports = require(\"tslib\");","module.exports = require(\"@nestjs/common\");","import { Controller, Get } from '@nestjs/common';\nimport { $html, $head, $title, $meta, $script, $style, $body, $div, $h1, $p, $header, $aside, $main, $button, $input, $link } from '@onivoro/server-html';\nimport { AppServerBucketvoreConfig } from '../app-server-bucketvore-config.class';\nimport { DESIGN_SYSTEM_STYLES } from '../styles/design-system';\n\n@Controller()\nexport class AppController {\n constructor(private config: AppServerBucketvoreConfig) {}\n\n @Get()\n get() {\n return $html({\n lang: 'en',\n children: [\n $head({\n children: [\n $meta({ charset: 'UTF-8' }),\n $meta({ name: 'viewport', content: 'width=device-width, initial-scale=1.0' }),\n $title({ textContent: 'BucketVore - S3 File Explorer' }),\n $link({ rel: 'icon', type: 'image/x-icon', href: '/assets/images/bear.ico' }),\n $style({ textContent: DESIGN_SYSTEM_STYLES }),\n // Load our Alpine component first\n $script({ src: '/assets/scripts/s3-explorer.bundle.js' }),\n // Then load Alpine.js (will auto-start after DOM ready)\n $script({ src: 'https://unpkg.com/alpinejs@3.13.5/dist/cdn.min.js', defer: true })\n ]\n }),\n $body({\n 'x-data': 's3Explorer()',\n 'x-init': 'init()',\n children: [\n // Header\n $header({\n children: [\n $div({\n className: 'header-left',\n children: [\n $div({\n className: 'header-info',\n children: [\n $h1({ textContent: '๐Ÿชฃ BucketVore' }),\n $p({\n 'x-show': 'selectedBucket',\n 'x-text': 'selectedBucket',\n textContent: 'Select a bucket'\n })\n ]\n })\n ]\n }),\n $div({\n className: 'header-actions',\n 'x-show': 'selectedBucket',\n children: [\n $button({\n className: 'btn',\n '@click': 'showUpload = true',\n textContent: 'โฌ†๏ธ Upload'\n }),\n $button({\n className: 'btn secondary',\n '@click': 'refresh()',\n textContent: '๐Ÿ”„ Refresh'\n })\n ]\n })\n ]\n }),\n\n $div({\n className: 'container',\n children: [\n // Sidebar - Bucket List\n $aside({\n children: [\n $div({\n className: 'sidebar-header',\n children: [\n $h1({ textContent: '๐Ÿ“‹ Buckets', style: { fontSize: 'var(--size-sm)', marginBottom: 'var(--space-3)' } }),\n $input({\n type: 'text',\n placeholder: 'Filter buckets...',\n 'x-model': 'bucketFilter',\n '@input': 'filterBuckets()',\n className: 'filter-input',\n style: { width: '100%', padding: 'var(--space-2)', borderRadius: 'var(--radius-sm)', border: '1px solid var(--color-border)', backgroundColor: 'var(--color-bg-tertiary)', color: 'var(--color-text-primary)', fontSize: 'var(--size-sm)' }\n })\n ]\n }),\n $div({\n className: 'bucket-list',\n 'x-html': 'filteredBucketsHtml'\n })\n ]\n }),\n\n // Main Content - File Explorer\n $main({\n children: [\n // Toolbar with breadcrumbs\n $div({\n className: 'toolbar',\n 'x-show': 'selectedBucket',\n children: [\n $div({\n style: { flex: '1', display: 'flex', flexDirection: 'column', gap: 'var(--space-2)' },\n children: [\n $div({\n 'x-html': 'breadcrumbsHtml'\n }),\n $input({\n type: 'text',\n placeholder: 'Filter files and folders...',\n 'x-model': 'fileFilter',\n '@input': 'filterFiles()',\n className: 'filter-input',\n style: { width: '100%', maxWidth: '400px', padding: 'var(--space-2)', borderRadius: 'var(--radius-sm)', border: '1px solid var(--color-border)', backgroundColor: 'var(--color-bg-tertiary)', color: 'var(--color-text-primary)', fontSize: 'var(--size-sm)' }\n })\n ]\n }),\n $div({\n className: 'toolbar-actions',\n children: [\n $button({\n className: 'btn-icon',\n '@click': \"viewMode = viewMode === 'list' ? 'grid' : 'list'\",\n 'x-text': \"viewMode === 'list' ? 'โŠž' : 'โ˜ฐ'\",\n title: 'Toggle view'\n })\n ]\n })\n ]\n }),\n\n // File Explorer\n $div({\n className: 'file-explorer',\n children: [\n $div({\n className: 'file-list',\n 'x-html': 'filteredFilesHtml'\n })\n ]\n })\n ]\n })\n ]\n }),\n\n // Upload Modal\n $div({\n className: 'modal-overlay',\n 'x-show': 'showUpload',\n '@click.self': 'showUpload = false',\n style: { display: 'none' },\n children: [\n $div({\n className: 'modal',\n style: { width: '500px' },\n children: [\n $div({\n className: 'preview-header',\n children: [\n $h1({ textContent: 'Upload Files', style: { fontSize: 'var(--size-lg)', margin: 0 } }),\n $button({\n className: 'btn-close',\n '@click': 'showUpload = false',\n textContent: 'โœ•'\n })\n ]\n }),\n $div({\n className: 'preview-content',\n children: [\n $div({\n className: 'upload-zone',\n '@click': '$refs.fileInput.click()',\n '@drop.prevent': 'handleDrop($event)',\n '@dragover.prevent': \"$el.classList.add('drag-over')\",\n '@dragleave.prevent': \"$el.classList.remove('drag-over')\",\n children: [\n $div({ className: 'upload-zone-icon', textContent: '๐Ÿ“' }),\n $p({ textContent: 'Click to select files or drag and drop' }),\n $input({\n type: 'file',\n multiple: true,\n 'x-ref': 'fileInput',\n '@change': 'handleFileSelect($event)'\n })\n ]\n }),\n $div({\n 'x-show': 'uploadProgress.length > 0',\n style: { marginTop: 'var(--space-4)' },\n children: [\n $h1({ textContent: 'Uploading...', style: { fontSize: 'var(--size-sm)', marginBottom: 'var(--space-2)' } }),\n $div({\n 'x-html': 'uploadProgressHtml'\n })\n ]\n })\n ]\n })\n ]\n })\n ]\n }),\n\n // Preview Modal\n $div({\n className: 'modal-overlay',\n 'x-show': 'showPreview',\n '@click.self': 'closePreview()',\n style: { display: 'none' },\n children: [\n $div({\n className: 'modal',\n style: { maxWidth: '95vw', maxHeight: '95vh', width: '95vw' },\n 'x-html': 'previewHtml'\n })\n ]\n }),\n\n // Load client bundle at end of body\n $script({ src: '/assets/scripts/s3-explorer.bundle.js' })\n ]\n })\n ]\n });\n }\n}\n","export * from './lib/deprecated/a.function';\nexport * from './lib/deprecated/html-element-renderer.type';\nexport * from './lib/deprecated/html.function';\nexport * from './lib/deprecated/login-button.function';\nexport * from './lib/deprecated/self-closing-html-element-renderer.type';\nexport * from './lib/deprecated/self-closing-tag.function';\nexport * from './lib/deprecated/tag.function';\nexport * from './lib/deprecated/tags';\n\nexport * from './lib/primitives/element.function';\nexport * from './lib/primitives/elements';\nexport * from './lib/primitives/format-attributes.function';\nexport * from './lib/primitives/inline-style.function';\nexport * from './lib/primitives/self-closing-element.function';\n\nexport * from './lib/styles/button-styles.constant';\nexport * from './lib/styles/font-styles.constant';\n\nexport * from './lib/types/attributes.type';\nexport * from './lib/types/element-renderer.type';\nexport * from './lib/types/self-closing-element-renderer.type';\n\nexport * from './lib/email-body.function';\nexport * from './lib/table.function';\nexport * from './lib/dom';","export function a(text: string, href: string, cssClass?: string) {\n const classExp = cssClass ? `class=\"${cssClass}\"` : '';\n return `<a target=\"_blank\" href=\"${href}\" ${classExp}>${text}</a>`;\n}\n","export type THtmlElementRenderer = (\n content: Array<string | number>,\n cssClass?: string,\n attributes?: Record<string, any>,\n styles?: Record<string, string>,\n) => string;","import { _body as body, _h1 as h1, _h2 as h2, _head as head, _header as header, _htm as htm, _main as main, _style as style } from './tags';\n\nexport function html(\n title: string,\n subtitle: string,\n markup: Array<string | number>,\n logoUrl?: string\n) {\n return htm([\n head([\n style([\n 'body {',\n 'padding: 64px;',\n `font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";`,\n `font-size: 1rem;`,\n `-webkit-font-smoothing: antialiased;`,\n `-moz-osx-font-smoothing: grayscale;`,\n 'color: rgb(34, 30, 31);',\n '}',\n 'h1, h2, h3, h4, pre { color: rgb(34, 30, 31) !important; }',\n 'td, th { text-align: left; padding: 8px;}',\n 'table { border-collapse: collapse; width: 100%;}',\n 'tbody { border-width: 1px; border-style: solid; border-left-style: none; border-right-style: none; }',\n '.focal, a { padding: 12px 24px; font-weight: bold; display: block; text-align: center; border-radius: 4px; }',\n '.mw-880 { max-width: 880px !important; margin: auto; }',\n '.mw-440 { max-width: 440px !important; margin: auto; }',\n 'pre { padding: 12px 24px; font-weight: bold; display: block; text-align: center; border-radius: 4px; border: solid 1px; }',\n 'a { max-width: 240px; }',\n '.bg-gray { background-color: #efefef; }',\n '.drop-shadow, .button { filter: drop-shadow(2px 2px 1px rgba(0, 0, 0, 0.3)); }',\n '.button { text-decoration: none; margin: 32px 0; background-color: rgb(205, 62, 71); color: white !important; }',\n ]),\n ]),\n body([\n header(\n [\n logoUrl\n ? `<img height=\"64\" width=\"auto\" src=\"${logoUrl}\" />`\n : undefined,\n h1([title]),\n h2([subtitle]),\n ].filter(Boolean) as string[]\n ),\n main(markup),\n ]),\n ]);\n}\n","import { THtmlElementRenderer } from \"./html-element-renderer.type\";\nimport { TSelfClosingHtmlElementRenderer } from \"./self-closing-html-element-renderer.type\";\nimport { selfClosingTag } from \"./self-closing-tag.function\";\nimport { tag } from \"./tag.function\";\n\nexport const _body: THtmlElementRenderer = tag.bind(null, 'body');\nexport const _div: THtmlElementRenderer = tag.bind(null, 'div');\nexport const _h1: THtmlElementRenderer = tag.bind(null, 'h1');\nexport const _h2: THtmlElementRenderer = tag.bind(null, 'h2');\nexport const _h3: THtmlElementRenderer = tag.bind(null, 'h3');\nexport const _h4: THtmlElementRenderer = tag.bind(null, 'h4');\nexport const _h5: THtmlElementRenderer = tag.bind(null, 'h5');\nexport const _h6: THtmlElementRenderer = tag.bind(null, 'h6');\nexport const _head: THtmlElementRenderer = tag.bind(null, 'head');\nexport const _header: THtmlElementRenderer = tag.bind(null, 'header');\nexport const _htm: THtmlElementRenderer = tag.bind(null, 'html');\nexport const _img: TSelfClosingHtmlElementRenderer = selfClosingTag.bind(null, 'img');\nexport const _main: THtmlElementRenderer = tag.bind(null, 'main');\nexport const _p: THtmlElementRenderer = tag.bind(null, 'p');\nexport const _pre: THtmlElementRenderer = tag.bind(null, 'pre');\nexport const _tab: THtmlElementRenderer = tag.bind(null, 'table');\nexport const _tbody: THtmlElementRenderer = tag.bind(null, 'tbody');\nexport const _td: THtmlElementRenderer = tag.bind(null, 'td');\nexport const _th: THtmlElementRenderer = tag.bind(null, 'th');\nexport const _thead: THtmlElementRenderer = tag.bind(null, 'thead');\nexport const _tr: THtmlElementRenderer = tag.bind(null, 'tr');\n\nexport const _style = tag.bind(null, 'style');\n","import { tag as tagFunction } from \"./tag.function\";\n\nexport function selfClosingTag(\n tag: string,\n cssClass?: string,\n attributes?: Record<string, any>,\n styles?: Record<string, string>,\n) {\n return tagFunction(\n tag,\n [],\n cssClass,\n attributes,\n styles,\n ).replace(`></${tag}>`, '/>')\n}","import { formatAttributes } from \"../primitives/format-attributes.function\";\nimport { inlineStyle } from \"../primitives/inline-style.function\";\n\nexport function tag(\n tag: string,\n content: Array<string | number>,\n cssClass?: string,\n attributes?: Record<string, any>,\n styles?: Record<string, string>,\n) {\n const classExp = cssClass ? ` class=\"${cssClass}\"` : '';\n const attributesExp = attributes ? ` ${formatAttributes(attributes)}` : '';\n const styleExp = styles ? ` ${inlineStyle(styles)}` : '';\n\n return `<${tag}${classExp}${attributesExp}${styleExp}>${content.join?.('')}</${tag}>`;\n}\n","import { escapeHtmlAttr } from \"./escape-html-attr.function\";\n\nexport function formatAttributes(attributes?: Record<string, any>) {\n if(!attributes) {\n return '';\n }\n\n return Object.entries(attributes)\n .map(([k, v]) => `${k}=\"${escapeHtmlAttr(v)}\"`)\n .join(' ');\n}\n","export function escapeHtmlAttr(str: string): string {\n return String(str)\n .replace(/&/g, '&amp;')\n .replace(/\"/g, '&quot;')\n .replace(/'/g, '&#39;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;');\n}","import { CSSProperties } from '../types/attributes.type';\n\nexport function inlineStyle(styles: CSSProperties): string {\n const rules = Object.entries(styles)\n .filter(([, v]) => (v != null) && (v != undefined))\n .map(([k, v]) => {\n // convert camelCase property names to kebab-case\n const prop = k.replace(/([A-Z])/g, '-$1').toLowerCase();\n return `${prop}: ${v};`;\n })\n .join(' ');\n return `style=\"${rules}\"`;\n}\n","import { anchor } from '../primitives/elements';\nimport { buttonStyles } from '../styles/button-styles.constant';\n\nexport function loginButton(text: string, href: string, extraStyles?: Record<string, string>) {\n return anchor([text], {\n href,\n style: {\n ...buttonStyles,\n ...(extraStyles || {})\n }\n });\n}\n","import { TElementRenderer } from \"../types/element-renderer.type\";\nimport { element } from \"./element.function\";\nimport { TSelfClosingElementRenderer } from \"../types/self-closing-element-renderer.type\";\nimport { selfClosingElement } from \"./self-closing-element.function\";\nimport { buttonStyles } from '../styles/button-styles.constant';\n\nexport const anchor: TElementRenderer = (content, attributes) => element('a', content, { ...attributes, style: { ...buttonStyles, ...attributes?.style } });\nexport const body: TElementRenderer = element.bind(null, 'body');\nexport const button: TElementRenderer = (content, attributes) => element('button', content, { ...attributes, style: { ...buttonStyles, ...attributes?.style } });\nexport const div: TElementRenderer = element.bind(null, 'div');\nexport const h1: TElementRenderer = element.bind(null, 'h1');\nexport const h2: TElementRenderer = element.bind(null, 'h2');\nexport const h3: TElementRenderer = element.bind(null, 'h3');\nexport const h4: TElementRenderer = element.bind(null, 'h4');\nexport const h5: TElementRenderer = element.bind(null, 'h5');\nexport const h6: TElementRenderer = element.bind(null, 'h6');\nexport const head: TElementRenderer = element.bind(null, 'head');\nexport const header: TElementRenderer = element.bind(null, 'header');\nexport const htm: TElementRenderer = element.bind(null, 'html');\nexport const img: TSelfClosingElementRenderer = selfClosingElement.bind(null, 'img');\nexport const main: TElementRenderer = element.bind(null, 'main');\nexport const p: TElementRenderer = element.bind(null, 'p');\nexport const pre: TElementRenderer = element.bind(null, 'pre');\nexport const tab: TElementRenderer = element.bind(null, 'table');\nexport const tbody: TElementRenderer = element.bind(null, 'tbody');\nexport const td: TElementRenderer = element.bind(null, 'td');\nexport const th: TElementRenderer = element.bind(null, 'th');\nexport const thead: TElementRenderer = element.bind(null, 'thead');\nexport const tr: TElementRenderer = element.bind(null, 'tr');\n\n// todo: make this take a Record<string, Record<string, string>> instead of the terrible raw string formatting used now\n// todo: apply kebab-casing to camelCased keys so that consumers can write { fontWeight: 600 } instead of {'font-weight': 600 } (do this for all style properties of primitives' attributes)\nexport const style = element.bind(null, 'style');\n","import { TAttributes } from \"../types/attributes.type\";\nimport { formatAttributes } from \"./format-attributes.function\";\nimport { inlineStyle } from \"./inline-style.function\";\n\nexport function element(\n tag: string,\n content: Array<string | number>,\n attributes?: TAttributes\n) {\n const { cssClass = '', style = undefined, ...attrs } = attributes || {};\n const classExp = cssClass ? ` class=\"${cssClass}\"` : '';\n const attributesExp = attrs ? ` ${formatAttributes(attrs)}` : '';\n const styleExp = style ? ` ${inlineStyle(style)}` : '';\n\n return `<${tag}${classExp}${attributesExp}${styleExp}>${content.join?.('')}</${tag}>`;\n}\n","import { TAttributes } from \"../types/attributes.type\";\nimport { element } from \"./element.function\";\n\nexport function selfClosingElement(\n tag: string,\n attributes?: TAttributes,\n) {\n return element(\n tag,\n [],\n attributes,\n ).replace(`></${tag}>`, '/>')\n}","export const buttonStyles = {\n padding: '1rem 1.5rem',\n border: 'solid 1px',\n 'border-radius': '4px',\n display: 'inline-block',\n 'font-weight': '600',\n 'text-align': 'center',\n 'text-decoration': 'none',\n 'box-sizing': 'border-box',\n color: 'inherit'\n};","export type TSelfClosingHtmlElementRenderer = (\n cssClass?: string,\n attributes?: Record<string, any>,\n styles?: Record<string, string>,\n) => string;","export const fontStyles = {\n 'font-family': `-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol' !important`,\n 'font-size': `1rem;`,\n '-webkit-font-smoothing': `antialiased`,\n '-moz-osx-font-smoothing': `grayscale`,\n color: 'rgba(0, 0, 0, 0.5) !important',\n};","import { CSSProperties } from '../dom/lib/types/css-properties.type';\nexport { CSSProperties };\n\nexport type TAttributes =\n Record<string, any> & {\n /** CSS class names */\n cssClass?: string;\n /** Inline style properties */\n style?: CSSProperties;\n };\n","import { Properties } from 'csstype';\n\n/**\n * CSSProperties maps CSS property names (camelCased or kebab-cased) to values.\n * Uses the csstype definitions for full CSS coverage.\n */\n/**\n * CSSProperties maps CSS property names to their values (string or number).\n * Extends the standard csstype Properties with an index signature to allow\n * kebab-case properties, custom properties, and vendor extensions.\n */\nexport interface CSSProperties extends Properties<string | number> {\n [key: string]: string | number | undefined;\n}","import { TAttributes } from \"./attributes.type\";\n\nexport type TElementRenderer = (\n content: Array<string | number>,\n attributes?: TAttributes,\n) => string;","import { TAttributes } from \"./attributes.type\";\n\nexport type TSelfClosingElementRenderer = (\n attributes?: TAttributes,\n) => string;","import { TAttributes } from './types/attributes.type';\nimport { div, h1, h2 } from './primitives/elements';\nimport { fontStyles } from './styles/font-styles.constant';\n\nexport function emailBody(\n title: string,\n subtitle: string,\n markup: Array<string | number>,\n logoUrl?: string,\n extraStyles: TAttributes['style'] = {},\n) {\n return div([\n div([\n div(\n [\n logoUrl\n ? `<img height=\"64\" width=\"auto\" src=\"${logoUrl}\" />`\n : undefined,\n title ? h1([title]) : undefined,\n subtitle ? h2([subtitle]) : undefined,\n ].filter(Boolean) as string[]\n ),\n div(markup),\n ], {\n style: {\n ...fontStyles,\n ...(extraStyles || {})\n }\n }),\n ]);\n}\n","import { tab, tbody, td, th, thead, tr } from './primitives/elements';\n\nconst padding = '0.5rem';\nconst color = 'inherit';\nexport function table(columns: string[], rows: Array<any[]>) {\n return tab([\n thead([tr(columns.map((c) => th([c], { style: { 'text-align': 'left', padding, color } })), {style: { 'border-bottom-color': color, 'border-bottom-style': 'solid', 'border-top-style': 'none', 'border-left-style': 'none', 'border-right-style': 'none'}})]),\n tbody(\n rows.map((row, i) =>\n tr(\n row.map((cell) => td([cell], { style: { padding, color } })),\n { style: { 'background-color': i % 2 ? '' : 'rgba(0, 0, 0, 0.2)', padding, color } }\n )\n )\n ),\n ], {style: { 'border-collapse': 'collapse', width: '100%', color}});\n}\n","import { element } from '../primitives/element.function';\nimport { selfClosingElement } from '../primitives/self-closing-element.function';\n\nimport { TAttributes } from '../types/attributes.type';\n\nimport { CSSProperties } from './lib/types/css-properties.type';\nimport { TElementProps } from './lib/types/element-props.type';\n\nimport { styleManager } from './lib/constants/style-manager.constant';\nimport { asId } from './lib/functions/as-id.function';\nimport { asElementFactory } from './lib/functions/as-element-factory.function';\nimport { extractStyle } from './lib/functions/extract-style.function';\nimport { setAttrs } from './lib/functions/set-element-attributes.function';\nimport { setElementStyle } from './lib/functions/set-element-style.function';\nimport { setElementStyles } from './lib/functions/set-element-styles.function';\nimport { styleOn } from './lib/functions/style-on.function';\nimport { styleOnFocus } from './lib/functions/style-on-focus.function';\nimport { styleOnPointerEnter } from './lib/functions/style-on-pointer-enter.function';\nimport { styled } from './lib/functions/styled.function';\n\nexport { CSSProperties };\nexport { TElementProps };\nexport { styleManager };\nexport { asId };\nexport { asElementFactory };\nexport { extractStyle };\nexport { setAttrs };\nexport { setElementStyle };\nexport { setElementStyles };\nexport { styleOn };\nexport { styleOnFocus };\nexport { styleOnPointerEnter };\nexport { styled };\n\n// Element factories\nexport const $a = asElementFactory(element.bind(null, 'a'));\nexport const $abbr = asElementFactory(element.bind(null, 'abbr'));\nexport const $address = asElementFactory(element.bind(null, 'address'));\nexport const $area = asElementFactory((_, attrs) => selfClosingElement('area', attrs));\nexport const $article = asElementFactory(element.bind(null, 'article'));\nexport const $aside = asElementFactory(element.bind(null, 'aside'));\nexport const $audio = asElementFactory(element.bind(null, 'audio'));\nexport const $b = asElementFactory(element.bind(null, 'b'));\nexport const $base = asElementFactory((_, attrs) => selfClosingElement('base', attrs));\nexport const $bdi = asElementFactory(element.bind(null, 'bdi'));\nexport const $bdo = asElementFactory(element.bind(null, 'bdo'));\nexport const $blockquote = asElementFactory(element.bind(null, 'blockquote'));\nexport const $body = asElementFactory(element.bind(null, 'body'));\nexport const $br = asElementFactory((_, attrs) => selfClosingElement('br', attrs));\nexport const $button = asElementFactory(element.bind(null, 'button'));\nexport const $canvas = asElementFactory(element.bind(null, 'canvas'));\nexport const $caption = asElementFactory(element.bind(null, 'caption'));\nexport const $cite = asElementFactory(element.bind(null, 'cite'));\nexport const $code = asElementFactory(element.bind(null, 'code'));\nexport const $col = asElementFactory((_, attrs) => selfClosingElement('col', attrs));\nexport const $colgroup = asElementFactory(element.bind(null, 'colgroup'));\nexport const $data = asElementFactory(element.bind(null, 'data'));\nexport const $datalist = asElementFactory(element.bind(null, 'datalist'));\nexport const $dd = asElementFactory(element.bind(null, 'dd'));\nexport const $del = asElementFactory(element.bind(null, 'del'));\nexport const $details = asElementFactory(element.bind(null, 'details'));\nexport const $dfn = asElementFactory(element.bind(null, 'dfn'));\nexport const $dialog = asElementFactory(element.bind(null, 'dialog'));\nexport const $div = asElementFactory(element.bind(null, 'div'));\nexport const $dl = asElementFactory(element.bind(null, 'dl'));\nexport const $dt = asElementFactory(element.bind(null, 'dt'));\nexport const $em = asElementFactory(element.bind(null, 'em'));\nexport const $embed = asElementFactory((_, attrs) => selfClosingElement('embed', attrs));\nexport const $fieldset = asElementFactory(element.bind(null, 'fieldset'));\nexport const $figcaption = asElementFactory(element.bind(null, 'figcaption'));\nexport const $figure = asElementFactory(element.bind(null, 'figure'));\nexport const $footer = asElementFactory(element.bind(null, 'footer'));\nexport const $form = asElementFactory(element.bind(null, 'form'));\nexport const $h1 = asElementFactory(element.bind(null, 'h1'));\nexport const $h2 = asElementFactory(element.bind(null, 'h2'));\nexport const $h3 = asElementFactory(element.bind(null, 'h3'));\nexport const $h4 = asElementFactory(element.bind(null, 'h4'));\nexport const $h5 = asElementFactory(element.bind(null, 'h5'));\nexport const $h6 = asElementFactory(element.bind(null, 'h6'));\nexport const $head = asElementFactory(element.bind(null, 'head'));\nexport const $header = asElementFactory(element.bind(null, 'header'));\nexport const $hgroup = asElementFactory(element.bind(null, 'hgroup'));\nexport const $hr = asElementFactory((_, attrs) => selfClosingElement('hr', attrs));\nexport const $html = asElementFactory(element.bind(null, 'html'));\nexport const $i = asElementFactory(element.bind(null, 'i'));\nexport const $iframe = asElementFactory(element.bind(null, 'iframe'));\nexport const $img = asElementFactory((_, attrs) => selfClosingElement('img', attrs));\nexport const $input = asElementFactory((_, attrs) => selfClosingElement('input', attrs));\nexport const $ins = asElementFactory(element.bind(null, 'ins'));\nexport const $kbd = asElementFactory(element.bind(null, 'kbd'));\nexport const $label = asElementFactory(element.bind(null, 'label'));\nexport const $legend = asElementFactory(element.bind(null, 'legend'));\nexport const $li = asElementFactory(element.bind(null, 'li'));\nexport const $link = asElementFactory((_, attrs) => selfClosingElement('link', attrs));\nexport const $main = asElementFactory(element.bind(null, 'main'));\nexport const $map = asElementFactory(element.bind(null, 'map'));\nexport const $mark = asElementFactory(element.bind(null, 'mark'));\nexport const $math = asElementFactory(element.bind(null, 'math'));\nexport const $menu = asElementFactory(element.bind(null, 'menu'));\nexport const $meta = asElementFactory((_, attrs) => selfClosingElement('meta', attrs));\nexport const $meter = asElementFactory(element.bind(null, 'meter'));\nexport const $nav = asElementFactory(element.bind(null, 'nav'));\nexport const $noscript = asElementFactory(element.bind(null, 'noscript'));\nexport const $object = asElementFactory(element.bind(null, 'object'));\nexport const $ol = asElementFactory(element.bind(null, 'ol'));\nexport const $optgroup = asElementFactory(element.bind(null, 'optgroup'));\nexport const $option = asElementFactory(element.bind(null, 'option'));\nexport const $output = asElementFactory(element.bind(null, 'output'));\nexport const $p = asElementFactory(element.bind(null, 'p'));\nexport const $picture = asElementFactory(element.bind(null, 'picture'));\nexport const $pre = asElementFactory(element.bind(null, 'pre'));\nexport const $progress = asElementFactory(element.bind(null, 'progress'));\nexport const $q = asElementFactory(element.bind(null, 'q'));\nexport const $rp = asElementFactory(element.bind(null, 'rp'));\nexport const $rt = asElementFactory(element.bind(null, 'rt'));\nexport const $ruby = asElementFactory(element.bind(null, 'ruby'));\nexport const $s = asElementFactory(element.bind(null, 's'));\nexport const $samp = asElementFactory(element.bind(null, 'samp'));\nexport const $script = asElementFactory(element.bind(null, 'script'));\nexport const $section = asElementFactory(element.bind(null, 'section'));\nexport const $select = asElementFactory(element.bind(null, 'select'));\nexport const $slot = asElementFactory(element.bind(null, 'slot'));\nexport const $small = asElementFactory(element.bind(null, 'small'));\nexport const $source = asElementFactory((_, attrs) => selfClosingElement('source', attrs));\nexport const $span = asElementFactory(element.bind(null, 'span'));\nexport const $strong = asElementFactory(element.bind(null, 'strong'));\nexport const $style = asElementFactory(element.bind(null, 'style'));\nexport const $sub = asElementFactory(element.bind(null, 'sub'));\nexport const $summary = asElementFactory(element.bind(null, 'summary'));\nexport const $sup = asElementFactory(element.bind(null, 'sup'));\nexport const $table = asElementFactory(element.bind(null, 'table'));\nexport const $tbody = asElementFactory(element.bind(null, 'tbody'));\nexport const $td = asElementFactory(element.bind(null, 'td'));\nexport const $template = asElementFactory(element.bind(null, 'template'));\nexport const $textarea = asElementFactory(element.bind(null, 'textarea'));\nexport const $tfoot = asElementFactory(element.bind(null, 'tfoot'));\nexport const $th = asElementFactory(element.bind(null, 'th'));\nexport const $thead = asElementFactory(element.bind(null, 'thead'));\nexport const $time = asElementFactory(element.bind(null, 'time'));\nexport const $title = asElementFactory(element.bind(null, 'title'));\nexport const $tr = asElementFactory(element.bind(null, 'tr'));\nexport const $track = asElementFactory((_, attrs) => selfClosingElement('track', attrs));\nexport const $u = asElementFactory(element.bind(null, 'u'));\nexport const $ul = asElementFactory(element.bind(null, 'ul'));\nexport const $var = asElementFactory(element.bind(null, 'var'));\nexport const $video = asElementFactory(element.bind(null, 'video'));\nexport const $wbr = asElementFactory((_, attrs) => selfClosingElement('wbr', attrs));","import { CSSProperties } from '../types/css-properties.type';\n\nexport interface TElementProps {\n style?: CSSProperties;\n className?: string;\n children?: Array<string | number>;\n $$?: Array<string | number>;\n textContent?: string;\n innerHTML?: string;\n [key: string]: any;\n}","export interface TStyleManager {\n applyStyle(css: string): string | null;\n getStyles(): string;\n}\n\nexport class StyleManager {\n private static styleCache = new Map<string, string>();\n private static styles: string[] = [];\n\n static applyStyle(css: string): string | null {\n if (!css) return null;\n const normalized = css.replace(/\\s+/g, ' ').trim();\n if (StyleManager.styleCache.has(normalized)) {\n return StyleManager.styleCache.get(normalized)!;\n }\n const className =\n 'sc-' +\n Buffer.from(normalized).toString('base64').slice(0, 8).replace(/[^a-zA-Z0-9]/g, '') +\n '-' +\n Math.random().toString(36).slice(2, 6);\n StyleManager.styleCache.set(normalized, className);\n StyleManager.styles.push(`.${className} { ${normalized} }`);\n return className;\n }\n\n static getStyles(): string {\n return StyleManager.styles.join('\\n');\n }\n}\n\nexport const styleManager = StyleManager;","let idCounter = 0;\n\nexport function asId(prefix = 'id'): string {\n idCounter += 1;\n return `${prefix}_${idCounter}`;\n}","import { TElementRenderer } from '../../../types/element-renderer.type';\nimport { TAttributes } from '../../../types/attributes.type';\nimport { TElementProps } from '../types/element-props.type';\n\nexport function asElementFactory(\n renderer: TElementRenderer\n): (props?: TElementProps) => string {\n return (props = {}) => {\n const { style, className, children, textContent, innerHTML, $$, ...attrs } = props;\n const attributes: TAttributes = {\n cssClass: className,\n style,\n ...attrs,\n };\n let content: Array<string | number> = [];\n if (children && children.length) content = children;\n if ($$ && $$.length) content = $$;\n if (textContent != null) content = [textContent];\n if (innerHTML != null) content = [innerHTML];\n return renderer(content, attributes);\n };\n}","export function extractStyle(element: any, style: any): any {\n return undefined;\n}","export function setAttrs(target: any, attrs: Record<string, any>): void {\n}","export function setElementStyle(target: any, key: string, value: string): void {\n}","export function setElementStyles(target: any, styles: Record<string, any>): void {\n}","export function styleOn(\n element: any,\n event: string,\n style: any,\n elementToStyle?: any,\n onlyIf?: () => boolean\n): void {\n // no-op\n}","import { styleOn } from './style-on.function';\n\nexport function styleOnFocus(\n element: any,\n style: any,\n elementToStyle?: any,\n onlyIf?: () => boolean\n): void {\n styleOn(element, 'focus', style, elementToStyle, onlyIf);\n}","import { styleOn } from './style-on.function';\n\nexport function styleOnPointerEnter(\n element: any,\n style: any,\n elementToStyle?: any,\n onlyIf?: () => boolean\n): void {\n styleOn(element, 'mouseenter', style, elementToStyle, onlyIf);\n}","import { styleManager } from '../constants/style-manager.constant';\n\nexport function styled<T>(\n creator: (props?: any) => string\n): (css: TemplateStringsArray, ...values: any[]) => (props?: any) => string {\n return (css, ...values) => (props = {}) => {\n const raw = css.reduce(\n (acc, part, i) => acc + part + (values[i] || ''),\n ''\n ).trim();\n const className = styleManager.applyStyle(raw) || '';\n const propsWithClass = {\n ...props,\n className: [className, props.className].filter(Boolean).join(' '),\n };\n return creator(propsWithClass);\n };\n}","export class AppServerBucketvoreConfig {\n AWS_PROFILE?: string = process.env['AWS_PROFILE'] || 'default';\n HTTP_PORT?: string = process.env['HTTP_PORT'] || '3007';\n}\n","/**\n * Design System for BucketVore UI\n * Modern dark theme file explorer\n */\n\nexport const DESIGN_SYSTEM_STYLES = `\n /* ====================================================================\n Design System Variables\n ==================================================================== */\n\n :root {\n /* Colors - Dark Theme */\n --color-bg-primary: #1a1a1a;\n --color-bg-secondary: #242424;\n --color-bg-tertiary: #2d2d2d;\n --color-border: #3a3a3a;\n --color-border-light: #4a4a4a;\n --color-text-primary: #e8e8e8;\n --color-text-secondary: #a0a0a0;\n --color-text-tertiary: #707070;\n\n /* Accents */\n --color-accent-primary: #0ea5e9;\n --color-accent-secondary: #8b5cf6;\n --color-accent-tertiary: #06b6d4;\n\n /* Status Colors */\n --color-status-success: #10b981;\n --color-status-warning: #f59e0b;\n --color-status-error: #ef4444;\n --color-status-info: #06b6d4;\n\n /* Typography */\n --font-primary: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif;\n --font-mono: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;\n --weight-normal: 400;\n --weight-medium: 500;\n --weight-semibold: 600;\n --weight-bold: 700;\n\n /* Font Sizes */\n --size-xs: 0.75rem;\n --size-sm: 0.875rem;\n --size-base: 1rem;\n --size-lg: 1.125rem;\n --size-xl: 1.25rem;\n --size-2xl: 1.5rem;\n\n /* Spacing */\n --space-1: 0.25rem;\n --space-2: 0.5rem;\n --space-3: 0.75rem;\n --space-4: 1rem;\n --space-6: 1.5rem;\n --space-8: 2rem;\n\n /* Border Radius */\n --radius-sm: 4px;\n --radius-md: 8px;\n --radius-lg: 12px;\n\n /* Transitions */\n --transition-fast: all 150ms ease-out;\n --transition-base: all 300ms ease-out;\n }\n\n /* ====================================================================\n Global Reset & Base Styles\n ==================================================================== */\n\n * {\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n }\n\n html, body {\n height: 100%;\n overflow: hidden;\n }\n\n body {\n font-family: var(--font-primary);\n background-color: var(--color-bg-primary);\n color: var(--color-text-primary);\n font-size: var(--size-base);\n font-weight: var(--weight-normal);\n line-height: 1.5;\n display: flex;\n flex-direction: column;\n }\n\n /* ====================================================================\n Layout\n ==================================================================== */\n\n header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n height: 64px;\n padding: 0 var(--space-8);\n background-color: var(--color-bg-secondary);\n border-bottom: 1px solid var(--color-border);\n flex-shrink: 0;\n }\n\n .header-left {\n display: flex;\n align-items: center;\n gap: var(--space-4);\n }\n\n .header-info h1 {\n font-size: var(--size-xl);\n font-weight: var(--weight-semibold);\n color: var(--color-text-primary);\n }\n\n .header-info p {\n font-size: var(--size-sm);\n color: var(--color-text-secondary);\n }\n\n .header-actions {\n display: flex;\n gap: var(--space-3);\n }\n\n .container {\n flex: 1;\n display: flex;\n overflow: hidden;\n }\n\n aside {\n width: 280px;\n background-color: var(--color-bg-secondary);\n border-right: 1px solid var(--color-border);\n display: flex;\n flex-direction: column;\n flex-shrink: 0;\n }\n\n .sidebar-header {\n padding: var(--space-4);\n border-bottom: 1px solid var(--color-border);\n }\n\n .sidebar-header h2 {\n font-size: var(--size-sm);\n font-weight: var(--weight-semibold);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--color-text-secondary);\n margin-bottom: var(--space-3);\n }\n\n .bucket-list {\n flex: 1;\n overflow-y: auto;\n padding: var(--space-2);\n }\n\n .bucket-item {\n display: flex;\n align-items: center;\n gap: var(--space-3);\n padding: var(--space-3);\n cursor: pointer;\n border-radius: var(--radius-md);\n transition: var(--transition-fast);\n }\n\n .bucket-item:hover {\n background-color: var(--color-bg-tertiary);\n }\n\n .bucket-item.active {\n background-color: var(--color-bg-tertiary);\n color: var(--color-accent-primary);\n }\n\n .bucket-icon {\n font-size: var(--size-xl);\n }\n\n .bucket-info {\n flex: 1;\n min-width: 0;\n }\n\n .bucket-name {\n font-weight: var(--weight-medium);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .bucket-date {\n font-size: var(--size-xs);\n color: var(--color-text-secondary);\n }\n\n main {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n }\n\n .toolbar {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--space-4) var(--space-6);\n background-color: var(--color-bg-secondary);\n border-bottom: 1px solid var(--color-border);\n }\n\n .breadcrumbs {\n display: flex;\n align-items: center;\n gap: var(--space-2);\n flex: 1;\n min-width: 0;\n overflow-x: auto;\n }\n\n .breadcrumb-item {\n background: none;\n border: none;\n color: var(--color-text-secondary);\n font-size: var(--size-sm);\n cursor: pointer;\n padding: var(--space-1) var(--space-2);\n border-radius: var(--radius-sm);\n transition: var(--transition-fast);\n white-space: nowrap;\n font-family: var(--font-primary);\n }\n\n .breadcrumb-item:hover {\n background-color: var(--color-bg-tertiary);\n color: var(--color-text-primary);\n }\n\n .breadcrumb-separator {\n color: var(--color-text-tertiary);\n }\n\n .toolbar-actions {\n display: flex;\n gap: var(--space-2);\n }\n\n .file-explorer {\n flex: 1;\n overflow-y: auto;\n padding: var(--space-4);\n }\n\n .file-list {\n display: flex;\n flex-direction: column;\n gap: var(--space-1);\n }\n\n .file-item {\n display: flex;\n align-items: center;\n gap: var(--space-3);\n padding: var(--space-3) var(--space-4);\n background-color: var(--color-bg-secondary);\n border: 1px solid var(--color-border);\n border-radius: var(--radius-md);\n transition: var(--transition-fast);\n }\n\n .file-item:hover {\n background-color: var(--color-bg-tertiary);\n border-color: var(--color-border-light);\n }\n\n .file-item.folder {\n font-weight: var(--weight-medium);\n cursor: pointer;\n }\n\n .file-icon {\n font-size: var(--size-xl);\n flex-shrink: 0;\n }\n\n .file-info {\n flex: 1;\n min-width: 0;\n }\n\n .file-name {\n font-size: var(--size-sm);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .file-meta {\n font-size: var(--size-xs);\n color: var(--color-text-secondary);\n margin-top: var(--space-1);\n }\n\n .file-actions {\n display: flex;\n gap: var(--space-2);\n opacity: 0;\n transition: var(--transition-fast);\n }\n\n .file-item:hover .file-actions {\n opacity: 1;\n }\n\n /* ====================================================================\n Buttons\n ==================================================================== */\n\n .btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--space-2);\n padding: var(--space-2) var(--space-4);\n background-color: var(--color-accent-primary);\n color: #ffffff;\n border: none;\n border-radius: var(--radius-sm);\n font-size: var(--size-sm);\n font-weight: var(--weight-medium);\n cursor: pointer;\n transition: var(--transition-fast);\n font-family: var(--font-primary);\n }\n\n .btn:hover:not(:disabled) {\n background-color: #0d9ecf;\n transform: scale(1.02);\n }\n\n .btn:active:not(:disabled) {\n transform: scale(0.98);\n }\n\n .btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .btn.secondary {\n background-color: var(--color-bg-tertiary);\n border: 1px solid var(--color-border);\n color: var(--color-text-primary);\n }\n\n .btn.secondary:hover:not(:disabled) {\n background-color: var(--color-border);\n }\n\n .btn-icon {\n background: none;\n border: none;\n color: var(--color-text-secondary);\n font-size: var(--size-lg);\n cursor: pointer;\n padding: var(--space-1);\n border-radius: var(--radius-sm);\n transition: var(--transition-fast);\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .btn-icon:hover {\n background-color: var(--color-bg-tertiary);\n color: var(--color-text-primary);\n }\n\n .btn-close {\n background: none;\n border: none;\n color: var(--color-text-secondary);\n font-size: var(--size-xl);\n cursor: pointer;\n padding: var(--space-2);\n line-height: 1;\n transition: var(--transition-fast);\n }\n\n .btn-close:hover {\n color: var(--color-text-primary);\n }\n\n /* ====================================================================\n Modal & Preview\n ==================================================================== */\n\n .modal-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: rgba(0, 0, 0, 0.8);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1000;\n padding: var(--space-8);\n }\n\n .modal {\n background-color: var(--color-bg-secondary);\n border: 1px solid var(--color-border);\n border-radius: var(--radius-lg);\n max-width: 90vw;\n max-height: 90vh;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n }\n\n .file-preview {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n }\n\n .preview-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--space-4) var(--space-6);\n border-bottom: 1px solid var(--color-border);\n }\n\n .preview-header h3 {\n font-size: var(--size-lg);\n font-weight: var(--weight-semibold);\n margin: 0;\n }\n\n .preview-meta {\n padding: var(--space-3) var(--space-6);\n background-color: var(--color-bg-tertiary);\n font-size: var(--size-xs);\n color: var(--color-text-secondary);\n border-bottom: 1px solid var(--color-border);\n }\n\n .preview-content {\n flex: 1;\n overflow: auto;\n padding: var(--space-6);\n }\n\n .preview-image-container,\n .preview-video-container,\n .preview-audio-container,\n .preview-pdf-container {\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .preview-text-container pre {\n background-color: var(--color-bg-tertiary);\n border: 1px solid var(--color-border);\n border-radius: var(--radius-md);\n padding: var(--space-4);\n overflow: auto;\n font-family: var(--font-mono);\n font-size: var(--size-sm);\n line-height: 1.6;\n }\n\n .preview-unavailable {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: var(--space-4);\n padding: var(--space-8);\n text-align: center;\n }\n\n .preview-actions {\n display: flex;\n gap: var(--space-3);\n padding: var(--space-4) var(--space-6);\n border-top: 1px solid var(--color-border);\n background-color: var(--color-bg-secondary);\n }\n\n /* ====================================================================\n Upload Zone\n ==================================================================== */\n\n .upload-zone {\n border: 2px dashed var(--color-border);\n border-radius: var(--radius-lg);\n padding: var(--space-8);\n text-align: center;\n transition: var(--transition-fast);\n cursor: pointer;\n }\n\n .upload-zone:hover,\n .upload-zone.drag-over {\n border-color: var(--color-accent-primary);\n background-color: var(--color-bg-tertiary);\n }\n\n .upload-zone-icon {\n font-size: 3rem;\n margin-bottom: var(--space-4);\n }\n\n .upload-zone input[type=\"file\"] {\n display: none;\n }\n\n /* ====================================================================\n States\n ==================================================================== */\n\n .loading {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: var(--space-4);\n padding: var(--space-8);\n color: var(--color-text-secondary);\n }\n\n .spinner {\n width: 40px;\n height: 40px;\n border: 3px solid var(--color-border);\n border-top-color: var(--color-accent-primary);\n border-radius: 50%;\n animation: spin 1s linear infinite;\n }\n\n @keyframes spin {\n to { transform: rotate(360deg); }\n }\n\n .empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: var(--space-4);\n padding: var(--space-8);\n color: var(--color-text-secondary);\n text-align: center;\n }\n\n .empty-state-icon {\n font-size: 4rem;\n opacity: 0.5;\n }\n\n .error {\n display: flex;\n align-items: center;\n gap: var(--space-3);\n padding: var(--space-4);\n background-color: rgba(239, 68, 68, 0.1);\n border: 1px solid var(--color-status-error);\n border-radius: var(--radius-md);\n color: var(--color-status-error);\n }\n\n .error-icon {\n font-size: var(--size-xl);\n }\n\n /* ====================================================================\n Scrollbars\n ==================================================================== */\n\n ::-webkit-scrollbar {\n width: 12px;\n height: 12px;\n }\n\n ::-webkit-scrollbar-track {\n background-color: var(--color-bg-primary);\n }\n\n ::-webkit-scrollbar-thumb {\n background-color: var(--color-border);\n border-radius: var(--radius-sm);\n border: 2px solid var(--color-bg-primary);\n }\n\n ::-webkit-scrollbar-thumb:hover {\n background-color: var(--color-border-light);\n }\n`;\n","import { Controller, Get, Param, Query } from '@nestjs/common';\nimport { S3Service } from '../services/s3.service';\nimport { HtmlGeneratorService } from '../services/html-generator.service';\n\n@Controller('api/buckets')\nexport class BucketsController {\n constructor(\n private readonly s3Service: S3Service,\n private readonly htmlGenerator: HtmlGeneratorService\n ) {}\n\n @Get('/')\n async get() {\n try {\n const buckets = await this.s3Service.listBuckets();\n return this.htmlGenerator.generateBucketsListHtml(buckets);\n } catch (error) {\n console.error('Error listing buckets:', error);\n return this.htmlGenerator.generateErrorHtml('Failed to load buckets');\n }\n }\n\n @Get(':bucket/region')\n async getBucketRegion(@Param('bucket') bucket: string) {\n try {\n if (!bucket) {\n return { error: 'Bucket parameter is required' };\n }\n\n const region = await this.s3Service.getBucketRegion(bucket);\n return { region };\n } catch (error) {\n console.error('Error getting bucket region:', error);\n return { region: 'us-east-1' }; // fallback to us-east-1\n }\n }\n}\n","import { Injectable } from '@nestjs/common';\nimport { S3Client, ListBucketsCommand, ListObjectsV2Command, GetObjectCommand, PutObjectCommand, DeleteObjectCommand, DeleteObjectsCommand, HeadObjectCommand, GetBucketLocationCommand, _Object } from '@aws-sdk/client-s3';\nimport { getSignedUrl } from '@aws-sdk/s3-request-presigner';\nimport { AppServerBucketvoreConfig } from '../app-server-bucketvore-config.class';\nimport { fromIni } from '@aws-sdk/credential-providers';\n\nexport interface S3Object extends _Object {\n Key: string;\n Size?: number;\n LastModified?: Date;\n isFolder?: boolean;\n}\n\nexport interface BucketInfo {\n name: string;\n creationDate?: Date;\n}\n\n@Injectable()\nexport class S3Service {\n private bucketRegionCache: Map<string, string> = new Map();\n private regionalClients: Map<string, S3Client> = new Map();\n\n constructor(\n private readonly s3Client: S3Client,\n private readonly config: AppServerBucketvoreConfig\n ) {}\n\n /**\n * Get or create an S3 client for a specific region\n */\n private async getClientForBucket(bucket: string): Promise<S3Client> {\n // Try to get cached region\n let region = this.bucketRegionCache.get(bucket);\n\n if (!region) {\n // Fetch bucket region\n try {\n const command = new GetBucketLocationCommand({ Bucket: bucket });\n const response = await this.s3Client.send(command);\n // LocationConstraint is null for us-east-1\n region = response.LocationConstraint || 'us-east-1';\n this.bucketRegionCache.set(bucket, region);\n } catch (error) {\n console.warn(`Could not get region for bucket ${bucket}, using us-east-1 as fallback`, error);\n region = 'us-east-1';\n }\n }\n\n // Return existing client if we have one for this region\n if (this.regionalClients.has(region)) {\n return this.regionalClients.get(region)!;\n }\n\n // Create new regional client\n const clientConfig: any = {\n region,\n };\n\n if (this.config.AWS_PROFILE) {\n clientConfig.credentials = fromIni({ profile: this.config.AWS_PROFILE });\n }\n\n const regionalClient = new S3Client(clientConfig);\n this.regionalClients.set(region, regionalClient);\n\n return regionalClient;\n }\n\n async listBuckets(): Promise<BucketInfo[]> {\n const command = new ListBucketsCommand({});\n const response = await this.s3Client.send(command);\n\n return (response.Buckets || []).map(bucket => ({\n name: bucket.Name!,\n creationDate: bucket.CreationDate\n }));\n }\n\n async listObjects(bucket: string, prefix?: string): Promise<{ objects: S3Object[], commonPrefixes: string[] }> {\n const client = await this.getClientForBucket(bucket);\n const command = new ListObjectsV2Command({\n Bucket: bucket,\n Prefix: prefix || '',\n Delimiter: '/'\n });\n\n const response = await client.send(command);\n\n const objects: S3Object[] = (response.Contents || [])\n .filter(obj => obj.Key !== prefix) // Filter out the folder itself\n .map(obj => ({\n ...obj,\n Key: obj.Key!,\n isFolder: false\n }));\n\n const commonPrefixes = (response.CommonPrefixes || [])\n .map(cp => cp.Prefix!)\n .filter(p => p !== prefix);\n\n return { objects, commonPrefixes };\n }\n\n async getObject(bucket: string, key: string): Promise<{ body: any, contentType?: string, contentLength?: number }> {\n const client = await this.getClientForBucket(bucket);\n const command = new GetObjectCommand({\n Bucket: bucket,\n Key: key\n });\n\n const response = await client.send(command);\n const body = await response.Body?.transformToByteArray();\n\n return {\n body,\n contentType: response.ContentType,\n contentLength: response.ContentLength\n };\n }\n\n async getObjectMetadata(bucket: string, key: string): Promise<any> {\n const client = await this.getClientForBucket(bucket);\n const command = new HeadObjectCommand({\n Bucket: bucket,\n Key: key\n });\n\n return await client.send(command);\n }\n\n async getPresignedDownloadUrl(bucket: string, key: string, expiresIn: number = 3600): Promise<string> {\n const client = await this.getClientForBucket(bucket);\n const command = new GetObjectCommand({\n Bucket: bucket,\n Key: key,\n ResponseContentDisposition: `attachment; filename=\"${key.split('/').pop()}\"`\n });\n\n return await getSignedUrl(client, command, { expiresIn });\n }\n\n async getPresignedViewUrl(bucket: string, key: string, expiresIn: number = 3600): Promise<string> {\n const client = await this.getClientForBucket(bucket);\n const command = new GetObjectCommand({\n Bucket: bucket,\n Key: key,\n ResponseContentDisposition: 'inline'\n });\n\n return await getSignedUrl(client, command, { expiresIn });\n }\n\n async uploadObject(bucket: string, key: string, body: Buffer, contentType: string): Promise<void> {\n const client = await this.getClientForBucket(bucket);\n const command = new PutObjectCommand({\n Bucket: bucket,\n Key: key,\n Body: body,\n ContentType: contentType\n });\n\n await client.send(command);\n }\n\n async deleteObject(bucket: string, key: string): Promise<void> {\n const client = await this.getClientForBucket(bucket);\n const command = new DeleteObjectCommand({\n Bucket: bucket,\n Key: key\n });\n\n await client.send(command);\n }\n\n async deleteObjects(bucket: string, keys: string[]): Promise<void> {\n if (keys.length === 0) return;\n\n const client = await this.getClientForBucket(bucket);\n const command = new DeleteObjectsCommand({\n Bucket: bucket,\n Delete: {\n Objects: keys.map(key => ({ Key: key }))\n }\n }); await client.send(command);\n }\n\n async deleteFolder(bucket: string, prefix: string): Promise<void> {\n const { objects } = await this.listObjects(bucket, prefix);\n const keys = objects.map(obj => obj.Key);\n\n if (keys.length > 0) {\n await this.deleteObjects(bucket, keys);\n }\n }\n\n formatFileSize(bytes?: number): string {\n if (!bytes) return '0 B';\n\n const units = ['B', 'KB', 'MB', 'GB', 'TB'];\n let size = bytes;\n let unitIndex = 0;\n\n while (size >= 1024 && unitIndex < units.length - 1) {\n size /= 1024;\n unitIndex++;\n }\n\n return `${size.toFixed(2)} ${units[unitIndex]}`;\n }\n\n getFileExtension(key: string): string {\n const parts = key.split('.');\n return parts.length > 1 ? parts[parts.length - 1].toLowerCase() : '';\n }\n\n getFileName(key: string): string {\n return key.split('/').pop() || key;\n }\n\n getFolderName(prefix: string): string {\n const parts = prefix.replace(/\\/$/, '').split('/');\n return parts[parts.length - 1] || prefix;\n }\n\n /**\n * Get the AWS region for a specific bucket\n */\n async getBucketRegion(bucket: string): Promise<string> {\n let region = this.bucketRegionCache.get(bucket);\n\n if (!region) {\n try {\n const command = new GetBucketLocationCommand({ Bucket: bucket });\n const response = await this.s3Client.send(command);\n // LocationConstraint is null for us-east-1\n region = response.LocationConstraint || 'us-east-1';\n this.bucketRegionCache.set(bucket, region);\n } catch (error) {\n console.warn(`Could not get region for bucket ${bucket}, using us-east-1 as fallback`, error);\n region = 'us-east-1';\n }\n }\n\n return region;\n }\n}\n","module.exports = require(\"@aws-sdk/client-s3\");","module.exports = require(\"@aws-sdk/s3-request-presigner\");","module.exports = require(\"@aws-sdk/credential-providers\");","import { Injectable } from '@nestjs/common';\nimport { $div, $span, $button, $a, $p, $h3, $em, $pre, $code, $img, $video, $audio, $iframe } from '@onivoro/server-html';\nimport { S3Object } from './s3.service';\nimport { FilePreviewService } from './file-preview.service';\n\n@Injectable()\nexport class HtmlGeneratorService {\n constructor(private readonly filePreviewService: FilePreviewService) {}\n\n generateBucketsListHtml(buckets: { name: string; creationDate?: Date }[]): string {\n if (!buckets || buckets.length === 0) {\n return $div({\n className: 'empty-state',\n children: [\n $div({ className: 'empty-state-icon', textContent: '๐Ÿชฃ' }),\n $p({ textContent: 'No buckets found' })\n ]\n });\n }\n\n const bucketElements = buckets.map(bucket =>\n $div({\n className: 'bucket-item',\n 'data-bucket-name': bucket.name,\n '@click': 'selectBucket($el.dataset.bucketName)',\n children: [\n $div({ className: 'bucket-icon', textContent: '๐Ÿชฃ' }),\n $div({\n className: 'bucket-info',\n children: [\n $div({ className: 'bucket-name', textContent: bucket.name }),\n bucket.creationDate ? $div({\n className: 'bucket-date',\n textContent: new Date(bucket.creationDate).toLocaleDateString()\n }) : ''\n ].filter(Boolean)\n })\n ]\n })\n );\n\n return bucketElements.join('');\n }\n\n generateBreadcrumbs(prefix: string, bucket: string): string {\n const parts = prefix ? prefix.split('/').filter(Boolean) : [];\n\n const breadcrumbs = [\n $button({\n className: 'breadcrumb-item',\n '@click': 'navigateToFolder(\\'\\')',\n textContent: '๐Ÿชฃ ' + bucket\n })\n ];\n\n let currentPath = '';\n parts.forEach((part, index) => {\n currentPath += part + '/';\n breadcrumbs.push(\n $span({ className: 'breadcrumb-separator', textContent: '/' })\n );\n breadcrumbs.push(\n $button({\n className: 'breadcrumb-item',\n 'data-path': currentPath,\n '@click': 'navigateToFolder($el.dataset.path)',\n textContent: part\n })\n );\n });\n\n return $div({\n className: 'breadcrumbs',\n children: breadcrumbs\n });\n }\n\n generateFileListHtml(\n objects: S3Object[],\n folders: string[],\n s3Service: any,\n currentPrefix: string = ''\n ): string {\n if (folders.length === 0 && objects.length === 0) {\n return $div({\n className: 'empty-state',\n children: [\n $div({ className: 'empty-state-icon', textContent: '๐Ÿ“‚' }),\n $p({ textContent: 'This folder is empty' })\n ]\n });\n }\n\n const folderElements = folders.map(folderPrefix => {\n const folderName = s3Service.getFolderName(folderPrefix);\n return $div({\n className: 'file-item folder',\n 'data-folder-path': folderPrefix,\n '@click': 'navigateToFolder($el.dataset.folderPath)',\n children: [\n $div({ className: 'file-icon', textContent: '๐Ÿ“' }),\n $div({\n className: 'file-info',\n children: [\n $div({ className: 'file-name', textContent: folderName }),\n $div({ className: 'file-meta', textContent: 'Folder' })\n ]\n }),\n $div({\n className: 'file-actions',\n children: [\n $button({\n className: 'btn-icon',\n 'data-folder-path': folderPrefix,\n '@click.stop': 'deleteFolder($el.dataset.folderPath)',\n title: 'Delete folder',\n textContent: '๐Ÿ—‘๏ธ'\n })\n ]\n })\n ]\n });\n });\n\n const fileElements = objects.map(obj => {\n const fileName = s3Service.getFileName(obj.Key);\n const extension = s3Service.getFileExtension(obj.Key);\n const icon = this.filePreviewService.getFileIcon(extension);\n const canPreview = this.filePreviewService.canPreview(extension);\n\n return $div({\n className: 'file-item',\n 'data-file-key': obj.Key,\n '@click': canPreview ? 'previewFile($el.dataset.fileKey)' : '',\n style: { cursor: canPreview ? 'pointer' : 'default' },\n children: [\n $div({ className: 'file-icon', textContent: icon }),\n $div({\n className: 'file-info',\n children: [\n $div({ className: 'file-name', textContent: fileName }),\n $div({\n className: 'file-meta',\n textContent: `${s3Service.formatFileSize(obj.Size)} ยท ${obj.LastModified ? new Date(obj.LastModified).toLocaleString() : ''}`\n })\n ]\n }),\n $div({\n className: 'file-actions',\n children: [\n canPreview ? $button({\n className: 'btn-icon',\n 'data-file-key': obj.Key,\n '@click.stop': 'previewFile($el.dataset.fileKey)',\n title: 'Preview',\n textContent: '๐Ÿ‘๏ธ'\n }) : '',\n $button({\n className: 'btn-icon',\n 'data-file-key': obj.Key,\n '@click.stop': 'copyS3Path($el.dataset.fileKey, $el)',\n title: 'Copy S3 path (s3://bucket/key)',\n textContent: '๐Ÿ“‹'\n }),\n $button({\n className: 'btn-icon',\n 'data-file-key': obj.Key,\n '@click.stop': 'downloadFile($el.dataset.fileKey)',\n title: 'Download',\n textContent: 'โฌ‡๏ธ'\n }),\n $button({\n className: 'btn-icon',\n 'data-file-key': obj.Key,\n '@click.stop': 'deleteFile($el.dataset.fileKey)',\n title: 'Delete',\n textContent: '๐Ÿ—‘๏ธ'\n })\n ].filter(Boolean)\n })\n ]\n });\n });\n\n return [...folderElements, ...fileElements].join('');\n }\n\n generateFilePreviewHtml(\n key: string,\n previewType: string,\n content: any,\n metadata: any,\n s3Service: any,\n presignedUrl?: string\n ): string {\n const fileName = s3Service.getFileName(key);\n const extension = s3Service.getFileExtension(key);\n\n let previewContent = '';\n\n switch (previewType) {\n case 'image':\n previewContent = $div({\n className: 'preview-image-container',\n children: [\n $img({\n src: presignedUrl!,\n alt: fileName,\n style: { maxWidth: '100%', maxHeight: '70vh', objectFit: 'contain' }\n })\n ]\n });\n break;\n\n case 'text':\n const textContent = content.toString('utf-8');\n const formatted = extension === 'json' ? this.filePreviewService.formatJson(textContent) : textContent;\n previewContent = $div({\n className: 'preview-text-container',\n children: [\n $pre({\n children: [\n $code({\n textContent: formatted.substring(0, 50000) // Limit to 50KB for display\n })\n ]\n })\n ]\n });\n break;\n\n case 'video':\n previewContent = $div({\n className: 'preview-video-container',\n children: [\n $video({\n src: presignedUrl!,\n controls: true,\n style: { maxWidth: '100%', maxHeight: '70vh' }\n })\n ]\n });\n break;\n\n case 'audio':\n previewContent = $div({\n className: 'preview-audio-container',\n children: [\n $audio({\n src: presignedUrl!,\n controls: true,\n style: { width: '100%' }\n })\n ]\n });\n break;\n\n case 'pdf':\n previewContent = $div({\n className: 'preview-pdf-container',\n children: [\n $iframe({\n src: presignedUrl!,\n style: { width: '100%', height: '85vh', border: 'none' }\n })\n ]\n });\n break;\n\n default:\n previewContent = $div({\n className: 'preview-unavailable',\n children: [\n $p({ textContent: 'Preview not available for this file type' }),\n $button({\n className: 'btn',\n 'data-file-key': key,\n '@click': 'downloadFile($el.dataset.fileKey)',\n textContent: 'โฌ‡๏ธ Download File'\n })\n ]\n });\n }\n\n return $div({\n className: 'file-preview',\n children: [\n $div({\n className: 'preview-header',\n children: [\n $h3({ textContent: fileName }),\n $button({\n className: 'btn-close',\n '@click': 'closePreview()',\n textContent: 'โœ•'\n })\n ]\n }),\n $div({\n className: 'preview-meta',\n children: [\n $span({ textContent: `Size: ${s3Service.formatFileSize(metadata.ContentLength)}` }),\n $span({ textContent: ` ยท Type: ${metadata.ContentType || 'unknown'}` }),\n metadata.LastModified ? $span({ textContent: ` ยท Modified: ${new Date(metadata.LastModified).toLocaleString()}` }) : ''\n ].filter(Boolean)\n }),\n $div({\n className: 'preview-content',\n children: [previewContent]\n }),\n $div({\n className: 'preview-actions',\n children: [\n $button({\n className: 'btn',\n 'data-file-key': key,\n '@click': 'copyS3Path($el.dataset.fileKey, $el)',\n textContent: '๐Ÿ“‹ Copy S3 Path'\n }),\n $button({\n className: 'btn',\n 'data-file-key': key,\n '@click': 'downloadFile($el.dataset.fileKey)',\n textContent: 'โฌ‡๏ธ Download'\n }),\n $button({\n className: 'btn secondary',\n '@click': 'closePreview()',\n textContent: 'Close'\n })\n ]\n })\n ]\n });\n }\n\n generateErrorHtml(message: string): string {\n return $div({\n className: 'error',\n children: [\n $div({ className: 'error-icon', textContent: 'โš ๏ธ' }),\n $p({ textContent: message })\n ]\n });\n }\n\n generateLoadingHtml(message: string = 'Loading...'): string {\n return $div({\n className: 'loading',\n children: [\n $div({ className: 'spinner' }),\n $p({ textContent: message })\n ]\n });\n }\n}\n","import { Injectable } from '@nestjs/common';\n\n@Injectable()\nexport class FilePreviewService {\n private readonly imageExtensions = ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'svg'];\n private readonly textExtensions = ['txt', 'md', 'json', 'xml', 'csv', 'log', 'yaml', 'yml', 'ts', 'js', 'jsx', 'tsx', 'html', 'css', 'scss', 'py', 'java', 'c', 'cpp', 'h', 'go', 'rs', 'sh', 'bash'];\n private readonly videoExtensions = ['mp4', 'webm', 'ogg', 'mov'];\n private readonly audioExtensions = ['mp3', 'wav', 'ogg', 'flac'];\n private readonly pdfExtensions = ['pdf'];\n\n canPreview(extension: string): boolean {\n const ext = extension.toLowerCase();\n return this.imageExtensions.includes(ext) ||\n this.textExtensions.includes(ext) ||\n this.videoExtensions.includes(ext) ||\n this.audioExtensions.includes(ext) ||\n this.pdfExtensions.includes(ext);\n }\n\n isImage(extension: string): boolean {\n return this.imageExtensions.includes(extension.toLowerCase());\n }\n\n isText(extension: string): boolean {\n return this.textExtensions.includes(extension.toLowerCase());\n }\n\n isVideo(extension: string): boolean {\n return this.videoExtensions.includes(extension.toLowerCase());\n }\n\n isAudio(extension: string): boolean {\n return this.audioExtensions.includes(extension.toLowerCase());\n }\n\n isPdf(extension: string): boolean {\n return this.pdfExtensions.includes(extension.toLowerCase());\n }\n\n getPreviewType(extension: string): 'image' | 'text' | 'video' | 'audio' | 'pdf' | 'none' {\n const ext = extension.toLowerCase();\n\n if (this.isImage(ext)) return 'image';\n if (this.isText(ext)) return 'text';\n if (this.isVideo(ext)) return 'video';\n if (this.isAudio(ext)) return 'audio';\n if (this.isPdf(ext)) return 'pdf';\n\n return 'none';\n }\n\n getFileIcon(extension: string): string {\n const ext = extension.toLowerCase();\n\n if (this.isImage(ext)) return '๐Ÿ–ผ๏ธ';\n if (this.isText(ext)) return '๐Ÿ“„';\n if (this.isVideo(ext)) return '๐ŸŽฅ';\n if (this.isAudio(ext)) return '๐ŸŽต';\n if (this.isPdf(ext)) return '๐Ÿ“•';\n if (['zip', 'tar', 'gz', 'rar', '7z'].includes(ext)) return '๐Ÿ“ฆ';\n if (['doc', 'docx'].includes(ext)) return '๐Ÿ“';\n if (['xls', 'xlsx'].includes(ext)) return '๐Ÿ“Š';\n if (['ppt', 'pptx'].includes(ext)) return '๐Ÿ“ฝ๏ธ';\n\n return '๐Ÿ“Ž';\n }\n\n async generateTextPreview(content: Uint8Array, maxLength: number = 10000): Promise<string> {\n const decoder = new TextDecoder('utf-8');\n const text = decoder.decode(content);\n\n if (text.length <= maxLength) {\n return text;\n }\n\n return text.substring(0, maxLength) + '\\n\\n... (truncated)';\n }\n\n formatJson(content: string): string {\n try {\n const parsed = JSON.parse(content);\n return JSON.stringify(parsed, null, 2);\n } catch {\n return content;\n }\n }\n}\n","import { Controller, Get, Post, Query, Body, Res } from '@nestjs/common';\nimport { S3Service } from '../services/s3.service';\nimport { HtmlGeneratorService } from '../services/html-generator.service';\nimport { FilePreviewService } from '../services/file-preview.service';\n\n@Controller('api/files')\nexport class FilesController {\n constructor(\n private readonly s3Service: S3Service,\n private readonly htmlGenerator: HtmlGeneratorService,\n private readonly filePreviewService: FilePreviewService\n ) {}\n\n @Get()\n async listFiles(\n @Query('bucket') bucket: string,\n @Query('prefix') prefix?: string\n ) {\n try {\n const { objects, commonPrefixes } = await this.s3Service.listObjects(bucket, prefix);\n\n const filesHtml = this.htmlGenerator.generateFileListHtml(\n objects,\n commonPrefixes,\n this.s3Service,\n prefix\n );\n\n const breadcrumbsHtml = this.htmlGenerator.generateBreadcrumbs(prefix || '', bucket);\n\n return {\n filesHtml,\n breadcrumbsHtml,\n objects: objects.length,\n folders: commonPrefixes.length\n };\n } catch (error) {\n console.error('Error listing files:', error);\n return {\n filesHtml: this.htmlGenerator.generateErrorHtml('Failed to load files'),\n breadcrumbsHtml: '',\n objects: 0,\n folders: 0\n };\n }\n }\n\n @Get('preview')\n async previewFile(\n @Query('bucket') bucket: string,\n @Query('key') key: string\n ) {\n try {\n const extension = this.s3Service.getFileExtension(key);\n const previewType = this.filePreviewService.getPreviewType(extension);\n const metadata = await this.s3Service.getObjectMetadata(bucket, key);\n\n let content: any = null;\n let presignedUrl: string | undefined;\n\n if (previewType === 'text') {\n const { body } = await this.s3Service.getObject(bucket, key);\n content = Buffer.from(body);\n } else if (previewType !== 'none') {\n presignedUrl = await this.s3Service.getPresignedViewUrl(bucket, key);\n }\n\n return this.htmlGenerator.generateFilePreviewHtml(\n key,\n previewType,\n content,\n metadata,\n this.s3Service,\n presignedUrl\n );\n } catch (error) {\n console.error('Error previewing file:', error);\n return this.htmlGenerator.generateErrorHtml('Failed to load preview');\n }\n }\n\n @Get('download')\n async downloadFile(\n @Query('bucket') bucket: string,\n @Query('key') key: string\n ) {\n try {\n const url = await this.s3Service.getPresignedDownloadUrl(bucket, key);\n return { url };\n } catch (error) {\n console.error('Error generating download URL:', error);\n throw error;\n }\n }\n\n @Post('delete')\n async deleteFile(@Body() body: { bucket: string; key: string }) {\n try {\n await this.s3Service.deleteObject(body.bucket, body.key);\n return { success: true };\n } catch (error) {\n console.error('Error deleting file:', error);\n throw error;\n }\n }\n\n @Post('delete-folder')\n async deleteFolder(@Body() body: { bucket: string; prefix: string }) {\n try {\n await this.s3Service.deleteFolder(body.bucket, body.prefix);\n return { success: true };\n } catch (error) {\n console.error('Error deleting folder:', error);\n throw error;\n }\n }\n}\n","import { Controller, Post, UseInterceptors, UploadedFile, Body } from '@nestjs/common';\nimport { FileInterceptor } from '@nestjs/platform-express';\nimport { S3Service } from '../services/s3.service';\n\n@Controller('api/upload')\nexport class UploadController {\n constructor(private readonly s3Service: S3Service) {}\n\n @Post()\n @UseInterceptors(FileInterceptor('file'))\n async uploadFile(\n @UploadedFile() file: any,\n @Body('bucket') bucket: string,\n @Body('prefix') prefix?: string\n ) {\n try {\n const key = prefix ? `${prefix}${file.originalname}` : file.originalname;\n\n await this.s3Service.uploadObject(\n bucket,\n key,\n file.buffer,\n file.mimetype\n ); return {\n success: true,\n key,\n size: file.size\n };\n } catch (error) {\n console.error('Error uploading file:', error);\n throw error;\n }\n }\n}\n","module.exports = require(\"@nestjs/platform-express\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","#!/usr/bin/env node\nimport { bootstrap } from \"./index\";\nbootstrap();\n"],"names":[],"sourceRoot":""}
package/src/index.d.ts DELETED
@@ -1,7 +0,0 @@
1
- import { INestApplication } from '@nestjs/common';
2
-
3
- /**
4
- * Bootstrap the BucketVore NestJS application
5
- * @returns Promise that resolves to the NestJS application instance
6
- */
7
- export declare function bootstrap(): Promise<INestApplication>;