@nsshunt/stsappframework 2.19.163 → 2.19.164

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.
@@ -22,16 +22,55 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
22
22
  var __importDefault = (this && this.__importDefault) || function (mod) {
23
23
  return (mod && mod.__esModule) ? mod : { "default": mod };
24
24
  };
25
- var _AuthUtilsNode_cookiejar;
25
+ var _AuthUtilsNode_cookiejar, _AuthUtilsNode_httpsAgent, _AuthUtilsNode_debug, _AuthUtilsNode_getHttpsAgent;
26
26
  Object.defineProperty(exports, "__esModule", { value: true });
27
- exports.AuthUtilsNode = void 0;
27
+ exports.AuthUtilsNode = exports.STSClientID = void 0;
28
28
  const tough_cookie_1 = __importDefault(require("tough-cookie"));
29
+ const https_1 = __importDefault(require("https"));
30
+ const axios_1 = __importDefault(require("axios"));
31
+ const stsconfig_1 = require("@nsshunt/stsconfig");
32
+ const goptions = (0, stsconfig_1.$Options)();
33
+ const debug_1 = __importDefault(require("debug"));
29
34
  const stsutils_1 = require("@nsshunt/stsutils");
30
35
  const errors_1 = require("./validation/errors");
31
36
  const http_status_codes_1 = require("http-status-codes");
