@lightdash/common 0.1900.0 → 0.1901.1

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,6 +22,10 @@ export interface OAuthAuthorizeParams {
22
22
  user: OAuthUser;
23
23
  hiddenInputs: OAuthHiddenInput[];
24
24
  }
25
+ export interface OAuthRedirectParams {
26
+ redirectUrl: string;
27
+ message: string;
28
+ }
25
29
  /**
26
30
  * Generates an OAuth response HTML page using Handlebars templating
27
31
  * This prevents XSS issues by auto-escaping content while still allowing safe HTML in icons and styles
@@ -40,5 +44,10 @@ export declare const generateOAuthErrorResponse: (title: string, messages: strin
40
44
  * This prevents XSS issues by auto-escaping all user content
41
45
  */
42
46
  export declare const generateOAuthAuthorizePage: (params: OAuthAuthorizeParams) => string;
47
+ /**
48
+ * Generates an OAuth redirect page HTML using JavaScript redirect
49
+ * This prevents CSP errors by using JavaScript-based redirection instead of HTTP redirects
50
+ */
51
+ export declare const generateOAuthRedirectPage: (params: OAuthRedirectParams) => string;
43
52
  export {};
44
53
  //# sourceMappingURL=oauth.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../../../src/utils/oauth.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,eAAe,u5CA2D3B,CAAC;AA0FF,QAAA,MAAM,WAAW;;;;CAMP,CAAC;AAMX,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,OAAO,CAAC;AACtD,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,WAAW,CAAC;AAGrD,MAAM,WAAW,gBAAgB;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,SAAS;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,oBAAoB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,SAAS,CAAC;IAChB,YAAY,EAAE,gBAAgB,EAAE,CAAC;CACpC;AAED;;;GAGG;AACH,eAAO,MAAM,yBAAyB,WAC1B,mBAAmB,SACpB,MAAM,YACH,MAAM,EAAE,aACR,aAAa,KACxB,MAOG,CAAC;AAEP;;GAEG;AACH,eAAO,MAAM,4BAA4B,WAC9B,MAAM,aACH,MAAM,EAAE,KAInB,MAA0E,CAAC;AAE9E;;GAEG;AACH,eAAO,MAAM,0BAA0B,UAC5B,MAAM,YACH,MAAM,EAAE,aACR,aAAa,KACxB,MAME,CAAC;AAEN;;;GAGG;AACH,eAAO,MAAM,0BAA0B,WAC3B,oBAAoB,KAC7B,MAIG,CAAC"}
