@fntio/infra-client 0.0.0-stage → 0.5.0
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/CHANGELOG.md +193 -0
- package/LICENSE +93 -0
- package/README.md +875 -2
- package/assets/acl-reconciler/index.js +1604 -0
- package/assets/api/index.js +9857 -0
- package/assets/api/package.json +9 -0
- package/assets/api/vendor_modules/.package-lock.json +857 -0
- package/assets/api/vendor_modules/accepts/HISTORY.md +243 -0
- package/assets/api/vendor_modules/accepts/LICENSE +23 -0
- package/assets/api/vendor_modules/accepts/README.md +140 -0
- package/assets/api/vendor_modules/accepts/index.js +238 -0
- package/assets/api/vendor_modules/accepts/package.json +47 -0
- package/assets/api/vendor_modules/array-flatten/LICENSE +21 -0
- package/assets/api/vendor_modules/array-flatten/README.md +43 -0
- package/assets/api/vendor_modules/array-flatten/array-flatten.js +64 -0
- package/assets/api/vendor_modules/array-flatten/package.json +39 -0
- package/assets/api/vendor_modules/aws-jwt-verify/LICENSE +175 -0
- package/assets/api/vendor_modules/aws-jwt-verify/README.md +1033 -0
- package/assets/api/vendor_modules/aws-jwt-verify/asn1.d.ts +20 -0
- package/assets/api/vendor_modules/aws-jwt-verify/assert.d.ts +41 -0
- package/assets/api/vendor_modules/aws-jwt-verify/cognito-verifier.d.ts +183 -0
- package/assets/api/vendor_modules/aws-jwt-verify/dist/cjs/asn1.js +301 -0
- package/assets/api/vendor_modules/aws-jwt-verify/dist/cjs/assert.js +108 -0
- package/assets/api/vendor_modules/aws-jwt-verify/dist/cjs/cognito-verifier.js +158 -0
- package/assets/api/vendor_modules/aws-jwt-verify/dist/cjs/error.js +131 -0
- package/assets/api/vendor_modules/aws-jwt-verify/dist/cjs/https-common.js +29 -0
- package/assets/api/vendor_modules/aws-jwt-verify/dist/cjs/https-node.js +89 -0
- package/assets/api/vendor_modules/aws-jwt-verify/dist/cjs/https.js +52 -0
- package/assets/api/vendor_modules/aws-jwt-verify/dist/cjs/index.js +9 -0
- package/assets/api/vendor_modules/aws-jwt-verify/dist/cjs/jwk.js +221 -0
- package/assets/api/vendor_modules/aws-jwt-verify/dist/cjs/jwt-model.js +10 -0
- package/assets/api/vendor_modules/aws-jwt-verify/dist/cjs/jwt-rsa.js +397 -0
- package/assets/api/vendor_modules/aws-jwt-verify/dist/cjs/jwt.js +161 -0
- package/assets/api/vendor_modules/aws-jwt-verify/dist/cjs/node-web-compat-node.js +48 -0
- package/assets/api/vendor_modules/aws-jwt-verify/dist/cjs/node-web-compat-web.js +78 -0
- package/assets/api/vendor_modules/aws-jwt-verify/dist/cjs/node-web-compat.js +11 -0
- package/assets/api/vendor_modules/aws-jwt-verify/dist/cjs/package.json +1 -0
- package/assets/api/vendor_modules/aws-jwt-verify/dist/cjs/safe-json-parse.js +34 -0
- package/assets/api/vendor_modules/aws-jwt-verify/dist/cjs/typing-util.js +6 -0
- package/assets/api/vendor_modules/aws-jwt-verify/dist/esm/asn1.js +296 -0
- package/assets/api/vendor_modules/aws-jwt-verify/dist/esm/assert.js +101 -0
- package/assets/api/vendor_modules/aws-jwt-verify/dist/esm/cognito-verifier.js +153 -0
- package/assets/api/vendor_modules/aws-jwt-verify/dist/esm/error.js +101 -0
- package/assets/api/vendor_modules/aws-jwt-verify/dist/esm/https-common.js +25 -0
- package/assets/api/vendor_modules/aws-jwt-verify/dist/esm/https-node.js +85 -0
- package/assets/api/vendor_modules/aws-jwt-verify/dist/esm/https.js +48 -0
- package/assets/api/vendor_modules/aws-jwt-verify/dist/esm/index.js +4 -0
- package/assets/api/vendor_modules/aws-jwt-verify/dist/esm/jwk.js +208 -0
- package/assets/api/vendor_modules/aws-jwt-verify/dist/esm/jwt-model.js +7 -0
- package/assets/api/vendor_modules/aws-jwt-verify/dist/esm/jwt-rsa.js +389 -0
- package/assets/api/vendor_modules/aws-jwt-verify/dist/esm/jwt.js +156 -0
- package/assets/api/vendor_modules/aws-jwt-verify/dist/esm/node-web-compat-node.js +45 -0
- package/assets/api/vendor_modules/aws-jwt-verify/dist/esm/node-web-compat-web.js +75 -0
- package/assets/api/vendor_modules/aws-jwt-verify/dist/esm/node-web-compat.js +10 -0
- package/assets/api/vendor_modules/aws-jwt-verify/dist/esm/package.json +1 -0
- package/assets/api/vendor_modules/aws-jwt-verify/dist/esm/safe-json-parse.js +29 -0
- package/assets/api/vendor_modules/aws-jwt-verify/dist/esm/typing-util.js +5 -0
- package/assets/api/vendor_modules/aws-jwt-verify/error.d.ts +108 -0
- package/assets/api/vendor_modules/aws-jwt-verify/https-common.d.ts +9 -0
- package/assets/api/vendor_modules/aws-jwt-verify/https-node.d.ts +20 -0
- package/assets/api/vendor_modules/aws-jwt-verify/https.d.ts +35 -0
- package/assets/api/vendor_modules/aws-jwt-verify/index.d.ts +2 -0
- package/assets/api/vendor_modules/aws-jwt-verify/jwk.d.ts +76 -0
- package/assets/api/vendor_modules/aws-jwt-verify/jwt-model.d.ts +78 -0
- package/assets/api/vendor_modules/aws-jwt-verify/jwt-rsa.d.ts +348 -0
- package/assets/api/vendor_modules/aws-jwt-verify/jwt.d.ts +51 -0
- package/assets/api/vendor_modules/aws-jwt-verify/package.json +136 -0
- package/assets/api/vendor_modules/aws-jwt-verify/safe-json-parse.d.ts +18 -0
- package/assets/api/vendor_modules/aws-jwt-verify/typing-util.d.ts +38 -0
- package/assets/api/vendor_modules/body-parser/HISTORY.md +703 -0
- package/assets/api/vendor_modules/body-parser/LICENSE +23 -0
- package/assets/api/vendor_modules/body-parser/README.md +476 -0
- package/assets/api/vendor_modules/body-parser/index.js +156 -0
- package/assets/api/vendor_modules/body-parser/lib/read.js +205 -0
- package/assets/api/vendor_modules/body-parser/lib/types/json.js +247 -0
- package/assets/api/vendor_modules/body-parser/lib/types/raw.js +105 -0
- package/assets/api/vendor_modules/body-parser/lib/types/text.js +125 -0
- package/assets/api/vendor_modules/body-parser/lib/types/urlencoded.js +303 -0
- package/assets/api/vendor_modules/body-parser/node_modules/qs/.editorconfig +46 -0
- package/assets/api/vendor_modules/body-parser/node_modules/qs/.github/FUNDING.yml +12 -0
- package/assets/api/vendor_modules/body-parser/node_modules/qs/.github/SECURITY.md +11 -0
- package/assets/api/vendor_modules/body-parser/node_modules/qs/.github/THREAT_MODEL.md +80 -0
- package/assets/api/vendor_modules/body-parser/node_modules/qs/.nycrc +13 -0
- package/assets/api/vendor_modules/body-parser/node_modules/qs/CHANGELOG.md +872 -0
- package/assets/api/vendor_modules/body-parser/node_modules/qs/LICENSE.md +29 -0
- package/assets/api/vendor_modules/body-parser/node_modules/qs/README.md +804 -0
- package/assets/api/vendor_modules/body-parser/node_modules/qs/dist/qs.js +141 -0
- package/assets/api/vendor_modules/body-parser/node_modules/qs/eslint.config.mjs +57 -0
- package/assets/api/vendor_modules/body-parser/node_modules/qs/lib/formats.js +23 -0
- package/assets/api/vendor_modules/body-parser/node_modules/qs/lib/index.js +11 -0
- package/assets/api/vendor_modules/body-parser/node_modules/qs/lib/parse.js +503 -0
- package/assets/api/vendor_modules/body-parser/node_modules/qs/lib/stringify.js +378 -0
- package/assets/api/vendor_modules/body-parser/node_modules/qs/lib/utils.js +512 -0
- package/assets/api/vendor_modules/body-parser/node_modules/qs/package.json +95 -0
- package/assets/api/vendor_modules/body-parser/node_modules/qs/test/empty-keys-cases.js +267 -0
- package/assets/api/vendor_modules/body-parser/node_modules/qs/test/parse.js +2296 -0
- package/assets/api/vendor_modules/body-parser/node_modules/qs/test/stringify.js +1995 -0
- package/assets/api/vendor_modules/body-parser/node_modules/qs/test/utils.js +822 -0
- package/assets/api/vendor_modules/body-parser/package.json +55 -0
- package/assets/api/vendor_modules/bytes/History.md +97 -0
- package/assets/api/vendor_modules/bytes/LICENSE +23 -0
- package/assets/api/vendor_modules/bytes/Readme.md +152 -0
- package/assets/api/vendor_modules/bytes/index.js +170 -0
- package/assets/api/vendor_modules/bytes/package.json +42 -0
- package/assets/api/vendor_modules/call-bind-apply-helpers/.eslintrc +17 -0
- package/assets/api/vendor_modules/call-bind-apply-helpers/.github/FUNDING.yml +12 -0
- package/assets/api/vendor_modules/call-bind-apply-helpers/.nycrc +9 -0
- package/assets/api/vendor_modules/call-bind-apply-helpers/CHANGELOG.md +30 -0
- package/assets/api/vendor_modules/call-bind-apply-helpers/LICENSE +21 -0
- package/assets/api/vendor_modules/call-bind-apply-helpers/README.md +62 -0
- package/assets/api/vendor_modules/call-bind-apply-helpers/actualApply.d.ts +1 -0
- package/assets/api/vendor_modules/call-bind-apply-helpers/actualApply.js +10 -0
- package/assets/api/vendor_modules/call-bind-apply-helpers/applyBind.d.ts +19 -0
- package/assets/api/vendor_modules/call-bind-apply-helpers/applyBind.js +10 -0
- package/assets/api/vendor_modules/call-bind-apply-helpers/functionApply.d.ts +1 -0
- package/assets/api/vendor_modules/call-bind-apply-helpers/functionApply.js +4 -0
- package/assets/api/vendor_modules/call-bind-apply-helpers/functionCall.d.ts +1 -0
- package/assets/api/vendor_modules/call-bind-apply-helpers/functionCall.js +4 -0
- package/assets/api/vendor_modules/call-bind-apply-helpers/index.d.ts +64 -0
- package/assets/api/vendor_modules/call-bind-apply-helpers/index.js +15 -0
- package/assets/api/vendor_modules/call-bind-apply-helpers/package.json +85 -0
- package/assets/api/vendor_modules/call-bind-apply-helpers/reflectApply.d.ts +3 -0
- package/assets/api/vendor_modules/call-bind-apply-helpers/reflectApply.js +4 -0
- package/assets/api/vendor_modules/call-bind-apply-helpers/test/index.js +63 -0
- package/assets/api/vendor_modules/call-bind-apply-helpers/tsconfig.json +9 -0
- package/assets/api/vendor_modules/call-bound/.eslintrc +13 -0
- package/assets/api/vendor_modules/call-bound/.github/FUNDING.yml +12 -0
- package/assets/api/vendor_modules/call-bound/.nycrc +9 -0
- package/assets/api/vendor_modules/call-bound/CHANGELOG.md +42 -0
- package/assets/api/vendor_modules/call-bound/LICENSE +21 -0
- package/assets/api/vendor_modules/call-bound/README.md +53 -0
- package/assets/api/vendor_modules/call-bound/index.d.ts +94 -0
- package/assets/api/vendor_modules/call-bound/index.js +19 -0
- package/assets/api/vendor_modules/call-bound/package.json +99 -0
- package/assets/api/vendor_modules/call-bound/test/index.js +61 -0
- package/assets/api/vendor_modules/call-bound/tsconfig.json +10 -0
- package/assets/api/vendor_modules/content-disposition/HISTORY.md +60 -0
- package/assets/api/vendor_modules/content-disposition/LICENSE +22 -0
- package/assets/api/vendor_modules/content-disposition/README.md +142 -0
- package/assets/api/vendor_modules/content-disposition/index.js +458 -0
- package/assets/api/vendor_modules/content-disposition/package.json +44 -0
- package/assets/api/vendor_modules/content-type/HISTORY.md +29 -0
- package/assets/api/vendor_modules/content-type/LICENSE +22 -0
- package/assets/api/vendor_modules/content-type/README.md +94 -0
- package/assets/api/vendor_modules/content-type/index.js +225 -0
- package/assets/api/vendor_modules/content-type/package.json +42 -0
- package/assets/api/vendor_modules/cookie/LICENSE +24 -0
- package/assets/api/vendor_modules/cookie/README.md +317 -0
- package/assets/api/vendor_modules/cookie/SECURITY.md +25 -0
- package/assets/api/vendor_modules/cookie/index.js +335 -0
- package/assets/api/vendor_modules/cookie/package.json +44 -0
- package/assets/api/vendor_modules/cookie-signature/History.md +42 -0
- package/assets/api/vendor_modules/cookie-signature/Readme.md +42 -0
- package/assets/api/vendor_modules/cookie-signature/index.js +51 -0
- package/assets/api/vendor_modules/cookie-signature/package.json +18 -0
- package/assets/api/vendor_modules/debug/.coveralls.yml +1 -0
- package/assets/api/vendor_modules/debug/.eslintrc +11 -0
- package/assets/api/vendor_modules/debug/.travis.yml +14 -0
- package/assets/api/vendor_modules/debug/CHANGELOG.md +362 -0
- package/assets/api/vendor_modules/debug/LICENSE +19 -0
- package/assets/api/vendor_modules/debug/Makefile +50 -0
- package/assets/api/vendor_modules/debug/README.md +312 -0
- package/assets/api/vendor_modules/debug/component.json +19 -0
- package/assets/api/vendor_modules/debug/karma.conf.js +70 -0
- package/assets/api/vendor_modules/debug/node.js +1 -0
- package/assets/api/vendor_modules/debug/package.json +49 -0
- package/assets/api/vendor_modules/debug/src/browser.js +185 -0
- package/assets/api/vendor_modules/debug/src/debug.js +202 -0
- package/assets/api/vendor_modules/debug/src/index.js +10 -0
- package/assets/api/vendor_modules/debug/src/inspector-log.js +15 -0
- package/assets/api/vendor_modules/debug/src/node.js +248 -0
- package/assets/api/vendor_modules/depd/History.md +103 -0
- package/assets/api/vendor_modules/depd/LICENSE +22 -0
- package/assets/api/vendor_modules/depd/Readme.md +280 -0
- package/assets/api/vendor_modules/depd/index.js +538 -0
- package/assets/api/vendor_modules/depd/lib/browser/index.js +77 -0
- package/assets/api/vendor_modules/depd/package.json +45 -0
- package/assets/api/vendor_modules/destroy/LICENSE +23 -0
- package/assets/api/vendor_modules/destroy/README.md +63 -0
- package/assets/api/vendor_modules/destroy/index.js +209 -0
- package/assets/api/vendor_modules/destroy/package.json +48 -0
- package/assets/api/vendor_modules/dunder-proto/.eslintrc +5 -0
- package/assets/api/vendor_modules/dunder-proto/.github/FUNDING.yml +12 -0
- package/assets/api/vendor_modules/dunder-proto/.nycrc +13 -0
- package/assets/api/vendor_modules/dunder-proto/CHANGELOG.md +24 -0
- package/assets/api/vendor_modules/dunder-proto/LICENSE +21 -0
- package/assets/api/vendor_modules/dunder-proto/README.md +54 -0
- package/assets/api/vendor_modules/dunder-proto/get.d.ts +5 -0
- package/assets/api/vendor_modules/dunder-proto/get.js +30 -0
- package/assets/api/vendor_modules/dunder-proto/package.json +76 -0
- package/assets/api/vendor_modules/dunder-proto/set.d.ts +5 -0
- package/assets/api/vendor_modules/dunder-proto/set.js +35 -0
- package/assets/api/vendor_modules/dunder-proto/test/get.js +34 -0
- package/assets/api/vendor_modules/dunder-proto/test/index.js +4 -0
- package/assets/api/vendor_modules/dunder-proto/test/set.js +50 -0
- package/assets/api/vendor_modules/dunder-proto/tsconfig.json +9 -0
- package/assets/api/vendor_modules/ee-first/LICENSE +22 -0
- package/assets/api/vendor_modules/ee-first/README.md +80 -0
- package/assets/api/vendor_modules/ee-first/index.js +95 -0
- package/assets/api/vendor_modules/ee-first/package.json +29 -0
- package/assets/api/vendor_modules/encodeurl/LICENSE +22 -0
- package/assets/api/vendor_modules/encodeurl/README.md +109 -0
- package/assets/api/vendor_modules/encodeurl/index.js +60 -0
- package/assets/api/vendor_modules/encodeurl/package.json +40 -0
- package/assets/api/vendor_modules/es-define-property/.eslintrc +13 -0
- package/assets/api/vendor_modules/es-define-property/.github/FUNDING.yml +12 -0
- package/assets/api/vendor_modules/es-define-property/.nycrc +9 -0
- package/assets/api/vendor_modules/es-define-property/CHANGELOG.md +29 -0
- package/assets/api/vendor_modules/es-define-property/LICENSE +21 -0
- package/assets/api/vendor_modules/es-define-property/README.md +49 -0
- package/assets/api/vendor_modules/es-define-property/index.d.ts +3 -0
- package/assets/api/vendor_modules/es-define-property/index.js +14 -0
- package/assets/api/vendor_modules/es-define-property/package.json +81 -0
- package/assets/api/vendor_modules/es-define-property/test/index.js +56 -0
- package/assets/api/vendor_modules/es-define-property/tsconfig.json +10 -0
- package/assets/api/vendor_modules/es-errors/.eslintrc +5 -0
- package/assets/api/vendor_modules/es-errors/.github/FUNDING.yml +12 -0
- package/assets/api/vendor_modules/es-errors/CHANGELOG.md +40 -0
- package/assets/api/vendor_modules/es-errors/LICENSE +21 -0
- package/assets/api/vendor_modules/es-errors/README.md +55 -0
- package/assets/api/vendor_modules/es-errors/eval.d.ts +3 -0
- package/assets/api/vendor_modules/es-errors/eval.js +4 -0
- package/assets/api/vendor_modules/es-errors/index.d.ts +3 -0
- package/assets/api/vendor_modules/es-errors/index.js +4 -0
- package/assets/api/vendor_modules/es-errors/package.json +80 -0
- package/assets/api/vendor_modules/es-errors/range.d.ts +3 -0
- package/assets/api/vendor_modules/es-errors/range.js +4 -0
- package/assets/api/vendor_modules/es-errors/ref.d.ts +3 -0
- package/assets/api/vendor_modules/es-errors/ref.js +4 -0
- package/assets/api/vendor_modules/es-errors/syntax.d.ts +3 -0
- package/assets/api/vendor_modules/es-errors/syntax.js +4 -0
- package/assets/api/vendor_modules/es-errors/test/index.js +19 -0
- package/assets/api/vendor_modules/es-errors/tsconfig.json +49 -0
- package/assets/api/vendor_modules/es-errors/type.d.ts +3 -0
- package/assets/api/vendor_modules/es-errors/type.js +4 -0
- package/assets/api/vendor_modules/es-errors/uri.d.ts +3 -0
- package/assets/api/vendor_modules/es-errors/uri.js +4 -0
- package/assets/api/vendor_modules/es-object-atoms/.eslintrc +16 -0
- package/assets/api/vendor_modules/es-object-atoms/.github/FUNDING.yml +12 -0
- package/assets/api/vendor_modules/es-object-atoms/CHANGELOG.md +44 -0
- package/assets/api/vendor_modules/es-object-atoms/LICENSE +21 -0
- package/assets/api/vendor_modules/es-object-atoms/README.md +63 -0
- package/assets/api/vendor_modules/es-object-atoms/RequireObjectCoercible.d.ts +3 -0
- package/assets/api/vendor_modules/es-object-atoms/RequireObjectCoercible.js +11 -0
- package/assets/api/vendor_modules/es-object-atoms/ToObject.d.ts +7 -0
- package/assets/api/vendor_modules/es-object-atoms/ToObject.js +10 -0
- package/assets/api/vendor_modules/es-object-atoms/index.d.ts +3 -0
- package/assets/api/vendor_modules/es-object-atoms/index.js +4 -0
- package/assets/api/vendor_modules/es-object-atoms/isObject.d.ts +3 -0
- package/assets/api/vendor_modules/es-object-atoms/isObject.js +6 -0
- package/assets/api/vendor_modules/es-object-atoms/package.json +79 -0
- package/assets/api/vendor_modules/es-object-atoms/test/index.js +38 -0
- package/assets/api/vendor_modules/es-object-atoms/tsconfig.json +7 -0
- package/assets/api/vendor_modules/escape-html/LICENSE +24 -0
- package/assets/api/vendor_modules/escape-html/Readme.md +43 -0
- package/assets/api/vendor_modules/escape-html/index.js +78 -0
- package/assets/api/vendor_modules/escape-html/package.json +24 -0
- package/assets/api/vendor_modules/etag/HISTORY.md +83 -0
- package/assets/api/vendor_modules/etag/LICENSE +22 -0
- package/assets/api/vendor_modules/etag/README.md +159 -0
- package/assets/api/vendor_modules/etag/index.js +131 -0
- package/assets/api/vendor_modules/etag/package.json +47 -0
- package/assets/api/vendor_modules/express/History.md +3676 -0
- package/assets/api/vendor_modules/express/LICENSE +24 -0
- package/assets/api/vendor_modules/express/Readme.md +260 -0
- package/assets/api/vendor_modules/express/index.js +11 -0
- package/assets/api/vendor_modules/express/lib/application.js +661 -0
- package/assets/api/vendor_modules/express/lib/express.js +116 -0
- package/assets/api/vendor_modules/express/lib/middleware/init.js +43 -0
- package/assets/api/vendor_modules/express/lib/middleware/query.js +47 -0
- package/assets/api/vendor_modules/express/lib/request.js +525 -0
- package/assets/api/vendor_modules/express/lib/response.js +1179 -0
- package/assets/api/vendor_modules/express/lib/router/index.js +673 -0
- package/assets/api/vendor_modules/express/lib/router/layer.js +181 -0
- package/assets/api/vendor_modules/express/lib/router/route.js +230 -0
- package/assets/api/vendor_modules/express/lib/utils.js +304 -0
- package/assets/api/vendor_modules/express/lib/view.js +182 -0
- package/assets/api/vendor_modules/express/package.json +102 -0
- package/assets/api/vendor_modules/finalhandler/HISTORY.md +216 -0
- package/assets/api/vendor_modules/finalhandler/LICENSE +22 -0
- package/assets/api/vendor_modules/finalhandler/README.md +147 -0
- package/assets/api/vendor_modules/finalhandler/SECURITY.md +25 -0
- package/assets/api/vendor_modules/finalhandler/index.js +341 -0
- package/assets/api/vendor_modules/finalhandler/package.json +47 -0
- package/assets/api/vendor_modules/forwarded/HISTORY.md +21 -0
- package/assets/api/vendor_modules/forwarded/LICENSE +22 -0
- package/assets/api/vendor_modules/forwarded/README.md +57 -0
- package/assets/api/vendor_modules/forwarded/index.js +90 -0
- package/assets/api/vendor_modules/forwarded/package.json +45 -0
- package/assets/api/vendor_modules/fresh/HISTORY.md +70 -0
- package/assets/api/vendor_modules/fresh/LICENSE +23 -0
- package/assets/api/vendor_modules/fresh/README.md +119 -0
- package/assets/api/vendor_modules/fresh/index.js +137 -0
- package/assets/api/vendor_modules/fresh/package.json +46 -0
- package/assets/api/vendor_modules/function-bind/.eslintrc +21 -0
- package/assets/api/vendor_modules/function-bind/.github/FUNDING.yml +12 -0
- package/assets/api/vendor_modules/function-bind/.github/SECURITY.md +3 -0
- package/assets/api/vendor_modules/function-bind/.nycrc +13 -0
- package/assets/api/vendor_modules/function-bind/CHANGELOG.md +136 -0
- package/assets/api/vendor_modules/function-bind/LICENSE +20 -0
- package/assets/api/vendor_modules/function-bind/README.md +46 -0
- package/assets/api/vendor_modules/function-bind/implementation.js +84 -0
- package/assets/api/vendor_modules/function-bind/index.js +5 -0
- package/assets/api/vendor_modules/function-bind/package.json +87 -0
- package/assets/api/vendor_modules/function-bind/test/.eslintrc +9 -0
- package/assets/api/vendor_modules/function-bind/test/index.js +252 -0
- package/assets/api/vendor_modules/get-intrinsic/.eslintrc +42 -0
- package/assets/api/vendor_modules/get-intrinsic/.github/FUNDING.yml +12 -0
- package/assets/api/vendor_modules/get-intrinsic/.nycrc +9 -0
- package/assets/api/vendor_modules/get-intrinsic/CHANGELOG.md +186 -0
- package/assets/api/vendor_modules/get-intrinsic/LICENSE +21 -0
- package/assets/api/vendor_modules/get-intrinsic/README.md +71 -0
- package/assets/api/vendor_modules/get-intrinsic/index.js +378 -0
- package/assets/api/vendor_modules/get-intrinsic/package.json +97 -0
- package/assets/api/vendor_modules/get-intrinsic/test/GetIntrinsic.js +274 -0
- package/assets/api/vendor_modules/get-proto/.eslintrc +10 -0
- package/assets/api/vendor_modules/get-proto/.github/FUNDING.yml +12 -0
- package/assets/api/vendor_modules/get-proto/.nycrc +9 -0
- package/assets/api/vendor_modules/get-proto/CHANGELOG.md +21 -0
- package/assets/api/vendor_modules/get-proto/LICENSE +21 -0
- package/assets/api/vendor_modules/get-proto/Object.getPrototypeOf.d.ts +5 -0
- package/assets/api/vendor_modules/get-proto/Object.getPrototypeOf.js +6 -0
- package/assets/api/vendor_modules/get-proto/README.md +50 -0
- package/assets/api/vendor_modules/get-proto/Reflect.getPrototypeOf.d.ts +3 -0
- package/assets/api/vendor_modules/get-proto/Reflect.getPrototypeOf.js +4 -0
- package/assets/api/vendor_modules/get-proto/index.d.ts +5 -0
- package/assets/api/vendor_modules/get-proto/index.js +27 -0
- package/assets/api/vendor_modules/get-proto/package.json +81 -0
- package/assets/api/vendor_modules/get-proto/test/index.js +68 -0
- package/assets/api/vendor_modules/get-proto/tsconfig.json +9 -0
- package/assets/api/vendor_modules/gopd/.eslintrc +16 -0
- package/assets/api/vendor_modules/gopd/.github/FUNDING.yml +12 -0
- package/assets/api/vendor_modules/gopd/CHANGELOG.md +45 -0
- package/assets/api/vendor_modules/gopd/LICENSE +21 -0
- package/assets/api/vendor_modules/gopd/README.md +40 -0
- package/assets/api/vendor_modules/gopd/gOPD.d.ts +1 -0
- package/assets/api/vendor_modules/gopd/gOPD.js +4 -0
- package/assets/api/vendor_modules/gopd/index.d.ts +5 -0
- package/assets/api/vendor_modules/gopd/index.js +15 -0
- package/assets/api/vendor_modules/gopd/package.json +77 -0
- package/assets/api/vendor_modules/gopd/test/index.js +36 -0
- package/assets/api/vendor_modules/gopd/tsconfig.json +9 -0
- package/assets/api/vendor_modules/has-symbols/.eslintrc +11 -0
- package/assets/api/vendor_modules/has-symbols/.github/FUNDING.yml +12 -0
- package/assets/api/vendor_modules/has-symbols/.nycrc +9 -0
- package/assets/api/vendor_modules/has-symbols/CHANGELOG.md +91 -0
- package/assets/api/vendor_modules/has-symbols/LICENSE +21 -0
- package/assets/api/vendor_modules/has-symbols/README.md +46 -0
- package/assets/api/vendor_modules/has-symbols/index.d.ts +3 -0
- package/assets/api/vendor_modules/has-symbols/index.js +14 -0
- package/assets/api/vendor_modules/has-symbols/package.json +111 -0
- package/assets/api/vendor_modules/has-symbols/shams.d.ts +3 -0
- package/assets/api/vendor_modules/has-symbols/shams.js +45 -0
- package/assets/api/vendor_modules/has-symbols/test/index.js +22 -0
- package/assets/api/vendor_modules/has-symbols/test/shams/core-js.js +29 -0
- package/assets/api/vendor_modules/has-symbols/test/shams/get-own-property-symbols.js +29 -0
- package/assets/api/vendor_modules/has-symbols/test/tests.js +58 -0
- package/assets/api/vendor_modules/has-symbols/tsconfig.json +10 -0
- package/assets/api/vendor_modules/hasown/.github/FUNDING.yml +12 -0
- package/assets/api/vendor_modules/hasown/.nycrc +13 -0
- package/assets/api/vendor_modules/hasown/CHANGELOG.md +58 -0
- package/assets/api/vendor_modules/hasown/LICENSE +21 -0
- package/assets/api/vendor_modules/hasown/README.md +40 -0
- package/assets/api/vendor_modules/hasown/eslint.config.mjs +6 -0
- package/assets/api/vendor_modules/hasown/index.d.ts +3 -0
- package/assets/api/vendor_modules/hasown/index.js +8 -0
- package/assets/api/vendor_modules/hasown/package.json +91 -0
- package/assets/api/vendor_modules/hasown/tsconfig.json +6 -0
- package/assets/api/vendor_modules/http-errors/HISTORY.md +186 -0
- package/assets/api/vendor_modules/http-errors/LICENSE +23 -0
- package/assets/api/vendor_modules/http-errors/README.md +169 -0
- package/assets/api/vendor_modules/http-errors/index.js +290 -0
- package/assets/api/vendor_modules/http-errors/package.json +54 -0
- package/assets/api/vendor_modules/iconv-lite/Changelog.md +162 -0
- package/assets/api/vendor_modules/iconv-lite/LICENSE +21 -0
- package/assets/api/vendor_modules/iconv-lite/README.md +156 -0
- package/assets/api/vendor_modules/iconv-lite/encodings/dbcs-codec.js +555 -0
- package/assets/api/vendor_modules/iconv-lite/encodings/dbcs-data.js +176 -0
- package/assets/api/vendor_modules/iconv-lite/encodings/index.js +22 -0
- package/assets/api/vendor_modules/iconv-lite/encodings/internal.js +188 -0
- package/assets/api/vendor_modules/iconv-lite/encodings/sbcs-codec.js +72 -0
- package/assets/api/vendor_modules/iconv-lite/encodings/sbcs-data-generated.js +451 -0
- package/assets/api/vendor_modules/iconv-lite/encodings/sbcs-data.js +174 -0
- package/assets/api/vendor_modules/iconv-lite/encodings/tables/big5-added.json +122 -0
- package/assets/api/vendor_modules/iconv-lite/encodings/tables/cp936.json +264 -0
- package/assets/api/vendor_modules/iconv-lite/encodings/tables/cp949.json +273 -0
- package/assets/api/vendor_modules/iconv-lite/encodings/tables/cp950.json +177 -0
- package/assets/api/vendor_modules/iconv-lite/encodings/tables/eucjp.json +182 -0
- package/assets/api/vendor_modules/iconv-lite/encodings/tables/gb18030-ranges.json +1 -0
- package/assets/api/vendor_modules/iconv-lite/encodings/tables/gbk-added.json +55 -0
- package/assets/api/vendor_modules/iconv-lite/encodings/tables/shiftjis.json +125 -0
- package/assets/api/vendor_modules/iconv-lite/encodings/utf16.js +177 -0
- package/assets/api/vendor_modules/iconv-lite/encodings/utf7.js +290 -0
- package/assets/api/vendor_modules/iconv-lite/lib/bom-handling.js +52 -0
- package/assets/api/vendor_modules/iconv-lite/lib/extend-node.js +217 -0
- package/assets/api/vendor_modules/iconv-lite/lib/index.d.ts +24 -0
- package/assets/api/vendor_modules/iconv-lite/lib/index.js +153 -0
- package/assets/api/vendor_modules/iconv-lite/lib/streams.js +121 -0
- package/assets/api/vendor_modules/iconv-lite/package.json +46 -0
- package/assets/api/vendor_modules/inherits/LICENSE +16 -0
- package/assets/api/vendor_modules/inherits/README.md +42 -0
- package/assets/api/vendor_modules/inherits/inherits.js +9 -0
- package/assets/api/vendor_modules/inherits/inherits_browser.js +27 -0
- package/assets/api/vendor_modules/inherits/package.json +29 -0
- package/assets/api/vendor_modules/ipaddr.js/LICENSE +19 -0
- package/assets/api/vendor_modules/ipaddr.js/README.md +233 -0
- package/assets/api/vendor_modules/ipaddr.js/ipaddr.min.js +1 -0
- package/assets/api/vendor_modules/ipaddr.js/lib/ipaddr.js +673 -0
- package/assets/api/vendor_modules/ipaddr.js/lib/ipaddr.js.d.ts +68 -0
- package/assets/api/vendor_modules/ipaddr.js/package.json +35 -0
- package/assets/api/vendor_modules/math-intrinsics/.eslintrc +16 -0
- package/assets/api/vendor_modules/math-intrinsics/.github/FUNDING.yml +12 -0
- package/assets/api/vendor_modules/math-intrinsics/CHANGELOG.md +24 -0
- package/assets/api/vendor_modules/math-intrinsics/LICENSE +21 -0
- package/assets/api/vendor_modules/math-intrinsics/README.md +50 -0
- package/assets/api/vendor_modules/math-intrinsics/abs.d.ts +1 -0
- package/assets/api/vendor_modules/math-intrinsics/abs.js +4 -0
- package/assets/api/vendor_modules/math-intrinsics/constants/maxArrayLength.d.ts +3 -0
- package/assets/api/vendor_modules/math-intrinsics/constants/maxArrayLength.js +4 -0
- package/assets/api/vendor_modules/math-intrinsics/constants/maxSafeInteger.d.ts +3 -0
- package/assets/api/vendor_modules/math-intrinsics/constants/maxSafeInteger.js +5 -0
- package/assets/api/vendor_modules/math-intrinsics/constants/maxValue.d.ts +3 -0
- package/assets/api/vendor_modules/math-intrinsics/constants/maxValue.js +5 -0
- package/assets/api/vendor_modules/math-intrinsics/floor.d.ts +1 -0
- package/assets/api/vendor_modules/math-intrinsics/floor.js +4 -0
- package/assets/api/vendor_modules/math-intrinsics/isFinite.d.ts +3 -0
- package/assets/api/vendor_modules/math-intrinsics/isFinite.js +12 -0
- package/assets/api/vendor_modules/math-intrinsics/isInteger.d.ts +3 -0
- package/assets/api/vendor_modules/math-intrinsics/isInteger.js +16 -0
- package/assets/api/vendor_modules/math-intrinsics/isNaN.d.ts +1 -0
- package/assets/api/vendor_modules/math-intrinsics/isNaN.js +6 -0
- package/assets/api/vendor_modules/math-intrinsics/isNegativeZero.d.ts +3 -0
- package/assets/api/vendor_modules/math-intrinsics/isNegativeZero.js +6 -0
- package/assets/api/vendor_modules/math-intrinsics/max.d.ts +1 -0
- package/assets/api/vendor_modules/math-intrinsics/max.js +4 -0
- package/assets/api/vendor_modules/math-intrinsics/min.d.ts +1 -0
- package/assets/api/vendor_modules/math-intrinsics/min.js +4 -0
- package/assets/api/vendor_modules/math-intrinsics/mod.d.ts +3 -0
- package/assets/api/vendor_modules/math-intrinsics/mod.js +9 -0
- package/assets/api/vendor_modules/math-intrinsics/package.json +86 -0
- package/assets/api/vendor_modules/math-intrinsics/pow.d.ts +1 -0
- package/assets/api/vendor_modules/math-intrinsics/pow.js +4 -0
- package/assets/api/vendor_modules/math-intrinsics/round.d.ts +1 -0
- package/assets/api/vendor_modules/math-intrinsics/round.js +4 -0
- package/assets/api/vendor_modules/math-intrinsics/sign.d.ts +3 -0
- package/assets/api/vendor_modules/math-intrinsics/sign.js +11 -0
- package/assets/api/vendor_modules/math-intrinsics/test/index.js +192 -0
- package/assets/api/vendor_modules/math-intrinsics/tsconfig.json +3 -0
- package/assets/api/vendor_modules/media-typer/HISTORY.md +22 -0
- package/assets/api/vendor_modules/media-typer/LICENSE +22 -0
- package/assets/api/vendor_modules/media-typer/README.md +81 -0
- package/assets/api/vendor_modules/media-typer/index.js +270 -0
- package/assets/api/vendor_modules/media-typer/package.json +26 -0
- package/assets/api/vendor_modules/merge-descriptors/HISTORY.md +21 -0
- package/assets/api/vendor_modules/merge-descriptors/LICENSE +23 -0
- package/assets/api/vendor_modules/merge-descriptors/README.md +49 -0
- package/assets/api/vendor_modules/merge-descriptors/index.js +60 -0
- package/assets/api/vendor_modules/merge-descriptors/package.json +39 -0
- package/assets/api/vendor_modules/methods/HISTORY.md +29 -0
- package/assets/api/vendor_modules/methods/LICENSE +24 -0
- package/assets/api/vendor_modules/methods/README.md +51 -0
- package/assets/api/vendor_modules/methods/index.js +69 -0
- package/assets/api/vendor_modules/methods/package.json +36 -0
- package/assets/api/vendor_modules/mime/CHANGELOG.md +164 -0
- package/assets/api/vendor_modules/mime/LICENSE +21 -0
- package/assets/api/vendor_modules/mime/README.md +90 -0
- package/assets/api/vendor_modules/mime/cli.js +8 -0
- package/assets/api/vendor_modules/mime/mime.js +108 -0
- package/assets/api/vendor_modules/mime/package.json +44 -0
- package/assets/api/vendor_modules/mime/src/build.js +53 -0
- package/assets/api/vendor_modules/mime/src/test.js +60 -0
- package/assets/api/vendor_modules/mime/types.json +1 -0
- package/assets/api/vendor_modules/mime-db/HISTORY.md +507 -0
- package/assets/api/vendor_modules/mime-db/LICENSE +23 -0
- package/assets/api/vendor_modules/mime-db/README.md +100 -0
- package/assets/api/vendor_modules/mime-db/db.json +8519 -0
- package/assets/api/vendor_modules/mime-db/index.js +12 -0
- package/assets/api/vendor_modules/mime-db/package.json +60 -0
- package/assets/api/vendor_modules/mime-types/HISTORY.md +397 -0
- package/assets/api/vendor_modules/mime-types/LICENSE +23 -0
- package/assets/api/vendor_modules/mime-types/README.md +113 -0
- package/assets/api/vendor_modules/mime-types/index.js +188 -0
- package/assets/api/vendor_modules/mime-types/package.json +44 -0
- package/assets/api/vendor_modules/ms/index.js +152 -0
- package/assets/api/vendor_modules/ms/license.md +21 -0
- package/assets/api/vendor_modules/ms/package.json +37 -0
- package/assets/api/vendor_modules/ms/readme.md +51 -0
- package/assets/api/vendor_modules/negotiator/HISTORY.md +108 -0
- package/assets/api/vendor_modules/negotiator/LICENSE +24 -0
- package/assets/api/vendor_modules/negotiator/README.md +203 -0
- package/assets/api/vendor_modules/negotiator/index.js +82 -0
- package/assets/api/vendor_modules/negotiator/lib/charset.js +169 -0
- package/assets/api/vendor_modules/negotiator/lib/encoding.js +184 -0
- package/assets/api/vendor_modules/negotiator/lib/language.js +179 -0
- package/assets/api/vendor_modules/negotiator/lib/mediaType.js +294 -0
- package/assets/api/vendor_modules/negotiator/package.json +42 -0
- package/assets/api/vendor_modules/object-inspect/.eslintrc +53 -0
- package/assets/api/vendor_modules/object-inspect/.github/FUNDING.yml +12 -0
- package/assets/api/vendor_modules/object-inspect/.nycrc +13 -0
- package/assets/api/vendor_modules/object-inspect/CHANGELOG.md +424 -0
- package/assets/api/vendor_modules/object-inspect/LICENSE +21 -0
- package/assets/api/vendor_modules/object-inspect/example/all.js +23 -0
- package/assets/api/vendor_modules/object-inspect/example/circular.js +6 -0
- package/assets/api/vendor_modules/object-inspect/example/fn.js +5 -0
- package/assets/api/vendor_modules/object-inspect/example/inspect.js +10 -0
- package/assets/api/vendor_modules/object-inspect/index.js +544 -0
- package/assets/api/vendor_modules/object-inspect/package-support.json +20 -0
- package/assets/api/vendor_modules/object-inspect/package.json +105 -0
- package/assets/api/vendor_modules/object-inspect/readme.markdown +84 -0
- package/assets/api/vendor_modules/object-inspect/test/bigint.js +58 -0
- package/assets/api/vendor_modules/object-inspect/test/browser/dom.js +15 -0
- package/assets/api/vendor_modules/object-inspect/test/circular.js +16 -0
- package/assets/api/vendor_modules/object-inspect/test/deep.js +12 -0
- package/assets/api/vendor_modules/object-inspect/test/element.js +53 -0
- package/assets/api/vendor_modules/object-inspect/test/err.js +48 -0
- package/assets/api/vendor_modules/object-inspect/test/fakes.js +29 -0
- package/assets/api/vendor_modules/object-inspect/test/fn.js +76 -0
- package/assets/api/vendor_modules/object-inspect/test/global.js +17 -0
- package/assets/api/vendor_modules/object-inspect/test/has.js +15 -0
- package/assets/api/vendor_modules/object-inspect/test/holes.js +15 -0
- package/assets/api/vendor_modules/object-inspect/test/indent-option.js +271 -0
- package/assets/api/vendor_modules/object-inspect/test/inspect.js +139 -0
- package/assets/api/vendor_modules/object-inspect/test/lowbyte.js +12 -0
- package/assets/api/vendor_modules/object-inspect/test/number.js +58 -0
- package/assets/api/vendor_modules/object-inspect/test/quoteStyle.js +26 -0
- package/assets/api/vendor_modules/object-inspect/test/toStringTag.js +40 -0
- package/assets/api/vendor_modules/object-inspect/test/undef.js +12 -0
- package/assets/api/vendor_modules/object-inspect/test/values.js +261 -0
- package/assets/api/vendor_modules/object-inspect/test-core-js.js +26 -0
- package/assets/api/vendor_modules/object-inspect/util.inspect.js +1 -0
- package/assets/api/vendor_modules/on-finished/HISTORY.md +98 -0
- package/assets/api/vendor_modules/on-finished/LICENSE +23 -0
- package/assets/api/vendor_modules/on-finished/README.md +162 -0
- package/assets/api/vendor_modules/on-finished/index.js +234 -0
- package/assets/api/vendor_modules/on-finished/package.json +39 -0
- package/assets/api/vendor_modules/parseurl/HISTORY.md +58 -0
- package/assets/api/vendor_modules/parseurl/LICENSE +24 -0
- package/assets/api/vendor_modules/parseurl/README.md +133 -0
- package/assets/api/vendor_modules/parseurl/index.js +158 -0
- package/assets/api/vendor_modules/parseurl/package.json +40 -0
- package/assets/api/vendor_modules/path-to-regexp/LICENSE +21 -0
- package/assets/api/vendor_modules/path-to-regexp/Readme.md +35 -0
- package/assets/api/vendor_modules/path-to-regexp/index.js +158 -0
- package/assets/api/vendor_modules/path-to-regexp/package.json +30 -0
- package/assets/api/vendor_modules/proxy-addr/HISTORY.md +167 -0
- package/assets/api/vendor_modules/proxy-addr/LICENSE +22 -0
- package/assets/api/vendor_modules/proxy-addr/README.md +139 -0
- package/assets/api/vendor_modules/proxy-addr/index.js +359 -0
- package/assets/api/vendor_modules/proxy-addr/package.json +51 -0
- package/assets/api/vendor_modules/qs/.editorconfig +46 -0
- package/assets/api/vendor_modules/qs/.github/FUNDING.yml +12 -0
- package/assets/api/vendor_modules/qs/.github/SECURITY.md +11 -0
- package/assets/api/vendor_modules/qs/.github/THREAT_MODEL.md +78 -0
- package/assets/api/vendor_modules/qs/.nycrc +13 -0
- package/assets/api/vendor_modules/qs/CHANGELOG.md +833 -0
- package/assets/api/vendor_modules/qs/LICENSE.md +29 -0
- package/assets/api/vendor_modules/qs/README.md +758 -0
- package/assets/api/vendor_modules/qs/dist/qs.js +141 -0
- package/assets/api/vendor_modules/qs/eslint.config.mjs +57 -0
- package/assets/api/vendor_modules/qs/lib/formats.js +23 -0
- package/assets/api/vendor_modules/qs/lib/index.js +11 -0
- package/assets/api/vendor_modules/qs/lib/parse.js +414 -0
- package/assets/api/vendor_modules/qs/lib/stringify.js +363 -0
- package/assets/api/vendor_modules/qs/lib/utils.js +381 -0
- package/assets/api/vendor_modules/qs/package.json +95 -0
- package/assets/api/vendor_modules/qs/test/empty-keys-cases.js +267 -0
- package/assets/api/vendor_modules/qs/test/parse.js +1933 -0
- package/assets/api/vendor_modules/qs/test/stringify.js +1448 -0
- package/assets/api/vendor_modules/qs/test/utils.js +626 -0
- package/assets/api/vendor_modules/range-parser/HISTORY.md +56 -0
- package/assets/api/vendor_modules/range-parser/LICENSE +23 -0
- package/assets/api/vendor_modules/range-parser/README.md +84 -0
- package/assets/api/vendor_modules/range-parser/index.js +162 -0
- package/assets/api/vendor_modules/range-parser/package.json +44 -0
- package/assets/api/vendor_modules/raw-body/LICENSE +22 -0
- package/assets/api/vendor_modules/raw-body/README.md +223 -0
- package/assets/api/vendor_modules/raw-body/index.d.ts +87 -0
- package/assets/api/vendor_modules/raw-body/index.js +336 -0
- package/assets/api/vendor_modules/raw-body/package.json +47 -0
- package/assets/api/vendor_modules/safe-buffer/LICENSE +21 -0
- package/assets/api/vendor_modules/safe-buffer/README.md +584 -0
- package/assets/api/vendor_modules/safe-buffer/index.d.ts +187 -0
- package/assets/api/vendor_modules/safe-buffer/index.js +65 -0
- package/assets/api/vendor_modules/safe-buffer/package.json +51 -0
- package/assets/api/vendor_modules/safer-buffer/LICENSE +21 -0
- package/assets/api/vendor_modules/safer-buffer/Porting-Buffer.md +268 -0
- package/assets/api/vendor_modules/safer-buffer/Readme.md +156 -0
- package/assets/api/vendor_modules/safer-buffer/dangerous.js +58 -0
- package/assets/api/vendor_modules/safer-buffer/package.json +34 -0
- package/assets/api/vendor_modules/safer-buffer/safer.js +77 -0
- package/assets/api/vendor_modules/safer-buffer/tests.js +406 -0
- package/assets/api/vendor_modules/send/HISTORY.md +538 -0
- package/assets/api/vendor_modules/send/LICENSE +23 -0
- package/assets/api/vendor_modules/send/README.md +327 -0
- package/assets/api/vendor_modules/send/SECURITY.md +24 -0
- package/assets/api/vendor_modules/send/index.js +1142 -0
- package/assets/api/vendor_modules/send/node_modules/ms/index.js +162 -0
- package/assets/api/vendor_modules/send/node_modules/ms/license.md +21 -0
- package/assets/api/vendor_modules/send/node_modules/ms/package.json +38 -0
- package/assets/api/vendor_modules/send/node_modules/ms/readme.md +59 -0
- package/assets/api/vendor_modules/send/package.json +62 -0
- package/assets/api/vendor_modules/serve-static/HISTORY.md +493 -0
- package/assets/api/vendor_modules/serve-static/LICENSE +25 -0
- package/assets/api/vendor_modules/serve-static/README.md +257 -0
- package/assets/api/vendor_modules/serve-static/index.js +209 -0
- package/assets/api/vendor_modules/serve-static/package.json +42 -0
- package/assets/api/vendor_modules/serverless-http/LICENSE.txt +33 -0
- package/assets/api/vendor_modules/serverless-http/README.md +117 -0
- package/assets/api/vendor_modules/serverless-http/lib/finish.js +42 -0
- package/assets/api/vendor_modules/serverless-http/lib/framework/get-framework.js +79 -0
- package/assets/api/vendor_modules/serverless-http/lib/provider/aws/clean-up-event.js +98 -0
- package/assets/api/vendor_modules/serverless-http/lib/provider/aws/create-request.js +110 -0
- package/assets/api/vendor_modules/serverless-http/lib/provider/aws/format-response.js +45 -0
- package/assets/api/vendor_modules/serverless-http/lib/provider/aws/index.js +15 -0
- package/assets/api/vendor_modules/serverless-http/lib/provider/aws/is-binary.js +42 -0
- package/assets/api/vendor_modules/serverless-http/lib/provider/aws/sanitize-headers.js +21 -0
- package/assets/api/vendor_modules/serverless-http/lib/provider/azure/clean-up-request.js +41 -0
- package/assets/api/vendor_modules/serverless-http/lib/provider/azure/create-request.js +45 -0
- package/assets/api/vendor_modules/serverless-http/lib/provider/azure/format-response.js +18 -0
- package/assets/api/vendor_modules/serverless-http/lib/provider/azure/index.js +13 -0
- package/assets/api/vendor_modules/serverless-http/lib/provider/azure/is-binary.js +42 -0
- package/assets/api/vendor_modules/serverless-http/lib/provider/azure/sanitize-headers.js +23 -0
- package/assets/api/vendor_modules/serverless-http/lib/provider/azure/set-cookie.json +1 -0
- package/assets/api/vendor_modules/serverless-http/lib/provider/get-provider.js +17 -0
- package/assets/api/vendor_modules/serverless-http/lib/request.js +38 -0
- package/assets/api/vendor_modules/serverless-http/lib/response.js +135 -0
- package/assets/api/vendor_modules/serverless-http/package.json +93 -0
- package/assets/api/vendor_modules/serverless-http/serverless-http.d.ts +41 -0
- package/assets/api/vendor_modules/serverless-http/serverless-http.js +23 -0
- package/assets/api/vendor_modules/setprototypeof/LICENSE +13 -0
- package/assets/api/vendor_modules/setprototypeof/README.md +31 -0
- package/assets/api/vendor_modules/setprototypeof/index.d.ts +2 -0
- package/assets/api/vendor_modules/setprototypeof/index.js +17 -0
- package/assets/api/vendor_modules/setprototypeof/package.json +38 -0
- package/assets/api/vendor_modules/setprototypeof/test/index.js +24 -0
- package/assets/api/vendor_modules/side-channel/.editorconfig +9 -0
- package/assets/api/vendor_modules/side-channel/.eslintrc +12 -0
- package/assets/api/vendor_modules/side-channel/.github/FUNDING.yml +12 -0
- package/assets/api/vendor_modules/side-channel/.nycrc +13 -0
- package/assets/api/vendor_modules/side-channel/CHANGELOG.md +120 -0
- package/assets/api/vendor_modules/side-channel/LICENSE +21 -0
- package/assets/api/vendor_modules/side-channel/README.md +61 -0
- package/assets/api/vendor_modules/side-channel/index.d.ts +14 -0
- package/assets/api/vendor_modules/side-channel/index.js +46 -0
- package/assets/api/vendor_modules/side-channel/package.json +85 -0
- package/assets/api/vendor_modules/side-channel/test/index.js +120 -0
- package/assets/api/vendor_modules/side-channel/tsconfig.json +9 -0
- package/assets/api/vendor_modules/side-channel-list/.editorconfig +9 -0
- package/assets/api/vendor_modules/side-channel-list/.eslintrc +11 -0
- package/assets/api/vendor_modules/side-channel-list/.github/FUNDING.yml +12 -0
- package/assets/api/vendor_modules/side-channel-list/.nycrc +13 -0
- package/assets/api/vendor_modules/side-channel-list/CHANGELOG.md +36 -0
- package/assets/api/vendor_modules/side-channel-list/LICENSE +21 -0
- package/assets/api/vendor_modules/side-channel-list/README.md +62 -0
- package/assets/api/vendor_modules/side-channel-list/index.d.ts +13 -0
- package/assets/api/vendor_modules/side-channel-list/index.js +111 -0
- package/assets/api/vendor_modules/side-channel-list/list.d.ts +14 -0
- package/assets/api/vendor_modules/side-channel-list/package.json +77 -0
- package/assets/api/vendor_modules/side-channel-list/test/index.js +154 -0
- package/assets/api/vendor_modules/side-channel-list/tsconfig.json +9 -0
- package/assets/api/vendor_modules/side-channel-map/.editorconfig +9 -0
- package/assets/api/vendor_modules/side-channel-map/.eslintrc +11 -0
- package/assets/api/vendor_modules/side-channel-map/.github/FUNDING.yml +12 -0
- package/assets/api/vendor_modules/side-channel-map/.nycrc +13 -0
- package/assets/api/vendor_modules/side-channel-map/CHANGELOG.md +22 -0
- package/assets/api/vendor_modules/side-channel-map/LICENSE +21 -0
- package/assets/api/vendor_modules/side-channel-map/README.md +62 -0
- package/assets/api/vendor_modules/side-channel-map/index.d.ts +15 -0
- package/assets/api/vendor_modules/side-channel-map/index.js +68 -0
- package/assets/api/vendor_modules/side-channel-map/package.json +80 -0
- package/assets/api/vendor_modules/side-channel-map/test/index.js +114 -0
- package/assets/api/vendor_modules/side-channel-map/tsconfig.json +9 -0
- package/assets/api/vendor_modules/side-channel-weakmap/.editorconfig +9 -0
- package/assets/api/vendor_modules/side-channel-weakmap/.eslintrc +12 -0
- package/assets/api/vendor_modules/side-channel-weakmap/.github/FUNDING.yml +12 -0
- package/assets/api/vendor_modules/side-channel-weakmap/.nycrc +13 -0
- package/assets/api/vendor_modules/side-channel-weakmap/CHANGELOG.md +28 -0
- package/assets/api/vendor_modules/side-channel-weakmap/LICENSE +21 -0
- package/assets/api/vendor_modules/side-channel-weakmap/README.md +62 -0
- package/assets/api/vendor_modules/side-channel-weakmap/index.d.ts +15 -0
- package/assets/api/vendor_modules/side-channel-weakmap/index.js +84 -0
- package/assets/api/vendor_modules/side-channel-weakmap/package.json +87 -0
- package/assets/api/vendor_modules/side-channel-weakmap/test/index.js +114 -0
- package/assets/api/vendor_modules/side-channel-weakmap/tsconfig.json +9 -0
- package/assets/api/vendor_modules/statuses/HISTORY.md +87 -0
- package/assets/api/vendor_modules/statuses/LICENSE +23 -0
- package/assets/api/vendor_modules/statuses/README.md +139 -0
- package/assets/api/vendor_modules/statuses/codes.json +65 -0
- package/assets/api/vendor_modules/statuses/index.js +146 -0
- package/assets/api/vendor_modules/statuses/package.json +49 -0
- package/assets/api/vendor_modules/toidentifier/HISTORY.md +9 -0
- package/assets/api/vendor_modules/toidentifier/LICENSE +21 -0
- package/assets/api/vendor_modules/toidentifier/README.md +61 -0
- package/assets/api/vendor_modules/toidentifier/index.js +32 -0
- package/assets/api/vendor_modules/toidentifier/package.json +38 -0
- package/assets/api/vendor_modules/type-is/HISTORY.md +259 -0
- package/assets/api/vendor_modules/type-is/LICENSE +23 -0
- package/assets/api/vendor_modules/type-is/README.md +170 -0
- package/assets/api/vendor_modules/type-is/index.js +266 -0
- package/assets/api/vendor_modules/type-is/package.json +45 -0
- package/assets/api/vendor_modules/unpipe/HISTORY.md +4 -0
- package/assets/api/vendor_modules/unpipe/LICENSE +22 -0
- package/assets/api/vendor_modules/unpipe/README.md +43 -0
- package/assets/api/vendor_modules/unpipe/index.js +69 -0
- package/assets/api/vendor_modules/unpipe/package.json +27 -0
- package/assets/api/vendor_modules/utils-merge/LICENSE +20 -0
- package/assets/api/vendor_modules/utils-merge/README.md +34 -0
- package/assets/api/vendor_modules/utils-merge/index.js +23 -0
- package/assets/api/vendor_modules/utils-merge/package.json +40 -0
- package/assets/api/vendor_modules/vary/HISTORY.md +39 -0
- package/assets/api/vendor_modules/vary/LICENSE +22 -0
- package/assets/api/vendor_modules/vary/README.md +101 -0
- package/assets/api/vendor_modules/vary/index.js +149 -0
- package/assets/api/vendor_modules/vary/package.json +43 -0
- package/assets/federation-presignup/index.js +108 -0
- package/assets/firstadmin/index.js +361 -0
- package/assets/headscale-apikey/index.js +140 -0
- package/assets/invoke-relay/index.js +96 -0
- package/assets/issuer-canary/index.js +71 -0
- package/assets/issuer-publish/index.js +87 -0
- package/assets/keyminter/index.js +209 -0
- package/assets/plugin-authorizer/index.js +1740 -0
- package/assets/plugin-catalog/index.js +881 -0
- package/assets/reapproval/index.js +3761 -0
- package/assets/sg-manager/index.js +176 -0
- package/assets/tailnet-resolver/index.js +55 -0
- package/assets/web/chunk-2MOGDYK4.js +1 -0
- package/assets/web/chunk-2SO4BVIT.js +1 -0
- package/assets/web/chunk-2V6RSAAC.js +1 -0
- package/assets/web/chunk-32GNBTAL.js +1 -0
- package/assets/web/chunk-33SYY2JB.js +1 -0
- package/assets/web/chunk-3VWYT7AX.js +1 -0
- package/assets/web/chunk-4FG4DAWU.js +4 -0
- package/assets/web/chunk-4N2IUS6T.js +1 -0
- package/assets/web/chunk-4SK6XQ6C.js +1 -0
- package/assets/web/chunk-65WE5MXA.js +8 -0
- package/assets/web/chunk-6D7SSSJF.js +1 -0
- package/assets/web/chunk-6KFR7DYY.js +1 -0
- package/assets/web/chunk-A4WHI3ZG.js +8 -0
- package/assets/web/chunk-BNFKRZTP.js +1 -0
- package/assets/web/chunk-CG56PH3M.js +1 -0
- package/assets/web/chunk-CGO25AIM.js +1 -0
- package/assets/web/chunk-CP4XZPOA.js +1 -0
- package/assets/web/chunk-CV7EODPO.js +1 -0
- package/assets/web/chunk-D7TR2ORJ.js +1 -0
- package/assets/web/chunk-DCOFBAKJ.js +1 -0
- package/assets/web/chunk-DOLRLYW7.js +1 -0
- package/assets/web/chunk-EEJ3X466.js +1 -0
- package/assets/web/chunk-EQ4PF25J.js +1 -0
- package/assets/web/chunk-EVP5UVDQ.js +1 -0
- package/assets/web/chunk-EW2VMNHE.js +1 -0
- package/assets/web/chunk-FIUVIKAN.js +1 -0
- package/assets/web/chunk-GHEU25TG.js +1 -0
- package/assets/web/chunk-GK2T2SMO.js +1 -0
- package/assets/web/chunk-GKI3R2JB.js +1 -0
- package/assets/web/chunk-GPKKIOHD.js +2 -0
- package/assets/web/chunk-H4AVFUDM.js +1 -0
- package/assets/web/chunk-H5H727H6.js +1 -0
- package/assets/web/chunk-HGVFH6YM.js +1 -0
- package/assets/web/chunk-HHPIANBK.js +1 -0
- package/assets/web/chunk-HK56COCB.js +1 -0
- package/assets/web/chunk-HZUB7LFV.js +1 -0
- package/assets/web/chunk-I7NTNTBA.js +1 -0
- package/assets/web/chunk-IKK5DQ3Z.js +1 -0
- package/assets/web/chunk-IMH56UBX.js +1 -0
- package/assets/web/chunk-J3SSPCFV.js +1 -0
- package/assets/web/chunk-J4C7C5KO.js +1 -0
- package/assets/web/chunk-J57JB4MU.js +1 -0
- package/assets/web/chunk-JMBXRK3I.js +4 -0
- package/assets/web/chunk-KCCEQIXX.js +1 -0
- package/assets/web/chunk-KEBESIXR.js +1 -0
- package/assets/web/chunk-KPNHT4MK.js +1 -0
- package/assets/web/chunk-LMLXTVZG.js +1 -0
- package/assets/web/chunk-M6OAYNRE.js +1 -0
- package/assets/web/chunk-M7MGX5I4.js +1 -0
- package/assets/web/chunk-MU2VNTNY.js +1 -0
- package/assets/web/chunk-NABAVDRL.js +1 -0
- package/assets/web/chunk-NO5D6WDF.js +1 -0
- package/assets/web/chunk-O4QSFUXB.js +1 -0
- package/assets/web/chunk-OATVFQXO.js +1 -0
- package/assets/web/chunk-P5WRM37W.js +5 -0
- package/assets/web/chunk-PCP6D2SM.js +1 -0
- package/assets/web/chunk-PMMBJK7Q.js +1 -0
- package/assets/web/chunk-PSMER3HX.js +1 -0
- package/assets/web/chunk-QPBWZLCT.js +1 -0
- package/assets/web/chunk-QVABVDO5.js +1 -0
- package/assets/web/chunk-RI77LE5V.js +1 -0
- package/assets/web/chunk-RKGUEXZ2.js +1 -0
- package/assets/web/chunk-RMFH2YTZ.js +1 -0
- package/assets/web/chunk-RROPCBUH.js +1 -0
- package/assets/web/chunk-SJMLX5AT.js +1 -0
- package/assets/web/chunk-TKVALOE4.js +2 -0
- package/assets/web/chunk-TM43WUKM.js +1 -0
- package/assets/web/chunk-VKWV3ANT.js +1 -0
- package/assets/web/chunk-VTMYG6YW.js +1 -0
- package/assets/web/chunk-VWW4SA5R.js +1 -0
- package/assets/web/chunk-WEDAFMID.js +1 -0
- package/assets/web/chunk-WFIHWVQO.js +1 -0
- package/assets/web/chunk-XJM3HDJQ.js +1 -0
- package/assets/web/chunk-YVJV2RUY.js +1 -0
- package/assets/web/chunk-Z3KONI7L.js +1 -0
- package/assets/web/chunk-ZDCURXPS.js +1 -0
- package/assets/web/favicon.ico +0 -0
- package/assets/web/index.html +63 -0
- package/assets/web/main-S6E3BC5O.js +2 -0
- package/assets/web/polyfills-7RSNIJ6J.js +2 -0
- package/assets/web/styles-R6ZUWC6K.css +1 -0
- package/dist/index.d.ts +27 -0
- package/dist/index.js +66 -0
- package/dist/lambdacode/api/services/brandingShapes.d.ts +5 -0
- package/dist/lambdacode/api/services/brandingShapes.js +15 -0
- package/dist/lambdacode/issuer/objects.d.ts +8 -0
- package/dist/lambdacode/issuer/objects.js +11 -0
- package/dist/lambdacode/network/naming.d.ts +52 -0
- package/dist/lambdacode/network/naming.js +67 -0
- package/dist/lib/access-portal-hub.d.ts +53 -0
- package/dist/lib/access-portal-hub.js +87 -0
- package/dist/lib/access-portal.d.ts +32 -0
- package/dist/lib/access-portal.js +174 -0
- package/dist/lib/audit-log.d.ts +18 -0
- package/dist/lib/audit-log.js +25 -0
- package/dist/lib/connector-stack.d.ts +28 -0
- package/dist/lib/connector-stack.js +81 -0
- package/dist/lib/constructs/app-function.d.ts +14 -0
- package/dist/lib/constructs/app-function.js +84 -0
- package/dist/lib/constructs/app-table.d.ts +12 -0
- package/dist/lib/constructs/app-table.js +58 -0
- package/dist/lib/constructs/mirrored-image.d.ts +12 -0
- package/dist/lib/constructs/mirrored-image.js +80 -0
- package/dist/lib/constructs/monitoring.d.ts +21 -0
- package/dist/lib/constructs/monitoring.js +133 -0
- package/dist/lib/constructs/oidc-issuer.d.ts +44 -0
- package/dist/lib/constructs/oidc-issuer.js +234 -0
- package/dist/lib/constructs/scratch-tmpfs.d.ts +5 -0
- package/dist/lib/constructs/scratch-tmpfs.js +48 -0
- package/dist/lib/constructs/sg-manager.d.ts +27 -0
- package/dist/lib/constructs/sg-manager.js +88 -0
- package/dist/lib/constructs/tailnet-connector.d.ts +29 -0
- package/dist/lib/constructs/tailnet-connector.js +177 -0
- package/dist/lib/constructs/tailnet-resolver.d.ts +30 -0
- package/dist/lib/constructs/tailnet-resolver.js +71 -0
- package/dist/lib/constructs/target-account-trust.d.ts +32 -0
- package/dist/lib/constructs/target-account-trust.js +81 -0
- package/dist/lib/constructs/vending-api.d.ts +103 -0
- package/dist/lib/constructs/vending-api.js +203 -0
- package/dist/lib/constructs/web-acl.d.ts +61 -0
- package/dist/lib/constructs/web-acl.js +213 -0
- package/dist/lib/constructs/web-identity.d.ts +49 -0
- package/dist/lib/constructs/web-identity.js +116 -0
- package/dist/lib/creds-stack.d.ts +151 -0
- package/dist/lib/creds-stack.js +592 -0
- package/dist/lib/data-stack.d.ts +53 -0
- package/dist/lib/data-stack.js +282 -0
- package/dist/lib/dimensions-validation.d.ts +20 -0
- package/dist/lib/dimensions-validation.js +51 -0
- package/dist/lib/federation.d.ts +113 -0
- package/dist/lib/federation.js +254 -0
- package/dist/lib/managed-login-branding.json +450 -0
- package/dist/lib/network-stack.d.ts +58 -0
- package/dist/lib/network-stack.js +776 -0
- package/dist/lib/network-validation.d.ts +54 -0
- package/dist/lib/network-validation.js +220 -0
- package/dist/lib/pkg-paths.d.ts +3 -0
- package/dist/lib/pkg-paths.js +51 -0
- package/dist/lib/plugins/plugin-api.d.ts +40 -0
- package/dist/lib/plugins/plugin-api.js +125 -0
- package/dist/lib/plugins/plugin-catalog-activation.d.ts +31 -0
- package/dist/lib/plugins/plugin-catalog-activation.js +109 -0
- package/dist/lib/plugins/registration.d.ts +41 -0
- package/dist/lib/plugins/registration.js +121 -0
- package/dist/lib/plugins/runtime.d.ts +10 -0
- package/dist/lib/plugins/runtime.js +17 -0
- package/dist/lib/project-config.d.ts +164 -0
- package/dist/lib/project-config.js +2 -0
- package/dist/lib/target-account-stack.d.ts +15 -0
- package/dist/lib/target-account-stack.js +59 -0
- package/dist/lib/target-account-template.d.ts +13 -0
- package/dist/lib/target-account-template.js +64 -0
- package/dist/lib/web-cert-stack.d.ts +30 -0
- package/dist/lib/web-cert-stack.js +90 -0
- package/dist/lib/web-stack.d.ts +103 -0
- package/dist/lib/web-stack.js +540 -0
- package/node_modules/@fntio/infra-client-plugin-sdk/README.md +303 -0
- package/node_modules/@fntio/infra-client-plugin-sdk/dist/backend/context.d.ts +31 -0
- package/node_modules/@fntio/infra-client-plugin-sdk/dist/backend/context.js +58 -0
- package/node_modules/@fntio/infra-client-plugin-sdk/dist/backend/index.d.ts +9 -0
- package/node_modules/@fntio/infra-client-plugin-sdk/dist/backend/index.js +26 -0
- package/node_modules/@fntio/infra-client-plugin-sdk/dist/browser/client.d.ts +59 -0
- package/node_modules/@fntio/infra-client-plugin-sdk/dist/browser/client.js +290 -0
- package/node_modules/@fntio/infra-client-plugin-sdk/dist/browser/errors.d.ts +14 -0
- package/node_modules/@fntio/infra-client-plugin-sdk/dist/browser/errors.js +32 -0
- package/node_modules/@fntio/infra-client-plugin-sdk/dist/browser/http.d.ts +72 -0
- package/node_modules/@fntio/infra-client-plugin-sdk/dist/browser/http.js +170 -0
- package/node_modules/@fntio/infra-client-plugin-sdk/dist/browser/index.d.ts +11 -0
- package/node_modules/@fntio/infra-client-plugin-sdk/dist/browser/index.js +28 -0
- package/node_modules/@fntio/infra-client-plugin-sdk/dist/browser/theme-apply.d.ts +22 -0
- package/node_modules/@fntio/infra-client-plugin-sdk/dist/browser/theme-apply.js +22 -0
- package/node_modules/@fntio/infra-client-plugin-sdk/dist/contracts/access.d.ts +14 -0
- package/node_modules/@fntio/infra-client-plugin-sdk/dist/contracts/access.js +41 -0
- package/node_modules/@fntio/infra-client-plugin-sdk/dist/contracts/authorizer.d.ts +17 -0
- package/node_modules/@fntio/infra-client-plugin-sdk/dist/contracts/authorizer.js +44 -0
- package/node_modules/@fntio/infra-client-plugin-sdk/dist/contracts/canonical.d.ts +2 -0
- package/node_modules/@fntio/infra-client-plugin-sdk/dist/contracts/canonical.js +21 -0
- package/node_modules/@fntio/infra-client-plugin-sdk/dist/contracts/catalog.d.ts +39 -0
- package/node_modules/@fntio/infra-client-plugin-sdk/dist/contracts/catalog.js +18 -0
- package/node_modules/@fntio/infra-client-plugin-sdk/dist/contracts/discovery.d.ts +78 -0
- package/node_modules/@fntio/infra-client-plugin-sdk/dist/contracts/discovery.js +48 -0
- package/node_modules/@fntio/infra-client-plugin-sdk/dist/contracts/fields.d.ts +7 -0
- package/node_modules/@fntio/infra-client-plugin-sdk/dist/contracts/fields.js +2 -0
- package/node_modules/@fntio/infra-client-plugin-sdk/dist/contracts/manifest.d.ts +59 -0
- package/node_modules/@fntio/infra-client-plugin-sdk/dist/contracts/manifest.js +19 -0
- package/node_modules/@fntio/infra-client-plugin-sdk/dist/contracts/messages.d.ts +111 -0
- package/node_modules/@fntio/infra-client-plugin-sdk/dist/contracts/messages.js +109 -0
- package/node_modules/@fntio/infra-client-plugin-sdk/dist/contracts/paths.d.ts +20 -0
- package/node_modules/@fntio/infra-client-plugin-sdk/dist/contracts/paths.js +49 -0
- package/node_modules/@fntio/infra-client-plugin-sdk/dist/contracts/theme.d.ts +21 -0
- package/node_modules/@fntio/infra-client-plugin-sdk/dist/contracts/theme.js +60 -0
- package/node_modules/@fntio/infra-client-plugin-sdk/dist/contracts/transport.d.ts +14 -0
- package/node_modules/@fntio/infra-client-plugin-sdk/dist/contracts/transport.js +10 -0
- package/node_modules/@fntio/infra-client-plugin-sdk/dist/contracts/validate.d.ts +27 -0
- package/node_modules/@fntio/infra-client-plugin-sdk/dist/contracts/validate.js +321 -0
- package/node_modules/@fntio/infra-client-plugin-sdk/dist/fixtures/devHost.d.ts +61 -0
- package/node_modules/@fntio/infra-client-plugin-sdk/dist/fixtures/devHost.js +99 -0
- package/node_modules/@fntio/infra-client-plugin-sdk/dist/fixtures/fakeDocument.d.ts +12 -0
- package/node_modules/@fntio/infra-client-plugin-sdk/dist/fixtures/fakeDocument.js +22 -0
- package/node_modules/@fntio/infra-client-plugin-sdk/dist/fixtures/fakeWindows.d.ts +22 -0
- package/node_modules/@fntio/infra-client-plugin-sdk/dist/fixtures/fakeWindows.js +46 -0
- package/node_modules/@fntio/infra-client-plugin-sdk/dist/fixtures/index.d.ts +4 -0
- package/node_modules/@fntio/infra-client-plugin-sdk/dist/fixtures/index.js +20 -0
- package/node_modules/@fntio/infra-client-plugin-sdk/dist/fixtures/samples.d.ts +37 -0
- package/node_modules/@fntio/infra-client-plugin-sdk/dist/fixtures/samples.js +228 -0
- package/node_modules/@fntio/infra-client-plugin-sdk/dist/host/host.d.ts +47 -0
- package/node_modules/@fntio/infra-client-plugin-sdk/dist/host/host.js +121 -0
- package/node_modules/@fntio/infra-client-plugin-sdk/dist/host/index.d.ts +5 -0
- package/node_modules/@fntio/infra-client-plugin-sdk/dist/host/index.js +22 -0
- package/node_modules/@fntio/infra-client-plugin-sdk/dist/index.d.ts +10 -0
- package/node_modules/@fntio/infra-client-plugin-sdk/dist/index.js +28 -0
- package/node_modules/@fntio/infra-client-plugin-sdk/package.json +99 -0
- package/openapi.yaml +4284 -0
- package/package.json +124 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as gt}from"./chunk-LMLXTVZG.js";import{a as at,b as st,c as lt,d as Ce,e as ct,f as qe,g as pt,h as xe}from"./chunk-HK56COCB.js";import{a as re}from"./chunk-DCOFBAKJ.js";import{a as tt,k as it}from"./chunk-RI77LE5V.js";import{a as J}from"./chunk-Z3KONI7L.js";import{c as ie}from"./chunk-O4QSFUXB.js";import{a as fe}from"./chunk-EQ4PF25J.js";import{a as dt,c as ut,d as mt,e as _t}from"./chunk-ZDCURXPS.js";import{a as X}from"./chunk-PSMER3HX.js";import{b as Ie,d as rt}from"./chunk-KCCEQIXX.js";import{a as he}from"./chunk-QVABVDO5.js";import{a as _e}from"./chunk-SJMLX5AT.js";import{a as nt,b as ot,d as ge}from"./chunk-2SO4BVIT.js";import{a as ae,b as se,e as le,g as Je,i as ce,j as pe,k as de,l as Ze,m as et,n as ue,o as me,p as ee}from"./chunk-NO5D6WDF.js";import{c as Q}from"./chunk-GKI3R2JB.js";import{a as Ke}from"./chunk-M6OAYNRE.js";import{a as K}from"./chunk-XJM3HDJQ.js";import{b as B}from"./chunk-2MOGDYK4.js";import{a as $}from"./chunk-D7TR2ORJ.js";import{Aa as r,Ba as v,Ca as U,Da as W,Ea as ne,Eb as Xe,H as P,Ha as D,Ia as x,J as g,Ja as He,K as h,Ka as _,La as Ee,Ma as l,Na as z,Oa as G,P as Le,Q as y,Qa as Ve,Ra as Ue,Sa as R,Ta as We,Ua as N,Va as ze,W as Ne,Wa as c,Xa as f,Ya as k,Z as a,Za as O,_a as Ye,fa as M,g as $e,ib as Z,ja as V,jb as De,k as Ae,kb as Re,m as Fe,nb as Y,qb as C,r as Ge,ra as je,rb as Qe,sa as u,sb as E,ta as m,tb as b,ub as Oe,va as te,wa as w,wb as oe,xa as S,ya as d,za as i}from"./chunk-P5WRM37W.js";import{a as j,b as H,e as F}from"./chunk-WFIHWVQO.js";var St=[[["","groupActions",""]],"*"],kt=["[groupActions]","*"],be=class n{title=b.required();count=b(0);noun=b("role");summary=b(null);open=oe(!1);static \u0275fac=function(e){return new(e||n)};static \u0275cmp=M({type:n,selectors:[["app-project-group"]],hostVars:2,hostBindings:function(e,o){e&2&&N("open",o.open())},inputs:{title:[1,"title"],count:[1,"count"],noun:[1,"noun"],summary:[1,"summary"],open:[1,"open"]},outputs:{open:"openChange"},ngContentSelectors:kt,decls:12,vars:6,consts:[[1,"projhead"],["type","button",1,"toggle",3,"click"],["name","chevron-right",1,"chev"],[1,"projtitle"],[1,"projcount"],[1,"projbody"],[1,"grid-clip"],[1,"projbody-inner"]],template:function(e,o){e&1&&(z(St),i(0,"div",0)(1,"button",1),_("click",function(){return o.open.set(!o.open())}),v(2,"app-icon",2),i(3,"span",3),c(4),r(),i(5,"span",4),c(6),r()(),G(7),r(),i(8,"div",5)(9,"div",6)(10,"div",7),G(11,1),r()()()),e&2&&(a(2),N("open",o.open()),a(2),f(o.title()),a(2),k("\xB7 ",o.summary()??o.count()+" "+o.noun()+(o.count()===1?"":"s")),a(2),N("open",o.open()))},dependencies:[B],styles:["[_nghost-%COMP%]{display:block;margin-left:-18px;margin-right:-18px;border:1px solid transparent;border-radius:calc(var(--radius) * 3);transition:border-color .22s ease,background-color .22s ease}.open[_nghost-%COMP%]{border-color:var(--border)}.projhead[_ngcontent-%COMP%]{display:flex;align-items:center;gap:10px;padding-right:18px}.toggle[_ngcontent-%COMP%]{flex:1;min-width:0;display:flex;align-items:center;gap:10px;padding:16px 18px;background:none;border:none;font:inherit;cursor:pointer;text-align:left}.projtitle[_ngcontent-%COMP%]{font-size:13px;font-weight:600;color:var(--surface-foreground)}.projcount[_ngcontent-%COMP%]{font-size:11px;font-weight:500;color:var(--text-secondary)}.chev[_ngcontent-%COMP%]{width:16px;height:16px;color:var(--muted-foreground);transform:rotate(90deg);transition:transform .22s ease;flex-shrink:0}.chev.open[_ngcontent-%COMP%]{transform:rotate(-90deg)}.projbody[_ngcontent-%COMP%]{display:grid;grid-template-rows:0fr;transition:grid-template-rows .26s ease}.projbody.open[_ngcontent-%COMP%]{grid-template-rows:1fr}.grid-clip[_ngcontent-%COMP%]{overflow:hidden;min-height:0}.projbody-inner[_ngcontent-%COMP%]{padding:4px 18px 18px}"]})};var Tt=(n,t)=>t.label;function Pt(n,t){if(n&1&&(i(0,"div")(1,"span",9),c(2),r(),i(3,"div",10)(4,"div",11)(5,"code",12),c(6),r()(),i(7,"div",13),v(8,"app-copy-button",14),r()()()),n&2){let e=t.$implicit;a(2),f(e.label),a(4),f(e.value),a(2),d("text",e.value)}}function Mt(n,t){if(n&1&&(i(0,"p",3),c(1," This resource covers an address range with no single hostname, so there's no one command to connect \u2014 use a specific host inside "),i(2,"code",15),c(3),r(),c(4,". "),r()),n&2){let e=l();a(3),f(e.resource().cidr)}}function Nt(n,t){n&1&&c(0," (connect from the desktop app first) ")}function Et(n,t){if(n&1&&(i(0,"div",5)(1,"app-banner",16),c(2),r()()),n&2){let e=t,o=l();a(),d("tone",e.ok?"success":"warning"),a(),f(o.probeText(e))}}function Vt(n,t){if(n&1){let e=x();i(0,"app-button",17),_("click",function(){g(e);let s=l();return h(s.probe())}),c(1," Test connection "),r()}if(n&2){let e=l();d("loading",e.probing())}}var ve=class n{bridge=P(ie);resource=b.required();closed=E();host=C(()=>{let t=this.resource();return t.dnsName?t.dnsName:t.cidr.endsWith("/32")?t.cidr.slice(0,-3):t.cidr});hasHost=C(()=>{let t=this.resource();return!!t.dnsName||t.cidr.endsWith("/32")});vars=C(()=>{let t=this.resource(),e=[{label:"Account ID",value:t.accountNumber},{label:this.hasHost()?"Host":"Address range",value:this.host()},{label:t.ports.length===1?"Port":"Ports",value:t.ports.join(", ")}];if(!this.hasHost())return e;switch(t.type){case"DATABASE":e.push({label:"psql command",value:`psql -h ${this.host()} -p ${t.ports[0]??5432}`});break;case"WEB":e.push({label:"URL",value:this.webUrl()});break;case"HOST":if(t.ports.includes(22)){let o=t.sshUser?`${t.sshUser}@${this.host()}`:this.host();e.push({label:"SSH command",value:`ssh ${o}`})}break}return e});webUrl=C(()=>{let t=this.resource();if(t.ports.includes(443)||t.ports.includes(8443))return`https://${this.host()}`;let e=t.ports.includes(80)?void 0:t.ports[0];return`http://${this.host()}${e?":"+e:""}`});probeTarget=C(()=>{let t=this.resource(),e=t.ports[0];return e===void 0?null:t.dnsName?{host:t.dnsName,port:e}:t.cidr.endsWith("/32")?{host:t.cidr.slice(0,-3),port:e}:null});canProbe=C(()=>this.bridge.isDesktop&&this.bridge.probeSupported&&this.probeTarget()!==null);probing=y(!1);probeResult=y(null);probe(){return F(this,null,function*(){let t=this.probeTarget();if(!t||this.probing())return;this.probing.set(!0),this.probeResult.set(null);let e=yield this.bridge.networkProbe(t.host,t.port).catch(()=>({ok:!1,reason:"timeout"}));this.probeResult.set(e),this.probing.set(!1)})}probeText(t){let e=this.probeTarget(),o=e?`${e.host}:${e.port}`:"";if(t.ok)return`Reached ${o} \u2014 the resource is answering.`;switch(t.reason){case"vpn-down":return"You\u2019re not connected to the VPN. Connect first, then test again.";case"refused":return`The host answered but refused port ${e?.port} \u2014 the resource itself may be down.`;case"busy":return"Another test is still running \u2014 try again in a moment.";case"bad-target":return"This resource\u2019s address can\u2019t be tested automatically.";default:return`No answer from ${o}. If you connected in the last few minutes, access rules may still be syncing \u2014 try again shortly.`}}static \u0275fac=function(e){return new(e||n)};static \u0275cmp=M({type:n,selectors:[["app-resource-vars-dialog"]],inputs:{resource:[1,"resource"]},outputs:{closed:"closed"},decls:17,vars:5,consts:[["title","Connection details",3,"closed"],[1,"mb-3","text-sm","font-medium","text-surface-foreground"],[1,"space-y-3"],[1,"mt-3","text-xs","text-muted-foreground"],[1,"mt-4","text-xs","text-muted-foreground"],[1,"mt-4"],[1,"mt-5","flex","items-center","justify-between","gap-2"],["variant","outline",3,"loading"],["variant","outline",3,"click"],[1,"mb-1","block","text-sm","font-medium","text-surface-foreground"],[1,"relative"],[1,"overflow-x-auto","rounded-lg","bg-gray-900","p-3","pr-14","ring-1","ring-brand/20"],[1,"whitespace-nowrap","font-mono","text-xs","text-gray-100"],[1,"absolute","right-2","top-1/2","-translate-y-1/2"],["variant","icon",3,"text"],[1,"rounded","bg-muted","px-1"],[3,"tone"],["variant","outline",3,"click","loading"]],template:function(e,o){if(e&1&&(i(0,"app-dialog",0),_("closed",function(){return o.closed.emit()}),i(1,"p",1),c(2),r(),i(3,"div",2),w(4,Pt,9,3,"div",null,Tt),r(),u(6,Mt,5,1,"p",3),i(7,"p",4),c(8," Reachable only while you're connected to the VPN "),u(9,Nt,1,0),c(10," \u2014 access changes take up to 5 minutes to reach the network. "),r(),u(11,Et,3,2,"div",5),i(12,"div",6)(13,"div"),u(14,Vt,2,1,"app-button",7),r(),i(15,"app-button",8),_("click",function(){return o.closed.emit()}),c(16,"Close"),r()()()),e&2){let s;a(2),f(o.resource().name),a(2),S(o.vars()),a(2),m(o.hasHost()?-1:6),a(3),m(o.bridge.isDesktop?-1:9),a(2),m((s=o.probeResult())?11:-1,s),a(3),m(o.canProbe()?14:-1)}},dependencies:[Ke,$,K,re],encapsulation:2})};function Dt(n,t){if(n&1){let e=x();i(0,"app-resource-vars-dialog",2),_("closed",function(){g(e);let s=l();return h(s.varsOpen.set(!1))}),r()}if(n&2){let e=l();d("resource",e.resource())}}var Rt={DATABASE:"resource-database",WEB:"resource-web",HOST:"resource-host"},ye=class n{resource=b.required();host=C(()=>{let t=this.resource();return t.dnsName?t.dnsName:t.cidr.endsWith("/32")?t.cidr.slice(0,-3):t.cidr});hasHost=C(()=>{let t=this.resource();return!!t.dnsName||t.cidr.endsWith("/32")});typeIcon=C(()=>Rt[this.resource().type]);typeLabel=C(()=>{let t=this.resource().type;return t==="DATABASE"?"Database":t==="WEB"?"Web":"Host"});grant=C(()=>{let t=this.resource().expiresAt;return t?`expires ${this.expiresIn(t)}`:""});grantTitle=C(()=>{let t=this.resource().expiresAt;return t?`Access ends ${this.exact(t)}`:""});webUrl=C(()=>{let t=this.resource();if(t.ports.includes(443)||t.ports.includes(8443))return`https://${this.host()}`;let e=t.ports.includes(80)?void 0:t.ports[0];return`http://${this.host()}${e?":"+e:""}`});varsOpen=y(!1);expiresIn(t){return ge(t)}exact(t){let e=new Date(t);return Number.isNaN(e.getTime())?"":e.toLocaleString()}static \u0275fac=function(e){return new(e||n)};static \u0275cmp=M({type:n,selectors:[["app-resource-card"]],inputs:{resource:[1,"resource"]},decls:2,vars:11,consts:[["kind","resource",3,"connectionDetails","icon","account","typeLabel","grant","grantTitle","accountName","accountId","rawAccountId","description","connectionUrl"],[3,"resource"],[3,"closed","resource"]],template:function(e,o){e&1&&(i(0,"app-role-card",0),_("connectionDetails",function(){return o.varsOpen.set(!0)}),r(),u(1,Dt,1,1,"app-resource-vars-dialog",1)),e&2&&(d("icon",o.typeIcon())("account",o.resource().name)("typeLabel",o.typeLabel())("grant",o.grant())("grantTitle",o.grantTitle())("accountName",o.resource().accountName||o.resource().accountNumber)("accountId",o.resource().accountNumber)("rawAccountId",o.resource().accountNumber)("description",o.resource().description||"")("connectionUrl",o.resource().type==="WEB"&&o.hasHost()?o.webUrl():void 0),a(),m(o.varsOpen()?1:-1))},dependencies:[gt,ve],encapsulation:2})};function Ot(n,t){if(n&1){let e=x();U(0,"button",3),Ee("click",function(){g(e);let s=l();return h(s.connect.emit())}),c(1,"Connect"),W()}if(n&2){let e=l();He("title",e.connectTitle())}}function It(n,t){if(n&1){let e=x();U(0,"button",4),Ee("click",function(){g(e);let s=l();return h(s.connect.emit())}),c(1," Switch & connect "),W()}}function qt(n,t){n&1&&(U(0,"span",2),ne(1,"span",5),c(2," Connecting\u2026"),W())}function Bt(n,t){n&1&&(U(0,"span",2),ne(1,"span",6),c(2," Disconnecting\u2026"),W())}function $t(n,t){if(n&1&&(U(0,"span",2),ne(1,"span",8),c(2),W()),n&2){let e=l(2);N("ok",e.connectedTone()==="ok")("warn",e.connectedTone()==="warn"),a(2),k(" ",e.connectedLabel()," ")}}function At(n,t){if(n&1&&u(0,$t,3,5,"span",7),n&2){let e=l();m(e.connectedLabel()?0:-1)}}var A=class n{status=b("none");connectTitle=b("Connects the VPN to this network.");connectedLabel=b("");connectedTone=b("ok");connect=E();static \u0275fac=function(e){return new(e||n)};static \u0275cmp=M({type:n,selectors:[["app-vpn-control"]],inputs:{status:[1,"status"],connectTitle:[1,"connectTitle"],connectedLabel:[1,"connectedLabel"],connectedTone:[1,"connectedTone"]},outputs:{connect:"connect"},decls:5,vars:1,consts:[["type","button",1,"connectbtn",3,"title"],["type","button","title","Your VPN is connected to a different site \u2014 switching moves the whole connection over (one site at a time).",1,"connectbtn"],[1,"pill"],["type","button",1,"connectbtn",3,"click","title"],["type","button","title","Your VPN is connected to a different site \u2014 switching moves the whole connection over (one site at a time).",1,"connectbtn",3,"click"],[1,"dot","amber","pulse"],[1,"dot","pulse"],[1,"pill",3,"ok","warn"],[1,"dot"]],template:function(e,o){if(e&1&&u(0,Ot,2,1,"button",0)(1,It,2,0,"button",1)(2,qt,3,0,"span",2)(3,Bt,3,0,"span",2)(4,At,1,1),e&2){let s;m((s=o.status())==="off"?0:s==="off-site"?1:s==="connecting"?2:s==="disconnecting"?3:s==="connected"?4:-1)}},styles:["[_nghost-%COMP%]{display:contents}.pill[_ngcontent-%COMP%]{flex-shrink:0;display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:999px;font-size:11.5px;font-weight:600;white-space:nowrap;color:var(--muted-foreground);border:1px solid var(--border-strong)}.pill.ok[_ngcontent-%COMP%]{color:var(--success);background:var(--success-muted);border-color:color-mix(in oklab,var(--success) 30%,transparent)}.dot[_ngcontent-%COMP%]{width:7px;height:7px;border-radius:999px;flex-shrink:0;background:var(--placeholder, #9ca3af)}.pill.ok[_ngcontent-%COMP%] .dot[_ngcontent-%COMP%]{background:var(--dot-active, #10b981)}.pill.warn[_ngcontent-%COMP%]{color:var(--warning);background:var(--warning-muted);border-color:color-mix(in oklab,var(--warning) 30%,transparent)}.pill.warn[_ngcontent-%COMP%] .dot[_ngcontent-%COMP%], .dot.amber[_ngcontent-%COMP%]{background:var(--dot-expiring, #f59e0b)}.dot.pulse[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_vpnpulse 1.2s ease-in-out infinite}@keyframes _ngcontent-%COMP%_vpnpulse{50%{opacity:.35}}.connectbtn[_ngcontent-%COMP%]{flex-shrink:0;padding:4px 12px;border-radius:999px;font-size:12px;font-weight:600;cursor:pointer;color:var(--brand-text);background:none;border:1px solid color-mix(in oklab,var(--brand-text) 50%,transparent);transition:background-color .15s ease,border-color .15s ease}.connectbtn[_ngcontent-%COMP%]:hover{background:var(--brand-muted);border-color:var(--brand-text)}"]})};var Ft=["*"];function Gt(n,t){if(n&1&&(i(0,"span",4),c(1),r()),n&2){let e=l();a(),k("\xB7 ",e.detail())}}function Lt(n,t){n&1&&(i(0,"span",8),v(1,"span",10),c(2," No answer "),r())}function jt(n,t){if(n&1&&(i(0,"span",9),v(1,"span",11),c(2," Reachable "),r()),n&2){let e=l(2);d("title",e.probe()==="checking"?"Checking that this VPC answers\u2026":"Reachable through your VPN connection."),a(),N("pulse",e.probe()==="checking")}}function Ht(n,t){if(n&1&&u(0,Lt,3,0,"span",8)(1,jt,3,3,"span",9),n&2){let e=l();m(e.probe()==="no-response"?0:1)}}function Ut(n,t){if(n&1){let e=x();i(0,"app-vpn-control",13),_("connect",function(){g(e);let s=l(2);return h(s.connect.emit())}),r()}if(n&2){let e=l(2);d("status",e.status())}}function Wt(n,t){if(n&1&&u(0,Ut,1,1,"app-vpn-control",12),n&2){let e=l();m(e.control()?0:-1)}}var we=class n{label=b.required();detail=b(null);count=b.required();status=b("none");control=b(!0);probe=b(null);open=oe(!0);connect=E();static \u0275fac=function(e){return new(e||n)};static \u0275cmp=M({type:n,selectors:[["app-vpc-group"]],hostVars:2,hostBindings:function(e,o){e&2&&N("open",o.open())},inputs:{label:[1,"label"],detail:[1,"detail"],count:[1,"count"],status:[1,"status"],control:[1,"control"],probe:[1,"probe"],open:[1,"open"]},outputs:{open:"openChange",connect:"connect"},ngContentSelectors:Ft,decls:14,vars:11,consts:[[1,"vpchead"],["type","button",1,"toggle",3,"click"],["name","chevron-right",1,"chev",3,"strokeWidth"],[1,"label"],[1,"count"],[1,"vpcbody"],[1,"grid-clip"],[1,"inner"],["title","Your VPN is up but this VPC didn't answer \u2014 if you connected in the last few minutes, access rules may still be syncing.",1,"pill","warn"],[1,"pill","ok",3,"title"],[1,"dot","warn"],[1,"dot","ok"],["connectTitle","Connects the VPN to this VPC's network.",3,"status"],["connectTitle","Connects the VPN to this VPC's network.",3,"connect","status"]],template:function(e,o){if(e&1&&(z(),i(0,"div",0)(1,"button",1),_("click",function(){return o.open.set(!o.open())}),v(2,"app-icon",2),i(3,"span",3),c(4),r(),u(5,Gt,2,1,"span",4),i(6,"span",4),c(7),r()(),u(8,Ht,2,1)(9,Wt,1,1),r(),i(10,"div",5)(11,"div",6)(12,"div",7),G(13),r()()()),e&2){let s;a(),je("aria-expanded",o.open()),a(),N("open",o.open()),d("strokeWidth",2.2),a(2),f(o.label()),a(),m(o.detail()?5:-1),a(2),O("\xB7 ",o.count()," resource",o.count()===1?"":"s"),a(),m((s=o.status())==="connected"?8:9),a(2),N("open",o.open())}},dependencies:[B,A],styles:["[_nghost-%COMP%]{display:block;overflow:hidden;border:1px solid var(--border);border-radius:var(--radius)}.vpchead[_ngcontent-%COMP%]{display:flex;align-items:center;gap:10px;padding-right:12px;background:var(--card-bg);transition:background-color .15s ease}.vpchead[_ngcontent-%COMP%]:hover{background:var(--state-hover)}.toggle[_ngcontent-%COMP%]{flex:1;min-width:0;display:flex;align-items:center;gap:8px;padding:8px 12px 8px 16px;background:none;border:none;font:inherit;cursor:pointer;text-align:left}.chev[_ngcontent-%COMP%]{width:10px;height:10px;color:var(--muted-foreground);transition:transform .2s ease;flex-shrink:0}.chev.open[_ngcontent-%COMP%]{transform:rotate(90deg)}.label[_ngcontent-%COMP%]{font-size:13px;font-weight:600;color:var(--surface-foreground);overflow-wrap:anywhere}.count[_ngcontent-%COMP%]{font-size:11px;font-weight:500;color:var(--text-secondary);white-space:nowrap}.pill[_ngcontent-%COMP%]{flex-shrink:0;display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:999px;font-size:11.5px;font-weight:600;white-space:nowrap}.pill.ok[_ngcontent-%COMP%]{color:var(--success);background:var(--success-muted);border:1px solid color-mix(in oklab,var(--success) 30%,transparent)}.pill.warn[_ngcontent-%COMP%]{color:var(--warning);background:var(--warning-muted);border:1px solid color-mix(in oklab,var(--warning) 30%,transparent)}.dot[_ngcontent-%COMP%]{width:7px;height:7px;border-radius:999px;flex-shrink:0}.dot.ok[_ngcontent-%COMP%]{background:var(--dot-active, #10b981)}.dot.warn[_ngcontent-%COMP%]{background:var(--dot-expiring, #f59e0b)}.dot.pulse[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_vpcpulse 1.2s ease-in-out infinite}@keyframes _ngcontent-%COMP%_vpcpulse{50%{opacity:.35}}.vpcbody[_ngcontent-%COMP%]{display:grid;grid-template-rows:0fr;transition:grid-template-rows .2s ease-out}.vpcbody.open[_ngcontent-%COMP%]{grid-template-rows:1fr}.grid-clip[_ngcontent-%COMP%]{overflow:hidden;min-height:0}.inner[_ngcontent-%COMP%]{padding:12px}"]})};var ht=(n,t)=>t.resourceId,Yt=(n,t)=>t.key;function Qt(n,t){n&1&&(i(0,"app-empty-state",0),c(1," You already have \u2014 or have already requested \u2014 every registered resource. "),r())}function Xt(n,t){if(n&1&&(i(0,"span",8),c(1),r()),n&2){let e=l().$implicit;a(),f(e.message)}}function Kt(n,t){if(n&1&&(i(0,"div",3)(1,"span"),c(2),r(),i(3,"span",6)(4,"span",7),c(5),r(),u(6,Xt,2,1,"span",8),r()()),n&2){let e=t.$implicit;a(),ze(e.ok?"text-success":"text-danger"),a(),f(e.ok?"\u2713":"\u2715"),a(3),f(e.name),a(),m(e.message?6:-1)}}function Jt(n,t){if(n&1){let e=x();i(0,"p",1),c(1),r(),i(2,"div",2),w(3,Kt,7,5,"div",3,ht),r(),i(5,"div",4)(6,"app-button",5),_("click",function(){g(e);let s=l(2);return h(s.closed.emit())}),c(7,"Done"),r()()}if(n&2){let e=t,o=l(2);a(),Ye(" ",o.sentCount()," of ",e.length," request",e.length===1?"":"s"," sent \u2014 you'll see decisions in the activity bell. "),a(2),S(e)}}function Zt(n,t){if(n&1&&u(0,Jt,8,3),n&2){let e,o=l();m((e=o.results())?0:-1,e)}}function en(n,t){n&1&&c(0),n&2&&k(" \xB7 ",t," ")}function tn(n,t){if(n&1&&(i(0,"span",28),c(1),r()),n&2){let e=l().$implicit;a(),f(e.description)}}function nn(n,t){if(n&1){let e=x();i(0,"label",23)(1,"input",24),_("change",function(){let s=g(e).$implicit,p=l(3);return h(p.toggle(s.resourceId))}),r(),i(2,"span",6)(3,"span",25)(4,"span",26),c(5),r(),i(6,"app-badge",27),c(7),r()(),u(8,tn,2,1,"span",28),r()()}if(n&2){let e=t.$implicit,o=l(3);a(),d("checked",o.picked().has(e.resourceId)),a(4),f(e.name),a(2),f(o.typeLabel(e.type)),a(),m(e.description?8:-1)}}function on(n,t){if(n&1&&(i(0,"div")(1,"p",21),c(2),u(3,en,1,1),r(),i(4,"div",22),w(5,nn,9,4,"label",23,ht),r()()),n&2){let e,o=t.$implicit,s=l(2);a(2),k(" ",s.titleOf(o)," "),a(),m((e=s.vpcLabels().get(o.key))?3:-1,e),a(2),S(o.resources)}}function rn(n,t){if(n&1&&(i(0,"p",11),c(1),r()),n&2){let e=l(2);a(),k('No available resources match "',e.query(),'".')}}function an(n,t){if(n&1&&(i(0,"option",15),c(1),r()),n&2){let e=t.$implicit,o=l(2);d("ngValue",e),a(),f(o.label(e))}}function sn(n,t){if(n&1){let e=x();i(0,"input",9),_("ngModelChange",function(s){g(e);let p=l();return h(p.query.set(s))}),r(),i(1,"div",10),w(2,on,7,2,"div",null,Yt,!1,rn,2,1,"p",11),r(),i(5,"div",12)(6,"app-field",13)(7,"select",14),_("ngModelChange",function(s){g(e);let p=l();return h(p.duration.set(s))}),w(8,an,2,2,"option",15,te),i(10,"option",15),c(11,"Long-term (indefinite)"),r()()(),i(12,"app-field",16)(13,"textarea",17),_("ngModelChange",function(s){g(e);let p=l();return h(p.reason.set(s))}),r()()(),i(14,"div",18)(15,"app-button",19),_("click",function(){g(e);let s=l();return h(s.closed.emit())}),c(16,"Cancel"),r(),i(17,"app-button",20),_("click",function(){g(e);let s=l();return h(s.send())}),c(18),r()()}if(n&2){let e=l();d("ngModel",e.query()),a(2),S(e.filteredGroups()),a(5),d("ngModel",e.duration()),a(),S(e.PRESETS),a(2),d("ngValue","long"),a(2),d("error",e.error()),a(),d("maxlength",e.REASON_MAX)("ngModel",e.reason()),a(4),d("loading",e.busy())("disabled",e.picked().size===0),a(),O(" Request ",e.picked().size||""," resource",e.picked().size===1?"":"s"," ")}}var Se=class n{api=P(tt);toast=P(Q);notifications=P(it);groups=b.required();vpcLabels=b(new Map);sentAny=E();closed=E();REASON_MAX=500;PRESETS=nt;query=y("");picked=y(new Set);duration=y("long");reason=y("");busy=y(!1);error=y("");results=y(null);filteredGroups=C(()=>{let t=this.query().trim().toLowerCase();return t?this.groups().map(e=>H(j({},e),{resources:e.resources.filter(o=>o.name.toLowerCase().includes(t)||(o.description??"").toLowerCase().includes(t)||this.titleOf(e).toLowerCase().includes(t))})).filter(e=>e.resources.length>0):this.groups()});sentCount=C(()=>(this.results()??[]).filter(t=>t.ok).length);titleOf(t){return t.accountName||t.accountNumber||"Unknown account"}typeLabel(t){return t==="DATABASE"?"Database":t==="WEB"?"Web":"Host"}label(t){return t==="long"?"long-term":ot(t)}toggle(t){this.picked.update(e=>{let o=new Set(e);return o.has(t)?o.delete(t):o.add(t),o})}resourceById(t){for(let e of this.groups()){let o=e.resources.find(s=>s.resourceId===t);if(o)return o}}send(){if(this.picked().size===0)return;this.error.set(""),this.busy.set(!0);let t=this.duration(),e=this.reason().trim()||void 0,o=[...this.picked()].map(s=>this.api.createResourceRequest(s,e,t==="long"?void 0:t).pipe(Ae(()=>({resourceId:s,name:this.resourceById(s)?.name??s,ok:!0})),Ge(p=>$e({resourceId:s,name:this.resourceById(s)?.name??s,ok:!1,message:ee(p,"Could not send the request")}))));Fe(o).subscribe(s=>{this.busy.set(!1),this.results.set(s);let p=s.filter(T=>T.ok).length;p?(this.toast.success(`Sent ${p} request${p===1?"":"s"}`),this.notifications.load(),this.sentAny.emit()):this.toast.error("No requests were sent \u2014 see the details.")})}static \u0275fac=function(e){return new(e||n)};static \u0275cmp=M({type:n,selectors:[["app-request-access-panel"]],inputs:{groups:[1,"groups"],vpcLabels:[1,"vpcLabels"]},outputs:{sentAny:"sentAny",closed:"closed"},decls:3,vars:1,consts:[["title","Nothing left to request"],[1,"mb-2","text-xs","text-muted-foreground"],[1,"max-h-72","overflow-y-auto","rounded-lg","border","border-border-strong"],[1,"flex","items-start","gap-2.5","border-b","border-border","px-3","py-2","text-sm","last:border-b-0"],[1,"mt-5","flex","justify-end"],[3,"click"],[1,"min-w-0","flex-1"],[1,"block","truncate","text-surface-foreground"],[1,"block","text-xs","text-danger"],["placeholder","Search available resources",1,"ui-input","mb-3",3,"ngModelChange","ngModel"],[1,"flex","flex-col","gap-4"],[1,"px-1","py-2","text-xs","text-muted-foreground"],[1,"mt-4","space-y-5"],["label","Access duration","hint","temporary access expires on its own; the admin has the final say"],[1,"ui-input",3,"ngModelChange","ngModel"],[3,"ngValue"],["label","Reason","hint","optional, sent with every request",3,"error"],["rows","3","placeholder","e.g. Need to query the staging database for the migration.",1,"ui-input",3,"ngModelChange","maxlength","ngModel"],[1,"mt-5","flex","justify-end","gap-2"],["variant","outline",3,"click"],[3,"click","loading","disabled"],[1,"ui-microlabel","mb-1","px-1","text-muted-foreground"],[1,"rounded-lg","border","border-border"],[1,"ui-check-row","border-b","border-border","text-sm","last:border-b-0"],["type","checkbox",1,"ui-checkbox",3,"change","checked"],[1,"flex","flex-wrap","items-center","gap-1.5"],[1,"min-w-0","truncate","font-medium","tracking-[0.015em]","text-surface-foreground"],["tone","gray"],[1,"mt-0.5","line-clamp-1","block","text-xs","text-muted-foreground"]],template:function(e,o){e&1&&u(0,Qt,2,0,"app-empty-state",0)(1,Zt,1,1)(2,sn,19,11),e&2&&m(o.groups().length===0?0:o.results()?1:2)},dependencies:[me,pe,de,ae,ce,se,ue,le,X,$,he,_e],encapsulation:2})};var ln=["*"];function cn(n,t){if(n&1&&(i(0,"span",6),v(1,"span",7),c(2),r()),n&2){let e=l();N("ok",e.pillTone()==="ok")("warn",e.pillTone()==="warn"),a(2),k(" ",e.pill()," ")}}var ke=class n{label=b.required();count=b.required();status=b("none");pill=b("");pillTone=b("quiet");connect=E();static \u0275fac=function(e){return new(e||n)};static \u0275cmp=M({type:n,selectors:[["app-share-box"]],inputs:{label:[1,"label"],count:[1,"count"],status:[1,"status"],pill:[1,"pill"],pillTone:[1,"pillTone"]},outputs:{connect:"connect"},ngContentSelectors:ln,decls:9,vars:5,consts:[[1,"head"],[1,"label"],[1,"count"],[1,"pill",3,"ok","warn"],[3,"connect","status"],[1,"inner"],[1,"pill"],[1,"dot"]],template:function(e,o){e&1&&(z(),i(0,"div",0)(1,"span",1),c(2),r(),i(3,"span",2),c(4),r(),u(5,cn,3,5,"span",3),i(6,"app-vpn-control",4),_("connect",function(){return o.connect.emit()}),r()(),i(7,"div",5),G(8),r()),e&2&&(a(2),f(o.label()),a(2),O("\xB7 ",o.count()," share",o.count()===1?"":"s"),a(),m(o.pill()&&(o.status()==="connected"||o.status()==="none")?5:-1),a(),d("status",o.status()))},dependencies:[A],styles:["[_nghost-%COMP%]{display:block;overflow:hidden;border:1px solid var(--border);border-radius:var(--radius)}.head[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;padding:8px 12px 8px 16px;background:var(--card-bg)}.label[_ngcontent-%COMP%]{font-size:13px;font-weight:600;color:var(--surface-foreground)}.count[_ngcontent-%COMP%]{flex:1;font-size:11px;font-weight:500;color:var(--text-secondary);white-space:nowrap}.pill[_ngcontent-%COMP%]{flex-shrink:0;display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:999px;font-size:11.5px;font-weight:600;white-space:nowrap;color:var(--muted-foreground);border:1px solid var(--border-strong)}.pill.ok[_ngcontent-%COMP%]{color:var(--success);background:var(--success-muted);border-color:color-mix(in oklab,var(--success) 30%,transparent)}.pill.warn[_ngcontent-%COMP%]{color:var(--warning);background:var(--warning-muted);border-color:color-mix(in oklab,var(--warning) 30%,transparent)}.dot[_ngcontent-%COMP%]{width:7px;height:7px;border-radius:999px;background:var(--placeholder, #9ca3af)}.pill.ok[_ngcontent-%COMP%] .dot[_ngcontent-%COMP%]{background:var(--dot-active, #10b981)}.pill.warn[_ngcontent-%COMP%] .dot[_ngcontent-%COMP%]{background:var(--dot-expiring, #f59e0b)}.inner[_ngcontent-%COMP%]{padding:12px}"]})};var pn=(n,t)=>t.kind+t.id;function dn(n,t){if(n&1&&(i(0,"app-chip",6),c(1),r()),n&2){let e=l();a(),f(e.siteName())}}function un(n,t){n&1&&(i(0,"app-chip",8),v(1,"span",17),c(2," Serving "),r())}function mn(n,t){n&1&&(i(0,"app-chip",6),v(1,"span",18),c(2," Starting\u2026 "),r())}function _n(n,t){n&1&&(i(0,"app-chip",9),v(1,"span",19),c(2," Not serving "),r())}function gn(n,t){n&1&&(i(0,"app-chip",6),v(1,"span",20),c(2," Paused "),r())}function hn(n,t){if(n&1&&(i(0,"app-badge",22),c(1),r()),n&2){let e=l().$implicit;a(),f(e.name)}}function Cn(n,t){if(n&1&&(i(0,"span",23),c(1),r()),n&2){let e=l().$implicit;a(),f(e.name)}}function xn(n,t){if(n&1&&u(0,hn,2,1,"app-badge",22)(1,Cn,2,1,"span",23),n&2){let e=t.$implicit;m(e.kind==="group"?0:1)}}function fn(n,t){if(n&1&&(i(0,"span",12),c(1,"Shared with"),r(),i(2,"span",21),w(3,xn,2,1,null,null,pn),r()),n&2){let e=l();a(3),S(e.owner().grantees)}}function bn(n,t){if(n&1&&(i(0,"span",12),c(1,"From"),r(),i(2,"span",24),c(3),r()),n&2){let e=l();a(3),f(e.share().ownerName)}}function vn(n,t){if(n&1&&(i(0,"span",25),c(1),r(),v(2,"app-copy-button",26)),n&2){let e=t;a(),f(e),a(),d("text",e)}}function yn(n,t){n&1&&(i(0,"span",14),c(1,"address not reported yet"),r())}function wn(n,t){if(n&1&&(i(0,"span",12),c(1,"Via"),r(),i(2,"span",27),c(3),r()),n&2){let e=l();a(3),f(e.guest().viaGroups.join(", "))}}function Sn(n,t){if(n&1&&(i(0,"p",29),c(1),r()),n&2){let e=l(2);d("title",e.serveError()),a(),f(e.serveError())}}function kn(n,t){if(n&1&&(i(0,"p",28),c(1," The relay isn't running on this device \u2014 teammates can still reach it if your dev server listens on all interfaces (0.0.0.0). "),r(),u(2,Sn,2,2,"p",29)),n&2){let e=l();a(2),m(e.serveError()?2:-1)}}function Tn(n,t){if(n&1&&(i(0,"p",15),c(1),r()),n&2){let e=l();a(),k("Served while ",e.whereServed(),".")}}function Pn(n,t){n&1&&(i(0,"a",31),v(1,"app-icon",32),c(2," Open in browser "),r()),n&2&&d("href",t,Ne)}function Mn(n,t){if(n&1){let e=x();i(0,"button",30),_("click",function(){g(e);let s=l();return h(s.stop.emit())}),c(1," Stop sharing "),r(),u(2,Pn,3,1,"a",31)}if(n&2){let e,o=l();a(2),m((e=o.share().url)?2:-1,e)}}function Nn(n,t){n&1&&(i(0,"a",31),v(1,"app-icon",32),c(2," Open in browser "),r()),n&2&&d("href",t,Ne)}function En(n,t){if(n&1){let e=x();i(0,"button",33),_("click",function(){g(e);let s=l();return h(s.test.emit())}),c(1," Test connection "),r(),u(2,Nn,3,1,"a",31)}if(n&2){let e,o=l();N("border-r",!!o.share().url)("border-border",!!o.share().url),d("disabled",!o.canTest()||!o.onShareSite()),a(2),m((e=o.share().url)?2:-1,e)}}var Te=class n{network=P(J);share=b.required();mode=b.required();serveState=b(null);serveError=b("");canTest=b(!1);stop=E();test=E();owner=C(()=>this.mode()==="owner"?this.share():null);guest=C(()=>this.mode()==="guest"?this.share():null);expiresIn=C(()=>ge(this.share().expiresAt));siteName=C(()=>this.network.siteName(this.share().siteId));whereServed=C(()=>this.network.sites().length>1?`you're connected to ${this.siteName()}`:"your VPN is connected");vpn=C(()=>xe(this.network.state(),this.network.activeSiteId(),this.network.pendingSiteId(),this.share().siteId));onShareSite=C(()=>this.vpn()==="connected");relay=C(()=>{if(this.mode()!=="owner")return null;switch(this.vpn()){case"connected":return this.serveState();case"off":case"off-site":return"paused";default:return null}});exact(t){let e=new Date(t);return Number.isNaN(e.getTime())?"":e.toLocaleString()}static \u0275fac=function(e){return new(e||n)};static \u0275cmp=M({type:n,selectors:[["app-share-card"]],hostAttrs:[1,"flex","flex-col","overflow-hidden","rounded-2xl","border","border-border/70","bg-card-bg"],inputs:{share:[1,"share"],mode:[1,"mode"],serveState:[1,"serveState"],serveError:[1,"serveError"],canTest:[1,"canTest"]},outputs:{stop:"stop",test:"test"},decls:31,vars:13,consts:[[1,"flex","items-center","gap-4","px-5","pt-4"],[1,"grid","h-11","w-11","shrink-0","place-items-center","rounded-lg","bg-muted","text-muted-foreground"],["name","resource-host",1,"h-5","w-5"],[1,"min-w-0","flex-1"],[1,"truncate","text-base","font-semibold","tracking-[-0.01em]","text-surface-foreground"],[1,"mt-px","flex","flex-wrap","items-center","gap-2"],["tone","neutral"],["tone","warning",3,"title"],["tone","success"],["tone","warning"],[1,"px-5","py-4"],[1,"grid","items-baseline","gap-y-[7px]"],[1,"text-[12.5px]","text-text-secondary"],[1,"flex","min-w-0","items-start","gap-1"],[1,"text-[13.5px]","text-placeholder"],[1,"mt-2.5","text-xs","text-muted-foreground"],[1,"mt-auto","flex","border-t","border-border"],[1,"h-1.5","w-1.5","rounded-full","bg-[var(--dot-active,#10b981)]"],[1,"h-1.5","w-1.5","animate-pulse","rounded-full","bg-[var(--dot-expiring,#f59e0b)]"],[1,"h-1.5","w-1.5","rounded-full","bg-[var(--dot-expiring,#f59e0b)]"],[1,"h-1.5","w-1.5","rounded-full","bg-placeholder"],[1,"flex","min-w-0","flex-wrap","items-center","gap-1.5","text-[13.5px]","font-medium","text-surface-foreground"],["tone","gray","icon","users"],[1,"truncate"],[1,"truncate","text-[13.5px]","font-medium","text-surface-foreground"],[1,"font-mono","text-[13.5px]","leading-[18px]","text-muted-foreground","[overflow-wrap:anywhere]"],["variant","icon","label","Copy link",3,"text"],[1,"truncate","text-[13.5px]","text-muted-foreground"],[1,"mt-2.5","text-xs","text-warning"],[1,"mt-1","truncate","text-xs","text-muted-foreground",3,"title"],["type","button",1,"inline-flex","flex-1","items-center","justify-center","gap-1.5","border-r","border-border","px-2.5","py-3","text-[12.5px]","text-muted-foreground","transition-colors","hover:bg-muted",3,"click"],["target","_blank","rel","noopener",1,"inline-flex","flex-1","items-center","justify-center","gap-1.5","px-2.5","py-3","text-[12.5px]","text-brand-text","transition-colors","hover:bg-brand/12",3,"href"],["name","external-link",1,"h-[15px]","w-[15px]"],["type","button",1,"inline-flex","flex-1","items-center","justify-center","gap-1.5","px-2.5","py-3","text-[12.5px]","text-muted-foreground","transition-colors","hover:bg-muted","disabled:opacity-50",3,"click","disabled"]],template:function(e,o){if(e&1&&(i(0,"div",0)(1,"span",1),v(2,"app-icon",2),r(),i(3,"div",3)(4,"div",4),c(5),r(),i(6,"div",5)(7,"app-chip",6),c(8),r(),u(9,dn,2,1,"app-chip",6),i(10,"app-chip",7),c(11),r(),u(12,un,3,0,"app-chip",8)(13,mn,3,0,"app-chip",6)(14,_n,3,0,"app-chip",9)(15,gn,3,0,"app-chip",6),r()()(),i(16,"div",10)(17,"div",11),u(18,fn,5,0)(19,bn,4,1),i(20,"span",12),c(21,"URL"),r(),i(22,"span",13),u(23,vn,3,2)(24,yn,2,0,"span",14),r(),u(25,wn,4,1),r(),u(26,kn,3,1)(27,Tn,2,1,"p",15),r(),i(28,"div",16),u(29,Mn,3,1)(30,En,3,6),r()),e&2){let s,p,T,L;a(5),k(" ",o.share().label," "),a(3),k("Port ",o.share().port),a(),m(o.network.sites().length>1?9:-1),a(),d("title","Ends "+o.exact(o.share().expiresAt)),a(),k("expires ",o.expiresIn()),a(),m((s=o.relay())==="serving"?12:s==="starting"?13:s==="failed"?14:s==="paused"?15:-1),a(5),We("grid-template-columns","76px minmax(0,1fr)"),a(),m(o.mode()==="owner"?18:19),a(5),m((p=o.share().url)?23:24,p),a(2),m(!((T=o.guest())==null||T.viaGroups==null)&&T.viaGroups.length?25:-1),a(),m((L=o.relay())==="failed"?26:L==="paused"?27:-1),a(3),m(o.mode()==="owner"?29:30)}},dependencies:[X,_t,re,B],encapsulation:2})};var Vn=(n,t)=>t.userId,Dn=(n,t)=>t.groupId;function Rn(n,t){if(n&1){let e=x();i(0,"app-banner",0),c(1," Connect to the private network first (the Connect pill at the bottom of the sidebar) \u2014 a share is only reachable while you're on the site you share it on. "),r(),i(2,"div",1)(3,"app-button",2),_("click",function(){g(e);let s=l();return h(s.closed.emit())}),c(4,"Close"),r()()}}function On(n,t){n&1&&v(0,"app-skeleton",11)}function In(n,t){if(n&1){let e=x();i(0,"label",23)(1,"input",27),_("change",function(){let s=g(e).$implicit,p=l(4);return h(p.toggle("group#"+s.groupId))}),r(),i(2,"span",28)(3,"span",29),c(4),r(),i(5,"app-badge",30),c(6),r()()()}if(n&2){let e=t.$implicit,o=l(4);a(),d("checked",o.picked().has("group#"+e.groupId)),a(3),f(e.name),a(2),O("",e.members," member",e.members===1?"":"s")}}function qn(n,t){if(n&1){let e=x();i(0,"button",31),_("click",function(){g(e);let s=l(4);return h(s.groupsExpanded.set(!s.groupsExpanded()))}),i(1,"span",32),c(2,"\u25B8"),r(),c(3),r()}if(n&2){let e=l(4);a(),N("open",e.groupsExpanded()),a(2),k(" ",e.groupsExpanded()?"Show fewer":"Show "+e.hiddenGroups()+" more"," ")}}function Bn(n,t){if(n&1&&(i(0,"p",21),c(1,"Groups"),r(),i(2,"div",26),w(3,In,7,4,"label",23,Dn),u(5,qn,4,3,"button",25),r()),n&2){let e=l(3);a(3),S(e.visibleGroups()),a(2),m(!e.query().trim()&&(e.hiddenGroups()>0||e.groupsExpanded())?5:-1)}}function $n(n,t){if(n&1){let e=x();i(0,"label",23)(1,"input",27),_("change",function(){let s=g(e).$implicit,p=l(3);return h(p.toggle("user#"+s.userId))}),r(),i(2,"span",33),c(3),r()()}if(n&2){let e=t.$implicit,o=l(3);a(),d("checked",o.picked().has("user#"+e.userId)),a(2),f(e.email)}}function An(n,t){if(n&1&&(i(0,"p",24),c(1),r()),n&2){let e=l(3);a(),k('No one matches "',e.query(),'".')}}function Fn(n,t){if(n&1){let e=x();i(0,"button",31),_("click",function(){g(e);let s=l(3);return h(s.usersExpanded.set(!s.usersExpanded()))}),i(1,"span",32),c(2,"\u25B8"),r(),c(3),r()}if(n&2){let e=l(3);a(),N("open",e.usersExpanded()),a(2),k(" ",e.usersExpanded()?"Show fewer":"Show "+e.hiddenUsers()+" more"," ")}}function Gn(n,t){if(n&1&&(u(0,Bn,6,1),i(1,"p",21),c(2,"People"),r(),i(3,"div",22),w(4,$n,4,2,"label",23,Vn,!1,An,2,1,"p",24),u(7,Fn,4,3,"button",25),r()),n&2){let e=l(2);m(e.store.limits.allowGroupTargets&&e.groups().length?0:-1),a(4),S(e.visibleUsers()),a(3),m(!e.query().trim()&&(e.hiddenUsers()>0||e.usersExpanded())?7:-1)}}function Ln(n,t){if(n&1&&(i(0,"option",14),c(1),r()),n&2){let e=t.$implicit;d("ngValue",e),a(),O("",e," hour",e===1?"":"s")}}function jn(n,t){if(n&1&&(i(0,"p",18),c(1),r()),n&2){let e=l(2);a(),f(e.error())}}function Hn(n,t){if(n&1){let e=x();i(0,"div",3)(1,"app-field",4)(2,"input",5),_("ngModelChange",function(s){g(e);let p=l();return h(p.port.set(s))}),r()(),i(3,"app-field",6)(4,"input",7),_("ngModelChange",function(s){g(e);let p=l();return h(p.label.set(s))}),r()()(),i(5,"div",8),v(6,"app-field",9),i(7,"input",10),_("ngModelChange",function(s){g(e);let p=l();return h(p.query.set(s))}),r(),u(8,On,1,0,"app-skeleton",11)(9,Gn,8,3),r(),i(10,"div",8)(11,"app-field",12)(12,"select",13),_("ngModelChange",function(s){g(e);let p=l();return h(p.hours.set(s))}),w(13,Ln,2,3,"option",14,te),r()()(),i(15,"div",15)(16,"app-banner",16),c(17," Teammates open "),i(18,"span",17),c(19),r(),c(20),r()(),u(21,jn,2,1,"p",18),i(22,"div",19)(23,"app-button",2),_("click",function(){g(e);let s=l();return h(s.closed.emit())}),c(24,"Cancel"),r(),i(25,"app-button",20),_("click",function(){g(e);let s=l();return h(s.submit())}),c(26,"Start sharing"),r()()}if(n&2){let e=l();a(2),d("ngModel",e.port()),a(2),d("ngModel",e.label()),a(2),d("hint","people or groups on "+e.siteName()+" \u2014 they need the desktop app connected too"),a(),d("ngModel",e.query()),a(),m(e.directory()===null?8:9),a(3),d("hint","the share ends on its own \u2014 "+e.store.limits.maxDurationHours+" hour"+(e.store.limits.maxDurationHours===1?"":"s")+" is the maximum your admin allows"),a(),d("ngModel",e.hours()),a(),S(e.hourOptions()),a(6),f(e.previewUrl()),a(),k(" while connected to ",e.siteName(),'. Plain http \u2014 encrypted by the VPN, but the browser may say "Not secure". '),a(),m(e.error()?21:-1),a(4),d("loading",e.busy())("disabled",!e.canSubmit())}}var Un=[1,2,4,8,12,24,48,72],Ct=3,Pe=class n{store=P(Ce);network=P(J);api=P(lt);toast=P(Q);closed=E();port=y(null);label=y("");query=y("");picked=y(new Set);hours=y(Math.min(8,this.store.limits.maxDurationHours));busy=y(!1);error=y("");directory=y(null);selfHost=y(null);hourOptions=C(()=>{let t=this.store.limits.maxDurationHours,e=Un.filter(o=>o<=t);return e.includes(t)?e:[...e,t]});siteId=this.store.shareSiteId;siteName=this.store.shareSiteName;users=C(()=>{let t=this.query().trim().toLowerCase();return(this.directory()?.users??[]).filter(e=>!t||e.email.toLowerCase().includes(t))});groups=C(()=>{let t=this.query().trim().toLowerCase();return(this.directory()?.groups??[]).filter(e=>!t||e.name.toLowerCase().includes(t))});usersExpanded=y(!1);groupsExpanded=y(!1);visibleUsers=C(()=>this.query().trim()||this.usersExpanded()?this.users():this.users().filter((t,e)=>e<Ct||this.picked().has("user#"+t.userId)));visibleGroups=C(()=>this.query().trim()||this.groupsExpanded()?this.groups():this.groups().filter((t,e)=>e<Ct||this.picked().has("group#"+t.groupId)));hiddenUsers=C(()=>this.users().length-this.visibleUsers().length);hiddenGroups=C(()=>this.groups().length-this.visibleGroups().length);portValid=C(()=>{let t=Number(this.port());return Number.isInteger(t)&&t>=1&&t<=65535});canSubmit=C(()=>this.portValid()&&this.picked().size>0&&!!this.siteId());previewUrl=C(()=>`http://${this.selfHost()??"<your-laptop>"}:${this.portValid()?this.port():"<port>"}`);constructor(){this.api.directory().subscribe({next:t=>this.directory.set(t),error:t=>{this.directory.set({users:[],groups:[]}),this.error.set(ee(t,"Could not load the directory."))}}),this.store.selfAddress().then(t=>this.selfHost.set(t.hostname??t.ip??null))}toggle(t){this.picked.update(e=>{let o=new Set(e);return o.has(t)?o.delete(t):o.add(t),o})}submit(){return F(this,null,function*(){if(!(!this.canSubmit()||this.busy())){this.busy.set(!0),this.error.set("");try{let t=yield this.store.selfAddress(),e=yield this.store.create(H(j({port:Number(this.port()),label:this.label().trim()||void 0,siteId:this.siteId(),durationHours:this.hours()},t),{grantees:[...this.picked()].map(o=>{let[s,p]=o.split("#");return{kind:s,id:p}})}));this.toast.success(`Sharing port ${e.port} as "${e.label}"`),this.closed.emit()}catch(t){this.error.set(ee(t,"Could not start the share."))}finally{this.busy.set(!1)}}})}static \u0275fac=function(e){return new(e||n)};static \u0275cmp=M({type:n,selectors:[["app-share-port-panel"]],outputs:{closed:"closed"},decls:2,vars:1,consts:[["tone","warning"],[1,"mt-5","flex","justify-end"],["variant","outline",3,"click"],[1,"grid","grid-cols-[120px_minmax(0,1fr)]","gap-3"],["label","Local port","hint","dev server port"],["type","number","min","1","max","65535","placeholder","4200",1,"ui-input","font-mono",3,"ngModelChange","ngModel"],["label","Label","hint","what teammates see"],["maxlength","60","placeholder","e.g. Checkout redesign",1,"ui-input",3,"ngModelChange","ngModel"],[1,"mt-5"],["label","Share with",3,"hint"],["placeholder","Search users and groups",1,"ui-input","mb-3",3,"ngModelChange","ngModel"],["sizeClass","h-24 w-full"],["label","Duration",3,"hint"],[1,"ui-input",3,"ngModelChange","ngModel"],[3,"ngValue"],[1,"mt-4"],["tone","info"],[1,"font-mono","[overflow-wrap:anywhere]"],[1,"mt-3","text-xs","text-danger"],[1,"mt-5","flex","justify-end","gap-2"],[3,"click","loading","disabled"],[1,"ui-microlabel","mb-1","px-1","text-muted-foreground"],[1,"rounded-lg","border","border-border"],[1,"ui-check-row","border-b","border-border","text-sm","last:border-b-0"],[1,"px-3","py-2","text-xs","text-muted-foreground"],["type","button",1,"morerow"],[1,"mb-3","rounded-lg","border","border-border"],["type","checkbox",1,"ui-checkbox",3,"change","checked"],[1,"flex","min-w-0","flex-1","items-center","gap-1.5"],[1,"min-w-0","truncate","font-medium","tracking-[0.015em]","text-surface-foreground"],["tone","gray"],["type","button",1,"morerow",3,"click"],[1,"chev"],[1,"min-w-0","flex-1","truncate","font-medium","tracking-[0.015em]","text-surface-foreground"]],template:function(e,o){e&1&&u(0,Rn,5,0)(1,Hn,27,12),e&2&&m(o.network.state()!=="connected"?0:1)},dependencies:[me,pe,de,ae,Je,ce,se,ue,et,Ze,le,X,K,$,_e,fe],styles:[".morerow[_ngcontent-%COMP%]{display:flex;align-items:center;gap:6px;width:100%;padding:7px 12px;border-top:1px solid var(--border);background:none;border-left:0;border-right:0;border-bottom:0;font:inherit;font-size:12px;color:var(--brand-text);cursor:pointer;text-align:left}.morerow[_ngcontent-%COMP%]:hover{background:var(--muted)}.chev[_ngcontent-%COMP%]{display:inline-block;font-size:10px;transition:transform .15s ease}.chev.open[_ngcontent-%COMP%]{transform:rotate(90deg)}"]})};var Wn=["panelTpl"],zn=["sharePanelTpl"],Yn=n=>({$implicit:n,status:"none",label:"My shares"}),Qn=n=>({$implicit:n,status:"none",label:"Teammates\u2019 laptops"}),ft=n=>({$implicit:n}),bt=(n,t)=>({$implicit:n,status:"none",label:t}),vt=(n,t,e)=>({$implicit:n,status:t,label:e}),yt=(n,t)=>t.resourceId,wt=(n,t)=>t.shareId,Xn=(n,t)=>t.id,Be=(n,t)=>t.accountNumber,Me=(n,t)=>t.siteId;function Kn(n,t){if(n&1){let e=x();i(0,"button",15),_("click",function(){g(e);let s=l();return h(s.network.setupOpen.set(!0))}),c(1," Setup guide "),r()}}function Jn(n,t){if(n&1){let e=x();i(0,"app-button",16),_("click",function(){g(e);let s=l();return h(s.openShare())}),v(1,"app-icon",17),c(2," Share a local port "),r()}n&2&&(a(),d("strokeWidth",2))}function Zn(n,t){n&1&&(i(0,"div",12)(1,"app-banner",18),c(2," Connecting to the private network requires the desktop app \u2014 this page shows what your VPN connection can reach once you're connected there. "),r()())}function eo(n,t){if(n&1&&(i(0,"app-banner",13),c(1),r()),n&2){let e=l();a(),f(e.store.error())}}function to(n,t){n&1&&(i(0,"div",14),v(1,"app-skeleton",19)(2,"app-skeleton",19)(3,"app-skeleton",19),r())}function no(n,t){if(n&1&&v(0,"app-resource-card",24),n&2){let e=t.$implicit;d("resource",e)}}function oo(n,t){if(n&1){let e=x();i(0,"app-project-group",21),_("openChange",function(s){let p=g(e).$implicit,T=l(2);return h(T.setOpen("acct:"+p.accountNumber,s))}),i(1,"app-vpc-group",22),_("openChange",function(s){let p=g(e).$implicit,T=l(2);return h(T.setOpen("vpc:"+p.accountNumber,s))})("connect",function(){let s=g(e).$implicit,p=l(2);return h(p.connectVpn(s))}),i(2,"div",23),w(3,no,1,1,"app-resource-card",24,yt),r()()()}if(n&2){let e=t.$implicit,o=l(2);d("title",o.accountTitle(e.accountName,e.accountNumber))("count",e.vpc.resources.length)("open",o.isOpen("acct:"+e.accountNumber,!0)),a(),d("label",e.vpc.domain??"Private network")("count",e.vpc.resources.length)("status",o.statusOf(e))("probe",o.probeOf(e))("open",o.isOpen("vpc:"+e.accountNumber,!0)),a(2),S(e.vpc.resources)}}function io(n,t){if(n&1){let e=x();i(0,"app-share-card",27),_("stop",function(){let s=g(e).$implicit,p=l(3);return h(p.stopShare(s))}),r()}if(n&2){let e=t.$implicit,o=l(3);d("share",e)("serveState",o.shares.serving().get(e.shareId)??null)("serveError",o.shares.serveErrors().get(e.shareId)??"")}}function ro(n,t){if(n&1){let e=x();i(0,"app-share-box",25),_("connect",function(){let s=g(e).$implicit,p=l(2);return h(p.connectSite(s.siteId))}),i(1,"div",23),w(2,io,1,3,"app-share-card",26,wt),r()()}if(n&2){let e=t.$implicit,o=t.status,s=t.label;d("label",s)("count",e.shares.length)("status",o)("pill",e.relay.pill)("pillTone",e.relay.tone),a(2),S(e.shares)}}function ao(n,t){if(n&1){let e=x();i(0,"app-share-card",30),_("test",function(){let s=g(e).$implicit,p=l(3);return h(p.testShare(s))}),r()}if(n&2){let e=t.$implicit,o=l(3);d("share",e)("canTest",o.bridge.probeSupported)}}function so(n,t){if(n&1){let e=x();i(0,"app-share-box",28),_("connect",function(){let s=g(e).$implicit,p=l(2);return h(p.connectSite(s.siteId))}),i(1,"div",23),w(2,ao,1,2,"app-share-card",29,wt),r()()}if(n&2){let e=t.$implicit,o=t.status,s=t.label;d("label",s)("count",e.shares.length)("status",o)("pill",o==="connected"?"Connected":""),a(2),S(e.shares)}}function lo(n,t){if(n&1&&(i(0,"app-banner",13),c(1),r()),n&2){let e=l(3);a(),f(e.shares.error())}}function co(n,t){if(n&1&&v(0,"app-resource-card",24),n&2){let e=t.$implicit;d("resource",e)}}function po(n,t){if(n&1){let e=x();i(0,"app-vpc-group",36),_("openChange",function(s){let p=g(e).$implicit,T=l(4);return h(T.setOpen("vpc:"+p.accountNumber,s))}),i(1,"div",23),w(2,co,1,1,"app-resource-card",24,yt),r()()}if(n&2){let e=t.$implicit,o=l(4);d("label",e.vpc.domain??"Private network")("detail",o.accountTitle(e.accountName,e.accountNumber))("count",e.vpc.resources.length)("status",o.statusOf(e))("probe",o.probeOf(e))("control",!1)("open",o.isOpen("vpc:"+e.accountNumber,!0)),a(2),S(e.vpc.resources)}}function uo(n,t){n&1&&D(0)}function mo(n,t){if(n&1&&V(0,uo,1,0,"ng-container",37),n&2){let e=l().$implicit;l(2);let o=R(3);d("ngTemplateOutlet",o)("ngTemplateOutletContext",Z(2,Yn,e.mine))}}function _o(n,t){n&1&&D(0)}function go(n,t){if(n&1&&V(0,_o,1,0,"ng-container",37),n&2){let e=l().$implicit;l(2);let o=R(5);d("ngTemplateOutlet",o)("ngTemplateOutletContext",Z(2,Qn,e.shared))}}function ho(n,t){n&1&&(i(0,"p",35),c(1," Nothing granted on this network yet \u2014 pick something under "),i(2,"span",38),c(3,"Request access"),r(),c(4," (top right) and an admin will review it. "),r())}function Co(n,t){if(n&1){let e=x();i(0,"app-project-group",32),_("openChange",function(s){let p=g(e).$implicit,T=l(3);return h(T.setOpen("site:"+p.id,s))}),i(1,"app-vpn-control",33),_("connect",function(){let s=g(e).$implicit,p=l(3);return h(p.connectSite(s.id))}),r(),i(2,"div",20),w(3,po,4,7,"app-vpc-group",34,Be),u(5,mo,1,4,"ng-container"),u(6,go,1,4,"ng-container"),u(7,ho,5,0,"p",35),r()()}if(n&2){let e=t.$implicit,o=l(3);d("title",e.name)("summary",e.summary)("open",o.isOpen("site:"+e.id,!0)),a(),d("status",o.siteBarStatus(e.id))("connectedLabel",e.empty?"Connected \xB7 nothing granted to you here":"Connected")("connectedTone",e.empty?"warn":"ok"),a(2),S(e.groups),a(2),m(e.mine?5:-1),a(),m(e.shared?6:-1),a(),m(!e.groups.length&&!e.mine&&!e.shared?7:-1)}}function xo(n,t){n&1&&D(0)}function fo(n,t){if(n&1&&V(0,xo,1,0,"ng-container",37),n&2){let e=t.$implicit;l(2);let o=R(1);d("ngTemplateOutlet",o)("ngTemplateOutletContext",Z(2,ft,e))}}function bo(n,t){n&1&&D(0)}function vo(n,t){if(n&1&&V(0,bo,1,0,"ng-container",37),n&2){let e=t.$implicit;l(2);let o=R(3);d("ngTemplateOutlet",o)("ngTemplateOutletContext",De(2,bt,e,"My shares \xB7 "+e.siteId))}}function yo(n,t){n&1&&D(0)}function wo(n,t){if(n&1&&V(0,yo,1,0,"ng-container",37),n&2){let e=t.$implicit;l(2);let o=R(5);d("ngTemplateOutlet",o)("ngTemplateOutletContext",De(2,bt,e,"Teammates\u2019 laptops \xB7 "+e.siteId))}}function So(n,t){if(n&1&&(u(0,lo,2,1,"app-banner",13),w(1,Co,8,9,"app-project-group",31,Xn),w(3,fo,1,4,"ng-container",null,Be),w(5,vo,1,5,"ng-container",null,Me),w(7,wo,1,5,"ng-container",null,Me)),n&2){let e=l(2);m(e.shares.enabled&&e.shares.error()?0:-1),a(),S(e.siteGroups()),a(2),S(e.unmappedGroups()),a(2),S(e.orphanOwnerBoxes()),a(2),S(e.orphanGuestBoxes())}}function ko(n,t){if(n&1&&(i(0,"app-banner",13),c(1),r()),n&2){let e=l(4);a(),f(e.shares.error())}}function To(n,t){n&1&&D(0)}function Po(n,t){if(n&1&&V(0,To,1,0,"ng-container",37),n&2){let e=t.$implicit;l(3);let o=R(3),s=l();d("ngTemplateOutlet",o)("ngTemplateOutletContext",Re(2,vt,e,s.boxStatus(e.siteId),s.boxLabel("My shares",e.siteId)))}}function Mo(n,t){if(n&1){let e=x();i(0,"app-share-box",42)(1,"p",35),c(2," You're not sharing anything right now \u2014 "),i(3,"button",44),_("click",function(){g(e);let s=l(4);return h(s.openShare())}),c(4," Share a local port"),r(),c(5," to let a teammate open something running on this laptop. "),r()()}n&2&&d("count",0)}function No(n,t){n&1&&D(0)}function Eo(n,t){if(n&1&&V(0,No,1,0,"ng-container",37),n&2){let e=t.$implicit;l(3);let o=R(5),s=l();d("ngTemplateOutlet",o)("ngTemplateOutletContext",Re(2,vt,e,s.boxStatus(e.siteId),s.boxLabel("Shared with me",e.siteId)))}}function Vo(n,t){n&1&&(i(0,"app-share-box",43)(1,"p",35),c(2,"No one has shared a port with you yet."),r()()),n&2&&d("count",0)}function Do(n,t){if(n&1){let e=x();i(0,"app-project-group",40),_("openChange",function(s){g(e);let p=l(3);return h(p.setOpen("shares",s))}),u(1,ko,2,1,"app-banner",13),i(2,"div",41),w(3,Po,1,6,"ng-container",null,Me,!1,Mo,6,1,"app-share-box",42),w(6,Eo,1,6,"ng-container",null,Me,!1,Vo,3,1,"app-share-box",43),r()()}if(n&2){let e=l(3);d("count",e.myShares().length+e.sharedWithMe().length)("open",e.isOpen("shares",!0)),a(),m(e.shares.error()?1:-1),a(2),S(e.ownerBoxes()),a(3),S(e.guestBoxes())}}function Ro(n,t){n&1&&(i(0,"app-empty-state",45),c(1," Every address is blocked until an admin grants you a resource. You can stay connected or disconnect; it makes no difference to what you can reach. Pick something under "),i(2,"span",38),c(3,"Request access"),r(),c(4," (top right) to ask. "),r())}function Oo(n,t){n&1&&(i(0,"app-empty-state",46),c(1," You don't have network access to anything yet \u2014 pick something under "),i(2,"span",38),c(3,"Request access"),r(),c(4," (top right) and an admin will review it. "),r())}function Io(n,t){if(n&1&&u(0,Ro,5,0,"app-empty-state",45)(1,Oo,5,0,"app-empty-state",46),n&2){let e=l(3);m(e.network.state()==="connected"?0:1)}}function qo(n,t){n&1&&D(0)}function Bo(n,t){if(n&1&&V(0,qo,1,0,"ng-container",37),n&2){let e=t.$implicit;l(3);let o=R(1);d("ngTemplateOutlet",o)("ngTemplateOutletContext",Z(2,ft,e))}}function $o(n,t){if(n&1&&w(0,Bo,1,4,"ng-container",null,Be),n&2){let e=l(3);S(e.reachableGroups())}}function Ao(n,t){if(n&1&&(u(0,Do,9,5,"app-project-group",39),u(1,Io,2,1)(2,$o,2,0)),n&2){let e=l(2);m(e.shares.enabled?0:-1),a(),m(e.store.reachable().length===0?1:2)}}function Fo(n,t){if(n&1&&(V(0,oo,5,8,"ng-template",null,2,Y)(2,ro,4,5,"ng-template",null,3,Y)(4,so,4,4,"ng-template",null,4,Y),i(6,"div",20),u(7,So,9,1)(8,Ao,3,2),r()),n&2){let e=l();a(7),m(e.byNetwork()?7:8)}}function Go(n,t){if(n&1){let e=x();i(0,"app-panel",47),_("closed",function(){g(e);let s=l();return h(s.requestOpen.set(!1))}),i(1,"app-request-access-panel",48),_("sentAny",function(){g(e);let s=l();return h(s.store.load())})("closed",function(){g(e);let s=l();return h(s.requestOpen.set(!1))}),r()()}if(n&2){let e=l();a(),d("groups",e.requestableGroups())("vpcLabels",e.requestableVpcLabels())}}function Lo(n,t){if(n&1){let e=x();i(0,"app-panel",49),_("closed",function(){g(e);let s=l();return h(s.shares.panelOpen.set(!1))}),i(1,"app-share-port-panel",50),_("closed",function(){g(e);let s=l();return h(s.shares.panelOpen.set(!1))}),r()()}}var xt=class n{store=P(st);shares=P(Ce);bridge=P(ie);network=P(J);vpcStatus=P(at);toast=P(Q);requestOpen=y(!1);panelTpl=Oe("panelTpl");sharePanelTpl=Oe("sharePanelTpl");myShares=C(()=>this.shares.mine()??[]);sharedWithMe=C(()=>this.shares.sharedWithMe()??[]);reachableGroups=C(()=>ct(this.store.reachable()??[]));ownerBoxes=C(()=>this.shareBoxes(this.myShares()).map(t=>H(j({},t),{relay:this.relaySummary(t.shares)})));guestBoxes=C(()=>this.shareBoxes(this.sharedWithMe()));orphanOwnerBoxes=C(()=>this.ownerBoxes().filter(t=>!this.knownSite(t.siteId)));orphanGuestBoxes=C(()=>this.guestBoxes().filter(t=>!this.knownSite(t.siteId)));byNetwork=C(()=>this.network.sites().length>1);vpcBuckets=C(()=>qe(this.reachableGroups(),t=>this.network.siteOfAccount().get(t.accountNumber)));unmappedGroups=C(()=>this.vpcBuckets().unmapped);siteGroups=C(()=>this.network.sites().map(t=>{let e=this.vpcBuckets().bySite.get(t.id)??[],o=this.ownerBoxes().find(L=>L.siteId===t.id)??null,s=this.guestBoxes().find(L=>L.siteId===t.id)??null,p=(o?.shares.length??0)+(s?.shares.length??0),T=[e.length?`${e.length} VPC${e.length===1?"":"s"}`:"",p?`${p} laptop${p===1?"":"s"}`:""].filter(Boolean);return{id:t.id,name:this.network.siteName(t.id),groups:e,mine:o,shared:s,empty:e.length===0&&p===0,summary:T.join(" \xB7 ")||"nothing granted yet"}}));shareBoxes(t){let e=this.network.sites().map(p=>p.id),o=this.network.activeSiteId(),s=p=>{if(p===o)return-1;let T=e.indexOf(p);return T===-1?Number.MAX_SAFE_INTEGER:T};return[...qe(t,p=>p.siteId).bySite].map(([p,T])=>({siteId:p,shares:T})).sort((p,T)=>s(p.siteId)-s(T.siteId))}knownSite(t){return this.network.sites().some(e=>e.id===t)}boxStatus(t){return this.knownSite(t)?this.siteBarStatus(t):"none"}boxLabel(t,e){return this.network.sites().length>1?`${t} \xB7 ${this.network.siteName(e)}`:t}relaySummary(t){let e=t.map(o=>this.shares.serving().get(o.shareId)).filter(o=>o!==void 0);return e.includes("serving")?e.includes("failed")?{pill:"Partly serving",tone:"warn"}:{pill:"Serving",tone:"ok"}:e.includes("failed")?{pill:"Not serving",tone:"warn"}:e.includes("starting")?{pill:"Starting\u2026",tone:"quiet"}:{pill:"",tone:"quiet"}}requestableGroups=C(()=>pt(this.store.requestable()??[]));availableCount=C(()=>this.store.requestable()?.length??0);requestableVpcLabels=C(()=>{let t=new Map;for(let e of this.requestableGroups()){let o=this.reachableGroups().find(s=>s.accountNumber===e.accountNumber);o?.vpc.domain&&t.set(e.key,o.vpc.domain)}return t});openRequest(){this.requestOpen.set(!0)}openShare(){this.shares.panelOpen.set(!0)}stopShare(t){return F(this,null,function*(){try{yield this.shares.remove(t.shareId),this.toast.success(`Stopped sharing "${t.label}"`)}catch{this.toast.error(`Could not stop "${t.label}" \u2014 try again.`)}})}testShare(t){return F(this,null,function*(){if(!t.url)return;let e="",o=80;try{let p=new URL(t.url);e=p.hostname,o=Number(p.port||80)}catch{return}let s=yield this.bridge.networkProbe(e,o).catch(()=>({ok:!1,reason:void 0}));s.ok?this.toast.success(`${t.label} answers on port ${o}.`):s.reason==="vpn-down"?this.toast.error("Connect to the private network first."):this.toast.error(`${t.label} didn't answer \u2014 ask ${t.ownerName} whether it's still running, or wait a minute for access rules to sync.`)})}connectSite(t){if(this.network.state()==="setup"){this.network.setupOpen.set(!0);return}this.network.connect({siteId:t})}statusOf(t){return this.siteBarStatus(this.network.siteOfAccount().get(t.accountNumber)??null)}siteBarStatus(t){return xe(this.network.state(),this.network.activeSiteId(),this.network.pendingSiteId(),t)}openOverrides=y(new Map);constructor(){this.store.load(),this.shares.startPolling(P(Le)),Ie(this.requestOpen,this.panelTpl,()=>this.requestOpen.set(!1)),Ie(this.shares.panelOpen,this.sharePanelTpl,()=>this.shares.panelOpen.set(!1)),Qe(()=>{let t=this.reachableGroups();this.network.activeSiteId(),this.network.state()==="connected"&&t.length>0&&this.vpcStatus.refresh(t)})}isOpen(t,e){return this.openOverrides().get(t)??e}setOpen(t,e){this.openOverrides.update(o=>new Map(o).set(t,e))}connectVpn(t){if(this.network.state()==="setup"){this.network.setupOpen.set(!0);return}let e=this.network.siteOfAccount().get(t.accountNumber);this.network.connect(e?{siteId:e}:void 0)}probeOf(t){return this.vpcStatus.byAccount().get(t.accountNumber)??null}accountTitle(t,e){return t||(e?this.formatId(e):"Unknown account")}formatId(t){return t.replace(/(\d{4})(?=\d)/g,"$1 ")}static \u0275fac=function(e){return new(e||n)};static \u0275cmp=M({type:n,selectors:[["app-resources-page"]],viewQuery:function(e,o){e&1&&(Ve(o.panelTpl,Wn,5),Ve(o.sharePanelTpl,zn,5)),e&2&&Ue(2)},hostAttrs:[1,"flex","min-h-0","flex-1","flex-col"],decls:19,vars:9,consts:[["panelTpl",""],["sharePanelTpl",""],["accountGroupTpl",""],["ownerBoxTpl",""],["guestBoxTpl",""],["pageHeader","","title","Network",3,"showHeaderSearch"],["headerSubtitle","",1,"mt-1","flex","items-start","gap-1.5","text-sm","text-muted-foreground"],[1,"shrink-0","underline","underline-offset-2","hover:text-surface-foreground"],[1,"mt-0.5","shrink-0",3,"text"],["headerActions","","variant","secondary","size","lg"],["headerActions","","size","lg",3,"click"],["name","plus",1,"h-4","w-4",3,"strokeWidth"],[1,"mt-3"],["tone","danger"],[1,"grid","gap-4","grid-cols-[repeat(auto-fill,minmax(300px,1fr))]"],[1,"shrink-0","underline","underline-offset-2","hover:text-surface-foreground",3,"click"],["headerActions","","variant","secondary","size","lg",3,"click"],["name","share",1,"h-4","w-4",3,"strokeWidth"],["tone","info"],["sizeClass","h-52 w-full"],[1,"groups"],["noun","resource",3,"openChange","title","count","open"],[3,"openChange","connect","label","count","status","probe","open"],[1,"resgrid"],[3,"resource"],[3,"connect","label","count","status","pill","pillTone"],["mode","owner",3,"share","serveState","serveError"],["mode","owner",3,"stop","share","serveState","serveError"],["pillTone","ok",3,"connect","label","count","status","pill"],["mode","guest",3,"share","canTest"],["mode","guest",3,"test","share","canTest"],[3,"title","summary","open"],[3,"openChange","title","summary","open"],["groupActions","",3,"connect","status","connectedLabel","connectedTone"],[3,"label","detail","count","status","probe","control","open"],[1,"emptyrow"],[3,"openChange","label","detail","count","status","probe","control","open"],[4,"ngTemplateOutlet","ngTemplateOutletContext"],[1,"font-medium"],["title","Teammates\u2019 laptops","noun","share",3,"count","open"],["title","Teammates\u2019 laptops","noun","share",3,"openChange","count","open"],[1,"flex","flex-col","gap-3"],["label","My shares",3,"count"],["label","Shared with me",3,"count"],["type","button",1,"text-brand-text","underline","underline-offset-2",3,"click"],["title","You're connected, but nothing here is granted to you"],["title","No resources yet"],["title","Request access","contentKey","request",3,"closed"],[3,"sentAny","closed","groups","vpcLabels"],["title","Share a local port","contentKey","share",3,"closed"],[3,"closed"]],template:function(e,o){if(e&1){let s=x();i(0,"app-page")(1,"app-page-header",5)(2,"p",6)(3,"span"),c(4),r(),u(5,Kn,2,0,"button",7),v(6,"app-info-tooltip",8),r(),u(7,Jn,3,1,"app-button",9),i(8,"app-button",10),_("click",function(){return g(s),h(o.openRequest())}),v(9,"app-icon",11),c(10),r(),u(11,Zn,3,0,"div",12),r(),u(12,eo,2,1,"app-banner",13)(13,to,4,0,"div",14)(14,Fo,9,1),r(),V(15,Go,2,2,"ng-template",null,0,Y)(17,Lo,2,0,"ng-template",null,1,Y)}e&2&&(a(),d("showHeaderSearch",!1),a(3),k(" Databases, internal sites, hosts",o.shares.enabled?", and teammates\u2019 laptops":""," your VPN connection can reach. "),a(),m(o.bridge.isDesktop&&o.network.state()!=="hidden"?5:-1),a(),d("text",o.bridge.isDesktop?"Connect first with the Connect pill at the bottom of the sidebar. Access changes take up to 5 minutes to apply.":"Access changes take up to 5 minutes to apply."),a(),m(o.shares.enabled?7:-1),a(2),d("strokeWidth",2),a(),k(" Request access",o.availableCount()?" \xB7 "+o.availableCount()+" available":""," "),a(),m(o.bridge.isDesktop?-1:11),a(),m(o.store.error()?12:o.store.reachable()===null?13:14))},dependencies:[Xe,K,$,B,fe,dt,mt,ut,he,be,rt,ye,we,A,Se,ke,Te,Pe],styles:[".groups[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:16px}.resgrid[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px;grid-auto-rows:1fr}.emptyrow[_ngcontent-%COMP%]{margin:0;padding:0 4px;font-size:12px;color:var(--muted-foreground)}"]})};export{xt as a};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{Nb as t,Pb as s,Q as i,Rb as u,g as o}from"./chunk-P5WRM37W.js";import{e as a}from"./chunk-WFIHWVQO.js";function v(n){return{ensure(){},label:e=>n[e]??e}}function k(n={}){return{ensure(){},colorOf:(e,r)=>n[`${e}#${r}`]??null}}function R(){return{success(){},error(){},dismiss(){}}}function x(n={}){let e=t(n);return{provide:s,useValue:{queryParamMap:o(e),paramMap:o(t({})),snapshot:{queryParamMap:e,paramMap:t({})}}}}function b(){return{provide:u,useValue:{navigate:()=>a(null,null,function*(){return!0})}}}function j(n,e={}){let r={load(){}};for(let[c,f]of Object.entries(n))r[c]=i(f);return Object.assign(r,e)}export{v as a,k as b,R as c,x as d,b as e,j as f};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import{a as p}from"./chunk-DOLRLYW7.js";import{a as Y,b as G,c as m}from"./chunk-O4QSFUXB.js";import{a as P,c as B}from"./chunk-GKI3R2JB.js";import{B as V,E as l,H as a,Kb as H,Q as d,Rb as K,g as _,j as U,k as v,qb as E,r as $,rb as j}from"./chunk-P5WRM37W.js";import{a as h,b as W,e as I}from"./chunk-WFIHWVQO.js";var g=class r{static SAFETY_MS=3e4;cache=new Map;key(e,t){return`${e}#${t}`}get(e,t){let i=this.key(e,t),s=this.cache.get(i);return s?new Date(s.expiration).getTime()-Date.now()<=r.SAFETY_MS?(this.cache.delete(i),null):s:null}set(e,t,i){this.cache.set(this.key(e,t),i)}peekExpiration(e,t){return this.cache.get(this.key(e,t))?.expiration??null}live(e){let t=[];for(let[i,s]of this.cache){if(new Date(s.expiration).getTime()<=e)continue;let n=i.indexOf("#");t.push({accountNumber:i.slice(0,n),role:i.slice(n+1),expiration:s.expiration})}return t}clear(e,t){this.cache.delete(this.key(e,t))}clearAll(){this.cache.clear()}static \u0275fac=function(t){return new(t||r)};static \u0275prov=l({token:r,factory:r.\u0275fac,providedIn:"root"})};var u="autoLogin:",T=class r{api=a(p);cache=a(g);bridge=a(m);inFlight=new Set;enabled=d(this.loadLocal());hydrated=!1;compound(e,t){return`${e}#${t}`}isEnabled(e,t){return this.enabled().has(this.compound(e,t))}hydrate(){return this.hydrated?_(void 0):this.api.getPreferences().pipe(V(e=>{this.hydrated=!0;let t=new Set;for(let i of e)i.autoVend&&t.add(this.compound(i.accountNumber,i.role));this.mirrorLocal(t),this.enabled.set(t)}),v(()=>{}),$(()=>_(void 0)))}setEnabled(e,t,i){let s=this.compound(e,t),n=new Set(this.enabled());i?n.add(s):n.delete(s),this.enabled.set(n),i?localStorage.setItem(u+s,"1"):localStorage.removeItem(u+s),this.api.setAutoVend(e,t,i).subscribe({error:()=>{}}),i&&this.prewarmRole(e,t)}prewarm(e){for(let t of e)for(let i of t.roles)this.isEnabled(t.accountNumber,i.role)&&this.prewarmRole(t.accountNumber,i.role)}prewarmRole(e,t){if(this.bridge.isDesktop)return;let i=this.compound(e,t);this.cache.get(e,t)||this.inFlight.has(i)||(this.inFlight.add(i),this.api.vendCredentials(e,t).subscribe({next:s=>{this.cache.set(e,t,s),this.inFlight.delete(i)},error:()=>this.inFlight.delete(i)}))}loadLocal(){let e=new Set;for(let t=0;t<localStorage.length;t++){let i=localStorage.key(t);i?.startsWith(u)&&localStorage.getItem(i)==="1"&&e.add(i.slice(u.length))}return e}mirrorLocal(e){let t=[];for(let i=0;i<localStorage.length;i++){let s=localStorage.key(i);s?.startsWith(u)&&!e.has(s.slice(u.length))&&t.push(s)}for(let i of t)localStorage.removeItem(i);for(let i of e)localStorage.setItem(u+i,"1")}static \u0275fac=function(t){return new(t||r)};static \u0275prov=l({token:r,factory:r.\u0275fac,providedIn:"root"})};function me(r){return[`export AWS_ACCESS_KEY_ID=${r.accessKeyId}`,`export AWS_SECRET_ACCESS_KEY=${r.secretKey}`,`export AWS_SESSION_TOKEN=${r.sessionToken}`].join(`
|
|
2
|
+
`)}function fe(r,e){return[`[${e}]`,`aws_access_key_id = ${r.accessKeyId}`,`aws_secret_access_key = ${r.secretKey}`,`aws_session_token = ${r.sessionToken}`].join(`
|
|
3
|
+
`)}function ve(r){return[`$Env:AWS_ACCESS_KEY_ID = "${r.accessKeyId}"`,`$Env:AWS_SECRET_ACCESS_KEY = "${r.secretKey}"`,`$Env:AWS_SESSION_TOKEN = "${r.sessionToken}"`].join(`
|
|
4
|
+
`)}function z(r,e){return`${r}-${e}`.toLowerCase().replace(/[^a-z0-9_-]/g,"-")}var w="profile:",b=class r{api=a(p);profiles=d(te());key(e,t){return`${e}#${t}`}resolved(e,t){let i=z(e,t);return this.profiles().get(this.key(e,t))??{name:i,source:"default",suggested:i}}profileName(e,t){return this.resolved(e,t).name}hydrateFrom(e){let t=new Map;for(let i of e)for(let s of i.roles)s.profileName&&t.set(this.key(i.accountNumber,s.role),{name:s.profileName,source:s.profileSource??"default",suggested:s.suggestedProfileName??s.profileName});this.profiles.set(t),J(t)}mergeFrom(e){let t=new Map(this.profiles());for(let i of e)for(let s of i.roles)s.profileName&&t.set(this.key(i.accountNumber,s.role),{name:s.profileName,source:s.profileSource??"default",suggested:s.suggestedProfileName??s.profileName});this.profiles.set(t)}setProfileName(e,t,i){let s=(i??"").trim(),n=this.resolved(e,t);if(!s||s===n.suggested){this.resetProfileName(e,t);return}this.update(e,t,{name:s,source:"override",suggested:n.suggested}),this.api.setProfileName(e,t,s).subscribe({error:()=>this.update(e,t,n)})}resetProfileName(e,t){let i=this.resolved(e,t);this.update(e,t,{name:i.suggested,source:i.source==="override"?"role":i.source,suggested:i.suggested}),this.api.clearProfileName(e,t).subscribe({error:()=>{}})}update(e,t,i){let s=new Map(this.profiles());s.set(this.key(e,t),i),this.profiles.set(s),J(s)}static \u0275fac=function(t){return new(t||r)};static \u0275prov=l({token:r,factory:r.\u0275fac,providedIn:"root"})};function te(){let r=new Map;try{for(let e=0;e<localStorage.length;e++){let t=localStorage.key(e);if(!t?.startsWith(w))continue;let i=localStorage.getItem(t);if(!i)continue;let s=JSON.parse(i);s?.name&&r.set(t.slice(w.length),s)}}catch{}return r}var ie=200;function J(r){try{for(let e=localStorage.length-1;e>=0;e--){let t=localStorage.key(e);(t?.startsWith(w)||t?.startsWith("profileName:"))&&localStorage.removeItem(t)}if(r.size>ie)return;for(let[e,t]of r)localStorage.setItem(w+e,JSON.stringify(t))}catch{}}var R=class r{api=a(p);cache=a(g);autoLogin=a(T);bridge=a(m);toast=a(B);personalization=a(b);writeFailWarned=new Set;renewFailWarned=new Set;static RENEW_BEFORE_MS=5*6e4;static RETRY_MIN_MS=3e4;static RETRY_MAX_MS=5*6e4;static VEND_TIMEOUT_MS=6e4;timers=new Map;inFlight=new Set;failures=new Map;ended=new Set;accounts=[];constructor(){this.bridge.onRenewAll(e=>this.renewAllNow(e)),this.bridge.isDesktop&&(this.bridge.onWake(()=>this.recheck()),window.addEventListener("online",()=>this.recheck()),document.addEventListener("visibilitychange",()=>{document.hidden||this.recheck()}))}key(e,t){return`${e}#${t}`}start(e){if(this.bridge.isDesktop){this.accounts=e,this.ended.clear();for(let t of this.keptFresh())this.vendWriteSchedule(t.account,t.role)}}stopAll(){for(let e of this.timers.values())clearTimeout(e);this.timers.clear(),this.inFlight.clear(),this.failures.clear(),this.renewFailWarned.clear(),this.ended.clear(),this.accounts=[]}recheck(){if(this.bridge.isDesktop)for(let{account:e,role:t}of this.keptFresh()){let i=this.key(e,t);if(this.inFlight.has(i)||this.ended.has(i))continue;let s=this.cache.get(e,t);s&&this.msLeft(s)>r.RENEW_BEFORE_MS?this.schedule(e,t,s):(this.clearTimer(e,t),this.cache.clear(e,t),this.vendWriteSchedule(e,t))}}renewAllNow(e){if(this.bridge.isDesktop)for(let t of e??this.keptFresh())this.ended.delete(this.key(t.account,t.role)),this.clearTimer(t.account,t.role),this.cache.clear(t.account,t.role),this.vendWriteSchedule(t.account,t.role)}keptFresh(){return this.accounts.flatMap(e=>e.roles.filter(t=>this.autoLogin.isEnabled(e.accountNumber,t.role)).map(t=>({account:e.accountNumber,role:t.role})))}onToggle(e,t,i){this.bridge.isDesktop&&(i?(this.ended.delete(this.key(e,t)),this.vendWriteSchedule(e,t)):this.clearTimer(e,t))}clearTimer(e,t){let i=this.key(e,t),s=this.timers.get(i);s&&(clearTimeout(s),this.timers.delete(i))}vendWriteSchedule(e,t){let i=this.key(e,t);if(this.inFlight.has(i)||this.timers.has(i))return;let s=this.cache.get(e,t);if(s&&this.msLeft(s)>r.RENEW_BEFORE_MS){this.writeAndSchedule(e,t,s);return}this.inFlight.add(i),this.api.vendCredentials(e,t,{background:!0}).pipe(U(r.VEND_TIMEOUT_MS)).subscribe({next:n=>{this.inFlight.delete(i),this.failures.delete(i),this.renewFailWarned.delete(i),this.cache.set(e,t,n),this.writeAndSchedule(e,t,n)},error:n=>{this.inFlight.delete(i),this.retryLater(e,t,n)}})}retryLater(e,t,i){let s=this.key(e,t),n=i?.status;if(n===401||n===403){this.ended.add(s);return}if(!this.autoLogin.isEnabled(e,t))return;let c=(this.failures.get(s)??0)+1;this.failures.set(s,c);let k=Math.min(r.RETRY_MIN_MS*2**(c-1),r.RETRY_MAX_MS);this.clearTimer(e,t),this.timers.set(s,setTimeout(()=>{this.timers.delete(s),this.vendWriteSchedule(e,t)},k)),c>=2&&!this.renewFailWarned.has(s)&&(this.renewFailWarned.add(s),this.toast.error(`Couldn't renew ${t} credentials \u2014 retrying in the background.`,{label:"Open Get credentials",path:`/accounts?vend=${e}:${encodeURIComponent(t)}`}))}writeAndSchedule(e,t,i){this.bridge.writeCredentials({accountNumber:e,role:t,profile:this.profileName(e,t),creds:i}).then(()=>this.writeFailWarned.delete(this.key(e,t))).catch(s=>{let n=this.key(e,t);if(this.writeFailWarned.has(n))return;this.writeFailWarned.add(n);let c=Y(s),k=G(s);this.toast.error(c?`Profile "${this.profileName(e,t)}" is already used by another connected backend.`:k?`Profile "${this.profileName(e,t)}" already exists in your ~/.aws/credentials and was not written by this app \u2014 rename it here.`:`Couldn't keep ${t} fresh in ~/.aws/credentials.`,{label:c||k?"Rename in Get credentials":"Open Get credentials",path:`/accounts?vend=${e}:${encodeURIComponent(t)}`})}),this.schedule(e,t,i)}schedule(e,t,i){if(this.clearTimer(e,t),!this.autoLogin.isEnabled(e,t))return;let s=this.key(e,t),n=Math.max(this.msLeft(i)-r.RENEW_BEFORE_MS,1e3),c=setTimeout(()=>{this.timers.delete(s),this.cache.clear(e,t),this.vendWriteSchedule(e,t)},n);this.timers.set(s,c)}msLeft(e){return new Date(e.expiration).getTime()-Date.now()}profileName(e,t){return this.personalization.profileName(e,t)}static \u0275fac=function(t){return new(t||r)};static \u0275prov=l({token:r,factory:r.\u0275fac,providedIn:"root"})};var S=class extends Error{constructor(t,i){super(i);this.code=t}code},C=class r{configService=a(P);call(e,t){let{region:i}=this.configService.config;return fetch(`https://cognito-idp.${i}.amazonaws.com/`,{method:"POST",headers:{"Content-Type":"application/x-amz-json-1.1","X-Amz-Target":`AWSCognitoIdentityProviderService.${e}`},body:JSON.stringify(t),signal:AbortSignal.timeout(15e3)}).then(s=>I(this,null,function*(){let n=yield s.json().catch(()=>({}));if(!s.ok){let c=String(n.__type??"UnknownError").split("#").pop();throw new S(c,n.message??n.Message??c)}return n}))}initiate(e){return this.call("InitiateAuth",{AuthFlow:"USER_AUTH",ClientId:this.configService.config.spaClientId,AuthParameters:e})}startSignIn(e){return this.initiate({USERNAME:e})}signInWithPassword(e,t){return this.initiate({USERNAME:e,PREFERRED_CHALLENGE:"PASSWORD",PASSWORD:t})}requestEmailCode(e){return this.initiate({USERNAME:e,PREFERRED_CHALLENGE:"EMAIL_OTP"})}startPasskeySignIn(e){return this.initiate({USERNAME:e,PREFERRED_CHALLENGE:"WEB_AUTHN"})}respondToChallenge(e,t,i){return this.call("RespondToAuthChallenge",{ClientId:this.configService.config.spaClientId,ChallengeName:e,Session:t,ChallengeResponses:i})}forgotPassword(e){return this.call("ForgotPassword",{ClientId:this.configService.config.spaClientId,Username:e})}confirmForgotPassword(e,t,i){return this.call("ConfirmForgotPassword",{ClientId:this.configService.config.spaClientId,Username:e,ConfirmationCode:t,Password:i})}refresh(e,t){return this.call("InitiateAuth",{AuthFlow:"REFRESH_TOKEN_AUTH",ClientId:t??this.configService.config.spaClientId,AuthParameters:{REFRESH_TOKEN:e}}).then(i=>i.AuthenticationResult)}revoke(e,t){return this.call("RevokeToken",{ClientId:t??this.configService.config.spaClientId,Token:e})}associateSoftwareToken(e){return this.call("AssociateSoftwareToken",h(h({},e.accessToken?{AccessToken:e.accessToken}:{}),e.session?{Session:e.session}:{}))}verifySoftwareToken(e,t){return this.call("VerifySoftwareToken",W(h(h({},e.accessToken?{AccessToken:e.accessToken}:{}),e.session?{Session:e.session}:{}),{UserCode:t}))}setTotpEnabled(e,t){return this.call("SetUserMFAPreference",{AccessToken:e,SoftwareTokenMfaSettings:{Enabled:t,PreferredMfa:t}})}totpEnabled(e){return this.call("GetUser",{AccessToken:e}).then(t=>(t.UserMFASettingList??[]).includes("SOFTWARE_TOKEN_MFA"))}listPasskeys(e){return this.call("ListWebAuthnCredentials",{AccessToken:e,MaxResults:20}).then(t=>t.Credentials??[])}startPasskeyRegistration(e){return this.call("StartWebAuthnRegistration",{AccessToken:e})}completePasskeyRegistration(e,t){return this.call("CompleteWebAuthnRegistration",{AccessToken:e,Credential:t})}deletePasskey(e,t){return this.call("DeleteWebAuthnCredential",{AccessToken:e,CredentialId:t})}static \u0275fac=function(t){return new(t||r)};static \u0275prov=l({token:r,factory:r.\u0275fac,providedIn:"root"})};var F="signIn.lastEmail",se="signIn.method:",X=r=>se+r.trim().toLowerCase();function $e(){return localStorage.getItem(F)??""}function Ve(r){let e=localStorage.getItem(X(r));return e==="passkey"||e==="password"||e==="email-code"||e==="sso"?e:null}function q(r,e){localStorage.setItem(F,r.trim()),localStorage.setItem(X(r),e)}function je(){localStorage.removeItem(F)}var N="signIn.passkeysHere",M=r=>r.replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"");function D(){try{let r=JSON.parse(localStorage.getItem(N)??"[]");return Array.isArray(r)?r.filter(e=>typeof e=="string"):[]}catch{return[]}}function He(r){let e=new Set(D());e.add(M(r)),localStorage.setItem(N,JSON.stringify([...e]))}function Ke(r){let e=D().filter(t=>t!==M(r));localStorage.setItem(N,JSON.stringify(e))}function Ye(r){let e=new Set(D());return r.some(t=>e.has(M(t)))}var re="https://signin.aws.amazon.com/oauth?Action=logout",L="aws.consoleOpened",x=6e4,ne=12,o={id:"auth.idToken",access:"auth.accessToken",refresh:"auth.refreshToken",expiresAt:"auth.expiresAt",client:"auth.clientId",sessionStartedAt:"auth.sessionStartedAt"},y="auth.redirect",Q="auth.sessionEnded",A="auth.reauth",Z=class r{api=a(C);router=a(K);credsCache=a(g);autoVend=a(R);bridge=a(m);configService=a(P);claims=d(null);ready=d(!1);isAuthenticated=d(!1);sessionEndsAt=d(null);constructor(){this.bridge.isDesktop&&(j(()=>this.bridge.sessionEnds(this.sessionEndsAt())),this.bridge.onRenewSignIn(()=>{this.isAuthenticated()&&this.reauthenticate()}))}userEmail=E(()=>this.claims()?.email??"");userSub=E(()=>this.claims()?.sub??"");isFederatedSession=d(!1);isAdmin=E(()=>this.claims()?.["cognito:groups"]?.includes("admins")??!1);renewTimer=null;refreshing=null;readyResolvers=[];init(){let e=localStorage.getItem(o.id),t=Number(localStorage.getItem(o.expiresAt)),i=localStorage.getItem(o.refresh);if(document.addEventListener("visibilitychange",()=>{document.hidden||this.refreshIfStale()}),window.addEventListener("online",()=>{this.refreshIfStale()}),window.addEventListener("storage",s=>{s.key===o.refresh&&s.newValue===null&&this.isAuthenticated()&&(this.autoVend.stopAll(),this.credsCache.clearAll(),sessionStorage.setItem(Q,this.atTheWall()?"expired":"elsewhere"),this.clearTokens(),this.goToLogin()),s.key===o.sessionStartedAt&&s.newValue!==null&&this.syncSessionEnd()}),this.isFederatedSession.set(localStorage.getItem(o.client)!==null),this.syncSessionEnd(),e&&Date.now()<t-x/2){this.claims.set(O(e)),this.isAuthenticated.set(!0),this.scheduleRenew(t),this.markReady();return}if(!i){this.markReady();return}this.refreshNow().finally(()=>this.markReady())}whenReady(){return this.ready()?Promise.resolve():new Promise(e=>this.readyResolvers.push(e))}markReady(){this.ready.set(!0),this.readyResolvers.splice(0).forEach(e=>e())}idToken(){return localStorage.getItem(o.id)}idTokenExpiresAt(){return Number(localStorage.getItem(o.expiresAt))||0}freshAccessToken(){return I(this,null,function*(){let e=Number(localStorage.getItem(o.expiresAt));return Date.now()>e-x&&(yield this.refreshNow()),localStorage.getItem(o.access)})}completeSignIn(e,t,i,s={}){q(t,i);let n=localStorage.getItem(o.refresh),c=localStorage.getItem(o.client)??void 0;n&&n!==e.RefreshToken&&this.api.revoke(n,c).catch(()=>{}),sessionStorage.removeItem(A),s.federationClientId?localStorage.setItem(o.client,s.federationClientId):localStorage.removeItem(o.client),this.isFederatedSession.set(!!s.federationClientId),localStorage.setItem(o.sessionStartedAt,String(Date.now())),this.storeTokens(e)}reauthenticate(){let e=this.router.url;e&&e!=="/"&&!this.onSignInPage()&&sessionStorage.setItem(y,e),sessionStorage.setItem(A,"1"),this.router.navigateByUrl("/login")}reauthPending(){return sessionStorage.getItem(A)==="1"}atTheWall(){let e=this.sessionEndsAt();return e!==null&&Date.now()>=e-5*6e4}sessionHours(){return this.configService.config.sessionHours??ne}syncSessionEnd(){if(!localStorage.getItem(o.refresh)){this.sessionEndsAt.set(null);return}let e=Number(localStorage.getItem(o.sessionStartedAt)),t=localStorage.getItem(o.id),i=t?O(t).auth_time:void 0,s=e>0?e:i?i*1e3:null;this.sessionEndsAt.set(s?s+this.sessionHours()*36e5:null)}refreshNow(){if(this.refreshing)return this.refreshing;let e=localStorage.getItem(o.refresh);return e?(this.refreshing=this.api.refresh(e,localStorage.getItem(o.client)??void 0).then(t=>localStorage.getItem(o.refresh)!==e?!1:(this.storeTokens(t),!0)).catch(t=>{let i=t instanceof S&&(t.code==="NotAuthorizedException"||t.code==="UserNotFoundException"),s=localStorage.getItem(o.refresh)!==e;return i&&!s?this.sessionGone():i||this.scheduleRenewIn(3e4),!1}).finally(()=>{this.refreshing=null}),this.refreshing):(this.isAuthenticated.set(!1),this.goToLogin(),Promise.resolve(!1))}refreshIfStale(){if(!this.isAuthenticated())return Promise.resolve(!1);let e=Number(localStorage.getItem(o.expiresAt));return Date.now()>e-x?this.refreshNow():Promise.resolve(!0)}storeTokens(e){let t=Date.now()+e.ExpiresIn*1e3;if(localStorage.setItem(o.id,e.IdToken),localStorage.setItem(o.access,e.AccessToken),e.RefreshToken&&localStorage.setItem(o.refresh,e.RefreshToken),localStorage.setItem(o.expiresAt,String(t)),this.claims.set(O(e.IdToken)),this.isAuthenticated.set(!0),this.syncSessionEnd(),this.scheduleRenew(t),this.onSignInPage()&&!this.reauthPending()){let i=sessionStorage.getItem(y);sessionStorage.removeItem(y);let s=i&&i.startsWith("/")&&!i.startsWith("//")?i:"/";this.router.navigateByUrl(s).catch(()=>{window.location.assign(s)})}}scheduleRenew(e){this.scheduleRenewIn(Math.max(e-x-Date.now(),5e3))}scheduleRenewIn(e){this.renewTimer&&clearTimeout(this.renewTimer),this.renewTimer=setTimeout(()=>this.refreshNow(),e)}clearTokens(){this.renewTimer&&clearTimeout(this.renewTimer),this.renewTimer=null;for(let e of Object.values(o))localStorage.removeItem(e);this.claims.set(null),this.isAuthenticated.set(!1),this.isFederatedSession.set(!1),this.sessionEndsAt.set(null)}sessionGone(){this.syncSessionEnd(),sessionStorage.setItem(Q,this.atTheWall()?"expired":"invalid"),sessionStorage.removeItem(A),this.autoVend.stopAll(),this.credsCache.clearAll(),this.clearTokens(),this.toLogin().finally(()=>this.purgeDesktopCredentials())}toLogin(){let e=this.router.url;return e&&e!=="/"&&!this.onSignInPage()&&sessionStorage.setItem(y,e),this.goToLogin()}onSignInPage(){return this.router.url.startsWith("/login")||this.router.url.startsWith("/auth/callback")}goToLogin(){return this.onSignInPage()?Promise.resolve():this.router.navigateByUrl("/login").then(()=>{},()=>{this.router.navigated&&!this.isAuthenticated()&&window.location.assign("/login")})}logout(){this.autoVend.stopAll(),this.credsCache.clearAll();let e=localStorage.getItem(o.refresh);if(e&&this.api.revoke(e,localStorage.getItem(o.client)??void 0).catch(()=>{}),this.purgeDesktopCredentials(),this.clearTokens(),sessionStorage.removeItem(y),sessionStorage.removeItem(A),localStorage.getItem(L)===null){this.goToLogin();return}let t=window.open(re,"_blank","popup,width=480,height=360");if(!t){this.bridge.isDesktop&&localStorage.removeItem(L),this.goToLogin();return}localStorage.removeItem(L),setTimeout(()=>{t.close(),this.goToLogin()},2e3)}purgeDesktopCredentials(){this.bridge.isDesktop&&this.bridge.logout().catch(()=>{})}static \u0275fac=function(t){return new(t||r)};static \u0275prov=l({token:r,factory:r.\u0275fac,providedIn:"root"})};function O(r){try{let e=r.split(".")[1].replace(/-/g,"+").replace(/_/g,"/");return JSON.parse(atob(e))}catch{return{}}}var ee=class r{http=a(H);discover(){return this.http.get("/api/plugins")}expiryFeed(){return this.http.get("/api/plugins/expiry")}markExpirySeen(){return this.http.post("/api/plugins/expiry/seen",{}).pipe(v(e=>e.cleared))}catalog(){return this.http.get("/api/admin/plugins")}grants(e,t){return this.http.get(this.grantsUrl(e,t))}groupAssignments(e){return this.http.get(`/api/admin/groups/${encodeURIComponent(e)}/plugin-grants`).pipe(v(t=>t.assignments))}userAccess(e){return this.http.get(`/api/admin/users/${encodeURIComponent(e)}/plugin-grants`)}assign(e,t,i,s,n){return this.http.put(this.grantsUrl(e,t),h({principal:i,permission:s},n===void 0?{}:{durationHours:n}))}revoke(e,t,i,s){return this.http.delete(this.grantsUrl(e,t),{body:{principal:i,permission:s}})}grantsUrl(e,t){return`/api/admin/plugins/${encodeURIComponent(e)}/accounts/${encodeURIComponent(t)}/grants`}static \u0275fac=function(t){return new(t||r)};static \u0275prov=l({token:r,factory:r.\u0275fac,providedIn:"root"})};export{S as a,C as b,$e as c,Ve as d,je as e,He as f,Ke as g,Ye as h,g as i,T as j,me as k,fe as l,ve as m,b as n,R as o,L as p,y as q,Q as r,A as s,Z as t,O as u,ee as v};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{b as V}from"./chunk-2MOGDYK4.js";import{a as B}from"./chunk-D7TR2ORJ.js";import{Aa as d,Ba as T,E as v,H as l,Ia as _,J as m,K as h,Ka as c,Ma as I,Na as L,Oa as y,P,Q as r,Qa as N,Ra as A,Ta as j,Ua as K,Wa as b,X as S,Xa as M,Y as z,Z as u,fa as E,pb as C,qb as W,ra as O,rb as p,sa as k,sb as x,ta as D,tb as g,ub as H,ya as R,za as a}from"./chunk-P5WRM37W.js";var f=class n{tpl=r(null);content=this.tpl.asReadonly();widthSig=r(0);width=this.widthSig.asReadonly();open(e){this.tpl.set(e)}close(e){this.tpl()===e&&this.tpl.set(null)}setWidth(e){this.widthSig.set(e)}static \u0275fac=function(t){return new(t||n)};static \u0275prov=v({token:n,factory:n.\u0275fac,providedIn:"root"})};function ee(n,e,t){let i=l(f);p(()=>{let o=e();o&&(n()?i.open(o):i.close(o))}),p(()=>{let o=i.content(),s=C(e);s&&o!==null&&o!==s&&C(n)&&t()}),l(P).onDestroy(()=>{let o=e();o&&i.close(o)})}var w=class n{static DEFAULT=560;minWidthSig=r(n.DEFAULT);minWidth=this.minWidthSig.asReadonly();report(e){this.minWidthSig.set(Math.max(e,n.DEFAULT))}reset(){this.minWidthSig.set(n.DEFAULT)}static \u0275fac=function(t){return new(t||n)};static \u0275prov=v({token:n,factory:n.\u0275fac,providedIn:"root"})};var Y=["bodyEl"],q=[[["","panel-header-actions",""]],"*",[["","panel-footer",""]]],G=["[panel-header-actions]","*","[panel-footer]"];function Q(n,e){if(n&1){let t=_();a(0,"button",8),c("click",function(){m(t);let o=I();return h(o.back.emit())}),b(1),d(),T(2,"app-icon",9)}n&2&&(u(),M(e),u(),R("strokeWidth",2))}var X=class n{title=g.required();size=g("md");contentKey=g(null);parentLabel=g(null);closed=x();back=x();bodyEl=H("bodyEl");lastKey=null;panelService=l(f);contentWidth=l(w);static MAX_WIDTH=1100;static BESIDE_RAIL=104;static STORAGE_KEY="ui.panelWidth";customWidth=r(n.readStoredWidth());resizing=r(!1);opened=r(!1);static readStoredWidth(){try{let e=Number(localStorage.getItem(n.STORAGE_KEY));return e>0?e:null}catch{return null}}baseWidth=W(()=>this.size()==="lg"?480:400);windowWidth=r(window.innerWidth);effectiveWidth=W(()=>{let e=this.customWidth()??this.baseWidth(),t=this.windowWidth()-n.BESIDE_RAIL-this.contentWidth.minWidth();return Math.max(this.baseWidth(),Math.min(e,t))});dragStartX=0;dragStartWidth=0;constructor(){p(()=>{let e=this.contentKey(),t=this.bodyEl()?.nativeElement;if(!t||e===this.lastKey)return;let i=this.lastKey===null;this.lastKey=e,!i&&(t.style.animation="none",t.offsetHeight,t.style.animation="")}),p(()=>{this.resizing()||this.panelService.setWidth(this.effectiveWidth())})}onWindowResize(){this.windowWidth.set(window.innerWidth)}ngOnDestroy(){this.panelService.setWidth(0),this.stopResizing()}onResizeStart(e){e.preventDefault(),this.opened.set(!0),this.resizing.set(!0),this.dragStartX=e.clientX,this.dragStartWidth=this.effectiveWidth(),document.body.style.userSelect="none",document.body.style.cursor="col-resize",window.addEventListener("mousemove",this.onResizeMove),window.addEventListener("mouseup",this.onResizeEnd)}onResizeMove=e=>{let t=this.size()==="lg"?480:400,i=this.dragStartX-e.clientX,o=Math.min(n.MAX_WIDTH,window.innerWidth-n.BESIDE_RAIL-this.contentWidth.minWidth()),s=Math.min(o,Math.max(t,this.dragStartWidth+i));this.customWidth.set(s)};onResizeEnd=()=>{this.stopResizing()};stopResizing(){if(this.resizing()&&this.customWidth()!==null)try{localStorage.setItem(n.STORAGE_KEY,String(this.customWidth()))}catch{}this.resizing.set(!1),document.body.style.userSelect="",document.body.style.cursor="",window.removeEventListener("mousemove",this.onResizeMove),window.removeEventListener("mouseup",this.onResizeEnd)}onEscape(){document.querySelector('[role="dialog"][aria-modal="true"]')||this.closed.emit()}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=E({type:n,selectors:[["app-panel"]],viewQuery:function(t,i){t&1&&N(i.bodyEl,Y,5),t&2&&A()},hostBindings:function(t,i){t&1&&c("resize",function(){return i.onWindowResize()},S)("keydown.escape",function(){return i.onEscape()},z)},inputs:{title:[1,"title"],size:[1,"size"],contentKey:[1,"contentKey"],parentLabel:[1,"parentLabel"]},outputs:{closed:"closed",back:"back"},ngContentSelectors:G,decls:15,vars:11,consts:[["bodyEl",""],["role","complementary",3,"animationend"],[1,"resize-handle",3,"mousedown"],[1,"header-left"],[1,"ui-subtitle"],["variant","ghost","size","icon","ariaLabel","Close panel",3,"click"],[1,"body"],[1,"footer"],["type","button",1,"crumb-parent",3,"click"],["name","chevron-right",1,"h-3.5","w-3.5","shrink-0",2,"color","var(--placeholder)",3,"strokeWidth"]],template:function(t,i){if(t&1){let o=_();L(q),a(0,"aside",1),c("animationend",function(){return m(o),h(i.opened.set(!0))}),a(1,"div",2),c("mousedown",function(U){return m(o),h(i.onResizeStart(U))}),d(),a(2,"header")(3,"div",3),k(4,Q,3,2),a(5,"h2",4),b(6),d()(),y(7),a(8,"app-button",5),c("click",function(){return m(o),h(i.closed.emit())}),b(9," \u2715 "),d()(),a(10,"div",6,0),y(12,1),d(),a(13,"div",7),y(14,2),d()()}if(t&2){let o;j("width",i.effectiveWidth(),"px"),K("lg",i.size()==="lg")("resizing",i.resizing())("opened",i.opened()),O("aria-label",i.title()),u(4),D((o=i.parentLabel())?4:-1,o),u(2),M(i.title())}},dependencies:[B,V],styles:["[_nghost-%COMP%]{display:contents}aside[_ngcontent-%COMP%]{width:400px;height:calc(100vh - 24px);flex-shrink:0;display:flex;flex-direction:column;border-radius:calc(var(--radius) * 2);overflow:hidden;-webkit-backdrop-filter:blur(42px) saturate(1.5);backdrop-filter:blur(42px) saturate(1.5);background:var(--glass-panel-bg);box-shadow:var(--shadow-card);position:relative;z-index:1}aside[_ngcontent-%COMP%]:not(.opened){animation:_ngcontent-%COMP%_panel-in .24s var(--ease-emphasized)}aside.resizing[_ngcontent-%COMP%]{animation:none}.resize-handle[_ngcontent-%COMP%]{position:absolute;left:0;top:0;bottom:0;width:6px;cursor:col-resize;z-index:2;touch-action:none}.resize-handle[_ngcontent-%COMP%]:hover, aside.resizing[_ngcontent-%COMP%] .resize-handle[_ngcontent-%COMP%]{background:color-mix(in srgb,var(--foreground) 12%,transparent)}@keyframes _ngcontent-%COMP%_panel-in{0%{width:0;opacity:0}}header[_ngcontent-%COMP%], .body[_ngcontent-%COMP%]{min-width:400px}aside.lg[_ngcontent-%COMP%] header[_ngcontent-%COMP%], aside.lg[_ngcontent-%COMP%] .body[_ngcontent-%COMP%]{min-width:480px}@media(prefers-reduced-motion:reduce){aside[_ngcontent-%COMP%], .body[_ngcontent-%COMP%]{animation:none}}header[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:16px 24px;border-bottom:1px solid var(--border);flex-shrink:0}.header-left[_ngcontent-%COMP%]{display:flex;align-items:center;gap:6px;min-width:0;flex:1}.header-left[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.crumb-parent[_ngcontent-%COMP%]{flex:0 2 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.9375rem;font-weight:500;color:var(--placeholder);transition:color .15s}.crumb-parent[_ngcontent-%COMP%]:hover{color:var(--surface-foreground)}.body[_ngcontent-%COMP%]{flex:1;min-height:0;overflow-y:auto;scrollbar-gutter:stable;padding:20px 14px 20px 24px;animation:_ngcontent-%COMP%_body-in .18s var(--ease-emphasized)}@keyframes _ngcontent-%COMP%_body-in{0%{opacity:0;transform:translateY(8px)}}.footer[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:flex-end;gap:8px;padding:12px 24px;border-top:1px solid var(--border);flex-shrink:0}.footer[_ngcontent-%COMP%]:empty{display:none}"]})};export{f as a,ee as b,w as c,X as d};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{Ca as a,Da as i,Na as l,Oa as d,Wa as n,Xa as m,Z as s,_a as p,fa as u,tb as o}from"./chunk-P5WRM37W.js";var g=["*"],c=class r{shown=o.required();total=o.required();noun=o.required();static \u0275fac=function(e){return new(e||r)};static \u0275cmp=u({type:r,selectors:[["app-result-count"]],hostAttrs:[1,"block"],inputs:{shown:[1,"shown"],total:[1,"total"],noun:[1,"noun"]},ngContentSelectors:g,decls:6,vars:4,consts:[[1,"mt-3","text-xs","text-muted-foreground"],[1,"font-semibold","text-surface-foreground"]],template:function(e,t){e&1&&(l(),a(0,"p",0),n(1," Showing "),a(2,"span",1),n(3),i(),n(4),d(5),i()),e&2&&(s(3),m(t.shown()),s(),p(" of ",t.total()," ",t.noun(),"",t.total()===1?"":"s"," "))},encapsulation:2})};export{c as a};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{b as p}from"./chunk-GKI3R2JB.js";import{E as u,H as d,Kb as c,k as s}from"./chunk-P5WRM37W.js";import{a as i,b as a}from"./chunk-WFIHWVQO.js";var l=class o{http=d(c);getNetwork(){return this.http.get("/api/admin/network")}getSetup(){return this.http.get("/api/admin/setup")}testSession(e,t,r){return this.http.post(`/api/admin/accounts/${e}/roles/${encodeURIComponent(t)}/test-session`,{durationSeconds:r})}revokeAllAccess(e){return this.http.post(`/api/admin/users/${encodeURIComponent(e)}/revoke-all`,{})}syncNetwork(){return this.http.post("/api/admin/network/sync",{})}listAccounts(){return this.http.get("/api/admin/accounts").pipe(s(e=>e.accounts))}createAccount(e,t){return this.http.post("/api/admin/accounts",i({accountNumber:e},t),{observe:"response"}).pipe(s(r=>a(i({},r.body.account),{existing:r.status===200})))}getDashboardLayout(){return this.http.get("/api/admin/dashboard-layout").pipe(s(e=>e.mode))}setDashboardLayout(e){return this.http.put("/api/admin/dashboard-layout",{mode:e}).pipe(s(()=>{}))}reorderAccounts(e){return this.http.put("/api/admin/accounts/order",{accounts:e}).pipe(s(t=>t.accounts))}updateAccount(e,t){return this.http.patch(`/api/admin/accounts/${e}`,t).pipe(s(r=>r.account))}deleteAccount(e){return this.http.delete(`/api/admin/accounts/${e}`).pipe(s(()=>{}))}createRole(e,t,r){return this.http.post(`/api/admin/accounts/${e}/roles`,i({roleName:t},r),{observe:"response"}).pipe(s(n=>a(i({},n.body.role),{existing:n.status===200})))}updateRole(e,t,r){return this.http.patch(`/api/admin/accounts/${e}/roles/${encodeURIComponent(t)}`,r).pipe(s(n=>n.role))}deleteRole(e,t){return this.http.delete(`/api/admin/accounts/${e}/roles/${encodeURIComponent(t)}`).pipe(s(()=>{}))}listUsers(){return this.http.get("/api/admin/users").pipe(s(e=>e.users))}getUser(e){return this.http.get(`/api/admin/users/${encodeURIComponent(e)}`).pipe(s(t=>t.user))}listUsersPage(e){return this.http.get("/api/admin/users",{params:p(e)})}getAccount(e){return this.http.get(`/api/admin/accounts/${e}`).pipe(s(t=>t.account))}listAccountsPage(e){return this.http.get("/api/admin/accounts",{params:p(e)})}createUser(e,t,r=!0){return this.http.post("/api/admin/users",{email:e,admin:t,sendEmail:r})}mintSignupLink(e){return this.http.post(`/api/admin/users/${encodeURIComponent(e)}/signup-link`,{}).pipe(s(t=>t.signupLink))}assignRoles(e,t,r){return this.http.post("/api/admin/grants/bulk",{userIds:e,roles:t,durationHours:r}).pipe(s(n=>n.results))}revokeRoles(e,t){return this.http.post("/api/admin/grants/bulk-revoke",{userIds:e,roles:t}).pipe(s(r=>r.results))}saveBranding(e){return this.http.put("/api/admin/branding",e).pipe(s(()=>{}))}deleteUsers(e){return this.http.post("/api/admin/users/bulk-delete",{userIds:e}).pipe(s(t=>t.results))}createUsers(e,t,r=!0){return this.http.post("/api/admin/users/bulk",{emails:e,admin:t,sendEmail:r}).pipe(s(n=>n.results))}updateUser(e,t){return this.http.patch(`/api/admin/users/${encodeURIComponent(e)}`,t).pipe(s(()=>{}))}resendInvite(e){return this.http.post(`/api/admin/users/${encodeURIComponent(e)}/resend-invite`,{}).pipe(s(()=>{}))}resetMfa(e){return this.http.post(`/api/admin/users/${encodeURIComponent(e)}/reset-mfa`,{}).pipe(s(()=>{}))}deleteUser(e){return this.http.delete(`/api/admin/users/${encodeURIComponent(e)}`).pipe(s(()=>{}))}listGrantees(e,t){return this.http.get(`/api/admin/accounts/${e}/roles/${encodeURIComponent(t)}/grants`).pipe(s(r=>r.grantees))}assignGrant(e,t,r){return this.http.put(`/api/admin/accounts/${e}/roles/${encodeURIComponent(t)}/grants/${encodeURIComponent(r)}`,{}).pipe(s(()=>{}))}revokeGrant(e,t,r){return this.http.delete(`/api/admin/accounts/${e}/roles/${encodeURIComponent(t)}/grants/${encodeURIComponent(r)}`).pipe(s(()=>{}))}listUserGrants(e){return this.http.get(`/api/admin/users/${encodeURIComponent(e)}/grants`).pipe(s(t=>t.grants))}listUserResourceGrants(e){return this.http.get(`/api/admin/users/${encodeURIComponent(e)}/resource-grants`).pipe(s(t=>t.grants))}listServiceUsers(){return this.http.get("/api/admin/service-users").pipe(s(e=>e.serviceUsers))}createServiceUser(e){return this.http.post("/api/admin/service-users",{name:e})}rotateServiceUser(e){return this.http.post(`/api/admin/service-users/${encodeURIComponent(e)}/rotate`,{})}removePreviousSecret(e){return this.http.delete(`/api/admin/service-users/${encodeURIComponent(e)}/previous`).pipe(s(()=>{}))}deleteServiceUser(e){return this.http.delete(`/api/admin/service-users/${encodeURIComponent(e)}`).pipe(s(()=>{}))}static \u0275fac=function(t){return new(t||o)};static \u0275prov=u({token:o,factory:o.\u0275fac,providedIn:"root"})};export{l as a};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as V}from"./chunk-DCOFBAKJ.js";import{e as A}from"./chunk-ZDCURXPS.js";import{a as L}from"./chunk-RROPCBUH.js";import{a as M}from"./chunk-PMMBJK7Q.js";import{a as P}from"./chunk-J3SSPCFV.js";import{b as D}from"./chunk-2MOGDYK4.js";import{a as N}from"./chunk-D7TR2ORJ.js";import{Aa as i,Ba as _,Ia as b,J as x,K as C,Ka as g,Ma as r,Q as S,Ta as k,Ua as I,W as T,Wa as d,Xa as f,Ya as h,Z as n,fa as E,qb as R,ra as y,sa as s,sb as v,ta as m,tb as c,ya as u,za as a}from"./chunk-P5WRM37W.js";function W(t,o){if(t&1&&(a(0,"app-chip",8),d(1),i()),t&2){let e=r(3);n(),f(e.typeLabel())}}function j(t,o){if(t&1&&(a(0,"app-chip",9),d(1),i()),t&2){let e=r(3);y("title",e.grantTitle()||null),n(),f(e.grant())}}function $(t,o){if(t&1&&(a(0,"app-chip",10),_(1,"app-icon",11),d(2),i()),t&2){let e=r(3);n(),u("strokeWidth",2),n(),h("",e.creds()," ")}}function O(t,o){if(t&1&&(a(0,"div",7),s(1,W,2,1,"app-chip",8),s(2,j,2,2,"app-chip",9),s(3,$,3,2,"app-chip",10),i()),t&2){let e=r(2);n(),m(e.typeLabel()?1:-1),n(),m(e.grant()?2:-1),n(),m(e.creds()?3:-1)}}function z(t,o){if(t&1){let e=b();a(0,"div",1)(1,"span",2),_(2,"app-icon",3),i(),a(3,"button",4),g("click",function(){x(e);let l=r();return C(l.more.emit())}),_(4,"app-icon",5),i()(),a(5,"div",6),d(6),i(),s(7,O,4,3,"div",7)}if(t&2){let e=r();n(2),u("name",e.resolvedIcon()),n(2),u("strokeWidth",2),n(2),h(" ",e.account()," "),n(),m(e.typeLabel()||e.grant()||e.creds()?7:-1)}}function K(t,o){if(t&1&&(a(0,"app-chip",8),d(1),i()),t&2){let e=r(3);n(),f(e.typeLabel())}}function F(t,o){if(t&1&&(a(0,"app-chip",9),d(1),i()),t&2){let e=r(3);y("title",e.grantTitle()||null),n(),f(e.grant())}}function G(t,o){if(t&1&&(a(0,"app-chip",10),_(1,"app-icon",11),d(2),i()),t&2){let e=r(3);n(),u("strokeWidth",2),n(),h("",e.creds()," ")}}function Y(t,o){if(t&1&&(a(0,"div",16),s(1,K,2,1,"app-chip",8),s(2,F,2,2,"app-chip",9),s(3,G,3,2,"app-chip",10),i()),t&2){let e=r(2);n(),m(e.typeLabel()?1:-1),n(),m(e.grant()?2:-1),n(),m(e.creds()?3:-1)}}function q(t,o){if(t&1&&(a(0,"div",0)(1,"span",12),_(2,"app-icon",13),i(),a(3,"div",14)(4,"div",15),d(5),i(),s(6,Y,4,3,"div",16),i()()),t&2){let e=r();n(2),u("name",e.resolvedIcon()),n(3),h(" ",e.account()," "),n(),m(e.typeLabel()||e.grant()||e.creds()?6:-1)}}function H(t,o){t&1&&_(0,"app-copy-button",23),t&2&&u("text",o)}function J(t,o){if(t&1&&(a(0,"p",24),d(1),i()),t&2){let e=r(2);n(),f(e.description())}}function Q(t,o){t&1&&(a(0,"a",27),_(1,"app-icon",28),d(2," Open in browser "),i()),t&2&&u("href",o,T)}function X(t,o){if(t&1){let e=b();a(0,"div",17)(1,"div",18)(2,"span",19),d(3,"Account"),i(),a(4,"span",20),d(5),i(),a(6,"span",19),d(7,"ID"),i(),a(8,"span",21)(9,"span",22),d(10),i(),s(11,H,1,1,"app-copy-button",23),i()(),s(12,J,2,1,"p",24),i(),a(13,"div",25)(14,"button",26),g("click",function(){x(e);let l=r();return C(l.connectionDetails.emit())}),d(15," Connection details "),i(),s(16,Q,3,1,"a",27),i()}if(t&2){let e,p,l=r();n(),k("grid-template-columns","76px minmax(0,1fr)"),n(4),f(l.accountName()),n(5),f(l.accountId()),n(),m((e=l.rawAccountId())?11:-1,e),n(),m(l.description()?12:-1),n(2),I("border-r",l.connectionUrl())("border-border",l.connectionUrl()),n(2),m((p=l.connectionUrl())?16:-1,p)}}function Z(t,o){if(t&1&&(a(0,"span",19),d(1,"Role"),i(),a(2,"span",34),d(3),i()),t&2){let e=r(2);n(3),f(e.role())}}function ee(t,o){if(t&1){let e=b();a(0,"input",36),g("keydown.enter",function(l){x(e);let w=r(3);return C(w.commitProfile(l.target.value))})("keydown.escape",function(){x(e);let l=r(3);return C(l.editingProfile.set(!1))})("blur",function(l){x(e);let w=r(3);return C(w.editingProfile()&&w.commitProfile(l.target.value))}),i()}if(t&2){let e=r(3);u("value",e.profile()),y("aria-label","Rename the CLI profile for "+e.role())}}function te(t,o){if(t&1){let e=b();a(0,"button",42),g("click",function(){x(e);let l=r(5);return C(l.profileReset.emit())}),d(1," \u21BA "),i()}if(t&2){let e=r(5);u("title","Reset to the suggested name: "+e.profileSuggested()),y("aria-label","Reset the CLI profile for "+e.role()+" to "+e.profileSuggested())}}function ne(t,o){if(t&1){let e=b();a(0,"app-button",39),g("click",function(){x(e);let l=r(4);return C(l.editingProfile.set(!0))}),_(1,"app-icon",40),i(),s(2,te,2,2,"button",41)}if(t&2){let e=r(4);u("ariaLabel","Rename the CLI profile for "+e.role()),n(),u("strokeWidth",2),n(),m(e.profileSource()==="override"?2:-1)}}function ie(t,o){if(t&1&&(a(0,"span",37),d(1),i(),s(2,ne,3,3),_(3,"app-copy-button",38)),t&2){let e=r(3);u("title",e.profileTitle()),n(),f(e.profile()),n(),m(e.profileEditable()?2:-1),n(),u("text",e.profile())}}function oe(t,o){if(t&1&&(a(0,"span",19),d(1,"Profile"),i(),a(2,"span",21),s(3,ee,1,2,"input",35)(4,ie,4,4),i()),t&2){let e=r(2);n(3),m(e.editingProfile()?3:4)}}function ae(t,o){t&1&&_(0,"app-copy-button",23),t&2&&u("text",o)}function re(t,o){if(t&1){let e=b();a(0,"div",30)(1,"span",43),_(2,"app-icon",44),d(3," Auto-login on sign-in "),i(),a(4,"app-toggle",45),g("checkedChange",function(){x(e);let l=r(2);return C(l.autoLoginToggle.emit())}),i()()}if(t&2){let e=r(2);n(4),u("checked",e.autoLogin())("ariaLabel","Auto-login on sign-in for "+e.role())("title",e.autoLogin()?"On \u2014 credentials are vended for this role and written to ~/.aws/credentials when you open the app. Click to turn off.":"Off \u2014 click to vend and write this role's credentials automatically when you open the app.")}}function le(t,o){t&1&&_(0,"app-spinner",32)}function de(t,o){t&1&&_(0,"app-icon",28)}function ce(t,o){if(t&1){let e=b();a(0,"div",29),s(1,Z,4,1),s(2,oe,5,1),a(3,"span",19),d(4,"Account ID"),i(),a(5,"span",21)(6,"span",22),d(7),i(),s(8,ae,1,1,"app-copy-button",23),i()(),s(9,re,5,3,"div",30),a(10,"div",25)(11,"button",31),g("click",function(){x(e);let l=r();return C(l.console.emit())}),s(12,le,1,0,"app-spinner",32)(13,de,1,0,"app-icon",28),d(14," Console "),i(),a(15,"button",33),g("click",function(){x(e);let l=r();return C(l.getCredentials.emit())}),d(16," Get credentials "),i()()}if(t&2){let e,p=r();k("grid-template-columns","76px minmax(0,1fr)"),n(),m(p.showRoleRow()?1:-1),n(),m(p.profile()?2:-1),n(5),f(p.id()),n(),m((e=p.rawId())?8:-1,e),n(),m(p.autoLogin()!==null?9:-1),n(2),u("disabled",p.consoleBusy()),y("aria-busy",p.consoleBusy()||null),n(),m(p.consoleBusy()?12:13)}}var B={prod:"env-prod",staging:"env-staging",dev:"env-dev",sandbox:"env-sandbox"},U=class t{kind=c("role");env=c();icon=c();account=c("");role=c("");showRoleRow=c(!0);profileSource=c("default");profileSuggested=c("");profileReset=v();profileTitle=R(()=>{let o="CLI profile name \u2014 exactly what is written to ~/.aws/credentials";switch(this.profileSource()){case"override":return`${o}. Your own name (suggested: ${this.profileSuggested()})`;case"account":return`${o}. Set by an admin for this account`;case"role":return`${o}. Set by an admin for this role`;default:return`${o}. Default: <account>-<role>`}});id=c("");grant=c("");grantTitle=c("");creds=c("");typeLabel=c("");variant=c("stacked");rawId=c();autoLogin=c(null);consoleBusy=c(!1);profileEditable=c(!1);profile=c("");accountName=c("");accountId=c("");rawAccountId=c();description=c("");connectionUrl=c();getCredentials=v();console=v();autoLoginToggle=v();more=v();profileRename=v();connectionDetails=v();editingProfile=S(!1);headerVariant=R(()=>this.kind()==="resource"?"inline":this.variant());resolvedIcon=R(()=>{let o=this.icon();if(o)return o;let e=this.env();return e?B[e]:B.prod});commitProfile(o){if(!this.editingProfile())return;this.editingProfile.set(!1);let e=o.trim();e!==this.profile()&&this.profileRename.emit(e)}static \u0275fac=function(e){return new(e||t)};static \u0275cmp=E({type:t,selectors:[["app-role-card"]],hostAttrs:[1,"flex","flex-col","overflow-hidden","rounded-2xl","border","border-border/70","bg-card-bg"],inputs:{kind:[1,"kind"],env:[1,"env"],icon:[1,"icon"],account:[1,"account"],role:[1,"role"],showRoleRow:[1,"showRoleRow"],profileSource:[1,"profileSource"],profileSuggested:[1,"profileSuggested"],id:[1,"id"],grant:[1,"grant"],grantTitle:[1,"grantTitle"],creds:[1,"creds"],typeLabel:[1,"typeLabel"],variant:[1,"variant"],rawId:[1,"rawId"],autoLogin:[1,"autoLogin"],consoleBusy:[1,"consoleBusy"],profileEditable:[1,"profileEditable"],profile:[1,"profile"],accountName:[1,"accountName"],accountId:[1,"accountId"],rawAccountId:[1,"rawAccountId"],description:[1,"description"],connectionUrl:[1,"connectionUrl"]},outputs:{profileReset:"profileReset",getCredentials:"getCredentials",console:"console",autoLoginToggle:"autoLoginToggle",more:"more",profileRename:"profileRename",connectionDetails:"connectionDetails"},decls:4,vars:2,consts:[[1,"flex","items-center","gap-4","px-5","pt-4"],[1,"flex","items-start","justify-between","px-5","pt-4"],[1,"grid","h-8","w-8","shrink-0","place-items-center","rounded-lg","bg-muted","text-muted-foreground"],[1,"h-[18px]","w-[18px]",3,"name"],["type","button","aria-label","More options",1,"grid","h-7","w-7","place-items-center","rounded-md","text-muted-foreground","transition-colors","hover:bg-muted","hover:text-surface-foreground",3,"click"],["name","ellipsis",1,"h-4","w-4",3,"strokeWidth"],[1,"mt-1.5","min-w-0","truncate","px-5","text-base","font-semibold","tracking-[-0.01em]","text-surface-foreground"],[1,"mt-1.5","flex","items-center","gap-2","px-5"],["tone","neutral"],["tone","warning"],["tone","success",1,"tabular-nums"],["name","clock",1,"h-3","w-3",3,"strokeWidth"],[1,"grid","h-11","w-11","shrink-0","place-items-center","rounded-lg","bg-muted","text-muted-foreground"],[1,"h-5","w-5",3,"name"],[1,"min-w-0","flex-1"],[1,"truncate","text-base","font-semibold","tracking-[-0.01em]","text-surface-foreground"],[1,"mt-px","flex","items-center","gap-2"],[1,"px-5","py-4"],[1,"grid","items-baseline","gap-y-[7px]"],[1,"text-[12.5px]","text-text-secondary"],[1,"truncate","text-[13.5px]","font-medium","text-surface-foreground"],[1,"flex","min-w-0","items-center","gap-1"],[1,"truncate","font-mono","text-[13.5px]","tabular-nums","text-muted-foreground"],["variant","icon","label","Copy account ID",3,"text"],[1,"mt-2.5","whitespace-pre-line","text-xs","text-muted-foreground"],[1,"flex","border-t","border-border"],["type","button",1,"inline-flex","flex-1","items-center","justify-center","gap-1.5","px-2.5","py-3","text-[12.5px]","text-muted-foreground","transition-colors","hover:bg-muted",3,"click"],["target","_blank","rel","noopener",1,"inline-flex","flex-1","items-center","justify-center","gap-1.5","px-2.5","py-3","text-[12.5px]","text-brand-text","transition-colors","hover:bg-brand/12",3,"href"],["name","external-link",1,"h-[15px]","w-[15px]"],[1,"mt-auto","grid","items-baseline","gap-y-[7px]","px-5","pt-6","pb-6"],[1,"flex","items-center","justify-between","border-t","border-border","px-5","py-2.5"],["type","button",1,"inline-flex","flex-1","items-center","justify-center","gap-1.5","border-r","border-border","px-2.5","py-3","text-[12.5px]","text-muted-foreground","transition-colors","hover:bg-muted","disabled:cursor-progress","disabled:hover:bg-transparent",3,"click","disabled"],["sizeClass","h-[15px] w-[15px]"],["type","button",1,"inline-flex","flex-1","items-center","justify-center","gap-1.5","px-2.5","py-3","text-[12.5px]","text-brand-text","transition-colors","hover:bg-brand/12",3,"click"],[1,"truncate","text-[13.5px]","font-semibold","text-surface-foreground"],["appAutofocusSelect","",1,"w-full","min-w-0","rounded-md","border","border-border-strong","bg-surface","px-1.5","py-0.5","font-mono","text-[13.5px]","text-surface-foreground","focus:outline-none",3,"value"],["appAutofocusSelect","",1,"w-full","min-w-0","rounded-md","border","border-border-strong","bg-surface","px-1.5","py-0.5","font-mono","text-[13.5px]","text-surface-foreground","focus:outline-none",3,"keydown.enter","keydown.escape","blur","value"],[1,"truncate","font-mono","text-[13.5px]","text-muted-foreground",3,"title"],["variant","icon","label","Copy profile name",3,"text"],["variant","ghost","size","icon-sm","title","Rename this profile \u2014 clear the field to go back to the default",1,"shrink-0",3,"click","ariaLabel"],["name","pencil",1,"h-3","w-3",3,"strokeWidth"],["type","button",1,"grid","h-5","shrink-0","place-items-center","rounded-md","px-1","text-[11px]","leading-none","text-muted-foreground","opacity-60","transition-colors","hover:bg-muted","hover:text-surface-foreground","hover:opacity-100",3,"title"],["type","button",1,"grid","h-5","shrink-0","place-items-center","rounded-md","px-1","text-[11px]","leading-none","text-muted-foreground","opacity-60","transition-colors","hover:bg-muted","hover:text-surface-foreground","hover:opacity-100",3,"click","title"],[1,"flex","items-center","gap-1.5","text-[12.5px]","text-muted-foreground"],["name","bolt",1,"h-[15px]","w-[15px]"],[3,"checkedChange","checked","ariaLabel","title"]],template:function(e,p){e&1&&(s(0,z,8,4)(1,q,7,3,"div",0),s(2,X,17,11)(3,ce,17,10)),e&2&&(m(p.headerVariant()==="stacked"?0:1),n(2),m(p.kind()==="resource"?2:3))},dependencies:[D,N,A,P,V,L,M],encapsulation:2})};export{U as a};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as w}from"./chunk-D7TR2ORJ.js";import{Aa as i,H as r,Ka as a,Na as g,Oa as v,T as c,Ua as y,Va as b,Wa as d,Xa as h,Y as m,Z as n,ca as u,fa as f,sb as D,tb as l,za as o}from"./chunk-P5WRM37W.js";var _=["*"],x=class s{elementRef=r(c);renderer=r(u);title=l.required();width=l("max-w-lg");scrollBody=l(!0);closed=D();ngOnInit(){this.renderer.appendChild(document.body,this.elementRef.nativeElement)}ngOnDestroy(){this.elementRef.nativeElement.remove()}onEscape(){this.closed.emit()}static \u0275fac=function(e){return new(e||s)};static \u0275cmp=f({type:s,selectors:[["app-dialog"]],hostBindings:function(e,t){e&1&&a("keydown.escape",function(){return t.onEscape()},m)},inputs:{title:[1,"title"],width:[1,"width"],scrollBody:[1,"scrollBody"]},outputs:{closed:"closed"},ngContentSelectors:_,decls:10,vars:5,consts:[[1,"fixed","inset-0","z-40","overflow-y-auto","bg-gray-900/40","backdrop-blur-[2px]"],[1,"flex","min-h-full","items-center","justify-center","p-4"],["role","dialog","aria-modal","true",1,"flex","max-h-[85vh]","w-full","flex-col","rounded-xl","bg-popover","shadow-xl","ring-1","ring-border","backdrop-blur-2xl"],[1,"flex","shrink-0","items-center","justify-between","border-b","border-border","px-6","py-4"],[1,"ui-subtitle"],["variant","ghost","size","icon","ariaLabel","Close",3,"click"],[1,"px-6","py-5"]],template:function(e,t){e&1&&(g(),o(0,"div",0)(1,"div",1)(2,"div",2)(3,"header",3)(4,"h2",4),d(5),i(),o(6,"app-button",5),a("click",function(){return t.closed.emit()}),d(7," \u2715 "),i()(),o(8,"div",6),v(9),i()()()()),e&2&&(n(2),b(t.width()),n(3),h(t.title()),n(3),y("overflow-y-auto",t.scrollBody()))},dependencies:[w],encapsulation:2})};export{x as a};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as d}from"./chunk-J4C7C5KO.js";import"./chunk-LMLXTVZG.js";import{a as p,b as m,d as u}from"./chunk-HK56COCB.js";import"./chunk-DCOFBAKJ.js";import"./chunk-RI77LE5V.js";import"./chunk-IKK5DQ3Z.js";import"./chunk-H5H727H6.js";import"./chunk-2V6RSAAC.js";import"./chunk-JMBXRK3I.js";import"./chunk-DOLRLYW7.js";import{a as c}from"./chunk-Z3KONI7L.js";import{c as n}from"./chunk-O4QSFUXB.js";import{c as l,f as r}from"./chunk-J57JB4MU.js";import"./chunk-EQ4PF25J.js";import"./chunk-ZDCURXPS.js";import"./chunk-PSMER3HX.js";import"./chunk-KCCEQIXX.js";import"./chunk-QVABVDO5.js";import"./chunk-RROPCBUH.js";import"./chunk-PMMBJK7Q.js";import"./chunk-J3SSPCFV.js";import"./chunk-4SK6XQ6C.js";import"./chunk-SJMLX5AT.js";import"./chunk-2SO4BVIT.js";import"./chunk-KPNHT4MK.js";import"./chunk-NO5D6WDF.js";import{c as i}from"./chunk-GKI3R2JB.js";import"./chunk-M6OAYNRE.js";import"./chunk-XJM3HDJQ.js";import"./chunk-2MOGDYK4.js";import"./chunk-4N2IUS6T.js";import"./chunk-D7TR2ORJ.js";import"./chunk-P5WRM37W.js";import{e as a}from"./chunk-WFIHWVQO.js";function h(e){let o=e.isDesktop??!1;return[{provide:m,useValue:r({reachable:e.reachable,requestable:e.requestable,error:e.error??""})},{provide:u,useValue:r({mine:e.myShares??[],sharedWithMe:e.sharedWithMe??[],error:"",serving:new Map((e.myShares??[]).map(v=>[v.shareId,"serving"])),serveErrors:new Map,panelOpen:!1,shareSiteId:"dev",shareSiteName:"Testbed"},{enabled:o,limits:{enabled:o,maxDurationHours:8,allowGroupTargets:!0},startPolling(){},remove:()=>a(null,null,function*(){}),syncServes:()=>a(null,null,function*(){})})},{provide:n,useValue:{isDesktop:o,probeSupported:!1,sharesSupported:!1}},{provide:c,useValue:r({state:e.networkState??(e.isDesktop?"connected":"hidden"),activeSiteId:null,pendingSiteId:null,setupOpen:!1,siteOfAccount:new Map,sites:[]},{isAccountOnActiveSite:()=>!0,connect(){},siteName:()=>"Testbed"})},{provide:p,useValue:r({byAccount:e.probes??new Map},{refresh:()=>a(null,null,function*(){})})},{provide:i,useValue:l()}]}var t="448210007710",s="990144552201",S=[{resourceId:"r-payments",name:"payments-db",type:"DATABASE",cidr:"10.20.1.0/24",ports:[5432],dnsName:"payments.prod.internal",description:"Primary Postgres \u2014 production writes land here.",accountNumber:t,accountName:"Acme Production"},{resourceId:"r-admin",name:"internal-admin",type:"WEB",cidr:"10.20.2.15/32",ports:[443],dnsName:"admin.prod.internal",description:"Back-office console for support staff.",accountNumber:t,accountName:"Acme Production",expiresAt:"2026-09-30T12:00:00Z"},{resourceId:"r-bastion",name:"staging-bastion",type:"HOST",cidr:"10.30.0.8/32",ports:[22],sshUser:"ec2-user",description:"Jump host into the staging subnet.",accountNumber:s,accountName:"Acme Staging"}],b=[{resourceId:"r-analytics",name:"analytics-db",type:"DATABASE",description:"Read replica \u2014 safe for ad hoc queries.",accountNumber:s,accountName:"Acme Staging"},{resourceId:"r-grafana",name:"grafana",type:"WEB",description:"Dashboards for the platform team.",accountNumber:t,accountName:"Acme Production"}],f=new Map([[t,"reachable"],[s,"no-response"]]);function L(){return{component:d,providers:h({reachable:S,requestable:b,probes:f})}}export{L as load};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as j,k as U}from"./chunk-RI77LE5V.js";import"./chunk-IKK5DQ3Z.js";import"./chunk-H5H727H6.js";import"./chunk-2V6RSAAC.js";import"./chunk-JMBXRK3I.js";import"./chunk-DOLRLYW7.js";import"./chunk-O4QSFUXB.js";import"./chunk-4SK6XQ6C.js";import{a as Y}from"./chunk-SJMLX5AT.js";import{a as B,b as L}from"./chunk-2SO4BVIT.js";import"./chunk-KPNHT4MK.js";import{a as w,b as V,e as I,i as D,j as k,k as A,n as O,o as P,p as X}from"./chunk-NO5D6WDF.js";import{c as F}from"./chunk-GKI3R2JB.js";import{a as N}from"./chunk-D7TR2ORJ.js";import{Aa as a,H as C,Ia as R,J as x,K as g,Ka as f,Ma as s,Q as _,Va as E,Wa as n,Xa as d,Ya as T,Z as i,fa as y,sa as u,sb as v,ta as m,tb as b,va as S,wa as q,xa as M,ya as p,za as r}from"./chunk-P5WRM37W.js";import"./chunk-WFIHWVQO.js";function H(t,o){if(t&1&&(n(0," Your access to "),r(1,"strong"),n(2),a(),n(3," has expired. This asks the admins to grant it again. ")),t&2){let e=s(2);i(2),d(e.resource().name)}}function z(t,o){if(t&1&&(n(0," Your access to "),r(1,"strong"),n(2),a(),n(3," is ending soon. This asks the admins for more time \u2014 an approval replaces the current end date. ")),t&2){let e=s(2);i(2),d(e.resource().name)}}function G(t,o){if(t&1&&(r(0,"div",1),u(1,H,4,1)(2,z,4,1),a()),t&2){let e=o;E(e.expired?"bg-danger-muted text-danger ring-danger/20":"bg-warning-muted text-warning ring-warning/30"),i(),m(e.expired?1:2)}}function J(t,o){if(t&1&&(n(0," for "),r(1,"strong"),n(2),a()),t&2){let e=s(2);i(2),d(e.label(e.duration()))}}function K(t,o){if(t&1){let e=R();r(0,"div",2)(1,"span"),n(2,"\u2713"),a(),r(3,"span"),n(4," Your request for "),r(5,"strong"),n(6),a(),u(7,J,3,1),n(8," is with the admins. You'll see the decision in the activity bell, and the resource appears here once it's approved. "),a()(),r(9,"div",3)(10,"app-button",4),f("click",function(){x(e);let l=s();return g(l.closed.emit())}),n(11,"Done"),a()()}if(t&2){let e=s();i(6),d(e.resource().name),i(),m(e.duration()!=="long"?7:-1)}}function Q(t,o){if(t&1&&(r(0,"span",8),n(1),a()),t&2){let e=s(2);i(),T(" \xB7 ",e.resource().accountName)}}function W(t,o){if(t&1&&(r(0,"p",9),n(1),a()),t&2){let e=s(2);i(),d(e.resource().description)}}function Z(t,o){if(t&1&&(r(0,"option",12),n(1),a()),t&2){let e=o.$implicit,c=s(2);p("ngValue",e),i(),d(c.label(e))}}function ee(t,o){if(t&1){let e=R();r(0,"div",5)(1,"div",6)(2,"span",7),n(3),a(),u(4,Q,2,1,"span",8),u(5,W,2,1,"p",9),a(),r(6,"app-field",10)(7,"select",11),f("ngModelChange",function(l){x(e);let h=s();return g(h.duration.set(l))}),q(8,Z,2,2,"option",12,S),r(10,"option",12),n(11,"Long-term (indefinite)"),a()()(),r(12,"app-field",13)(13,"textarea",14),f("ngModelChange",function(l){x(e);let h=s();return g(h.reason.set(l))}),a()()(),r(14,"div",15)(15,"app-button",16),f("click",function(){x(e);let l=s();return g(l.closed.emit())}),n(16,"Cancel"),a(),r(17,"app-button",17),f("click",function(){x(e);let l=s();return g(l.submit())}),n(18,"Send request"),a()()}if(t&2){let e=s();i(3),d(e.resource().name),i(),m(e.resource().accountName?4:-1),i(),m(e.resource().description?5:-1),i(2),p("ngModel",e.duration()),i(),M(e.PRESETS),i(2),p("ngValue","long"),i(2),p("error",e.error()),i(),p("maxlength",e.REASON_MAX)("ngModel",e.reason()),i(4),p("loading",e.busy())}}var $=class t{api=C(j);toast=C(F);notifications=C(U);resource=b.required();extension=b(null);created=v();closed=v();REASON_MAX=500;PRESETS=B;label(o){return o==="long"?"long-term":L(o)}duration=_("long");reason=_("");busy=_(!1);error=_("");sent=_(!1);ngOnInit(){this.extension()&&this.duration.set(24)}submit(){this.error.set(""),this.busy.set(!0);let o=this.duration();this.api.createResourceRequest(this.resource().resourceId,this.reason().trim()||void 0,o==="long"?void 0:o).subscribe({next:()=>{this.busy.set(!1),this.sent.set(!0),this.toast.success(`Requested ${this.resource().name}`),this.notifications.load(),this.created.emit()},error:e=>{this.busy.set(!1),this.error.set(X(e,"Could not send the request."))}})}static \u0275fac=function(e){return new(e||t)};static \u0275cmp=y({type:t,selectors:[["app-request-resource-form"]],inputs:{resource:[1,"resource"],extension:[1,"extension"]},outputs:{created:"created",closed:"closed"},decls:3,vars:2,consts:[[1,"mb-4","rounded-lg","p-3","text-sm","ring-1",3,"class"],[1,"mb-4","rounded-lg","p-3","text-sm","ring-1"],[1,"flex","items-start","gap-2","rounded-lg","bg-success-muted","p-3","text-sm","text-success","ring-1","ring-success/30"],[1,"mt-5","flex","justify-end"],[3,"click"],[1,"space-y-4"],[1,"rounded-lg","bg-muted","p-3","text-sm","text-muted-foreground","ring-1","ring-border"],[1,"font-medium","text-surface-foreground"],[1,"text-placeholder"],[1,"mt-1","text-xs","text-muted-foreground"],["label","Access duration","hint","temporary access expires on its own; the admin has the final say"],[1,"ui-input",3,"ngModelChange","ngModel"],[3,"ngValue"],["label","Reason","hint","optional, but it's what the admin decides on",3,"error"],["rows","3","placeholder","e.g. Need to query the staging database for the migration.",1,"ui-input",3,"ngModelChange","maxlength","ngModel"],[1,"mt-5","flex","justify-end","gap-2"],["variant","outline",3,"click"],[3,"click","loading"]],template:function(e,c){if(e&1&&(u(0,G,3,3,"div",0),u(1,K,12,2)(2,ee,19,9)),e&2){let l;m((l=!c.sent()&&c.extension())?0:-1,l),i(),m(c.sent()?1:2)}},dependencies:[P,k,A,w,D,V,O,I,N,Y],encapsulation:2})};export{$ as RequestResourceFormComponent};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as Q,b as He}from"./chunk-WEDAFMID.js";import{a as V}from"./chunk-GK2T2SMO.js";import{c as De}from"./chunk-GHEU25TG.js";import{a as Fe}from"./chunk-BNFKRZTP.js";import{a as P}from"./chunk-2V6RSAAC.js";import{v as Ee}from"./chunk-JMBXRK3I.js";import{a as E,b as ze,c as Ke,d as Qe}from"./chunk-GPKKIOHD.js";import{b as je}from"./chunk-TM43WUKM.js";import{a as qe}from"./chunk-6KFR7DYY.js";import{a as K}from"./chunk-CP4XZPOA.js";import{c as Me,e as Pe}from"./chunk-FIUVIKAN.js";import{a as Ie}from"./chunk-EVP5UVDQ.js";import{a as Re,b as Ae}from"./chunk-OATVFQXO.js";import{a as Le}from"./chunk-EQ4PF25J.js";import{a as Oe,d as We}from"./chunk-ZDCURXPS.js";import{a as ve}from"./chunk-PSMER3HX.js";import{b as Be,d as $e}from"./chunk-KCCEQIXX.js";import{a as Ve}from"./chunk-QVABVDO5.js";import{a as I}from"./chunk-4SK6XQ6C.js";import{a as Te}from"./chunk-SJMLX5AT.js";import{a as j}from"./chunk-KPNHT4MK.js";import{a as we,b as ke,e as Se,n as Ge,o as Ne,p as F}from"./chunk-NO5D6WDF.js";import{a as xe,c as A}from"./chunk-GKI3R2JB.js";import{a as ye}from"./chunk-M6OAYNRE.js";import{a as z}from"./chunk-XJM3HDJQ.js";import{b as be}from"./chunk-2MOGDYK4.js";import{a as T}from"./chunk-D7TR2ORJ.js";import{$a as fe,Aa as r,Ba as Z,E as pe,Fa as me,Ga as _e,H as C,Ia as x,J as f,K as h,Ka as c,Ma as s,P as de,Q as g,Qa as ee,Ra as ge,Sb as Ce,Ta as te,Va as ne,Wa as p,Xa as w,Ya as b,Z as l,Za as M,_a as L,ab as O,bb as W,cb as q,fa as S,ib as oe,ja as ce,l as B,nb as he,pb as ie,qb as v,ra as ue,rb as re,sa as m,sb as D,ta as _,tb as R,u as $,ub as ae,wa as G,xa as N,ya as u,za as a}from"./chunk-P5WRM37W.js";var H=class o{api=C(E);groups=g(null);error=g("");load(){this.error.set(""),this.api.list().subscribe({next:t=>this.groups.set(t),error:()=>{this.groups.set([]),this.error.set("Could not load groups. Try reloading the page.")}})}static \u0275fac=function(e){return new(e||o)};static \u0275prov=pe({token:o,factory:o.\u0275fac,providedIn:"root"})};var Ye=(o,t)=>t.roleName,Ze=(o,t)=>t.key,et=(o,t)=>t.resourceId;function tt(o,t){o&1&&(a(0,"p",11),p(1,"No roles are registered in this account."),r())}function nt(o,t){if(o&1&&(a(0,"span",14),p(1),r()),o&2){let e=s().$implicit;l(),b("\xB7 ",e.description)}}function ot(o,t){if(o&1){let e=x();a(0,"label",12)(1,"input",13),c("change",function(){let i=f(e).$implicit,d=s(),k=s();return h(k.toggle(d.accountNumber,i.roleName))}),r(),a(2,"span"),p(3),r(),m(4,nt,2,1,"span",14),r()}if(o&2){let e=t.$implicit,n=s(),i=s();l(),u("checked",i.isPicked(n.accountNumber,e.roleName)),l(2),w(e.displayName||e.roleName),l(),_(e.description?4:-1)}}function it(o,t){if(o&1&&(a(0,"div",7),m(1,tt,2,0,"p",11),G(2,ot,5,3,"label",12,Ye),r()),o&2){let e=t;l(),_(e.roles.length===0?1:-1),l(),N(e.roles)}}function rt(o,t){if(o&1){let e=x();a(0,"app-search-input",19),q("valueChange",function(i){f(e);let d=s(2);return W(d.chipsFold.query,i)||(d.chipsFold.query=i),h(i)}),r()}if(o&2){let e=s(2);O("value",e.chipsFold.query)}}function at(o,t){if(o&1){let e=x();a(0,"span",17)(1,"span",20),p(2),r(),a(3,"button",21),c("click",function(){let i=f(e).$implicit,d=s(2);return h(d.toggle(i.accountNumber,i.roleName))}),p(4,"\xD7"),r()()}if(o&2){let e=t.$implicit,n=s(2);l(2),M("",e.roleName," \xB7 ",n.names.label(e.accountNumber)),l(),ue("aria-label","Remove "+e.roleName)}}function lt(o,t){if(o&1){let e=x();a(0,"button",24),c("click",function(){f(e);let i=s(3);return h(i.chipsFold.showMore())}),p(1),r()}if(o&2){let e=s(3);l(),b(" +",e.chipsFold.more()," more ")}}function st(o,t){if(o&1){let e=x();a(0,"button",24),c("click",function(){f(e);let i=s(3);return h(i.chipsFold.showLess())}),p(1,"Show less"),r()}}function pt(o,t){if(o&1&&(m(0,lt,2,1,"button",22),m(1,st,2,0,"button",22),a(2,"span",23),p(3),r()),o&2){let e=s(2);_(e.chipsFold.more()?0:-1),l(),_(e.chipsFold.expanded()?1:-1),l(2),L("",e.chipsFold.visible().length," of ",e.chipsFold.matching().length,"",e.chipsFold.searchable()?" \u2014 or search":"")}}function dt(o,t){if(o&1&&(a(0,"span",18),p(1),r()),o&2){let e=s(2);l(),b('Nothing in the bundle matches "',e.chipsFold.query(),'".')}}function ct(o,t){if(o&1&&(m(0,rt,1,1,"app-search-input",15),a(1,"div",16),G(2,at,5,3,"span",17,Ze),m(4,pt,4,5)(5,dt,2,1,"span",18),r()),o&2){let e=s();_(e.chipsFold.searchable()?0:-1),l(2),N(e.chipsFold.visible()),l(2),_(e.chipsFold.more()||e.chipsFold.expanded()?4:e.chipsFold.matching().length?-1:5)}}function ut(o,t){if(o&1&&p(0),o&2){let e=s();M(" \u2014 changes reconcile access for ",e.group().members.length," member",e.group().members.length===1?"":"s"," ")}}function mt(o,t){if(o&1){let e=x();a(0,"span",34),p(1),r(),a(2,"app-button",36),c("click",function(){f(e);let i=s(),d=s(2);return h(d.applyBulk(i.groupId))}),p(3),r()}if(o&2){let e=t,n=s(3);l(),L("",e," account",e===1?"":"s"," have ",n.bulkRole().trim()),l(),u("loading",n.bulkBusy()),l(),M("Add ",e," role",e===1?"":"s")}}function _t(o,t){if(o&1&&(a(0,"span",34),p(1),r()),o&2){let e=s(3);l(),b("No account matching the filter has ",e.bulkRole().trim(),".")}}function gt(o,t){if(o&1&&(a(0,"p",35),p(1),r()),o&2){let e=s(3);l(),w(e.bulkError())}}function ft(o,t){if(o&1){let e=x();a(0,"div",25)(1,"p",27),p(2,"Add one role across many accounts"),r(),a(3,"p",28),p(4," Every account matching the filter that has a role of this name joins the bundle at once \u2014 members get access immediately. "),r(),a(5,"div",29)(6,"input",30),c("ngModelChange",function(i){f(e);let d=s(2);return d.bulkRole.set(i),h(d.bulkPreview.set(null))}),r(),a(7,"app-filter-popup",31),c("filtersChange",function(i){f(e);let d=s(2);return h(d.setBulkFilters(i))}),r()(),a(8,"div",32)(9,"app-button",33),c("click",function(){let i=f(e),d=s(2);return h(d.previewBulk(i.groupId))}),p(10,"Count matches"),r(),m(11,mt,4,6)(12,_t,2,1,"span",34),r(),m(13,gt,2,1,"p",35),r()}if(o&2){let e,n=s(2);l(6),u("ngModel",n.bulkRole()),l(),u("sections",n.bulkSections())("filters",n.bulkFilters()),l(2),u("disabled",!n.bulkRole().trim()||n.bulkBusy()),l(2),_((e=n.bulkPreview())?11:n.bulkPreview()===0?12:-1,e),l(2),_(n.bulkError()?13:-1)}}function ht(o,t){if(o&1&&(a(0,"p",26),p(1),r()),o&2){let e=s(2);l(),L("Save the group first to add one role across many accounts by ",e.dimensions.label("tenant").toLowerCase(),", ",e.dimensions.label("project").toLowerCase()," or ",e.dimensions.label("stage").toLowerCase(),".")}}function Ct(o,t){if(o&1&&m(0,ft,14,6,"div",25)(1,ht,2,3,"p",26),o&2){let e,n=s();_((e=n.group())?0:1,e)}}function xt(o,t){o&1&&(a(0,"p",10),p(1,"Loading the resource catalog\u2026"),r())}function bt(o,t){o&1&&(a(0,"p",10),p(1," No resources are registered yet \u2014 add them on the admin Network page first. "),r())}function vt(o,t){if(o&1){let e=x();a(0,"label",12)(1,"input",13),c("change",function(){let i=f(e).$implicit,d=s(2);return h(d.toggleResource(i.resourceId))}),r(),a(2,"span"),p(3),r(),a(4,"span",14),p(5),r()()}if(o&2){let e=t.$implicit,n=s(2);l(),u("checked",n.pickedResources().has(e.resourceId)),l(2),w(e.name),l(2),b(" \xB7 ",e.type==="DATABASE"?"Database":e.type==="WEB"?"Web":"Host"," ")}}function yt(o,t){if(o&1&&(a(0,"div",37),G(1,vt,6,3,"label",12,et),r(),a(3,"p",8),p(4),r()),o&2){let e=s();l(),N(e.resourceCatalog()),l(3),M(" ",e.pickedResources().size," resource",e.pickedResources().size===1?"":"s"," in the bundle ")}}var J=class o{api=C(E);adminApi=C(j);resourcesApi=C(I);toast=C(A);names=C(P);dimensions=C(Me);group=R(null);saved=D();resourceCatalog=g(null);name=g("");description=g("");picked=g(new Set);initialRoles=new Set;pickedResources=g(new Set);busy=g(!1);error=g("");accountsPage=t=>this.adminApi.listAccountsPage(t);pickedAccount=g(null);pickedList=v(()=>[...this.picked()].map(t=>{let e=t.indexOf("#");return{key:t,accountNumber:t.slice(0,e),roleName:t.slice(e+1)}}));chipsFold=je(this.pickedList,t=>`${t.roleName} ${this.names.label(t.accountNumber)} ${t.accountNumber}`);canSave=v(()=>!!this.name().trim()&&this.picked().size+this.pickedResources().size>0);ngOnInit(){let t=this.group();t&&(this.name.set(t.name),this.description.set(t.description??""),this.initialRoles=new Set(t.roles.map(e=>`${e.accountNumber}#${e.roleName}`)),this.picked.set(new Set(this.initialRoles)),this.pickedResources.set(new Set((t.resources??[]).map(e=>e.resourceId)))),this.names.ensure(),this.dimensions.enabled&&t&&this.adminApi.listAccountsPage({limit:1}).subscribe({next:e=>this.bulkFacets.set(e.facets),error:()=>{}}),this.resourcesApi.listAll().subscribe({next:e=>this.resourceCatalog.set(e),error:()=>{this.resourceCatalog.set([]),this.error.set("Could not load the resource catalog. Try again shortly.")}})}bulkRole=g("");bulkFilters=g([]);bulkFacets=g(void 0);bulkSections=v(()=>this.dimensions.sections(this.bulkFacets()));bulkPreview=g(null);bulkBusy=g(!1);bulkError=g("");bulkBody(t){let e={};for(let n of this.bulkFilters())(e[n.key]??=[]).push(n.value);return{roleName:this.bulkRole().trim(),filter:e,dryRun:t}}setBulkFilters(t){this.bulkFilters.set(t),this.bulkPreview.set(null)}previewBulk(t){this.bulkError.set(""),this.bulkBusy.set(!0),this.api.addRolesByDimension(t,this.bulkBody(!0)).subscribe({next:e=>{this.bulkBusy.set(!1),this.bulkPreview.set(e.matched)},error:e=>{this.bulkBusy.set(!1),this.bulkError.set(F(e,"Could not count the matching accounts."))}})}applyBulk(t,e=0){this.bulkError.set(""),this.bulkBusy.set(!0),this.api.addRolesByDimension(t,this.bulkBody(!1)).subscribe({next:n=>{let i=(n.group?.roles??[]).map(k=>`${k.accountNumber}#${k.roleName}`);this.initialRoles=new Set([...this.initialRoles,...i]),this.picked.update(k=>new Set([...k,...i]));let d=e+(n.added??0);if((n.remaining??0)>0){this.applyBulk(t,d);return}this.bulkBusy.set(!1),this.bulkPreview.set(null),this.toast.success(d?`Added ${d} role${d===1?"":"s"}`:"Every match was already in the bundle")},error:n=>{this.bulkBusy.set(!1),this.bulkError.set(F(n,e?`Added ${e} roles, then the next batch failed.`:"Could not add the roles."))}})}isPicked(t,e){return this.picked().has(`${t}#${e}`)}toggle(t,e){let n=`${t}#${e}`;this.picked.update(i=>{let d=new Set(i);return d.has(n)?d.delete(n):d.add(n),d})}toggleResource(t){this.pickedResources.update(e=>{let n=new Set(e);return n.has(t)?n.delete(t):n.add(t),n})}save(){if(!this.canSave())return;this.error.set(""),this.busy.set(!0);let t=y=>{let se=y.indexOf("#");return{accountNumber:y.slice(0,se),roleName:y.slice(se+1)}},e=[...this.picked()].map(t),n=[...this.pickedResources()],i=this.name().trim(),d=this.description().trim()||void 0,k=this.group(),Je=[...this.picked()].filter(y=>!this.initialRoles.has(y)).map(t),Xe=[...this.initialRoles].filter(y=>!this.picked().has(y)).map(t);(k?B(this.api.update(k.groupId,{name:i,description:d??"",resources:n}),...Je.map(y=>this.api.addRole(k.groupId,y)),...Xe.map(y=>this.api.removeRole(k.groupId,y))).pipe($()):this.api.create(i,e,d,n)).subscribe({next:()=>{this.busy.set(!1),this.toast.success(k?`Updated ${i}`:`Created ${i}`),this.saved.emit()},error:y=>{this.busy.set(!1),this.error.set(F(y,"Could not save the group."))}})}static \u0275fac=function(e){return new(e||o)};static \u0275cmp=S({type:o,selectors:[["app-group-form"]],inputs:{group:[1,"group"]},outputs:{saved:"saved"},decls:17,vars:15,consts:[[1,"space-y-5"],["label","Name","hint","shown on the Users page next to bundled roles",3,"error"],["maxlength","60","placeholder","e.g. Platform team",1,"ui-input",3,"ngModelChange","ngModel"],["label","Description","hint","optional"],["maxlength","200","placeholder","e.g. Everyone running the shared infra accounts.",1,"ui-input",3,"ngModelChange","ngModel"],["label","Roles",3,"hint"],["placeholder","Search accounts by name or number",3,"picked","source","selected","dimensionFilters"],[1,"mt-2","max-h-48","overflow-y-auto","rounded-lg","border","border-border-strong","p-3"],[1,"mt-1.5","text-xs","text-muted-foreground"],["label","Network resources",3,"hint"],[1,"py-2","text-xs","text-muted-foreground"],[1,"text-xs","text-muted-foreground"],[1,"flex","cursor-pointer","items-center","gap-2","rounded","px-1","py-1","text-sm","text-surface-foreground","hover:bg-muted"],["type","checkbox",1,"ui-checkbox",3,"change","checked"],[1,"truncate","text-xs","text-muted-foreground"],["compact","","placeholder","Search the bundle by role or account",1,"mt-2","block",3,"value"],[1,"mt-2","flex","flex-wrap","gap-1.5"],[1,"inline-flex","max-w-full","items-center","gap-1","rounded-full","bg-muted","px-2","py-0.5","text-xs","text-surface-foreground"],[1,"self-center","text-xs","text-muted-foreground"],["compact","","placeholder","Search the bundle by role or account",1,"mt-2","block",3,"valueChange","value"],[1,"min-w-0","truncate"],["type","button",1,"text-muted-foreground","hover:text-surface-foreground",3,"click"],["type","button",1,"text-xs","text-muted-foreground","underline","hover:text-surface-foreground"],[1,"self-center","text-[11px]","text-text-secondary"],["type","button",1,"text-xs","text-muted-foreground","underline","hover:text-surface-foreground",3,"click"],["data-testid","add-by-dimension",1,"mt-3","rounded-lg","border","border-border-strong","p-3"],[1,"mt-2","text-xs","text-muted-foreground"],[1,"text-xs","font-medium","text-surface-foreground"],[1,"mt-0.5","text-xs","text-muted-foreground"],[1,"mt-2","flex","items-center","gap-2"],["placeholder","Role name, e.g. ReadOnly",1,"ui-input","min-w-0","flex-1",3,"ngModelChange","ngModel"],[3,"filtersChange","sections","filters"],[1,"mt-2","flex","flex-wrap","items-center","gap-2"],["variant","outline",3,"click","disabled"],["data-testid","bulk-count",1,"text-xs","text-muted-foreground"],[1,"mt-1","text-xs","text-danger"],[3,"click","loading"],[1,"max-h-48","overflow-y-auto","rounded-lg","border","border-border-strong","p-3"]],template:function(e,n){if(e&1&&(a(0,"div",0)(1,"app-field",1)(2,"input",2),c("ngModelChange",function(d){return n.name.set(d)}),r()(),a(3,"app-field",3)(4,"input",4),c("ngModelChange",function(d){return n.description.set(d)}),r()(),a(5,"app-field",5)(6,"app-account-picker",6),c("picked",function(d){return n.pickedAccount.set(d)}),r(),m(7,it,4,1,"div",7),m(8,ct,6,2),a(9,"p",8),p(10),m(11,ut,1,2),r(),m(12,Ct,2,1),r(),a(13,"app-field",9),m(14,xt,2,0,"p",10)(15,bt,2,0,"p",10)(16,yt,5,2),r()()),e&2){let i;l(),u("error",n.error()),l(),u("ngModel",n.name()),l(2),u("ngModel",n.description()),l(),u("hint",n.group()?"\u2014 changes apply to every member immediately":"\u2014 what membership grants"),l(),u("source",n.accountsPage)("selected",n.pickedAccount())("dimensionFilters",!0),l(),_((i=n.pickedAccount())?7:-1,i),l(),_(n.pickedList().length?8:-1),l(2),M(" ",n.picked().size," role",n.picked().size===1?"":"s"," in the bundle "),l(),_(n.group()&&n.group().members.length?11:-1),l(),_(n.dimensions.enabled?12:-1),l(),u("hint",n.group()?"\u2014 network access; changes apply to every member (\u22645 min)":"\u2014 network access membership grants"),l(),_(n.resourceCatalog()===null?14:n.resourceCatalog().length===0?15:16)}},dependencies:[Ne,we,ke,Ge,Se,Te,Pe,T,Ie,K],encapsulation:2})};var wt=o=>({group:o}),kt=o=>({kind:"group",groupId:o});function St(o,t){if(o&1){let e=x();a(0,"app-plugin-access-panel",16),c("changed",function(){f(e);let i=s();return h(i.loadPluginAssignments(i.group().groupId))}),r()}if(o&2){let e=s();u("principal",oe(3,kt,e.group().groupId))("holder",e.group().name)("assignments",e.pluginAssignments())}}function Gt(o,t){if(o&1){let e=x();a(0,"app-grant-dialog",17),c("granted",function(i){f(e);let d=s();return h(d.addMembers(i.ids))})("closed",function(){f(e);let i=s();return h(i.addingMembers.set(!1))}),r()}if(o&2){let e=s();u("intro","Each member gets "+e.group().name+"\u2019s whole bundle, long-term, while a member.")("options",e.userOptions())("busy",e.busy())}}function Nt(o,t){if(o&1){let e=x();a(0,"app-grant-dialog",18),c("granted",function(i){f(e);let d=s();return h(d.addRoles(i.ids))})("closed",function(){f(e);let i=s();return h(i.addingRoles.set(!1))}),r()}if(o&2){let e=s();u("intro","Every member of "+e.group().name+" gets these roles.")("accountSource",e.accountsPage)("optionsFor",e.rolesOf)("busy",e.busy())}}function Tt(o,t){if(o&1){let e=x();a(0,"app-grant-dialog",19),c("granted",function(i){f(e);let d=s();return h(d.addResources(i.ids))})("closed",function(){f(e);let i=s();return h(i.addingResources.set(!1))}),r()}if(o&2){let e=s();u("intro","Every member of "+e.group().name+" can reach these.")("options",e.resourceOptions())("busy",e.busy())}}var X=class o{api=C(E);pluginsApi=C(Ee);pluginsStore=C(De);pluginsOn=!!C(xe).config.plugins?.enabled;pluginAssignments=g([]);adminApi=C(j);resourcesApi=C(I);toast=C(A);names=C(P);roleColors=C(Q);group=R.required();changed=D();busy=g(!1);users=g([]);resources=g([]);full=g(null);fullRequest=0;shown=v(()=>{let t=this.full();return t&&t.groupId===this.group().groupId?t:this.group()});addingMembers=g(!1);addingRoles=g(!1);addingResources=g(!1);memberRows=v(()=>this.group().members.map(t=>({id:t.userId,title:t.email||"(deleted user)",badges:[],action:{label:"Remove",disabled:this.busy()}})));roleRows=v(()=>this.shown().roles.map(t=>({id:`${t.accountNumber}#${t.roleName}`,title:t.roleName,subtitle:this.names.label(t.accountNumber),pillClass:"role-chip",chipColor:this.roleColors.colorOf(t.accountNumber,t.roleName)||V(t.accountNumber),badges:[],action:{label:"Remove",disabled:this.busy()}})));resourceRows=v(()=>(this.group().resources??[]).map(t=>{let e=this.resources().find(n=>n.resourceId===t.resourceId)?.accountNumber;return{id:t.resourceId,title:t.name,subtitle:e?this.names.label(e):void 0,pillClass:e?"role-chip":"bg-muted text-surface-foreground ring-1 ring-border",chipColor:e?V(e):null,badges:[],action:{label:"Remove",disabled:this.busy()}}}));userOptions=v(()=>{let t=new Set(this.group().members.map(e=>e.userId));return this.users().filter(e=>!t.has(e.userId)).map(e=>({id:e.userId,label:e.email||e.userId}))});accountsPage=t=>this.adminApi.listAccountsPage(t);rolesOf=t=>{let e=new Set(this.shown().roles.map(n=>`${n.accountNumber}#${n.roleName}`));return t.roles.filter(n=>!e.has(`${t.accountNumber}#${n.roleName}`)).map(n=>({id:`${t.accountNumber}#${n.roleName}`,label:n.displayName||n.roleName,sublabel:n.displayName?n.roleName:void 0}))};resourceOptions=v(()=>{let t=new Set((this.group().resources??[]).map(e=>e.resourceId));return this.resources().filter(e=>!t.has(e.resourceId)).map(e=>({id:e.resourceId,label:e.name,sublabel:e.cidr,group:this.names.label(e.accountNumber)}))});ngOnInit(){this.roleColors.ensure(),this.adminApi.listUsers().subscribe({next:t=>this.users.set(t),error:()=>this.users.set([])}),this.resourcesApi.listAll().subscribe({next:t=>this.resources.set(t),error:()=>this.resources.set([])})}constructor(){re(()=>{let t=this.group().groupId;ie(()=>{t!==this.pluginsLoadedFor&&(this.pluginsLoadedFor=t,this.pluginAssignments.set([]),this.loadPluginAssignments(t))})}),re(()=>{let t=this.group();ie(()=>{if(this.full.set(null),(t.roleCount??0)>t.roles.length){let e=++this.fullRequest;this.api.get(t.groupId).pipe(Fe(this.destroyRef)).subscribe({next:n=>e===this.fullRequest&&this.full.set(n),error:()=>{}})}})})}destroyRef=C(de);pluginsLoadedFor=null;loadPluginAssignments(t){this.pluginsOn&&this.pluginsApi.groupAssignments(t).subscribe({next:e=>this.pluginAssignments.set(e),error:()=>this.pluginAssignments.set([])})}done(t){this.busy.set(!1),this.toast.success(t),this.changed.emit()}membershipChanged(t){this.done(t),this.pluginsStore.refresh()}fail(t,e){this.busy.set(!1),this.toast.error(F(t,e))}patch(t){t.name!==void 0&&!t.name||(this.busy.set(!0),this.api.update(this.group().groupId,t).subscribe({next:()=>this.done("Saved"),error:e=>this.fail(e,"Could not save the group.")}))}addMembers(t){t.length&&(this.addingMembers.set(!1),this.busy.set(!0),this.api.addMembers(this.group().groupId,t).subscribe({next:e=>this.membershipChanged(`Added ${e} member${e===1?"":"s"}`),error:e=>this.fail(e,"Could not add members.")}))}removeMember(t){let e=this.group().members.find(n=>n.userId===t)?.email;this.busy.set(!0),this.api.removeMembers(this.group().groupId,[t]).subscribe({next:()=>this.membershipChanged(`Removed ${e||"member"}`),error:n=>this.fail(n,"Could not remove the member.")})}addRoles(t){if(!t.length)return;this.addingRoles.set(!1);let e=t.map(n=>{let i=n.indexOf("#");return{accountNumber:n.slice(0,i),roleName:n.slice(i+1)}});this.busy.set(!0),B(...e.map(n=>this.api.addRole(this.group().groupId,n))).pipe($()).subscribe({next:()=>this.done(`Added ${e.length} role${e.length===1?"":"s"}`),error:n=>this.fail(n,"Could not add the roles.")})}removeRole(t){let e=t.indexOf("#");this.busy.set(!0),this.api.removeRole(this.group().groupId,{accountNumber:t.slice(0,e),roleName:t.slice(e+1)}).subscribe({next:()=>this.done("Removed the role"),error:n=>this.fail(n,"Could not remove the role.")})}addResources(t){t.length&&(this.addingResources.set(!1),this.patch({resources:[...(this.group().resources??[]).map(e=>e.resourceId),...t]}))}removeResource(t){this.patch({resources:(this.group().resources??[]).map(e=>e.resourceId).filter(e=>e!==t)})}static \u0275fac=function(e){return new(e||o)};static \u0275cmp=S({type:o,selectors:[["app-group-detail"]],inputs:{group:[1,"group"]},outputs:{changed:"changed"},decls:31,vars:15,consts:[[1,"flex","items-start","justify-between","gap-3"],["size","lg","align","start","ariaLabel","group name",3,"save","value"],["routerLink","/admin/activity",1,"mt-1.5","inline-flex","shrink-0","items-center","gap-1","text-xs","font-medium","text-brand-text","hover:underline",3,"queryParams"],[1,"mt-1","flex","text-sm","text-muted-foreground"],["wrap","","align","start","placeholder","Add a description\u2026","ariaLabel","description",3,"save","value"],[1,"mt-5","rounded-lg","border","border-border","px-5","pb-5","pt-2.5"],[1,"-ml-1.5","px-1.5","text-xs","font-medium","text-muted-foreground"],[1,"-mt-1","mb-2","flex","justify-end"],["variant","secondary","size","sm",3,"click"],["empty","Nobody yet \u2014 add members; each gets the whole bundle.",3,"action","rows"],["empty","No roles in this bundle.",3,"action","rows"],[3,"principal","holder","assignments"],["empty","No network resources in this bundle.",3,"action","rows"],["title","Add members","placeholder","Filter by email","emptyText","Everyone is already a member.","verb","Add",3,"intro","options","busy"],["title","Add roles to the bundle","placeholder","Filter the account's roles","emptyText","Every catalogued role is already bundled.","verb","Add",3,"intro","accountSource","optionsFor","busy"],["title","Add network resources to the bundle","placeholder","Filter by resource or account","emptyText","Every resource is already bundled.","verb","Add",3,"intro","options","busy"],[3,"changed","principal","holder","assignments"],["title","Add members","placeholder","Filter by email","emptyText","Everyone is already a member.","verb","Add",3,"granted","closed","intro","options","busy"],["title","Add roles to the bundle","placeholder","Filter the account's roles","emptyText","Every catalogued role is already bundled.","verb","Add",3,"granted","closed","intro","accountSource","optionsFor","busy"],["title","Add network resources to the bundle","placeholder","Filter by resource or account","emptyText","Every resource is already bundled.","verb","Add",3,"granted","closed","intro","options","busy"]],template:function(e,n){if(e&1&&(a(0,"div",0)(1,"app-inline-edit",1),c("save",function(d){return n.patch({name:d})}),r(),a(2,"a",2),p(3,"History \u2192"),r()(),a(4,"div",3)(5,"app-inline-edit",4),c("save",function(d){return n.patch({description:d})}),r()(),a(6,"fieldset",5)(7,"legend",6),p(8),r(),a(9,"div",7)(10,"app-button",8),c("click",function(){return n.addingMembers.set(!0)}),p(11,"\uFF0B Add members"),r()(),a(12,"app-access-list",9),c("action",function(d){return n.removeMember(d)}),r()(),a(13,"fieldset",5)(14,"legend",6),p(15),r(),a(16,"div",7)(17,"app-button",8),c("click",function(){return n.addingRoles.set(!0)}),p(18,"\uFF0B Add roles"),r()(),a(19,"app-access-list",10),c("action",function(d){return n.removeRole(d)}),r()(),m(20,St,1,5,"app-plugin-access-panel",11),a(21,"fieldset",5)(22,"legend",6),p(23),r(),a(24,"div",7)(25,"app-button",8),c("click",function(){return n.addingResources.set(!0)}),p(26,"\uFF0B Add resources"),r()(),a(27,"app-access-list",12),c("action",function(d){return n.removeResource(d)}),r()(),m(28,Gt,1,3,"app-grant-dialog",13),m(29,Nt,1,4,"app-grant-dialog",14),m(30,Tt,1,3,"app-grant-dialog",15)),e&2){let i;l(),u("value",n.group().name),l(),u("queryParams",oe(13,wt,n.group().groupId)),l(3),u("value",n.group().description??""),l(3),b("Members \xB7 ",n.group().members.length),l(4),u("rows",n.memberRows()),l(3),b("Roles \xB7 ",n.group().roleCount??n.shown().roles.length),l(4),u("rows",n.roleRows()),l(),_(n.pluginsOn?20:-1),l(3),b("Network resources \xB7 ",((i=n.group().resources)==null?null:i.length)||0),l(4),u("rows",n.resourceRows()),l(),_(n.addingMembers()?28:-1),l(),_(n.addingRoles()?29:-1),l(),_(n.addingResources()?30:-1)}},dependencies:[Ce,ze,T,Ke,Qe,He],encapsulation:2})};function Ft(o,t){if(o&1&&(a(0,"p",2),p(1),r()),o&2){let e=s();l(),w(e.error())}}var Y=class o{api=C(E);toast=C(A);group=R.required();deleted=D();closed=D();busy=g(!1);error=g("");confirm(){this.error.set(""),this.busy.set(!0);let t=this.group();this.api.delete(t.groupId).subscribe({next:()=>{this.busy.set(!1),this.toast.success(`Deleted ${t.name}`),this.deleted.emit()},error:e=>{this.busy.set(!1),this.error.set(F(e,"Could not delete the group."))}})}static \u0275fac=function(e){return new(e||o)};static \u0275cmp=S({type:o,selectors:[["app-group-delete-dialog"]],inputs:{group:[1,"group"]},outputs:{deleted:"deleted",closed:"closed"},decls:12,vars:7,consts:[["title","Delete this group?",3,"closed"],["tone","danger"],[1,"mt-3","text-sm","text-danger"],[1,"mt-5","flex","justify-end","gap-2"],["variant","outline",3,"click"],["variant","danger",3,"click","loading"]],template:function(e,n){e&1&&(a(0,"app-dialog",0),c("closed",function(){return n.closed.emit()}),a(1,"app-banner",1),p(2," Deleting "),a(3,"strong"),p(4),r(),p(5),r(),m(6,Ft,2,1,"p",2),a(7,"div",3)(8,"app-button",4),c("click",function(){return n.closed.emit()}),p(9,"Cancel"),r(),a(10,"app-button",5),c("click",function(){return n.confirm()}),p(11," Delete group "),r()()()),e&2&&(l(4),w(n.group().name),l(),fe(" removes its ",n.group().roles.length," role",n.group().roles.length===1?"":"s"," from all ",n.group().members.length," member",n.group().members.length===1?"":"s"," straight away. Access they hold directly, or through another group, is untouched. "),l(),_(n.error()?6:-1),l(4),u("loading",n.busy()))},dependencies:[ye,z,T],encapsulation:2})};var Et=["panelTpl"],Dt=["form"],Mt=(o,t)=>t.groupId,Rt=(o,t)=>t.accountNumber+"#"+t.roleName,At=(o,t)=>t.resourceId;function It(o,t){if(o&1&&(a(0,"app-banner",6),p(1),r()),o&2){let e=s();l(),w(e.store.error())}}function Pt(o,t){o&1&&(a(0,"div",7),Z(1,"app-skeleton",10)(2,"app-skeleton",10)(3,"app-skeleton",10),r())}function Vt(o,t){o&1&&(a(0,"app-empty-state",8),p(1," Create one to hand a set of roles to several people in one go. "),r())}function Bt(o,t){if(o&1&&(a(0,"app-empty-state",13),p(1),r()),o&2){let e=s(2);l(),b(' Nothing matches "',e.query(),'". Try a different name, role, resource, account, or member. ')}}function $t(o,t){if(o&1&&(a(0,"p",24),p(1),r()),o&2){let e=s().$implicit;u("title",e.description),l(),b(" ",e.description," ")}}function Lt(o,t){o&1&&(a(0,"app-badge",25),p(1,"No roles"),r())}function Ot(o,t){if(o&1&&(a(0,"span",30)(1,"span",31),p(2),r(),a(3,"span",32),p(4),r()()),o&2){let e=t.$implicit,n=s(5);te("--role-c",n.roleChipColor(e)),u("title",e.roleName+" \xB7 "+n.names.label(e.accountNumber)),l(2),w(e.roleName),l(2),b("\xB7 ",n.names.label(e.accountNumber))}}function Wt(o,t){if(o&1&&(a(0,"span",29),p(1),r()),o&2){let e=s(2).$implicit,n=s(3);u("title",n.hiddenRolesTitle(e)),l(),b(" \u2026 ",(e.roleCount??e.roles.length)-2," more ")}}function qt(o,t){if(o&1&&(a(0,"div",26),G(1,Ot,5,5,"span",28,Rt),m(3,Wt,2,2,"span",29),r()),o&2){let e=s().$implicit;l(),N(e.roles.slice(0,2)),l(2),_((e.roleCount??e.roles.length)>2?3:-1)}}function jt(o,t){o&1&&(a(0,"app-badge",25),p(1,"No network resources"),r())}function zt(o,t){if(o&1&&(a(0,"span",32),p(1),r()),o&2){let e=s(6);l(),b("\xB7 ",e.names.label(t))}}function Kt(o,t){if(o&1&&(a(0,"span",34)(1,"span",31),p(2),r(),m(3,zt,2,1,"span",32),r()),o&2){let e,n=t.$implicit,i=s(5);ne(i.resourceAccount(n.resourceId)?"role-chip":"bg-muted text-surface-foreground ring-1 ring-border"),te("--role-c",i.resourceChipColor(n.resourceId)),u("title",n.name),l(2),w(n.name),l(),_((e=i.resourceAccount(n.resourceId))?3:-1,e)}}function Qt(o,t){if(o&1&&(a(0,"span",29),p(1),r()),o&2){let e=s(2).$implicit,n=s(3);u("title",n.hiddenResourcesTitle(e)),l(),b(" \u2026 ",e.resources.length-2," more ")}}function Ht(o,t){if(o&1&&(a(0,"div",26),G(1,Kt,4,7,"span",33,At),m(3,Qt,2,2,"span",29),r()),o&2){let e=s().$implicit;l(),N(e.resources.slice(0,2)),l(2),_(e.resources.length>2?3:-1)}}function Ut(o,t){if(o&1){let e=x();a(0,"div",21),c("click",function(){let i=f(e).$implicit,d=s(3);return h(d.openDetail(i))}),a(1,"div",22)(2,"p",23),p(3),r(),m(4,$t,2,2,"p",24),r(),a(5,"div",22),m(6,Lt,2,0,"app-badge",25)(7,qt,4,1,"div",26),r(),a(8,"div",22),m(9,jt,2,0,"app-badge",25)(10,Ht,4,1,"div",26),r(),a(11,"div",27),p(12),r()()}if(o&2){let e=t.$implicit,n=s(3);ne(n.panelGroupId()===e.groupId?"bg-brand/5":""),l(3),w(e.name),l(),_(e.description?4:-1),l(2),_(e.roles.length===0?6:7),l(3),_(e.resources!=null&&e.resources.length?10:9),l(3),w(e.members.length)}}function Jt(o,t){if(o&1){let e=x();a(0,"app-load-more",35),c("reached",function(){f(e);let i=s(3);return h(i.window.loadMore())}),r()}}function Xt(o,t){if(o&1&&(a(0,"div",14)(1,"div",15)(2,"div",16),p(3,"Group"),r(),a(4,"div",16),p(5,"Roles"),r(),a(6,"div",16),p(7,"Network resources"),r(),a(8,"div",16),p(9,"Members"),r()(),a(10,"div",17)(11,"div",18),G(12,Ut,13,7,"div",19,Mt),m(14,Jt,1,0,"app-load-more",20),r()()()),o&2){let e=s(2);l(12),N(e.window.items()),l(2),_(e.window.hasMore()?14:-1)}}function Yt(o,t){if(o&1){let e=x();a(0,"div",11)(1,"app-search-input",12),q("valueChange",function(i){f(e);let d=s();return W(d.query,i)||(d.query=i),h(i)}),r()(),m(2,Bt,2,1,"app-empty-state",13)(3,Xt,15,1,"div",14)}if(o&2){let e=s();l(),O("value",e.query),l(),_(e.filtered().length===0?2:3)}}function Zt(o,t){if(o&1){let e=x();a(0,"app-group-form",38,1),c("saved",function(){f(e);let i=s(2);return h(i.afterCreate())}),r()}}function en(o,t){if(o&1){let e=x();a(0,"app-group-detail",39),c("changed",function(){f(e);let i=s(3);return h(i.store.load())}),r()}o&2&&u("group",t)}function tn(o,t){if(o&1&&m(0,en,1,1,"app-group-detail",9),o&2){let e,n=s(2);_((e=n.panelGroup())?0:-1,e)}}function nn(o,t){if(o&1){let e=x();a(0,"app-button",41),c("click",function(){let i=f(e),d=s(3);return h(d.deleting.set(i))}),p(1,"Delete group"),r()}}function on(o,t){if(o&1&&m(0,nn,2,0,"app-button",40),o&2){let e,n=s(2);_((e=n.panelGroup())?0:-1,e)}}function rn(o,t){if(o&1){let e=x();a(0,"app-button",42),c("click",function(){f(e);let i=s(2);return h(i.closePanel())}),p(1,"Cancel"),r(),a(2,"app-button",43),c("click",function(){let i;f(e);let d=s(2);return h((i=d.groupFormRef())==null?null:i.save())}),p(3," Create group "),r()}if(o&2){let e,n,i=s(2);l(2),u("loading",((e=i.groupFormRef())==null?null:e.busy())??!1)("disabled",!(((n=i.groupFormRef())==null?null:n.canSave())??!1))}}function an(o,t){if(o&1){let e=x();a(0,"app-panel",36),c("closed",function(){f(e);let i=s();return h(i.closePanel())}),m(1,Zt,2,0,"app-group-form")(2,tn,1,1),me(3,37),m(4,on,1,1)(5,rn,4,2),_e(),r()}if(o&2){let e,n=s();u("title",n.panelTitle())("contentKey",n.panelKind()+":"+n.panelGroupId()),l(),_((e=n.panelKind())==="create"?1:e==="detail"?2:-1),l(3),_(n.panelKind()==="detail"?4:n.panelKind()==="create"?5:-1)}}function ln(o,t){if(o&1){let e=x();a(0,"app-group-delete-dialog",44),c("deleted",function(){f(e);let i=s();return h(i.afterDeleted())})("closed",function(){f(e);let i=s();return h(i.deleting.set(null))}),r()}o&2&&u("group",t)}var Ue=class o{store=C(H);names=C(P);roleColors=C(Q);resourcesApi=C(I);resourceAccounts=g(new Map);query=g("");panelKind=g(null);panelGroupId=g(null);panelTpl=ae("panelTpl");groupFormRef=ae("form");filtered=v(()=>{let t=this.store.groups()??[],e=this.query().trim().toLowerCase();return e?t.filter(n=>n.name.toLowerCase().includes(e)||(n.description?.toLowerCase().includes(e)??!1)||n.roles.some(i=>i.roleName.toLowerCase().includes(e)||i.accountNumber.toLowerCase().includes(e)||this.names.label(i.accountNumber).toLowerCase().includes(e))||(n.resources?.some(i=>i.name.toLowerCase().includes(e))??!1)||n.members.some(i=>i.email?.toLowerCase().includes(e))):t});window=qe(this.filtered,24);deleting=g(null);panelGroup=v(()=>(this.store.groups()??[]).find(t=>t.groupId===this.panelGroupId())??null);panelTitle=v(()=>{switch(this.panelKind()){case"create":return"New group";case"detail":return"Group info";default:return""}});openCreate(){this.panelGroupId.set(null),this.panelKind.set("create")}openDetail(t){this.panelGroupId.set(t.groupId),this.panelKind.set("detail")}closePanel(){this.panelKind.set(null),this.panelGroupId.set(null)}afterCreate(){this.closePanel(),this.store.load()}afterDeleted(){let t=this.deleting()?.groupId??null;this.deleting.set(null),t&&t===this.panelGroupId()&&this.closePanel(),this.store.load()}roleChipColor(t){return this.roleColors.colorOf(t.accountNumber,t.roleName)||V(t.accountNumber)}resourceAccount(t){return this.resourceAccounts().get(t)??null}resourceChipColor(t){let e=this.resourceAccount(t);return e?V(e):null}hiddenRolesTitle(t){return t.roles.slice(2).map(e=>e.roleName).join(", ")}hiddenResourcesTitle(t){return(t.resources??[]).slice(2).map(e=>e.name).join(", ")}constructor(){this.names.ensure(),this.roleColors.ensure(),this.store.load(),this.resourcesApi.listAll().subscribe({next:t=>this.resourceAccounts.set(new Map(t.map(e=>[e.resourceId,e.accountNumber]))),error:()=>{}}),Be(this.panelKind,this.panelTpl,()=>this.closePanel())}static \u0275fac=function(e){return new(e||o)};static \u0275cmp=S({type:o,selectors:[["app-groups-page"]],viewQuery:function(e,n){e&1&&(ee(n.panelTpl,Et,5),ee(n.groupFormRef,Dt,5)),e&2&&ge(2)},hostAttrs:[1,"flex","min-h-0","flex-1","flex-col"],decls:12,vars:5,consts:[["panelTpl",""],["form",""],[3,"fill"],["pageHeader","","title","Groups","subtitle","Bundles of roles and resources assigned together.","subtitleInfo","Adding someone to a group grants everything in it at once; removing them takes it back.",3,"showHeaderSearch"],["headerActions","","size","lg",3,"click"],["name","plus",1,"h-4","w-4",3,"strokeWidth"],["tone","danger"],[1,"space-y-2"],["title","No groups yet"],[3,"group"],["sizeClass","h-12 w-full"],[1,"mb-3","flex","shrink-0","justify-end"],["compact","","placeholder","Search by name or role",1,"w-[260px]",3,"valueChange","value"],["title","No matches"],[1,"flex","min-h-0","flex-1","flex-col","overflow-x-auto"],[1,"grid","min-w-[680px]","shrink-0","grid-cols-[220px_minmax(0,1fr)_minmax(0,1fr)_100px]"],[1,"px-4","py-2.5","text-left","ui-microlabel","text-text-secondary"],[1,"flex","min-h-0","min-w-[680px]","flex-1","flex-col","overflow-hidden","rounded-lg","border","border-border","bg-card-bg"],[1,"min-h-0","flex-1","overflow-y-auto"],["data-testid","row",1,"grid","cursor-pointer","grid-cols-[220px_minmax(0,1fr)_minmax(0,1fr)_100px]","items-start","border-t","border-border","text-sm","transition-colors","first:border-t-0","hover:bg-muted",3,"class"],["appInfiniteScroll",""],["data-testid","row",1,"grid","cursor-pointer","grid-cols-[220px_minmax(0,1fr)_minmax(0,1fr)_100px]","items-start","border-t","border-border","text-sm","transition-colors","first:border-t-0","hover:bg-muted",3,"click"],[1,"px-4","py-3"],[1,"font-medium","tracking-[0.015em]","text-surface-foreground"],[1,"mt-0.5","line-clamp-1","text-xs","text-muted-foreground",3,"title"],["tone","dashed"],[1,"flex","flex-wrap","gap-1.5"],[1,"px-4","py-3","tabular-nums"],[1,"inline-flex","max-w-full","items-center","overflow-hidden","whitespace-nowrap","rounded-full","px-2","py-0.5","text-xs","font-medium","role-chip",3,"--role-c","title"],[1,"inline-flex","items-center","rounded-full","bg-muted","px-2","py-0.5","text-xs","text-muted-foreground","ring-1","ring-border",3,"title"],[1,"inline-flex","max-w-full","items-center","overflow-hidden","whitespace-nowrap","rounded-full","px-2","py-0.5","text-xs","font-medium","role-chip",3,"title"],[1,"min-w-0","truncate"],[1,"ml-1","min-w-0","shrink-[60]","truncate","text-muted-foreground"],[1,"inline-flex","max-w-full","items-center","overflow-hidden","whitespace-nowrap","rounded-full","px-2","py-0.5","text-xs","font-medium",3,"class","--role-c","title"],[1,"inline-flex","max-w-full","items-center","overflow-hidden","whitespace-nowrap","rounded-full","px-2","py-0.5","text-xs","font-medium",3,"title"],["appInfiniteScroll","",3,"reached"],["size","lg",3,"closed","title","contentKey"],["ngProjectAs","[panel-footer]",5,["","panel-footer",""]],[3,"saved"],[3,"changed","group"],["size","lg","variant","danger"],["size","lg","variant","danger",3,"click"],["size","lg","variant","outline",3,"click"],["size","lg",3,"click","loading","disabled"],[3,"deleted","closed","group"]],template:function(e,n){if(e&1){let i=x();a(0,"app-page",2)(1,"app-page-header",3)(2,"app-button",4),c("click",function(){return f(i),h(n.openCreate())}),Z(3,"app-icon",5),p(4," New group "),r()(),m(5,It,2,1,"app-banner",6)(6,Pt,4,0,"div",7)(7,Vt,2,0,"app-empty-state",8)(8,Yt,4,2),r(),ce(9,an,6,4,"ng-template",null,0,he),m(11,ln,1,1,"app-group-delete-dialog",9)}if(e&2){let i;u("fill",!0),l(),u("showHeaderSearch",!1),l(2),u("strokeWidth",2),l(2),_(n.store.error()?5:n.store.groups()===null?6:n.store.groups().length===0?7:8),l(6),_((i=n.deleting())?11:-1,i)}},dependencies:[ve,z,T,Ve,be,Re,K,Le,J,X,Y,Ae,Oe,We,$e],encapsulation:2})};export{H as a,Ue as b};
|