37
+ var STSClientID;
38
+ (function (STSClientID) {
39
+ STSClientID["STSRest01Service"] = "KgSyRECcvnJwwOZqf7GPqUw508sx7VBFEbDC0iP4oeY=";
40
+ STSClientID["STSAuthService"] = "q6a9F0kksXDDcrsCUKRwHKDnTNh7yZfxCShAgIJqfGg=";
41
+ STSClientID["STSUITerminal"] = "U0E4c4cuRKlBsGo7OhOl3qTkoNGFBXjORUS/T4R4xyA=";
42
+ STSClientID["STSCLI"] = "EcCpnQOIQFizAnWphlFJ4tSylosgVnwKTSNtgwuL2tw=";
43
+ STSClientID["STSUIWebApp"] = "lww8Je8n2P0OI/KEfJ+4p/bqsk8uE/noeq13tl4zlQ0=";
44
+ STSClientID["XXSTSUserAgentRunnerX"] = "y1h2nNr1BzTVPIzNmP/f041uxbnyZYTJeF/5GcwRCtw=";
45
+ STSClientID["STSInstrumentManagerService"] = "l8u2E912eR44ZYRHUkSBCCnDOXxQqYOPahDVQzYowrw=";
46
+ STSClientID["STSTestOrchestratorService"] = "CU1sVlS6vsEe3O3VvNzKFdBnQd9pQ83w9RyVx/7tJfc=";
47
+ STSClientID["STSTestRunnerNode"] = "aX9dJbsT06V1G4j06xEIQ/rZ2CDlpzggU58aLtZ8fzE=";
48
+ STSClientID["STSBrokerService"] = "TRppBuvxcjL7jrY9lCASJ5st8JpU8WlhAUAWoX/KKQ4=";
49
+ STSClientID["STSTestingService"] = "4Mtb3ABdSzZvSz4T51HPJhT14znVnqVDRFiZsvDNAOg=";
50
+ STSClientID["XXSTSAuthenticateSPAXX"] = "v4qBrds3Autl/i86xT+5z0K53kJ/2hHTfxNo0QO/0Jk=";
51
+ STSClientID["STSTestRunnerAgentSPA"] = "yDbklCH3awzDNuHICuco9mjDqhdzCa8m7w/UE9Opexc=";
52
+ STSClientID["STSClientApp01SPA"] = "FDX/CPyDb3m6d9G2k+wDX8Uvey+yCkllaT4EuEt4QyU=";
53
+ STSClientID["PowerPlatformCustomConnectorSPA"] = "fcdcebb5-d154-4699-b99d-87d29e5e148f";
54
+ })(STSClientID = exports.STSClientID || (exports.STSClientID = {}));
32
55
  class AuthUtilsNode {
33
56
  constructor() {
34
57
  _AuthUtilsNode_cookiejar.set(this, void 0);
58
+ _AuthUtilsNode_httpsAgent.set(this, null);
59
+ _AuthUtilsNode_debug.set(this, (0, debug_1.default)(`proc:${process.pid}:AuthUtilsNode`));
60
+ _AuthUtilsNode_getHttpsAgent.set(this, () => {
61
+ if (__classPrivateFieldGet(this, _AuthUtilsNode_httpsAgent, "f") === null) {
62
+ // https://nodejs.org/api/http.html#class-httpagent
63
+ __classPrivateFieldSet(this, _AuthUtilsNode_httpsAgent, new https_1.default.Agent({
64
+ keepAlive: goptions.keepAlive,
65
+ maxSockets: goptions.maxSockets,
66
+ maxTotalSockets: goptions.maxTotalSockets,
67
+ maxFreeSockets: goptions.maxFreeSockets,
68
+ timeout: goptions.timeout,
69
+ rejectUnauthorized: false
70
+ }), "f");
71
+ }
72
+ return __classPrivateFieldGet(this, _AuthUtilsNode_httpsAgent, "f");
73
+ });
35
74
  this.SetCookiesToJar = (headers, endpoint) => __awaiter(this, void 0, void 0, function* () {
36
75
  if (headers['set-cookie']) {
37
76
  headers['set-cookie'].map((headerCookie) => {
@@ -48,6 +87,61 @@ class AuthUtilsNode {
48
87
  this.GetCookiesFromJar = (endpoint) => __awaiter(this, void 0, void 0, function* () {
49
88
  return __classPrivateFieldGet(this, _AuthUtilsNode_cookiejar, "f").getCookies(endpoint);
50
89
  });
90
+ this.GetAPITokenFromAuthServer = (clientId, authClientSecret, audience) => __awaiter(this, void 0, void 0, function* () {
91
+ try {
92
+ const headers = { 'Content-Type': 'application/json' };
93
+ const payload = {
94
+ client_id: clientId,
95
+ client_secret: authClientSecret,
96
+ //client_secret: goptions.brokerclientsecret, // Broker service client secret
97
+ audience: audience,
98
+ //@@ remove audience
99
+ //@@ need scope to be the API identifier
100
+ grant_type: "client_credentials"
101
+ };
102
+ const url = `${goptions.asendpoint}:${goptions.asport}${goptions.asoauthapiroot}/token`;
103
+ const retVal = yield (0, axios_1.default)({
104
+ url,
105
+ method: 'post',
106
+ data: payload,
107
+ headers: headers,
108
+ httpsAgent: __classPrivateFieldGet(this, _AuthUtilsNode_httpsAgent, "f")
109
+ });
110
+ if (retVal.status) {
111
+ if (retVal.status !== 200) {
112
+ // Just provide a warning here
113
+ __classPrivateFieldGet(this, _AuthUtilsNode_debug, "f").call(this, `Error (AuthUtilsNode:GetAPITokenFromServer): Invalid response from server: [${retVal.status}]`.magenta);
114
+ }
115
+ }
116
+ else {
117
+ const msg = `Error (AuthUtilsNode:GetAPITokenFromServer:No retVal.status)`.red;
118
+ __classPrivateFieldGet(this, _AuthUtilsNode_debug, "f").call(this, msg);
119
+ throw new Error(msg);
120
+ }
121
+ if (retVal.data) {
122
+ if (retVal.data.access_token) {
123
+ return retVal.data.access_token;
124
+ }
125
+ else {
126
+ const msg = `Error (AuthUtilsNode:GetAPITokenFromServer:No retVal.data.access_token)`.red;
127
+ __classPrivateFieldGet(this, _AuthUtilsNode_debug, "f").call(this, msg);
128
+ throw new Error(msg);
129
+ }
130
+ }
131
+ else {
132
+ const msg = `Error (AuthUtilsNode:GetAPITokenFromServer:No retVal.data)`.red;
133
+ __classPrivateFieldGet(this, _AuthUtilsNode_debug, "f").call(this, msg);
134
+ throw new Error(msg);
135
+ }
136
+ }
137
+ catch (error) {
138
+ __classPrivateFieldGet(this, _AuthUtilsNode_debug, "f").call(this, `Error (AuthUtilsNode:GetAPITokenFromServer:catch): ${error}`.red);
139
+ if (error.response && error.response.data) {
140
+ __classPrivateFieldGet(this, _AuthUtilsNode_debug, "f").call(this, `Details: [${JSON.stringify(error.response.data)}]`.red);
141
+ }
142
+ throw error;
143
+ }
144
+ });
51
145
  __classPrivateFieldSet(this, _AuthUtilsNode_cookiejar, new tough_cookie_1.default.CookieJar(), "f");
52
146
  }
53
147
  VerifyRequestMiddlewareFactory(options) {
@@ -114,5 +208,5 @@ class AuthUtilsNode {
114
208
  }
115
209
  }
116
210
  exports.AuthUtilsNode = AuthUtilsNode;
117
- _AuthUtilsNode_cookiejar = new WeakMap();
211
+ _AuthUtilsNode_cookiejar = new WeakMap(), _AuthUtilsNode_httpsAgent = new WeakMap(), _AuthUtilsNode_debug = new WeakMap(), _AuthUtilsNode_getHttpsAgent = new WeakMap();
118
212
  //# sourceMappingURL=authutilsnode.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"authutilsnode.js","sourceRoot":"","sources":["../src/authutilsnode.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gEAAiC;AAEjC,gDAAmD;AAEnD,gDAA2D;AAE3D,yDAAgD;AAMhD,MAAa,aAAa;IAItB;QAFA,2CAA4B;QAmE5B,oBAAe,GAAG,CAAO,OAA4B,EAAE,QAAgB,EAA2B,EAAE;YAEhG,IAAI,OAAO,CAAC,YAAY,CAAC,EAAE;gBACvB,OAAO,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,YAAiB,EAAE,EAAE;oBAC5C,MAAM,MAAM,GAAQ,sBAAK,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;oBACrD,uBAAA,IAAI,gCAAW,CAAC,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;gBACpD,CAAC,CAAC,CAAC;aACN;iBAAM;gBACH,MAAM,MAAM,GAAQ,sBAAK,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC9D,uBAAA,IAAI,gCAAW,CAAC,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;aACnD;YAED,OAAO,uBAAA,IAAI,gCAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAChD,CAAC,CAAA,CAAC;QAEF,sBAAiB,GAAG,CAAO,QAAgB,EAA2B,EAAE;YAEpE,OAAO,uBAAA,IAAI,gCAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAChD,CAAC,CAAA,CAAC;QAlFE,uBAAA,IAAI,4BAAc,IAAI,sBAAK,CAAC,SAAS,EAAE,MAAA,CAAC;IAC5C,CAAC;IAED,8BAA8B,CAAC,OAA8B;QACzD,OAAO,UAAe,GAAQ,EAAE,GAAQ,EAAE,IAAS;;gBAC/C,IAAI,OAAO,CAAC,WAAW,EAAE;oBACrB,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBACzC,MAAM,mBAAmB,GAAG,EAAG,CAAC;oBAChC,KAAK,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;wBAC/C,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;wBAC1C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;4BAC9B,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;yBACxC;qBACJ;oBACD,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE;wBAChC,MAAM,YAAY,GAAG,IAAA,0BAAe,EAAC,8BAAqB,CAAC,+BAA+B,EAAE,mBAAmB,CAAC,CAAC;wBACjH,GAAG,CAAC,MAAM,CAAC,+BAAW,CAAC,YAAY,CAAC,CAAC,IAAI,CAAE,EAAE,MAAM,EAAE,+BAAW,CAAC,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;wBACtG,OAAO;qBACV;iBACJ;gBACD,IAAI,EAAE,CAAC;YACX,CAAC;SAAA,CAAA;IACL,CAAC;IACD;;;;;;;;;;;;;;;MAeD;IAEO,uBAAuB,CAAC,GAAQ,EAAE,GAAQ,EAAE,IAAS;;YAEvD,IAAI,EAAE,CAAC;YACP;;;;;;;;;;;;;;;;;;cAkBJ;QACA,CAAC;KAAA;CAgHJ;AAnLD,sCAmLC"}
1
+ {"version":3,"file":"authutilsnode.js","sourceRoot":"","sources":["../src/authutilsnode.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nsshunt/stsappframework",
3
- "version": "2.19.163",
3
+ "version": "2.19.164",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "./types/index.d.ts",
@@ -1,4 +1,12 @@
1
1
  import tough from 'tough-cookie';
2
+ import https from 'https'
3
+
4
+ import axios from 'axios';
5
+
6
+ import { $Options } from '@nsshunt/stsconfig'
7
+ const goptions = $Options()
8
+
9
+ import debugModule from 'debug'
2
10
 
3
11
  import { GetErrorPayload } from '@nsshunt/stsutils'
4
12
 
@@ -10,14 +18,50 @@ export interface IAuthUtilsNodeOptions {
10
18
  permissions: string[]
11
19
  }
12
20
 
21
+ export enum STSClientID {
22
+ STSRest01Service = 'KgSyRECcvnJwwOZqf7GPqUw508sx7VBFEbDC0iP4oeY=',
23
+ STSAuthService = 'q6a9F0kksXDDcrsCUKRwHKDnTNh7yZfxCShAgIJqfGg=',
24
+ STSUITerminal = 'U0E4c4cuRKlBsGo7OhOl3qTkoNGFBXjORUS/T4R4xyA=',
25
+ STSCLI = 'EcCpnQOIQFizAnWphlFJ4tSylosgVnwKTSNtgwuL2tw=',
26
+ STSUIWebApp = 'lww8Je8n2P0OI/KEfJ+4p/bqsk8uE/noeq13tl4zlQ0=',
27
+ XXSTSUserAgentRunnerX = 'y1h2nNr1BzTVPIzNmP/f041uxbnyZYTJeF/5GcwRCtw=',
28
+ STSInstrumentManagerService = 'l8u2E912eR44ZYRHUkSBCCnDOXxQqYOPahDVQzYowrw=',
29
+ STSTestOrchestratorService = 'CU1sVlS6vsEe3O3VvNzKFdBnQd9pQ83w9RyVx/7tJfc=',
30
+ STSTestRunnerNode = 'aX9dJbsT06V1G4j06xEIQ/rZ2CDlpzggU58aLtZ8fzE=',
31
+ STSBrokerService = 'TRppBuvxcjL7jrY9lCASJ5st8JpU8WlhAUAWoX/KKQ4=',
32
+ STSTestingService = '4Mtb3ABdSzZvSz4T51HPJhT14znVnqVDRFiZsvDNAOg=',
33
+ XXSTSAuthenticateSPAXX = 'v4qBrds3Autl/i86xT+5z0K53kJ/2hHTfxNo0QO/0Jk=',
34
+ STSTestRunnerAgentSPA = 'yDbklCH3awzDNuHICuco9mjDqhdzCa8m7w/UE9Opexc=',
35
+ STSClientApp01SPA = 'FDX/CPyDb3m6d9G2k+wDX8Uvey+yCkllaT4EuEt4QyU=',
36
+ PowerPlatformCustomConnectorSPA = 'fcdcebb5-d154-4699-b99d-87d29e5e148f'
37
+ }
38
+
13
39
  export class AuthUtilsNode
14
40
  {
15
41
  #cookiejar: tough.CookieJar;
42
+ #httpsAgent: https.Agent | null = null;
43
+ #debug = debugModule(`proc:${process.pid}:AuthUtilsNode`);
16
44
 
17
45
  constructor() {
18
46
  this.#cookiejar = new tough.CookieJar();
19
47
  }
20
48
 
49
+ #getHttpsAgent = () =>
50
+ {
51
+ if (this.#httpsAgent === null) {
52
+ // https://nodejs.org/api/http.html#class-httpagent
53
+ this.#httpsAgent = new https.Agent({
54
+ keepAlive: goptions.keepAlive,
55
+ maxSockets: goptions.maxSockets,
56
+ maxTotalSockets: goptions.maxTotalSockets,
57
+ maxFreeSockets: goptions.maxFreeSockets,
58
+ timeout: goptions.timeout,
59
+ rejectUnauthorized: false
60
+ });
61
+ }
62
+ return this.#httpsAgent;
63
+ }
64
+
21
65
  VerifyRequestMiddlewareFactory(options: IAuthUtilsNodeOptions) {
22
66
  return async function(req: any, res: any, next: any) {
23
67
  if (options.permissions) {
@@ -99,6 +143,59 @@ export class AuthUtilsNode
99
143
  return this.#cookiejar.getCookies(endpoint);
100
144
  };
101
145
 
146
+ GetAPITokenFromAuthServer = async (clientId: STSClientID, authClientSecret: string, audience: string): Promise<string> => {
147
+ try {
148
+ const headers = { 'Content-Type': 'application/json'};
149
+ const payload = { //@@ make a type
150
+ client_id: clientId, // The service calling this method
151
+ client_secret: authClientSecret, // Auth service client secret
152
+ //client_secret: goptions.brokerclientsecret, // Broker service client secret
153
+ audience: audience, // required API
154
+ //@@ remove audience
155
+ //@@ need scope to be the API identifier
156
+ grant_type: "client_credentials"
157
+ }
158
+ const url = `${goptions.asendpoint}:${goptions.asport}${goptions.asoauthapiroot}/token`;
159
+ const retVal = await axios({
160
+ url
161
+ ,method: 'post'
162
+ ,data: payload
163
+ ,headers: headers
164
+ ,httpsAgent: this.#httpsAgent
165
+ });
166
+
167
+ if (retVal.status) {
168
+ if (retVal.status !== 200) {
169
+ // Just provide a warning here
170
+ this.#debug(`Error (AuthUtilsNode:GetAPITokenFromServer): Invalid response from server: [${retVal.status}]`.magenta);
171
+ }
172
+ } else {
173
+ const msg = `Error (AuthUtilsNode:GetAPITokenFromServer:No retVal.status)`.red
174
+ this.#debug(msg);
175
+ throw new Error(msg);
176
+ }
177
+ if (retVal.data) {
178
+ if (retVal.data.access_token) {
179
+ return retVal.data.access_token as string;
180
+ } else {
181
+ const msg = `Error (AuthUtilsNode:GetAPITokenFromServer:No retVal.data.access_token)`.red
182
+ this.#debug(msg);
183
+ throw new Error(msg);
184
+ }
185
+ } else {
186
+ const msg = `Error (AuthUtilsNode:GetAPITokenFromServer:No retVal.data)`.red
187
+ this.#debug(msg);
188
+ throw new Error(msg);
189
+ }
190
+ } catch (error: any) {
191
+ this.#debug(`Error (AuthUtilsNode:GetAPITokenFromServer:catch): ${error}`.red);
192
+ if (error.response && error.response.data) {
193
+ this.#debug(`Details: [${JSON.stringify(error.response.data)}]`.red);
194
+ }
195
+ throw error;
196
+ }
197
+ }
198
+
102
199
  /*
103
200
  #getHttpsAgent = () =>
104
201
  {
@@ -2,6 +2,23 @@ import tough from 'tough-cookie';
2
2
  export interface IAuthUtilsNodeOptions {
3
3
  permissions: string[];
4
4
  }
5
+ export declare enum STSClientID {
6
+ STSRest01Service = "KgSyRECcvnJwwOZqf7GPqUw508sx7VBFEbDC0iP4oeY=",
7
+ STSAuthService = "q6a9F0kksXDDcrsCUKRwHKDnTNh7yZfxCShAgIJqfGg=",
8
+ STSUITerminal = "U0E4c4cuRKlBsGo7OhOl3qTkoNGFBXjORUS/T4R4xyA=",
9
+ STSCLI = "EcCpnQOIQFizAnWphlFJ4tSylosgVnwKTSNtgwuL2tw=",
10
+ STSUIWebApp = "lww8Je8n2P0OI/KEfJ+4p/bqsk8uE/noeq13tl4zlQ0=",
11
+ XXSTSUserAgentRunnerX = "y1h2nNr1BzTVPIzNmP/f041uxbnyZYTJeF/5GcwRCtw=",
12
+ STSInstrumentManagerService = "l8u2E912eR44ZYRHUkSBCCnDOXxQqYOPahDVQzYowrw=",
13
+ STSTestOrchestratorService = "CU1sVlS6vsEe3O3VvNzKFdBnQd9pQ83w9RyVx/7tJfc=",
14
+ STSTestRunnerNode = "aX9dJbsT06V1G4j06xEIQ/rZ2CDlpzggU58aLtZ8fzE=",
15
+ STSBrokerService = "TRppBuvxcjL7jrY9lCASJ5st8JpU8WlhAUAWoX/KKQ4=",
16
+ STSTestingService = "4Mtb3ABdSzZvSz4T51HPJhT14znVnqVDRFiZsvDNAOg=",
17
+ XXSTSAuthenticateSPAXX = "v4qBrds3Autl/i86xT+5z0K53kJ/2hHTfxNo0QO/0Jk=",
18
+ STSTestRunnerAgentSPA = "yDbklCH3awzDNuHICuco9mjDqhdzCa8m7w/UE9Opexc=",
19
+ STSClientApp01SPA = "FDX/CPyDb3m6d9G2k+wDX8Uvey+yCkllaT4EuEt4QyU=",
20
+ PowerPlatformCustomConnectorSPA = "fcdcebb5-d154-4699-b99d-87d29e5e148f"
21
+ }
5
22
  export declare class AuthUtilsNode {
6
23
  #private;
7
24
  constructor();
@@ -9,5 +26,6 @@ export declare class AuthUtilsNode {
9
26
  verifyRequestMiddleware(req: any, res: any, next: any): Promise<void>;
10
27
  SetCookiesToJar: (headers: Record<string, any>, endpoint: string) => Promise<tough.Cookie[]>;
11
28
  GetCookiesFromJar: (endpoint: string) => Promise<tough.Cookie[]>;
29
+ GetAPITokenFromAuthServer: (clientId: STSClientID, authClientSecret: string, audience: string) => Promise<string>;
12
30
  }
13
31
  //# sourceMappingURL=authutilsnode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"authutilsnode.d.ts","sourceRoot":"","sources":["../src/authutilsnode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,cAAc,CAAC;AAQjC,MAAM,WAAW,qBAAqB;IAClC,WAAW,EAAE,MAAM,EAAE,CAAA;CACxB;AAED,qBAAa,aAAa;;;IAQtB,8BAA8B,CAAC,OAAO,EAAE,qBAAqB,SAC9B,GAAG,OAAO,GAAG,QAAQ,GAAG;IAoCjD,uBAAuB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG;IAwB3D,eAAe,YAAmB,OAAO,MAAM,EAAE,GAAG,CAAC,YAAY,MAAM,KAAG,QAAQ,MAAM,MAAM,EAAE,CAAC,CAa/F;IAEF,iBAAiB,aAAoB,MAAM,KAAG,QAAQ,MAAM,MAAM,EAAE,CAAC,CAGnE;CA4FL"}
1
+ {"version":3,"file":"authutilsnode.d.ts","sourceRoot":"","sources":["../src/authutilsnode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,cAAc,CAAC;AAgBjC,MAAM,WAAW,qBAAqB;IAClC,WAAW,EAAE,MAAM,EAAE,CAAA;CACxB;AAED,oBAAY,WAAW;IACnB,gBAAgB,iDAAiD;IACjE,cAAc,iDAAiD;IAC/D,aAAa,iDAAiD;IAC9D,MAAM,iDAAiD;IACvD,WAAW,iDAAiD;IAC5D,qBAAqB,iDAAiD;IACtE,2BAA2B,iDAAiD;IAC5E,0BAA0B,iDAAiD;IAC3E,iBAAiB,iDAAiD;IAClE,gBAAgB,iDAAiD;IACjE,iBAAiB,iDAAiD;IAClE,sBAAsB,iDAAiD;IACvE,qBAAqB,iDAAiD;IACtE,iBAAiB,iDAAiD;IAClE,+BAA+B,yCAAyC;CAC3E;AAED,qBAAa,aAAa;;;IA0BtB,8BAA8B,CAAC,OAAO,EAAE,qBAAqB,SAC9B,GAAG,OAAO,GAAG,QAAQ,GAAG;IAoCjD,uBAAuB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG;IAwB3D,eAAe,YAAmB,OAAO,MAAM,EAAE,GAAG,CAAC,YAAY,MAAM,KAAG,QAAQ,MAAM,MAAM,EAAE,CAAC,CAa/F;IAEF,iBAAiB,aAAoB,MAAM,KAAG,QAAQ,MAAM,MAAM,EAAE,CAAC,CAGnE;IAEF,yBAAyB,aAAoB,WAAW,oBAAoB,MAAM,YAAY,MAAM,KAAG,QAAQ,MAAM,CAAC,CAmDrH;CA4FJ"}