1
+ {"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../../../src/utils/oauth.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,eAAe,u5CA2D3B,CAAC;AA0FF,QAAA,MAAM,WAAW;;;;CAMP,CAAC;AAuDX,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,OAAO,CAAC;AACtD,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,WAAW,CAAC;AAGrD,MAAM,WAAW,gBAAgB;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,SAAS;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,oBAAoB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,SAAS,CAAC;IAChB,YAAY,EAAE,gBAAgB,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,mBAAmB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,eAAO,MAAM,yBAAyB,WAC1B,mBAAmB,SACpB,MAAM,YACH,MAAM,EAAE,aACR,aAAa,KACxB,MAOG,CAAC;AAEP;;GAEG;AACH,eAAO,MAAM,4BAA4B,WAC9B,MAAM,aACH,MAAM,EAAE,KAInB,MAA0E,CAAC;AAE9E;;GAEG;AACH,eAAO,MAAM,0BAA0B,UAC5B,MAAM,YACH,MAAM,EAAE,aACR,aAAa,KACxB,MAME,CAAC;AAEN;;;GAGG;AACH,eAAO,MAAM,0BAA0B,WAC3B,oBAAoB,KAC7B,MAIG,CAAC;AAEP;;;GAGG;AACH,eAAO,MAAM,yBAAyB,WAC1B,mBAAmB,KAC5B,MAIG,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.generateOAuthAuthorizePage = exports.generateOAuthErrorResponse = exports.generateOAuthSuccessResponse = exports.generateOAuthResponseHtml = exports.oauthPageStyles = void 0;
3
+ exports.generateOAuthRedirectPage = exports.generateOAuthAuthorizePage = exports.generateOAuthErrorResponse = exports.generateOAuthSuccessResponse = exports.generateOAuthResponseHtml = exports.oauthPageStyles = void 0;
4
4
  const handlebars_1 = require("handlebars");
5
5
  exports.oauthPageStyles = `
6
6
  body {
@@ -153,9 +153,57 @@ const OAUTH_ICONS = {
153
153
  error: '<circle cx="12" cy="12" r="10" stroke="currentColor" stroke-width="2"/><path d="M15 9l-6 6M9 9l6 6" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>',
154
154
  sessionExpired: '<circle cx="12" cy="12" r="10" stroke="currentColor" stroke-width="2"/><path d="M12 6v6l4 2" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>',
155
155
  };
156
+ // OAuth redirect page template
157
+ const OAUTH_REDIRECT_TEMPLATE = `
158
+ <html>
159
+ <head>
160
+ <title>Redirecting...</title>
161
+ <style>
162
+ {{{styles}}}
163
+ .spinner {
164
+ width: 32px;
165
+ height: 32px;
166
+ margin: 0 auto 16px auto;
167
+ border: 3px solid #e9ecef;
168
+ border-top: 3px solid #00B26F;
169
+ border-radius: 50%;
170
+ animation: spin 1s linear infinite;
171
+ }
172
+ @keyframes spin {
173
+ 0% { transform: rotate(0deg); }
174
+ 100% { transform: rotate(360deg); }
175
+ }
176
+ .redirect-link {
177
+ color: #00B26F;
178
+ text-decoration: none;
179
+ font-weight: 600;
180
+ }
181
+ .redirect-link:hover {
182
+ text-decoration: underline;
183
+ }
184
+ </style>
185
+ <script>
186
+ setTimeout(function() {
187
+ window.location.href = "{{{redirectUrl}}}";
188
+ }, 2000);
189
+ </script>
190
+ </head>
191
+ <body>
192
+ <div class="stack">
193
+ <div class="container">
194
+ <div class="spinner"></div>
195
+ <h1>Redirecting...</h1>
196
+ <p>{{message}}</p>
197
+ <p>If you are not redirected automatically, <a href="{{{redirectUrl}}}" class="redirect-link">click here</a>.</p>
198
+ </div>
199
+ </div>
200
+ </body>
201
+ </html>
202
+ `;
156
203
  // Compile the templates once with proper type safety
157
204
  const compiledResponseTemplate = (0, handlebars_1.compile)(OAUTH_RESPONSE_TEMPLATE);
158
205
  const compiledAuthorizeTemplate = (0, handlebars_1.compile)(OAUTH_AUTHORIZE_TEMPLATE);
206
+ const compiledRedirectTemplate = (0, handlebars_1.compile)(OAUTH_REDIRECT_TEMPLATE);
159
207
  /**
160
208
  * Generates an OAuth response HTML page using Handlebars templating
161
209
  * This prevents XSS issues by auto-escaping content while still allowing safe HTML in icons and styles
@@ -190,4 +238,13 @@ const generateOAuthAuthorizePage = (params) => compiledAuthorizeTemplate({
190
238
  ...params,
191
239
  });
192
240
  exports.generateOAuthAuthorizePage = generateOAuthAuthorizePage;
241
+ /**
242
+ * Generates an OAuth redirect page HTML using JavaScript redirect
243
+ * This prevents CSP errors by using JavaScript-based redirection instead of HTTP redirects
244
+ */
245
+ const generateOAuthRedirectPage = (params) => compiledRedirectTemplate({
246
+ styles: exports.oauthPageStyles,
247
+ ...params,
248
+ });
249
+ exports.generateOAuthRedirectPage = generateOAuthRedirectPage;
193
250
  //# sourceMappingURL=oauth.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"oauth.js","sourceRoot":"","sources":["../../../src/utils/oauth.ts"],"names":[],"mappings":";;;AAAA,2CAAqC;AAExB,QAAA,eAAe,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2D9B,CAAC;AAEF,+BAA+B;AAC/B,MAAM,uBAAuB,GAAG;;;;;;;;;;;;;;;;;;;CAmB/B,CAAC;AAEF,oCAAoC;AACpC,MAAM,wBAAwB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8DhC,CAAC;AAEF,yCAAyC;AACzC,MAAM,WAAW,GAAG;IAChB,OAAO,EACH,wLAAwL;IAC5L,KAAK,EAAE,6LAA6L;IACpM,cAAc,EACV,sLAAsL;CACpL,CAAC;AAEX,qDAAqD;AACrD,MAAM,wBAAwB,GAAG,IAAA,oBAAO,EAAC,uBAAuB,CAAC,CAAC;AAClE,MAAM,yBAAyB,GAAG,IAAA,oBAAO,EAAC,wBAAwB,CAAC,CAAC;AAyBpE;;;GAGG;AACI,MAAM,yBAAyB,GAAG,CACrC,MAA2B,EAC3B,KAAa,EACb,QAAkB,EAClB,WAA0B,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,EAC9D,EAAE,CACR,wBAAwB,CAAC;IACrB,MAAM,EAAE,uBAAe;IACvB,MAAM;IACN,KAAK;IACL,QAAQ;IACR,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC;CAC9B,CAAC,CAAC;AAZM,QAAA,yBAAyB,6BAY/B;AAEP;;GAEG;AACI,MAAM,4BAA4B,GAAG,CACxC,QAAgB,4BAA4B,EAC5C,WAAqB;IACjB,0DAA0D;IAC1D,kDAAkD;CACrD,EACK,EAAE,CAAC,IAAA,iCAAyB,EAAC,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AANjE,QAAA,4BAA4B,gCAMqC;AAE9E;;GAEG;AACI,MAAM,0BAA0B,GAAG,CACtC,KAAa,EACb,QAAkB,EAClB,WAA0B,OAAO,EAC3B,EAAE,CACR,IAAA,iCAAyB,EACrB,OAAO,EACP,KAAK,EACL,CAAC,GAAG,QAAQ,EAAE,0CAA0C,CAAC,EACzD,QAAQ,CACX,CAAC;AAVO,QAAA,0BAA0B,8BAUjC;AAEN;;;GAGG;AACI,MAAM,0BAA0B,GAAG,CACtC,MAA4B,EACtB,EAAE,CACR,yBAAyB,CAAC;IACtB,MAAM,EAAE,uBAAe;IACvB,GAAG,MAAM;CACZ,CAAC,CAAC;AANM,QAAA,0BAA0B,8BAMhC"}
1
+ {"version":3,"file":"oauth.js","sourceRoot":"","sources":["../../../src/utils/oauth.ts"],"names":[],"mappings":";;;AAAA,2CAAqC;AAExB,QAAA,eAAe,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2D9B,CAAC;AAEF,+BAA+B;AAC/B,MAAM,uBAAuB,GAAG;;;;;;;;;;;;;;;;;;;CAmB/B,CAAC;AAEF,oCAAoC;AACpC,MAAM,wBAAwB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8DhC,CAAC;AAEF,yCAAyC;AACzC,MAAM,WAAW,GAAG;IAChB,OAAO,EACH,wLAAwL;IAC5L,KAAK,EAAE,6LAA6L;IACpM,cAAc,EACV,sLAAsL;CACpL,CAAC;AAEX,+BAA+B;AAC/B,MAAM,uBAAuB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6C/B,CAAC;AAEF,qDAAqD;AACrD,MAAM,wBAAwB,GAAG,IAAA,oBAAO,EAAC,uBAAuB,CAAC,CAAC;AAClE,MAAM,yBAAyB,GAAG,IAAA,oBAAO,EAAC,wBAAwB,CAAC,CAAC;AACpE,MAAM,wBAAwB,GAAG,IAAA,oBAAO,EAAC,uBAAuB,CAAC,CAAC;AA8BlE;;;GAGG;AACI,MAAM,yBAAyB,GAAG,CACrC,MAA2B,EAC3B,KAAa,EACb,QAAkB,EAClB,WAA0B,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,EAC9D,EAAE,CACR,wBAAwB,CAAC;IACrB,MAAM,EAAE,uBAAe;IACvB,MAAM;IACN,KAAK;IACL,QAAQ;IACR,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC;CAC9B,CAAC,CAAC;AAZM,QAAA,yBAAyB,6BAY/B;AAEP;;GAEG;AACI,MAAM,4BAA4B,GAAG,CACxC,QAAgB,4BAA4B,EAC5C,WAAqB;IACjB,0DAA0D;IAC1D,kDAAkD;CACrD,EACK,EAAE,CAAC,IAAA,iCAAyB,EAAC,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AANjE,QAAA,4BAA4B,gCAMqC;AAE9E;;GAEG;AACI,MAAM,0BAA0B,GAAG,CACtC,KAAa,EACb,QAAkB,EAClB,WAA0B,OAAO,EAC3B,EAAE,CACR,IAAA,iCAAyB,EACrB,OAAO,EACP,KAAK,EACL,CAAC,GAAG,QAAQ,EAAE,0CAA0C,CAAC,EACzD,QAAQ,CACX,CAAC;AAVO,QAAA,0BAA0B,8BAUjC;AAEN;;;GAGG;AACI,MAAM,0BAA0B,GAAG,CACtC,MAA4B,EACtB,EAAE,CACR,yBAAyB,CAAC;IACtB,MAAM,EAAE,uBAAe;IACvB,GAAG,MAAM;CACZ,CAAC,CAAC;AANM,QAAA,0BAA0B,8BAMhC;AAEP;;;GAGG;AACI,MAAM,yBAAyB,GAAG,CACrC,MAA2B,EACrB,EAAE,CACR,wBAAwB,CAAC;IACrB,MAAM,EAAE,uBAAe;IACvB,GAAG,MAAM;CACZ,CAAC,CAAC;AANM,QAAA,yBAAyB,6BAM/B"}
@@ -22,6 +22,10 @@ export interface OAuthAuthorizeParams {
22
22
  user: OAuthUser;
23
23
  hiddenInputs: OAuthHiddenInput[];
24
24
  }
25
+ export interface OAuthRedirectParams {
26
+ redirectUrl: string;
27
+ message: string;
28
+ }
25
29
  /**
26
30
  * Generates an OAuth response HTML page using Handlebars templating
27
31
  * This prevents XSS issues by auto-escaping content while still allowing safe HTML in icons and styles
@@ -40,5 +44,10 @@ export declare const generateOAuthErrorResponse: (title: string, messages: strin
40
44
  * This prevents XSS issues by auto-escaping all user content
41
45
  */
42
46
  export declare const generateOAuthAuthorizePage: (params: OAuthAuthorizeParams) => string;
47
+ /**
48
+ * Generates an OAuth redirect page HTML using JavaScript redirect
49
+ * This prevents CSP errors by using JavaScript-based redirection instead of HTTP redirects
50
+ */
51
+ export declare const generateOAuthRedirectPage: (params: OAuthRedirectParams) => string;
43
52
  export {};
44
53
  //# sourceMappingURL=oauth.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../../../src/utils/oauth.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,eAAe,u5CA2D3B,CAAC;AA0FF,QAAA,MAAM,WAAW;;;;CAMP,CAAC;AAMX,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,OAAO,CAAC;AACtD,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,WAAW,CAAC;AAGrD,MAAM,WAAW,gBAAgB;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,SAAS;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,oBAAoB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,SAAS,CAAC;IAChB,YAAY,EAAE,gBAAgB,EAAE,CAAC;CACpC;AAED;;;GAGG;AACH,eAAO,MAAM,yBAAyB,WAC1B,mBAAmB,SACpB,MAAM,YACH,MAAM,EAAE,aACR,aAAa,KACxB,MAOG,CAAC;AAEP;;GAEG;AACH,eAAO,MAAM,4BAA4B,WAC9B,MAAM,aACH,MAAM,EAAE,KAInB,MAA0E,CAAC;AAE9E;;GAEG;AACH,eAAO,MAAM,0BAA0B,UAC5B,MAAM,YACH,MAAM,EAAE,aACR,aAAa,KACxB,MAME,CAAC;AAEN;;;GAGG;AACH,eAAO,MAAM,0BAA0B,WAC3B,oBAAoB,KAC7B,MAIG,CAAC"}
1
+ {"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../../../src/utils/oauth.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,eAAe,u5CA2D3B,CAAC;AA0FF,QAAA,MAAM,WAAW;;;;CAMP,CAAC;AAuDX,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,OAAO,CAAC;AACtD,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,WAAW,CAAC;AAGrD,MAAM,WAAW,gBAAgB;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,SAAS;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,oBAAoB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,SAAS,CAAC;IAChB,YAAY,EAAE,gBAAgB,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,mBAAmB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,eAAO,MAAM,yBAAyB,WAC1B,mBAAmB,SACpB,MAAM,YACH,MAAM,EAAE,aACR,aAAa,KACxB,MAOG,CAAC;AAEP;;GAEG;AACH,eAAO,MAAM,4BAA4B,WAC9B,MAAM,aACH,MAAM,EAAE,KAInB,MAA0E,CAAC;AAE9E;;GAEG;AACH,eAAO,MAAM,0BAA0B,UAC5B,MAAM,YACH,MAAM,EAAE,aACR,aAAa,KACxB,MAME,CAAC;AAEN;;;GAGG;AACH,eAAO,MAAM,0BAA0B,WAC3B,oBAAoB,KAC7B,MAIG,CAAC;AAEP;;;GAGG;AACH,eAAO,MAAM,yBAAyB,WAC1B,mBAAmB,KAC5B,MAIG,CAAC"}
@@ -150,9 +150,57 @@ const OAUTH_ICONS = {
150
150
  error: '<circle cx="12" cy="12" r="10" stroke="currentColor" stroke-width="2"/><path d="M15 9l-6 6M9 9l6 6" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>',
151
151
  sessionExpired: '<circle cx="12" cy="12" r="10" stroke="currentColor" stroke-width="2"/><path d="M12 6v6l4 2" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>',
152
152
  };
153
+ // OAuth redirect page template
154
+ const OAUTH_REDIRECT_TEMPLATE = `
155
+ <html>
156
+ <head>
157
+ <title>Redirecting...</title>
158
+ <style>
159
+ {{{styles}}}
160
+ .spinner {
161
+ width: 32px;
162
+ height: 32px;
163
+ margin: 0 auto 16px auto;
164
+ border: 3px solid #e9ecef;
165
+ border-top: 3px solid #00B26F;
166
+ border-radius: 50%;
167
+ animation: spin 1s linear infinite;
168
+ }
169
+ @keyframes spin {
170
+ 0% { transform: rotate(0deg); }
171
+ 100% { transform: rotate(360deg); }
172
+ }
173
+ .redirect-link {
174
+ color: #00B26F;
175
+ text-decoration: none;
176
+ font-weight: 600;
177
+ }
178
+ .redirect-link:hover {
179
+ text-decoration: underline;
180
+ }
181
+ </style>
182
+ <script>
183
+ setTimeout(function() {
184
+ window.location.href = "{{{redirectUrl}}}";
185
+ }, 2000);
186
+ </script>
187
+ </head>
188
+ <body>
189
+ <div class="stack">
190
+ <div class="container">
191
+ <div class="spinner"></div>
192
+ <h1>Redirecting...</h1>
193
+ <p>{{message}}</p>
194
+ <p>If you are not redirected automatically, <a href="{{{redirectUrl}}}" class="redirect-link">click here</a>.</p>
195
+ </div>
196
+ </div>
197
+ </body>
198
+ </html>
199
+ `;
153
200
  // Compile the templates once with proper type safety
154
201
  const compiledResponseTemplate = compile(OAUTH_RESPONSE_TEMPLATE);
155
202
  const compiledAuthorizeTemplate = compile(OAUTH_AUTHORIZE_TEMPLATE);
203
+ const compiledRedirectTemplate = compile(OAUTH_REDIRECT_TEMPLATE);
156
204
  /**
157
205
  * Generates an OAuth response HTML page using Handlebars templating
158
206
  * This prevents XSS issues by auto-escaping content while still allowing safe HTML in icons and styles
@@ -183,4 +231,12 @@ export const generateOAuthAuthorizePage = (params) => compiledAuthorizeTemplate(
183
231
  styles: oauthPageStyles,
184
232
  ...params,
185
233
  });
234
+ /**
235
+ * Generates an OAuth redirect page HTML using JavaScript redirect
236
+ * This prevents CSP errors by using JavaScript-based redirection instead of HTTP redirects
237
+ */
238
+ export const generateOAuthRedirectPage = (params) => compiledRedirectTemplate({
239
+ styles: oauthPageStyles,
240
+ ...params,
241
+ });
186
242
  //# sourceMappingURL=oauth.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"oauth.js","sourceRoot":"","sources":["../../../src/utils/oauth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,MAAM,CAAC,MAAM,eAAe,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2D9B,CAAC;AAEF,+BAA+B;AAC/B,MAAM,uBAAuB,GAAG;;;;;;;;;;;;;;;;;;;CAmB/B,CAAC;AAEF,oCAAoC;AACpC,MAAM,wBAAwB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8DhC,CAAC;AAEF,yCAAyC;AACzC,MAAM,WAAW,GAAG;IAChB,OAAO,EACH,wLAAwL;IAC5L,KAAK,EAAE,6LAA6L;IACpM,cAAc,EACV,sLAAsL;CACpL,CAAC;AAEX,qDAAqD;AACrD,MAAM,wBAAwB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC;AAClE,MAAM,yBAAyB,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC;AAyBpE;;;GAGG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACrC,MAA2B,EAC3B,KAAa,EACb,QAAkB,EAClB,WAA0B,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,EAC9D,EAAE,CACR,wBAAwB,CAAC;IACrB,MAAM,EAAE,eAAe;IACvB,MAAM;IACN,KAAK;IACL,QAAQ;IACR,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC;CAC9B,CAAC,CAAC;AAEP;;GAEG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CACxC,QAAgB,4BAA4B,EAC5C,WAAqB;IACjB,0DAA0D;IAC1D,kDAAkD;CACrD,EACK,EAAE,CAAC,yBAAyB,CAAC,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAE9E;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CACtC,KAAa,EACb,QAAkB,EAClB,WAA0B,OAAO,EAC3B,EAAE,CACR,yBAAyB,CACrB,OAAO,EACP,KAAK,EACL,CAAC,GAAG,QAAQ,EAAE,0CAA0C,CAAC,EACzD,QAAQ,CACX,CAAC;AAEN;;;GAGG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CACtC,MAA4B,EACtB,EAAE,CACR,yBAAyB,CAAC;IACtB,MAAM,EAAE,eAAe;IACvB,GAAG,MAAM;CACZ,CAAC,CAAC"}
1
+ {"version":3,"file":"oauth.js","sourceRoot":"","sources":["../../../src/utils/oauth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,MAAM,CAAC,MAAM,eAAe,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2D9B,CAAC;AAEF,+BAA+B;AAC/B,MAAM,uBAAuB,GAAG;;;;;;;;;;;;;;;;;;;CAmB/B,CAAC;AAEF,oCAAoC;AACpC,MAAM,wBAAwB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8DhC,CAAC;AAEF,yCAAyC;AACzC,MAAM,WAAW,GAAG;IAChB,OAAO,EACH,wLAAwL;IAC5L,KAAK,EAAE,6LAA6L;IACpM,cAAc,EACV,sLAAsL;CACpL,CAAC;AAEX,+BAA+B;AAC/B,MAAM,uBAAuB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6C/B,CAAC;AAEF,qDAAqD;AACrD,MAAM,wBAAwB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC;AAClE,MAAM,yBAAyB,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC;AACpE,MAAM,wBAAwB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC;AA8BlE;;;GAGG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACrC,MAA2B,EAC3B,KAAa,EACb,QAAkB,EAClB,WAA0B,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,EAC9D,EAAE,CACR,wBAAwB,CAAC;IACrB,MAAM,EAAE,eAAe;IACvB,MAAM;IACN,KAAK;IACL,QAAQ;IACR,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC;CAC9B,CAAC,CAAC;AAEP;;GAEG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CACxC,QAAgB,4BAA4B,EAC5C,WAAqB;IACjB,0DAA0D;IAC1D,kDAAkD;CACrD,EACK,EAAE,CAAC,yBAAyB,CAAC,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAE9E;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CACtC,KAAa,EACb,QAAkB,EAClB,WAA0B,OAAO,EAC3B,EAAE,CACR,yBAAyB,CACrB,OAAO,EACP,KAAK,EACL,CAAC,GAAG,QAAQ,EAAE,0CAA0C,CAAC,EACzD,QAAQ,CACX,CAAC;AAEN;;;GAGG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CACtC,MAA4B,EACtB,EAAE,CACR,yBAAyB,CAAC;IACtB,MAAM,EAAE,eAAe;IACvB,GAAG,MAAM;CACZ,CAAC,CAAC;AAEP;;;GAGG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACrC,MAA2B,EACrB,EAAE,CACR,wBAAwB,CAAC;IACrB,MAAM,EAAE,eAAe;IACvB,GAAG,MAAM;CACZ,CAAC,CAAC"}