@microsoft/dev-tunnels-management 1.0.7316-gf98d631190
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/index.d.ts +5 -0
- package/index.d.ts.map +1 -0
- package/index.js +19 -0
- package/index.js.map +1 -0
- package/package.json +17 -0
- package/tsbuildinfo.json +1 -0
- package/tunnelAccessTokenProperties.d.ts +44 -0
- package/tunnelAccessTokenProperties.d.ts.map +1 -0
- package/tunnelAccessTokenProperties.js +139 -0
- package/tunnelAccessTokenProperties.js.map +1 -0
- package/tunnelManagementClient.d.ts +133 -0
- package/tunnelManagementClient.d.ts.map +1 -0
- package/tunnelManagementClient.js +15 -0
- package/tunnelManagementClient.js.map +1 -0
- package/tunnelManagementHttpClient.d.ts +93 -0
- package/tunnelManagementHttpClient.d.ts.map +1 -0
- package/tunnelManagementHttpClient.js +574 -0
- package/tunnelManagementHttpClient.js.map +1 -0
- package/tunnelRequestOptions.d.ts +69 -0
- package/tunnelRequestOptions.d.ts.map +1 -0
- package/tunnelRequestOptions.js +5 -0
- package/tunnelRequestOptions.js.map +1 -0
- package/version.d.ts +5 -0
- package/version.d.ts.map +1 -0
- package/version.js +13 -0
- package/version.js.map +1 -0
package/README.md
ADDED
package/index.d.ts
ADDED
package/index.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/management/index.ts"],"names":[],"mappings":"AAGA,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,+BAA+B,CAAC"}
|
package/index.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright (c) Microsoft Corporation.
|
|
3
|
+
// Licensed under the MIT license.
|
|
4
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
5
|
+
if (k2 === undefined) k2 = k;
|
|
6
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
7
|
+
}) : (function(o, m, k, k2) {
|
|
8
|
+
if (k2 === undefined) k2 = k;
|
|
9
|
+
o[k2] = m[k];
|
|
10
|
+
}));
|
|
11
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
12
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
__exportStar(require("./tunnelManagementHttpClient"), exports);
|
|
16
|
+
__exportStar(require("./tunnelManagementClient"), exports);
|
|
17
|
+
__exportStar(require("./tunnelRequestOptions"), exports);
|
|
18
|
+
__exportStar(require("./tunnelAccessTokenProperties"), exports);
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
package/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/management/index.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;;;;;;;;;;AAElC,+DAA6C;AAC7C,2DAAyC;AACzC,yDAAuC;AACvC,gEAA8C"}
|
package/package.json
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@microsoft/dev-tunnels-management",
|
|
3
|
+
"version": "1.0.7316-gf98d631190",
|
|
4
|
+
"description": "Tunnels library for Visual Studio tools",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"Tunnels"
|
|
7
|
+
],
|
|
8
|
+
"dependencies": {
|
|
9
|
+
"buffer": "^5.2.1",
|
|
10
|
+
"debug": "^4.1.1",
|
|
11
|
+
"vscode-jsonrpc": "^4.0.0",
|
|
12
|
+
"@microsoft/dev-tunnels-contracts": "^1.0.0",
|
|
13
|
+
"axios": "^0.21.1"
|
|
14
|
+
},
|
|
15
|
+
"author": "Microsoft",
|
|
16
|
+
"main": "./index.js"
|
|
17
|
+
}
|
package/tsbuildinfo.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"program":{"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../contracts/tunnelAccessControlEntryType.d.ts","../contracts/tunnelAccessControlEntry.d.ts","../contracts/tunnelAccessControlStatics.d.ts","../contracts/tunnelAccessControl.d.ts","../contracts/tunnelConnectionMode.d.ts","../contracts/tunnelEndpointStatics.d.ts","../contracts/tunnelEndpoint.d.ts","../contracts/tunnelOptions.d.ts","../contracts/resourceStatus.d.ts","../contracts/rateStatus.d.ts","../contracts/tunnelPortStatus.d.ts","../contracts/tunnelPort.d.ts","../contracts/tunnelStatus.d.ts","../contracts/tunnel.d.ts","../contracts/problemDetails.d.ts","../contracts/tunnelAccessScopes.d.ts","../contracts/tunnelHeaderNames.d.ts","../contracts/tunnelProtocol.d.ts","../contracts/tunnelRelayTunnelEndpoint.d.ts","../contracts/tunnelServicePropertiesStatics.d.ts","../contracts/tunnelServiceProperties.d.ts","../contracts/clusterDetails.d.ts","../contracts/index.d.ts","../../../src/management/tunnelRequestOptions.ts","../../../src/management/tunnelManagementClient.ts","../../../src/management/tunnelAccessTokenProperties.ts","../../../src/management/package.json","../../../src/management/version.ts","../../../node_modules/axios/index.d.ts","../../../src/management/tunnelManagementHttpClient.ts","../../../src/management/index.ts","../../../node_modules/@types/ms/index.d.ts","../../../node_modules/@types/debug/index.d.ts","../../../node_modules/@types/events/index.d.ts","../../../node_modules/@types/json-schema/index.d.ts","../../../node_modules/@types/mocha/index.d.ts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/globals.d.ts","../../../node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/node/console.d.ts","../../../node_modules/@types/node/constants.d.ts","../../../node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/node/dns.d.ts","../../../node_modules/@types/node/domain.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/http2.d.ts","../../../node_modules/@types/node/https.d.ts","../../../node_modules/@types/node/inspector.d.ts","../../../node_modules/@types/node/module.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/@types/node/os.d.ts","../../../node_modules/@types/node/path.d.ts","../../../node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/node/process.d.ts","../../../node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/node/readline.d.ts","../../../node_modules/@types/node/repl.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/node/timers.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/node/tty.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/util.d.ts","../../../node_modules/@types/node/v8.d.ts","../../../node_modules/@types/node/vm.d.ts","../../../node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/node/globals.global.d.ts","../../../node_modules/@types/node/index.d.ts","../../../node_modules/@types/tmp/index.d.ts","../../../node_modules/@types/uuid/interfaces.d.ts","../../../node_modules/@types/uuid/index.d.ts","../../../node_modules/@types/websocket/index.d.ts","../../../node_modules/@types/yargs-parser/index.d.ts","../../../node_modules/@types/yargs/index.d.ts"],"fileInfos":[{"version":"aa9fb4c70f369237c2f45f9d969c9a59e0eae9a192962eb48581fe864aa609db","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06",{"version":"e54c8715a4954cfdc66cd69489f2b725c09ebf37492dbd91cff0a1688b1159e8","affectsGlobalScope":true},{"version":"51b8b27c21c066bf877646e320bf6a722b80d1ade65e686923cd9d4494aef1ca","affectsGlobalScope":true},{"version":"43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"2c8c5ee58f30e7c944e04ab1fb5506fdbb4dd507c9efa6972cf4b91cec90c503","affectsGlobalScope":true},{"version":"2bb4b3927299434052b37851a47bf5c39764f2ba88a888a107b32262e9292b7c","affectsGlobalScope":true},{"version":"810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357","affectsGlobalScope":true},{"version":"62d80405c46c3f4c527ee657ae9d43fda65a0bf582292429aea1e69144a522a6","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"75ec0bdd727d887f1b79ed6619412ea72ba3c81d92d0787ccb64bab18d261f14","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"1b3fe904465430e030c93239a348f05e1be80640d91f2f004c3512c2c2c89f34","affectsGlobalScope":true},{"version":"4632665b87204bb1caa8b44d165bce0c50dfab177df5b561b345a567cabacf9a","affectsGlobalScope":true},"0631af7a01d5c038c926e4995b90e960c8dfb334aa832f1ae17731cf10dba7b8","9632ce3e07841a8586a2797f53e50d9d9f41624b370897b623462b74f121de1b","ed131ca0aa394f683cda8478ebd893f46554c2df17b45409b1d0ed13964f885b","0fbd13b4e3f8932b9fb1cf5841d46e629d94744058ef8d7445df0d74b7890896","35e49678ec00b2f77eff897d3eb7131f3f0ba185278125a495fd021a1f65ce68","0731e7b6a6dbd598e361b43c61274382aa12f3f2310cd2be1af2217a9d7a3194","6a380ac028bd32f0a9375cfb999c82657c590b4ec4efb7a71beb4b1c415807df","45a78370cbc613acf93aa8dd6cea0af90afcb11b563ac28cf56fdc446abc1047","417ac52308354a219d84c410033fd308ff9d1a425d0d4ac74dd8f92237665da0","889f328442cbe9ff5a5d3b2037bbc6e7a14bbe54ebe060f01a596023896be276","25f49e92b42a4e8ff69a8f3c3ad941038e14b1db1979d4f4e8f15dafd89d14a3","535221761b4bc367838ff688e51434dc165984d3cd5a68401434cedc202390ec","cd44627c13f1e74aca2b8c84ed580e4ba370af0aaf1f45193debc1006c8d2151","64faaeba77655eea535737e774812f988ff219165d90226f49d0050cb0e9cade","a76e9101aa9359690a697c9cdaef16e5ae5a3340683558716d6cf34f05407881","884bc4095e0e65711caf80c792e4094f2d3ea25bc4a16f6bd6827627f21ceaed","ac30651f6fefab3e66a3ae3d342c3388e8c0802b74a97a523e7e69a7af6fd91d","4bdcba92cfa9c33db4119043105ba9a4be26328b4157302c9260ce94fc2e1317","a5d88d0548bb5b5b8d20976e45bb31d13b1153b9dac8b6abdf005dd05e0d4309","4e77675d511f9fdea854f4261f319481466d3253de25da8c9c968c5d951dbc48","a303090c5df80577a00c82faabe1b504ba174797c9bcd6c88a3b3d3f88aafd38","7a7ee7def2f98061225cc5ca12a585ab8bb68f0fd97473688faf61496a1132b6","5cceae61719c9cfda90dbd082b4b89016162fe66713549f8a9122b5a6294b9f3","e3cd249c151f346800941cac96685362db9dc7e604df670865edfad8f8316ca5","654076d8add7688027f6fa19955a82af4f480ae26572deffced3a44726d323db","43e9a746b58fa1732cb046ce8053be06d904f7cbba1e34a8bb9ca3fad21bf0e5","a3bff5a25c152fc17092b39e81ffc55bef28b14828809b9661173a3e214ee6f8","5b2d0771f5dc94b9f99e941679650105f8a65e26f0f2aafd5e68fd83b29a6e41","3154a026075044aa102298fe9e6a7a14aaa26a06270680c7478a1765af8ffb09","bfc76d73a81146393d50ac2bce28e1e97889a9e57f1abb8d70e42790b6fb5ddf","32f45e7145971b25949a765abce0b313e6a79bd85b2cc4ab543b58df39c1a4df","6a9c5127096b35264eb7cd21b2417bfc1d42cceca9ba4ce2bb0c3410b7816042","78828b06c0d3b586954015e9ebde5480b009e166c71244763bda328ec0920f41","400db42c3a46984118bff14260d60cec580057dc1ab4c2d7310beb643e4f5935","0359682c54e487c4cab2b53b2b4d35cc8dea4d9914bc6abcdb5701f8b8e745a4",{"version":"c4c03cf65951d980ba618ae9601d10438730803fc9c8a1f7b34af8739981e205","affectsGlobalScope":true},"0ce65cf5b36034006f2b315f379179f07bd5a6027f6538c7aed4ac5be6742fc7",{"version":"23533216d80ee2a361476d23848e89e9e448243efd39c866d7aa45f749e1f10c","affectsGlobalScope":true},"0721418a90edc5fca466672f266ab6de12cb50a9db29998fc58765481a3c82ef","97b39f33e966bcf9762bccdaca76c94825199f3fef153ebea9bdfd3fcd2413b6","029ac7b8f8e02c0932ed881aac7321a65064d6bc84964d8fa3c5ab36f18d8a80","c41eff6b8e1f91104ae974ccd2bc37c723a462b30ca1df942b2c5b0158ef1df3","2e341737e0711c12040e83047487240b1693a6774253b8142d1a0500a805b7a1","e08e97c2865750e880fea09b150a702ccfa84163382daa0221f5597185a554bf","7ec6b45fc1f5f012ac226b44d0eeaf5a0e90947431ad7c6d1f244ba080b2870d","cb9602b051a0cb72e2a77160f95315cd3a51521d79bc53c6baa9e7b9afcaba17","8296198bc72e7ef2221b0e140738ce56004e8d1323cd08b0ac1a15295fe911b5","baeda1fadac9fd31920480b85340ab9c4266a25ad08403dee8e15fd0751101fb","12c4e8e811f4310b0dcaa3d1f843a35dc985f78941886cad4950453ad6753959","c4a89c5697132de27809abfb629c0f0add74b4592405f28af8909830390cab85","31544b63117232151ea2268088a7045a2acda55c091e489053803bfa8ed07bd2","318e46e7f7893360bf389abd8e33259a81a424038163a11493c4f2771e5645fe","a3586135924c800f21f739a1da43acace1acfdba124deb0871cbd6d04d7dfd1b","afe65de64262cec0469be9d7b93e751f52125aacd1ab600fbbd79b829a8e30d7","4ec74fe565d13fd219884cfacf903c89477cc54148887e51c5bead4dae7dc4fd","64bac41b1ecd4578543db0c244addd3fa59ada4cedd6e761cdae0e2fc2e340f2","a46d8aa9e561fb135d253e1657a0cd0f6c18377676305eb0ca28e418358b229c","5a168a15e7a423011b10da472ee3b6d92b27227c192cdaf1e09b30f58806856d","ad107fa472d28e615af522b31653e75caad12b834b257c1a83f6c4acff2de9bf",{"version":"07cfc938dfbb5a7b5ba3c363366db93d5728b0fcad1aa08a12052a1b3b72817a","affectsGlobalScope":true},"7f77304372efe3c9967e5f9ea2061f1b4bf41dc3cda3c83cdd676f2e5af6b7e6","67cf04da598e6407427a17d828e9e02d8f5ae5a8466dc73d1585073b8dc29160","d2df4329291a761edc8ebf536b1ff2179aa8871d55ae65a0bd74a44586a84f3e","140b05c89cbd5fc75c4e9c1780d85dfb4ea73a2b11dd345f8f944afd002ad74f","5019dc3aca34da91b66286bf0e906d229f02d835e68cd99e282cb70aba1b2f97","5b0df2143d96172bf207ed187627e8c58b15a1a8f97bdbc2ede942b36b39fc98","75409a3abea76ea586c6fb7f2e9f1a7dc007140e2d4ee26ab127735c4f9154e4","e4cd1b0962728076cb75389e6afe280342da5258347210ae04665ba9095dc6c4","7df562288f949945cf69c21cd912100c2afedeeb7cdb219085f7f4b46cb7dde4","9d16690485ff1eb4f6fc57aebe237728fd8e03130c460919da3a35f4d9bd97f5","807bf667365224f909aed5111ac8527e8e148f37fc73c61f70c762b920fb62c7","3d87bdaed72f86b91f99401e6e04729afbb5916064778cf324b3d9b51c3a6d91","8ca837d16a31d6d01b13328ca9e6a39e424b4bf294d3b73349dccacea51be730","a9d40247ec6c68a47effbb1d8acd8df288bcee7b6bf29c17cf4161e5ef609a0c","caf38c850b924a0af08a893d06f68fcae3d5a41780b50cc6df9481beeca8e9a3","7152c46a63e7f9ac7db6cd8d4dbf85d90f051a0db60e650573fae576580cbf9a","496370c58ed054e51a68517846c28a695bf84df2873556cca7fe51e297b32420",{"version":"2708349d5a11a5c2e5f3a0765259ebe7ee00cdcc8161cb9990cb4910328442a1","affectsGlobalScope":true},"763a53af78c82d989191758ea6e5541deb4724e49c44117dac773832c503e399","e2e10045d93d3b029dcd62784bafb7200d4eb51b1ef6a98b77baa763b9a5e1d3","4116dff2582ecc8645c3a90d26707ec6fd9ede6631f63fb65f11d42806bb47f1","8486ee0cb2ef80c6555941e2e0d081b27e9a07eca9df720c99f001f5220f14b5","6e40a3a87126255d4c1aa4d613923b6e3c5c28273d018a8591af338232f393ab","f7e133b20ee2669b6c0e5d7f0cd510868c57cd64b283e68c7f598e30ce9d76d2","f5eeb7afb84f4e74ed655e5bf5455b7b192ee3d79cc8e869ce854fd5f554d2b5"],"options":{"composite":true,"declaration":true,"declarationMap":true,"experimentalDecorators":true,"module":1,"outDir":"./","rootDir":"../../../src/management","sourceMap":true,"strict":true,"stripInternal":true,"target":4,"tsBuildInfoFile":"./tsbuildinfo.json"},"fileIdsList":[[60],[77,84,93],[69,77,84],[93],[75,77,84],[77],[77,93,99],[84,93,99],[77,78,79,84,93,96,99],[79,93,96,99],[65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106],[75,77,93],[67],[98],[91,100,102],[84],[90],[77,78,93,102],[109],[77,79,81,84,99,107],[112],[29,30,32,33,35,36,39,40,41,42,43,44,45,46,47,49,50],[37],[32,35,36,40,41],[30,31],[29],[33,34],[35],[32,36,39],[37,38],[48],[49],[52,53,54,58],[51],[51,52,81],[51,52,53,54,56,57,81],[55]],"referencedMap":[[61,1],[69,2],[70,3],[73,4],[74,5],[76,6],[77,6],[78,7],[79,8],[80,9],[81,10],[107,11],[82,6],[84,12],[87,13],[88,14],[91,6],[92,15],[93,6],[96,16],[98,16],[99,17],[101,4],[104,18],[105,4],[110,19],[111,20],[113,21],[51,22],[38,23],[42,24],[32,25],[30,26],[35,27],[34,28],[40,29],[39,30],[47,28],[49,31],[48,32],[41,30],[59,33],[54,34],[53,35],[58,36],[56,37]],"exportedModulesMap":[[61,1],[69,2],[70,3],[73,4],[74,5],[76,6],[77,6],[78,7],[79,8],[80,9],[81,10],[107,11],[82,6],[84,12],[87,13],[88,14],[91,6],[92,15],[93,6],[96,16],[98,16],[99,17],[101,4],[104,18],[105,4],[110,19],[111,20],[113,21],[51,22],[38,23],[42,24],[32,25],[30,26],[35,27],[34,28],[40,29],[39,30],[47,28],[49,31],[48,32],[41,30],[59,33],[54,34],[53,35],[58,36],[56,37]],"semanticDiagnosticsPerFile":[61,62,63,64,60,65,67,68,69,70,71,72,73,74,75,76,77,78,66,106,79,80,81,107,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,108,110,109,111,112,113,57,6,8,7,2,9,10,11,12,13,14,15,16,3,4,20,17,18,19,21,22,23,5,24,25,26,27,1,28,50,51,43,38,37,42,32,30,29,31,44,33,35,34,45,36,40,39,46,47,49,48,41,59,55,54,53,58,52,56]},"version":"4.4.2"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { Tunnel } from '@microsoft/dev-tunnels-contracts';
|
|
2
|
+
/**
|
|
3
|
+
* Supports parsing tunnel access token JWT properties to allow for some pre-validation
|
|
4
|
+
* and diagnostics.
|
|
5
|
+
*
|
|
6
|
+
* Applications generally should not attempt to interpret or rely on any token properties
|
|
7
|
+
* other than `expiration`, because the service may change or omit those claims in the future.
|
|
8
|
+
* Other claims are exposed here only for diagnostic purposes.
|
|
9
|
+
*/
|
|
10
|
+
export declare class TunnelAccessTokenProperties {
|
|
11
|
+
clusterId?: string;
|
|
12
|
+
tunnelId?: string;
|
|
13
|
+
tunnelPort?: number;
|
|
14
|
+
scp?: string;
|
|
15
|
+
iss?: string;
|
|
16
|
+
exp?: number;
|
|
17
|
+
toString(): string;
|
|
18
|
+
/**
|
|
19
|
+
* Checks if the tunnel access token expiration claim is in the past.
|
|
20
|
+
*
|
|
21
|
+
* (Does not throw if the token is an invalid format.)
|
|
22
|
+
*/
|
|
23
|
+
static validateTokenExpiration(token: string): void;
|
|
24
|
+
/**
|
|
25
|
+
* Attempts to parse a tunnel access token (JWT). This does NOT validate the token
|
|
26
|
+
* signature or any claims.
|
|
27
|
+
*/
|
|
28
|
+
static tryParse(token: string): TunnelAccessTokenProperties | null;
|
|
29
|
+
/**
|
|
30
|
+
* Gets the tunnal access token trace string.
|
|
31
|
+
* 'none' if null or undefined, parsed token info if can be parsed, or 'token' if cannot be parsed.
|
|
32
|
+
*/
|
|
33
|
+
static getTokenTrace(token?: string | null | undefined): string;
|
|
34
|
+
/**
|
|
35
|
+
* Gets a tunnel access token that matches any of the provided access token scopes.
|
|
36
|
+
* Validates token expiration if the token is found and throws an error if it's expired.
|
|
37
|
+
* @param tunnel The tunnel to get the access tokens from.
|
|
38
|
+
* @param accessTokenScopes What scopes the token needs to have.
|
|
39
|
+
* @returns Tunnel access token if found; otherwise, undefined.
|
|
40
|
+
*/
|
|
41
|
+
static getTunnelAccessToken(tunnel?: Tunnel, accessTokenScopes?: string | string[]): string | undefined;
|
|
42
|
+
private static base64UrlDecode;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=tunnelAccessTokenProperties.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tunnelAccessTokenProperties.d.ts","sourceRoot":"","sources":["../../../src/management/tunnelAccessTokenProperties.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAE1D;;;;;;;GAOG;AACH,qBAAa,2BAA2B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,QAAQ,IAAI,MAAM;IAyCzB;;;;OAIG;WACW,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAU1D;;;OAGG;WACW,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,2BAA2B,GAAG,IAAI;IAuBzE;;;OAGG;WACW,aAAa,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM;IAItE;;;;;;OAMG;WACW,oBAAoB,CAC9B,MAAM,CAAC,EAAE,MAAM,EACf,iBAAiB,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GACtC,MAAM,GAAG,SAAS;IAoBrB,OAAO,CAAC,MAAM,CAAC,eAAe;CAcjC"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright (c) Microsoft Corporation.
|
|
3
|
+
// Licensed under the MIT license.
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.TunnelAccessTokenProperties = void 0;
|
|
6
|
+
/**
|
|
7
|
+
* Supports parsing tunnel access token JWT properties to allow for some pre-validation
|
|
8
|
+
* and diagnostics.
|
|
9
|
+
*
|
|
10
|
+
* Applications generally should not attempt to interpret or rely on any token properties
|
|
11
|
+
* other than `expiration`, because the service may change or omit those claims in the future.
|
|
12
|
+
* Other claims are exposed here only for diagnostic purposes.
|
|
13
|
+
*/
|
|
14
|
+
class TunnelAccessTokenProperties {
|
|
15
|
+
toString() {
|
|
16
|
+
let s = '';
|
|
17
|
+
if (this.tunnelId) {
|
|
18
|
+
s += 'tunnel=';
|
|
19
|
+
s += this.tunnelId;
|
|
20
|
+
if (this.clusterId) {
|
|
21
|
+
s += '.';
|
|
22
|
+
s += this.clusterId;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
if (typeof this.tunnelPort === 'number') {
|
|
26
|
+
if (s.length > 0)
|
|
27
|
+
s += ', ';
|
|
28
|
+
s += 'port=';
|
|
29
|
+
s += this.tunnelPort;
|
|
30
|
+
}
|
|
31
|
+
if (this.scp) {
|
|
32
|
+
if (s.length > 0)
|
|
33
|
+
s += ', ';
|
|
34
|
+
const scopes = this.scp.split(' ');
|
|
35
|
+
s += `scopes=[${scopes.join(', ')}]`;
|
|
36
|
+
}
|
|
37
|
+
if (this.iss) {
|
|
38
|
+
if (s.length > 0)
|
|
39
|
+
s += ', ';
|
|
40
|
+
s += 'issuer=';
|
|
41
|
+
s += this.iss;
|
|
42
|
+
}
|
|
43
|
+
if (this.exp) {
|
|
44
|
+
if (s.length > 0)
|
|
45
|
+
s += ', ';
|
|
46
|
+
const expiration = new Date(this.exp * 1000);
|
|
47
|
+
s += 'expiration=';
|
|
48
|
+
s += expiration.toString().replace('.000Z', 'Z');
|
|
49
|
+
}
|
|
50
|
+
return s;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Checks if the tunnel access token expiration claim is in the past.
|
|
54
|
+
*
|
|
55
|
+
* (Does not throw if the token is an invalid format.)
|
|
56
|
+
*/
|
|
57
|
+
static validateTokenExpiration(token) {
|
|
58
|
+
const t = TunnelAccessTokenProperties.tryParse(token);
|
|
59
|
+
if (typeof (t === null || t === void 0 ? void 0 : t.exp) === 'number') {
|
|
60
|
+
const expiration = new Date(t.exp * 1000);
|
|
61
|
+
if (expiration < new Date()) {
|
|
62
|
+
throw new Error('The access token is expired: ' + t);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Attempts to parse a tunnel access token (JWT). This does NOT validate the token
|
|
68
|
+
* signature or any claims.
|
|
69
|
+
*/
|
|
70
|
+
static tryParse(token) {
|
|
71
|
+
if (typeof token !== 'string')
|
|
72
|
+
throw new TypeError('Token string expected.');
|
|
73
|
+
// JWTs are encoded in 3 parts: header, body, and signature.
|
|
74
|
+
const tokenParts = token.split('.');
|
|
75
|
+
if (tokenParts.length !== 3) {
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
const tokenBodyJson = TunnelAccessTokenProperties.base64UrlDecode(tokenParts[1]);
|
|
79
|
+
if (!tokenBodyJson) {
|
|
80
|
+
return null;
|
|
81
|
+
}
|
|
82
|
+
try {
|
|
83
|
+
const result = new TunnelAccessTokenProperties();
|
|
84
|
+
Object.assign(result, JSON.parse(tokenBodyJson));
|
|
85
|
+
return result;
|
|
86
|
+
}
|
|
87
|
+
catch (_a) {
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Gets the tunnal access token trace string.
|
|
93
|
+
* 'none' if null or undefined, parsed token info if can be parsed, or 'token' if cannot be parsed.
|
|
94
|
+
*/
|
|
95
|
+
static getTokenTrace(token) {
|
|
96
|
+
var _a, _b;
|
|
97
|
+
return !token ? 'none' : (_b = (_a = TunnelAccessTokenProperties.tryParse(token)) === null || _a === void 0 ? void 0 : _a.toString()) !== null && _b !== void 0 ? _b : 'token';
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Gets a tunnel access token that matches any of the provided access token scopes.
|
|
101
|
+
* Validates token expiration if the token is found and throws an error if it's expired.
|
|
102
|
+
* @param tunnel The tunnel to get the access tokens from.
|
|
103
|
+
* @param accessTokenScopes What scopes the token needs to have.
|
|
104
|
+
* @returns Tunnel access token if found; otherwise, undefined.
|
|
105
|
+
*/
|
|
106
|
+
static getTunnelAccessToken(tunnel, accessTokenScopes) {
|
|
107
|
+
if (!(tunnel === null || tunnel === void 0 ? void 0 : tunnel.accessTokens) || !accessTokenScopes) {
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
if (!Array.isArray(accessTokenScopes)) {
|
|
111
|
+
accessTokenScopes = [accessTokenScopes];
|
|
112
|
+
}
|
|
113
|
+
for (let scope of accessTokenScopes) {
|
|
114
|
+
for (let [key, accessToken] of Object.entries(tunnel.accessTokens)) {
|
|
115
|
+
// Each key may be either a single scope or space-delimited list of scopes.
|
|
116
|
+
if (accessToken && key.split(' ').includes(scope)) {
|
|
117
|
+
TunnelAccessTokenProperties.validateTokenExpiration(accessToken);
|
|
118
|
+
return accessToken;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
static base64UrlDecode(encodedString) {
|
|
124
|
+
// Convert from base64url encoding to base64 encoding: replace chars and add padding.
|
|
125
|
+
encodedString = encodedString.replace('-', '+');
|
|
126
|
+
while (encodedString.length % 4 !== 0) {
|
|
127
|
+
encodedString += '=';
|
|
128
|
+
}
|
|
129
|
+
try {
|
|
130
|
+
const result = atob(encodedString);
|
|
131
|
+
return result;
|
|
132
|
+
}
|
|
133
|
+
catch (_a) {
|
|
134
|
+
return null;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
exports.TunnelAccessTokenProperties = TunnelAccessTokenProperties;
|
|
139
|
+
//# sourceMappingURL=tunnelAccessTokenProperties.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tunnelAccessTokenProperties.js","sourceRoot":"","sources":["../../../src/management/tunnelAccessTokenProperties.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { ClusterDetails, Tunnel, TunnelConnectionMode, TunnelEndpoint, TunnelPort } from '@microsoft/dev-tunnels-contracts';
|
|
3
|
+
import { TunnelRequestOptions } from './tunnelRequestOptions';
|
|
4
|
+
import * as https from 'https';
|
|
5
|
+
/**
|
|
6
|
+
* Interface for a client that manages tunnels and tunnel ports
|
|
7
|
+
* via the tunnel service management API.
|
|
8
|
+
*/
|
|
9
|
+
export interface TunnelManagementClient {
|
|
10
|
+
/**
|
|
11
|
+
* Override https agent for axios requests.
|
|
12
|
+
*/
|
|
13
|
+
httpsAgent?: https.Agent;
|
|
14
|
+
/**
|
|
15
|
+
* Lists tunnels that are owned by the caller.
|
|
16
|
+
*
|
|
17
|
+
* The list can be filtered by setting `TunnelRequestOptions.tags`. Ports will not be
|
|
18
|
+
* included in the returned tunnels unless `TunnelRequestOptions.includePorts` is set to true.
|
|
19
|
+
*
|
|
20
|
+
* @param clusterId A tunnel cluster ID, or null to list tunnels globally.
|
|
21
|
+
* @param domain Tunnel domain, or null for the default domain.
|
|
22
|
+
* @param options Request options.
|
|
23
|
+
*/
|
|
24
|
+
listTunnels(clusterId?: string, domain?: string, options?: TunnelRequestOptions): Promise<Tunnel[]>;
|
|
25
|
+
/**
|
|
26
|
+
* Gets one tunnel by ID or name.
|
|
27
|
+
*
|
|
28
|
+
* Ports will not be included in the returned tunnel unless `TunnelRequestOptions.includePorts`
|
|
29
|
+
* is set to true.
|
|
30
|
+
*
|
|
31
|
+
* @param tunnel Tunnel object including at least either a tunnel name (globally unique,
|
|
32
|
+
* if configured) or tunnel ID and cluster ID.
|
|
33
|
+
* @param options Request options.
|
|
34
|
+
*/
|
|
35
|
+
getTunnel(tunnel: Tunnel, options?: TunnelRequestOptions): Promise<Tunnel | null>;
|
|
36
|
+
/**
|
|
37
|
+
* Creates a tunnel.
|
|
38
|
+
* @param tunnel
|
|
39
|
+
* @param options
|
|
40
|
+
*/
|
|
41
|
+
createTunnel(tunnel: Tunnel, options?: TunnelRequestOptions): Promise<Tunnel>;
|
|
42
|
+
/**
|
|
43
|
+
* Updates properties of a tunnel.
|
|
44
|
+
* @param tunnel
|
|
45
|
+
* @param options
|
|
46
|
+
*/
|
|
47
|
+
updateTunnel(tunnel: Tunnel, options?: TunnelRequestOptions): Promise<Tunnel>;
|
|
48
|
+
/**
|
|
49
|
+
* Deletes a tunnel.
|
|
50
|
+
* @param tunnel
|
|
51
|
+
* @param options
|
|
52
|
+
*/
|
|
53
|
+
deleteTunnel(tunnel: Tunnel, options?: TunnelRequestOptions): Promise<boolean>;
|
|
54
|
+
/**
|
|
55
|
+
* Creates or updates an endpoint for the tunnel.
|
|
56
|
+
* @param tunnel
|
|
57
|
+
* @param endpoint
|
|
58
|
+
* @param options
|
|
59
|
+
*/
|
|
60
|
+
updateTunnelEndpoint(tunnel: Tunnel, endpoint: TunnelEndpoint, options?: TunnelRequestOptions): Promise<TunnelEndpoint>;
|
|
61
|
+
/**
|
|
62
|
+
* Deletes a tunnel endpoint.
|
|
63
|
+
* @param tunnel
|
|
64
|
+
* @param hostId
|
|
65
|
+
* @param connectionMode
|
|
66
|
+
* @param options
|
|
67
|
+
*/
|
|
68
|
+
deleteTunnelEndpoints(tunnel: Tunnel, hostId: string, connectionMode?: TunnelConnectionMode, options?: TunnelRequestOptions): Promise<boolean>;
|
|
69
|
+
/**
|
|
70
|
+
* Lists ports on a tunnel.
|
|
71
|
+
*
|
|
72
|
+
* The list can be filtered by setting `TunnelRequestOptions.tags`.
|
|
73
|
+
*
|
|
74
|
+
* @param tunnel Tunnel object including at least either a tunnel name (globally unique,
|
|
75
|
+
* if configured) or tunnel ID and cluster ID.
|
|
76
|
+
* @param options Request options.
|
|
77
|
+
*/
|
|
78
|
+
listTunnelPorts(tunnel: Tunnel, options?: TunnelRequestOptions): Promise<TunnelPort[]>;
|
|
79
|
+
/**
|
|
80
|
+
* Gets one port on a tunnel by port number.
|
|
81
|
+
* @param tunnel
|
|
82
|
+
* @param portNumber
|
|
83
|
+
* @param options
|
|
84
|
+
*/
|
|
85
|
+
getTunnelPort(tunnel: Tunnel, portNumber: number, options?: TunnelRequestOptions): Promise<TunnelPort | null>;
|
|
86
|
+
/**
|
|
87
|
+
* Creates a tunnel port.
|
|
88
|
+
* @param tunnel
|
|
89
|
+
* @param tunnelPort
|
|
90
|
+
* @param options
|
|
91
|
+
*/
|
|
92
|
+
createTunnelPort(tunnel: Tunnel, tunnelPort: TunnelPort, options?: TunnelRequestOptions): Promise<TunnelPort>;
|
|
93
|
+
/**
|
|
94
|
+
* Updates properties of a tunnel port.
|
|
95
|
+
* @param tunnel
|
|
96
|
+
* @param tunnelPort
|
|
97
|
+
* @param options
|
|
98
|
+
*/
|
|
99
|
+
updateTunnelPort(tunnel: Tunnel, tunnelPort: TunnelPort, options?: TunnelRequestOptions): Promise<TunnelPort>;
|
|
100
|
+
/**
|
|
101
|
+
* Deletes a tunnel port.
|
|
102
|
+
* @param tunnel
|
|
103
|
+
* @param portNumber
|
|
104
|
+
* @param options
|
|
105
|
+
*/
|
|
106
|
+
deleteTunnelPort(tunnel: Tunnel, portNumber: number, options?: TunnelRequestOptions): Promise<boolean>;
|
|
107
|
+
/**
|
|
108
|
+
* Lists details of tunneling service clusters in all supported Azure regions.
|
|
109
|
+
*/
|
|
110
|
+
listClusters(): Promise<ClusterDetails[]>;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Interface for the user agent product information for TunnelManagementClient
|
|
114
|
+
*/
|
|
115
|
+
export interface ProductHeaderValue {
|
|
116
|
+
/**
|
|
117
|
+
* Product name.
|
|
118
|
+
*/
|
|
119
|
+
name: string;
|
|
120
|
+
/**
|
|
121
|
+
* Product version. If not supplied, 'unknown' version is used.
|
|
122
|
+
*/
|
|
123
|
+
version?: string;
|
|
124
|
+
}
|
|
125
|
+
export declare abstract class TunnelAuthenticationSchemes {
|
|
126
|
+
/** Authentication scheme for AAD (or Microsoft account) access tokens. */
|
|
127
|
+
static readonly aad = "aad";
|
|
128
|
+
/** Authentication scheme for GitHub access tokens. */
|
|
129
|
+
static readonly github = "github";
|
|
130
|
+
/** Authentication scheme for tunnel access tokens. */
|
|
131
|
+
static readonly tunnel = "tunnel";
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=tunnelManagementClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tunnelManagementClient.d.ts","sourceRoot":"","sources":["../../../src/management/tunnelManagementClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright (c) Microsoft Corporation.
|
|
3
|
+
// Licensed under the MIT license.
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.TunnelAuthenticationSchemes = void 0;
|
|
6
|
+
class TunnelAuthenticationSchemes {
|
|
7
|
+
}
|
|
8
|
+
exports.TunnelAuthenticationSchemes = TunnelAuthenticationSchemes;
|
|
9
|
+
/** Authentication scheme for AAD (or Microsoft account) access tokens. */
|
|
10
|
+
TunnelAuthenticationSchemes.aad = 'aad';
|
|
11
|
+
/** Authentication scheme for GitHub access tokens. */
|
|
12
|
+
TunnelAuthenticationSchemes.github = 'github';
|
|
13
|
+
/** Authentication scheme for tunnel access tokens. */
|
|
14
|
+
TunnelAuthenticationSchemes.tunnel = 'tunnel';
|
|
15
|
+
//# sourceMappingURL=tunnelManagementClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tunnelManagementClient.js","sourceRoot":"","sources":["../../../src/management/tunnelManagementClient.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAiLlC,MAAsB,2BAA2B;;AAAjD,kEASC;AARG,0EAA0E;AACnD,+BAAG,GAAG,KAAK,CAAC;AAEnC,sDAAsD;AAC/B,kCAAM,GAAG,QAAQ,CAAC;AAEzC,sDAAsD;AAC/B,kCAAM,GAAG,QAAQ,CAAC"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { Tunnel, TunnelConnectionMode, TunnelEndpoint, TunnelPort, ClusterDetails } from '@microsoft/dev-tunnels-contracts';
|
|
3
|
+
import { ProductHeaderValue, TunnelManagementClient } from './tunnelManagementClient';
|
|
4
|
+
import { TunnelRequestOptions } from './tunnelRequestOptions';
|
|
5
|
+
import { Method } from 'axios';
|
|
6
|
+
import * as https from 'https';
|
|
7
|
+
declare type NullableIfNotBoolean<T> = T extends boolean ? T : T | null;
|
|
8
|
+
export declare class TunnelManagementHttpClient implements TunnelManagementClient {
|
|
9
|
+
readonly httpsAgent?: https.Agent | undefined;
|
|
10
|
+
additionalRequestHeaders?: {
|
|
11
|
+
[header: string]: string;
|
|
12
|
+
};
|
|
13
|
+
private readonly baseAddress;
|
|
14
|
+
private readonly userTokenCallback;
|
|
15
|
+
private readonly userAgents;
|
|
16
|
+
trace: (msg: string) => void;
|
|
17
|
+
/**
|
|
18
|
+
* Initializes a new instance of the `TunnelManagementHttpClient` class
|
|
19
|
+
* with a client authentication callback, service URI, and HTTP handler.
|
|
20
|
+
*
|
|
21
|
+
* @param userAgent { name, version } object or a comment string to use as the User-Agent header.
|
|
22
|
+
* @param userTokenCallback Optional async callback for retrieving a client authentication
|
|
23
|
+
* header value with access token, for AAD or GitHub user authentication. This may be omitted
|
|
24
|
+
* for anonymous tunnel clients, or if tunnel access tokens will be specified via
|
|
25
|
+
* `TunnelRequestOptions.accessToken`.
|
|
26
|
+
* @param tunnelServiceUri Optional tunnel service URI (not including any path). Defaults to
|
|
27
|
+
* the global tunnel service URI.
|
|
28
|
+
* @param httpsAgent Optional agent that will be invoked for HTTPS requests to the tunnel
|
|
29
|
+
* service.
|
|
30
|
+
*/
|
|
31
|
+
constructor(userAgents: (ProductHeaderValue | string)[] | ProductHeaderValue | string, userTokenCallback?: () => Promise<string | null>, tunnelServiceUri?: string, httpsAgent?: https.Agent | undefined);
|
|
32
|
+
listTunnels(clusterId?: string, domain?: string, options?: TunnelRequestOptions): Promise<Tunnel[]>;
|
|
33
|
+
getTunnel(tunnel: Tunnel, options?: TunnelRequestOptions): Promise<Tunnel | null>;
|
|
34
|
+
createTunnel(tunnel: Tunnel, options?: TunnelRequestOptions): Promise<Tunnel>;
|
|
35
|
+
updateTunnel(tunnel: Tunnel, options?: TunnelRequestOptions): Promise<Tunnel>;
|
|
36
|
+
deleteTunnel(tunnel: Tunnel, options?: TunnelRequestOptions): Promise<boolean>;
|
|
37
|
+
updateTunnelEndpoint(tunnel: Tunnel, endpoint: TunnelEndpoint, options?: TunnelRequestOptions): Promise<TunnelEndpoint>;
|
|
38
|
+
deleteTunnelEndpoints(tunnel: Tunnel, hostId: string, connectionMode?: TunnelConnectionMode, options?: TunnelRequestOptions): Promise<boolean>;
|
|
39
|
+
listTunnelPorts(tunnel: Tunnel, options?: TunnelRequestOptions): Promise<TunnelPort[]>;
|
|
40
|
+
getTunnelPort(tunnel: Tunnel, portNumber: number, options?: TunnelRequestOptions): Promise<TunnelPort | null>;
|
|
41
|
+
createTunnelPort(tunnel: Tunnel, tunnelPort: TunnelPort, options?: TunnelRequestOptions): Promise<TunnelPort>;
|
|
42
|
+
updateTunnelPort(tunnel: Tunnel, tunnelPort: TunnelPort, options?: TunnelRequestOptions): Promise<TunnelPort>;
|
|
43
|
+
deleteTunnelPort(tunnel: Tunnel, portNumber: number, options?: TunnelRequestOptions): Promise<boolean>;
|
|
44
|
+
listClusters(): Promise<ClusterDetails[]>;
|
|
45
|
+
/**
|
|
46
|
+
* Sends an HTTP request to the tunnel management API, targeting a specific tunnel.
|
|
47
|
+
* This protected method enables subclasses to support additional tunnel management APIs.
|
|
48
|
+
* @param method HTTP request method.
|
|
49
|
+
* @param tunnel Tunnel that the request is targeting.
|
|
50
|
+
* @param accessTokenScopes Required array of access scopes for tokens in `tunnel.accessTokens`
|
|
51
|
+
* that could be used to authorize the request.
|
|
52
|
+
* @param path Optional request sub-path relative to the tunnel.
|
|
53
|
+
* @param query Optional query string to append to the request.
|
|
54
|
+
* @param options Request options.
|
|
55
|
+
* @param body Optional request body object.
|
|
56
|
+
* @param allowNotFound If true, a 404 response is returned as a null or false result
|
|
57
|
+
* instead of an error.
|
|
58
|
+
* @returns Result of the request.
|
|
59
|
+
*/
|
|
60
|
+
protected sendTunnelRequest<TResult>(method: Method, tunnel: Tunnel, accessTokenScopes: string[], path?: string, query?: string, options?: TunnelRequestOptions, body?: object, allowNotFound?: boolean): Promise<NullableIfNotBoolean<TResult>>;
|
|
61
|
+
/**
|
|
62
|
+
* Sends an HTTP request to the tunnel management API.
|
|
63
|
+
* This protected method enables subclasses to support additional tunnel management APIs.
|
|
64
|
+
* @param method HTTP request method.
|
|
65
|
+
* @param clusterId Optional tunnel service cluster ID to direct the request to. If unspecified,
|
|
66
|
+
* the request will use the global traffic-manager to find the nearest cluster.
|
|
67
|
+
* @param path Required request path.
|
|
68
|
+
* @param query Optional query string to append to the request.
|
|
69
|
+
* @param options Request options.
|
|
70
|
+
* @param body Optional request body object.
|
|
71
|
+
* @param allowNotFound If true, a 404 response is returned as a null or false result
|
|
72
|
+
* instead of an error.
|
|
73
|
+
* @returns Result of the request.
|
|
74
|
+
*/
|
|
75
|
+
protected sendRequest<TResult>(method: Method, clusterId: string | undefined, path: string, query?: string, options?: TunnelRequestOptions, body?: object, allowNotFound?: boolean): Promise<NullableIfNotBoolean<TResult>>;
|
|
76
|
+
private getResponseErrorMessage;
|
|
77
|
+
private buildUri;
|
|
78
|
+
private buildUriForTunnel;
|
|
79
|
+
private getAxiosRequestConfig;
|
|
80
|
+
private convertTunnelForRequest;
|
|
81
|
+
private convertTunnelPortForRequest;
|
|
82
|
+
private tunnelRequestOptionsToQueryString;
|
|
83
|
+
/**
|
|
84
|
+
* Makes an HTTP request using Axios, while tracing request and response details.
|
|
85
|
+
*/
|
|
86
|
+
private request;
|
|
87
|
+
private traceHeaders;
|
|
88
|
+
private traceAuthorizationHeader;
|
|
89
|
+
private traceContent;
|
|
90
|
+
private static replaceTokensInContent;
|
|
91
|
+
}
|
|
92
|
+
export {};
|
|
93
|
+
//# sourceMappingURL=tunnelManagementHttpClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tunnelManagementHttpClient.d.ts","sourceRoot":"","sources":["../../../src/management/tunnelManagementHttpClient.ts"],"names":[],"mappings":"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"}
|