@cratis/arc 18.9.0 → 18.9.2
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/dist/cjs/identity/IdentityProvider.d.ts.map +1 -1
- package/dist/cjs/identity/IdentityProvider.js +4 -1
- package/dist/cjs/identity/IdentityProvider.js.map +1 -1
- package/dist/cjs/identity/for_IdentityProvider/given/an_identity_provider.d.ts.map +1 -1
- package/dist/cjs/identity/for_IdentityProvider/when_refreshing/with_origin_set.d.ts +2 -0
- package/dist/cjs/identity/for_IdentityProvider/when_refreshing/with_origin_set.d.ts.map +1 -0
- package/dist/esm/identity/IdentityProvider.d.ts.map +1 -1
- package/dist/esm/identity/IdentityProvider.js +4 -1
- package/dist/esm/identity/IdentityProvider.js.map +1 -1
- package/dist/esm/identity/for_IdentityProvider/given/an_identity_provider.d.ts.map +1 -1
- package/dist/esm/identity/for_IdentityProvider/given/an_identity_provider.js +6 -1
- package/dist/esm/identity/for_IdentityProvider/given/an_identity_provider.js.map +1 -1
- package/dist/esm/identity/for_IdentityProvider/when_refreshing/with_api_base_path_set.js +4 -2
- package/dist/esm/identity/for_IdentityProvider/when_refreshing/with_api_base_path_set.js.map +1 -1
- package/dist/esm/identity/for_IdentityProvider/when_refreshing/with_globals_api_base_path.js +4 -2
- package/dist/esm/identity/for_IdentityProvider/when_refreshing/with_globals_api_base_path.js.map +1 -1
- package/dist/esm/identity/for_IdentityProvider/when_refreshing/with_origin_set.d.ts +2 -0
- package/dist/esm/identity/for_IdentityProvider/when_refreshing/with_origin_set.d.ts.map +1 -0
- package/dist/esm/identity/for_IdentityProvider/when_refreshing/with_origin_set.js +34 -0
- package/dist/esm/identity/for_IdentityProvider/when_refreshing/with_origin_set.js.map +1 -0
- package/dist/esm/identity/for_IdentityProvider/when_refreshing/without_api_base_path.js +4 -2
- package/dist/esm/identity/for_IdentityProvider/when_refreshing/without_api_base_path.js.map +1 -1
- package/dist/esm/tsconfig.tsbuildinfo +1 -1
- package/identity/IdentityProvider.ts +4 -1
- package/identity/for_IdentityProvider/given/an_identity_provider.ts +6 -1
- package/identity/for_IdentityProvider/when_refreshing/with_api_base_path_set.ts +6 -2
- package/identity/for_IdentityProvider/when_refreshing/with_globals_api_base_path.ts +5 -2
- package/identity/for_IdentityProvider/when_refreshing/with_origin_set.ts +45 -0
- package/identity/for_IdentityProvider/when_refreshing/without_api_base_path.ts +5 -2
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IdentityProvider.d.ts","sourceRoot":"","sources":["../../../identity/IdentityProvider.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAkB,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"IdentityProvider.d.ts","sourceRoot":"","sources":["../../../identity/IdentityProvider.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAkB,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAQhD,qBAAa,gBAAiB,SAAQ,iBAAiB;IAEnD,MAAM,CAAC,QAAQ,CAAC,UAAU,sBAAsB;IAChD,MAAM,CAAC,mBAAmB,EAAE,cAAc,GAAG,SAAS,CAAC;IACvD,MAAM,CAAC,WAAW,EAAE,MAAM,CAAM;IAChC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM;IAM3B,MAAM,CAAC,sBAAsB,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI;IAQ7D,MAAM,CAAC,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAQhD,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;WAUzB,UAAU,CAAC,QAAQ,SAAS,MAAM,GAAG,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAoB/G,UAAU,CAAC,QAAQ,SAAS,MAAM,GAAG,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;WAIjG,OAAO,CAAC,QAAQ,SAAS,MAAM,GAAG,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAwBlH,OAAO,CAAC,MAAM,CAAC,SAAS;IAYxB,OAAO,CAAC,MAAM,CAAC,WAAW;CAI7B"}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
var fundamentals = require('@cratis/fundamentals');
|
|
4
4
|
var IIdentityProvider = require('./IIdentityProvider.js');
|
|
5
5
|
var Globals = require('../Globals.js');
|
|
6
|
+
var UrlHelpers = require('../UrlHelpers.js');
|
|
6
7
|
var joinPaths = require('../joinPaths.js');
|
|
7
8
|
|
|
8
9
|
class IdentityProvider extends IIdentityProvider.IIdentityProvider {
|
|
@@ -43,8 +44,10 @@ class IdentityProvider extends IIdentityProvider.IIdentityProvider {
|
|
|
43
44
|
}
|
|
44
45
|
static async refresh(type) {
|
|
45
46
|
IdentityProvider.clearCookie();
|
|
47
|
+
const origin = IdentityProvider.origin || Globals.Globals.origin || '';
|
|
46
48
|
const apiBasePath = IdentityProvider.apiBasePath || Globals.Globals.apiBasePath || '';
|
|
47
|
-
const
|
|
49
|
+
const route = joinPaths.joinPaths(apiBasePath, '/.cratis/me');
|
|
50
|
+
const url = UrlHelpers.UrlHelpers.createUrlFrom(origin, apiBasePath, route);
|
|
48
51
|
const response = await fetch(url, {
|
|
49
52
|
method: 'GET',
|
|
50
53
|
headers: IdentityProvider.httpHeadersCallback?.() ?? {}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IdentityProvider.js","sources":["../../../identity/IdentityProvider.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { Constructor, JsonSerializer } from '@cratis/fundamentals';\nimport { IIdentityProvider } from './IIdentityProvider';\nimport { IIdentity } from './IIdentity';\nimport { IdentityProviderResult } from './IdentityProviderResult';\nimport { GetHttpHeaders } from 'GetHttpHeaders';\nimport { Globals } from '../Globals';\nimport { joinPaths } from '../joinPaths';\n\n/**\n * Represents an implementation of {@link IIdentityProvider}.\n*/\nexport class IdentityProvider extends IIdentityProvider {\n\n static readonly CookieName = '.cratis-identity';\n static httpHeadersCallback: GetHttpHeaders | undefined;\n static apiBasePath: string = '';\n static origin: string = '';\n\n /**\n * Sets the HTTP headers callback.\n * @param callback Callback to set.\n */\n static setHttpHeadersCallback(callback: GetHttpHeaders): void {\n IdentityProvider.httpHeadersCallback = callback;\n }\n\n /**\n * Sets the API base path.\n * @param apiBasePath API base path to set.\n */\n static setApiBasePath(apiBasePath: string): void {\n IdentityProvider.apiBasePath = apiBasePath;\n }\n\n /**\n * Sets the origin.\n * @param origin Origin to set.\n */\n static setOrigin(origin: string): void {\n IdentityProvider.origin = origin;\n }\n\n /**\n * Gets the current identity by optionally specifying the details type.\n * @param type Optional constructor for the details type to enable type-safe deserialization.\n * @returns The current identity as {@link IIdentity}.\n * @remarks The `extends object` constraint is required for compatibility with JsonSerializer.deserializeFromInstance().\n */\n static async getCurrent<TDetails extends object = object>(type?: Constructor<TDetails>): Promise<IIdentity<TDetails>> {\n const cookie = this.getCookie();\n if (cookie.length == 2) {\n const json = atob(cookie[1]);\n const result = JSON.parse(json) as IdentityProviderResult;\n const details = type ? JsonSerializer.deserializeFromInstance(type, result.details) : result.details;\n return {\n id: result.id,\n name: result.name,\n details: details as TDetails,\n isSet: true,\n refresh: () => IdentityProvider.refresh(type)\n } as IIdentity<TDetails>;\n } else {\n const identity = await this.refresh<TDetails>(type);\n return identity;\n }\n }\n\n /** @inheritdoc */\n async getCurrent<TDetails extends object = object>(type?: Constructor<TDetails>): Promise<IIdentity<TDetails>> {\n return IdentityProvider.getCurrent<TDetails>(type);\n }\n\n static async refresh<TDetails extends object = object>(type?: Constructor<TDetails>): Promise<IIdentity<TDetails>> {\n IdentityProvider.clearCookie();\n const apiBasePath = IdentityProvider.apiBasePath || Globals.apiBasePath || '';\n const
|
|
1
|
+
{"version":3,"file":"IdentityProvider.js","sources":["../../../identity/IdentityProvider.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { Constructor, JsonSerializer } from '@cratis/fundamentals';\nimport { IIdentityProvider } from './IIdentityProvider';\nimport { IIdentity } from './IIdentity';\nimport { IdentityProviderResult } from './IdentityProviderResult';\nimport { GetHttpHeaders } from 'GetHttpHeaders';\nimport { Globals } from '../Globals';\nimport { UrlHelpers } from '../UrlHelpers';\nimport { joinPaths } from '../joinPaths';\n\n/**\n * Represents an implementation of {@link IIdentityProvider}.\n*/\nexport class IdentityProvider extends IIdentityProvider {\n\n static readonly CookieName = '.cratis-identity';\n static httpHeadersCallback: GetHttpHeaders | undefined;\n static apiBasePath: string = '';\n static origin: string = '';\n\n /**\n * Sets the HTTP headers callback.\n * @param callback Callback to set.\n */\n static setHttpHeadersCallback(callback: GetHttpHeaders): void {\n IdentityProvider.httpHeadersCallback = callback;\n }\n\n /**\n * Sets the API base path.\n * @param apiBasePath API base path to set.\n */\n static setApiBasePath(apiBasePath: string): void {\n IdentityProvider.apiBasePath = apiBasePath;\n }\n\n /**\n * Sets the origin.\n * @param origin Origin to set.\n */\n static setOrigin(origin: string): void {\n IdentityProvider.origin = origin;\n }\n\n /**\n * Gets the current identity by optionally specifying the details type.\n * @param type Optional constructor for the details type to enable type-safe deserialization.\n * @returns The current identity as {@link IIdentity}.\n * @remarks The `extends object` constraint is required for compatibility with JsonSerializer.deserializeFromInstance().\n */\n static async getCurrent<TDetails extends object = object>(type?: Constructor<TDetails>): Promise<IIdentity<TDetails>> {\n const cookie = this.getCookie();\n if (cookie.length == 2) {\n const json = atob(cookie[1]);\n const result = JSON.parse(json) as IdentityProviderResult;\n const details = type ? JsonSerializer.deserializeFromInstance(type, result.details) : result.details;\n return {\n id: result.id,\n name: result.name,\n details: details as TDetails,\n isSet: true,\n refresh: () => IdentityProvider.refresh(type)\n } as IIdentity<TDetails>;\n } else {\n const identity = await this.refresh<TDetails>(type);\n return identity;\n }\n }\n\n /** @inheritdoc */\n async getCurrent<TDetails extends object = object>(type?: Constructor<TDetails>): Promise<IIdentity<TDetails>> {\n return IdentityProvider.getCurrent<TDetails>(type);\n }\n\n static async refresh<TDetails extends object = object>(type?: Constructor<TDetails>): Promise<IIdentity<TDetails>> {\n IdentityProvider.clearCookie();\n const origin = IdentityProvider.origin || Globals.origin || '';\n const apiBasePath = IdentityProvider.apiBasePath || Globals.apiBasePath || '';\n const route = joinPaths(apiBasePath, '/.cratis/me');\n const url = UrlHelpers.createUrlFrom(origin, apiBasePath, route);\n const response = await fetch(\n url, {\n method: 'GET',\n headers: IdentityProvider.httpHeadersCallback?.() ?? {}\n });\n\n const result = await response.json() as IdentityProviderResult;\n const details = type ? JsonSerializer.deserializeFromInstance(type, result.details) : result.details;\n\n return {\n id: result.id,\n name: result.name,\n details: details as TDetails,\n isSet: true,\n refresh: () => IdentityProvider.refresh(type)\n };\n }\n\n private static getCookie() {\n if (typeof document === 'undefined') return [];\n const decoded = decodeURIComponent(document.cookie);\n const cookies = decoded.split(';').map(_ => _.trim());\n const cookie = cookies.find(_ => _.indexOf(`${IdentityProvider.CookieName}=`) == 0);\n if (cookie) {\n const keyValue = cookie.split('=');\n return [keyValue[0].trim(), keyValue[1].trim()];\n }\n return [];\n }\n\n private static clearCookie() {\n if (typeof document === 'undefined') return;\n document.cookie = `${IdentityProvider.CookieName}=;expires=Thu, 01 Jan 1970 00:00:00 GMT`;\n }\n}\n"],"names":["IIdentityProvider","JsonSerializer","Globals","joinPaths","UrlHelpers"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"an_identity_provider.d.ts","sourceRoot":"","sources":["../../../../../identity/for_IdentityProvider/given/an_identity_provider.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,qBAAa,oBAAoB;IAC7B,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,WAAW,EAAE;QAAE,SAAS,EAAE,MAAM,KAAK,CAAC,SAAS,CAAC;QAAC,OAAO,EAAE,MAAM,IAAI,CAAA;KAAE,CAAC;IACvE,mBAAmB,EAAE,MAAM,CAAC;IAC5B,cAAc,EAAE,MAAM,CAAC;;
|
|
1
|
+
{"version":3,"file":"an_identity_provider.d.ts","sourceRoot":"","sources":["../../../../../identity/for_IdentityProvider/given/an_identity_provider.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,qBAAa,oBAAoB;IAC7B,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,WAAW,EAAE;QAAE,SAAS,EAAE,MAAM,KAAK,CAAC,SAAS,CAAC;QAAC,OAAO,EAAE,MAAM,IAAI,CAAA;KAAE,CAAC;IACvE,mBAAmB,EAAE,MAAM,CAAC;IAC5B,cAAc,EAAE,MAAM,CAAC;;CAmB1B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"with_origin_set.d.ts","sourceRoot":"","sources":["../../../../../identity/for_IdentityProvider/when_refreshing/with_origin_set.ts"],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IdentityProvider.d.ts","sourceRoot":"","sources":["../../../identity/IdentityProvider.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAkB,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"IdentityProvider.d.ts","sourceRoot":"","sources":["../../../identity/IdentityProvider.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAkB,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAQhD,qBAAa,gBAAiB,SAAQ,iBAAiB;IAEnD,MAAM,CAAC,QAAQ,CAAC,UAAU,sBAAsB;IAChD,MAAM,CAAC,mBAAmB,EAAE,cAAc,GAAG,SAAS,CAAC;IACvD,MAAM,CAAC,WAAW,EAAE,MAAM,CAAM;IAChC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM;IAM3B,MAAM,CAAC,sBAAsB,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI;IAQ7D,MAAM,CAAC,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAQhD,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;WAUzB,UAAU,CAAC,QAAQ,SAAS,MAAM,GAAG,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAoB/G,UAAU,CAAC,QAAQ,SAAS,MAAM,GAAG,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;WAIjG,OAAO,CAAC,QAAQ,SAAS,MAAM,GAAG,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAwBlH,OAAO,CAAC,MAAM,CAAC,SAAS;IAYxB,OAAO,CAAC,MAAM,CAAC,WAAW;CAI7B"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { JsonSerializer } from '@cratis/fundamentals';
|
|
2
2
|
import { IIdentityProvider } from './IIdentityProvider.js';
|
|
3
3
|
import { Globals } from '../Globals.js';
|
|
4
|
+
import { UrlHelpers } from '../UrlHelpers.js';
|
|
4
5
|
import { joinPaths } from '../joinPaths.js';
|
|
5
6
|
|
|
6
7
|
class IdentityProvider extends IIdentityProvider {
|
|
@@ -41,8 +42,10 @@ class IdentityProvider extends IIdentityProvider {
|
|
|
41
42
|
}
|
|
42
43
|
static async refresh(type) {
|
|
43
44
|
IdentityProvider.clearCookie();
|
|
45
|
+
const origin = IdentityProvider.origin || Globals.origin || '';
|
|
44
46
|
const apiBasePath = IdentityProvider.apiBasePath || Globals.apiBasePath || '';
|
|
45
|
-
const
|
|
47
|
+
const route = joinPaths(apiBasePath, '/.cratis/me');
|
|
48
|
+
const url = UrlHelpers.createUrlFrom(origin, apiBasePath, route);
|
|
46
49
|
const response = await fetch(url, {
|
|
47
50
|
method: 'GET',
|
|
48
51
|
headers: IdentityProvider.httpHeadersCallback?.() ?? {}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IdentityProvider.js","sources":["../../../identity/IdentityProvider.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { Constructor, JsonSerializer } from '@cratis/fundamentals';\nimport { IIdentityProvider } from './IIdentityProvider';\nimport { IIdentity } from './IIdentity';\nimport { IdentityProviderResult } from './IdentityProviderResult';\nimport { GetHttpHeaders } from 'GetHttpHeaders';\nimport { Globals } from '../Globals';\nimport { joinPaths } from '../joinPaths';\n\n/**\n * Represents an implementation of {@link IIdentityProvider}.\n*/\nexport class IdentityProvider extends IIdentityProvider {\n\n static readonly CookieName = '.cratis-identity';\n static httpHeadersCallback: GetHttpHeaders | undefined;\n static apiBasePath: string = '';\n static origin: string = '';\n\n /**\n * Sets the HTTP headers callback.\n * @param callback Callback to set.\n */\n static setHttpHeadersCallback(callback: GetHttpHeaders): void {\n IdentityProvider.httpHeadersCallback = callback;\n }\n\n /**\n * Sets the API base path.\n * @param apiBasePath API base path to set.\n */\n static setApiBasePath(apiBasePath: string): void {\n IdentityProvider.apiBasePath = apiBasePath;\n }\n\n /**\n * Sets the origin.\n * @param origin Origin to set.\n */\n static setOrigin(origin: string): void {\n IdentityProvider.origin = origin;\n }\n\n /**\n * Gets the current identity by optionally specifying the details type.\n * @param type Optional constructor for the details type to enable type-safe deserialization.\n * @returns The current identity as {@link IIdentity}.\n * @remarks The `extends object` constraint is required for compatibility with JsonSerializer.deserializeFromInstance().\n */\n static async getCurrent<TDetails extends object = object>(type?: Constructor<TDetails>): Promise<IIdentity<TDetails>> {\n const cookie = this.getCookie();\n if (cookie.length == 2) {\n const json = atob(cookie[1]);\n const result = JSON.parse(json) as IdentityProviderResult;\n const details = type ? JsonSerializer.deserializeFromInstance(type, result.details) : result.details;\n return {\n id: result.id,\n name: result.name,\n details: details as TDetails,\n isSet: true,\n refresh: () => IdentityProvider.refresh(type)\n } as IIdentity<TDetails>;\n } else {\n const identity = await this.refresh<TDetails>(type);\n return identity;\n }\n }\n\n /** @inheritdoc */\n async getCurrent<TDetails extends object = object>(type?: Constructor<TDetails>): Promise<IIdentity<TDetails>> {\n return IdentityProvider.getCurrent<TDetails>(type);\n }\n\n static async refresh<TDetails extends object = object>(type?: Constructor<TDetails>): Promise<IIdentity<TDetails>> {\n IdentityProvider.clearCookie();\n const apiBasePath = IdentityProvider.apiBasePath || Globals.apiBasePath || '';\n const
|
|
1
|
+
{"version":3,"file":"IdentityProvider.js","sources":["../../../identity/IdentityProvider.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { Constructor, JsonSerializer } from '@cratis/fundamentals';\nimport { IIdentityProvider } from './IIdentityProvider';\nimport { IIdentity } from './IIdentity';\nimport { IdentityProviderResult } from './IdentityProviderResult';\nimport { GetHttpHeaders } from 'GetHttpHeaders';\nimport { Globals } from '../Globals';\nimport { UrlHelpers } from '../UrlHelpers';\nimport { joinPaths } from '../joinPaths';\n\n/**\n * Represents an implementation of {@link IIdentityProvider}.\n*/\nexport class IdentityProvider extends IIdentityProvider {\n\n static readonly CookieName = '.cratis-identity';\n static httpHeadersCallback: GetHttpHeaders | undefined;\n static apiBasePath: string = '';\n static origin: string = '';\n\n /**\n * Sets the HTTP headers callback.\n * @param callback Callback to set.\n */\n static setHttpHeadersCallback(callback: GetHttpHeaders): void {\n IdentityProvider.httpHeadersCallback = callback;\n }\n\n /**\n * Sets the API base path.\n * @param apiBasePath API base path to set.\n */\n static setApiBasePath(apiBasePath: string): void {\n IdentityProvider.apiBasePath = apiBasePath;\n }\n\n /**\n * Sets the origin.\n * @param origin Origin to set.\n */\n static setOrigin(origin: string): void {\n IdentityProvider.origin = origin;\n }\n\n /**\n * Gets the current identity by optionally specifying the details type.\n * @param type Optional constructor for the details type to enable type-safe deserialization.\n * @returns The current identity as {@link IIdentity}.\n * @remarks The `extends object` constraint is required for compatibility with JsonSerializer.deserializeFromInstance().\n */\n static async getCurrent<TDetails extends object = object>(type?: Constructor<TDetails>): Promise<IIdentity<TDetails>> {\n const cookie = this.getCookie();\n if (cookie.length == 2) {\n const json = atob(cookie[1]);\n const result = JSON.parse(json) as IdentityProviderResult;\n const details = type ? JsonSerializer.deserializeFromInstance(type, result.details) : result.details;\n return {\n id: result.id,\n name: result.name,\n details: details as TDetails,\n isSet: true,\n refresh: () => IdentityProvider.refresh(type)\n } as IIdentity<TDetails>;\n } else {\n const identity = await this.refresh<TDetails>(type);\n return identity;\n }\n }\n\n /** @inheritdoc */\n async getCurrent<TDetails extends object = object>(type?: Constructor<TDetails>): Promise<IIdentity<TDetails>> {\n return IdentityProvider.getCurrent<TDetails>(type);\n }\n\n static async refresh<TDetails extends object = object>(type?: Constructor<TDetails>): Promise<IIdentity<TDetails>> {\n IdentityProvider.clearCookie();\n const origin = IdentityProvider.origin || Globals.origin || '';\n const apiBasePath = IdentityProvider.apiBasePath || Globals.apiBasePath || '';\n const route = joinPaths(apiBasePath, '/.cratis/me');\n const url = UrlHelpers.createUrlFrom(origin, apiBasePath, route);\n const response = await fetch(\n url, {\n method: 'GET',\n headers: IdentityProvider.httpHeadersCallback?.() ?? {}\n });\n\n const result = await response.json() as IdentityProviderResult;\n const details = type ? JsonSerializer.deserializeFromInstance(type, result.details) : result.details;\n\n return {\n id: result.id,\n name: result.name,\n details: details as TDetails,\n isSet: true,\n refresh: () => IdentityProvider.refresh(type)\n };\n }\n\n private static getCookie() {\n if (typeof document === 'undefined') return [];\n const decoded = decodeURIComponent(document.cookie);\n const cookies = decoded.split(';').map(_ => _.trim());\n const cookie = cookies.find(_ => _.indexOf(`${IdentityProvider.CookieName}=`) == 0);\n if (cookie) {\n const keyValue = cookie.split('=');\n return [keyValue[0].trim(), keyValue[1].trim()];\n }\n return [];\n }\n\n private static clearCookie() {\n if (typeof document === 'undefined') return;\n document.cookie = `${IdentityProvider.CookieName}=;expires=Thu, 01 Jan 1970 00:00:00 GMT`;\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"an_identity_provider.d.ts","sourceRoot":"","sources":["../../../../../identity/for_IdentityProvider/given/an_identity_provider.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,qBAAa,oBAAoB;IAC7B,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,WAAW,EAAE;QAAE,SAAS,EAAE,MAAM,KAAK,CAAC,SAAS,CAAC;QAAC,OAAO,EAAE,MAAM,IAAI,CAAA;KAAE,CAAC;IACvE,mBAAmB,EAAE,MAAM,CAAC;IAC5B,cAAc,EAAE,MAAM,CAAC;;
|
|
1
|
+
{"version":3,"file":"an_identity_provider.d.ts","sourceRoot":"","sources":["../../../../../identity/for_IdentityProvider/given/an_identity_provider.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,qBAAa,oBAAoB;IAC7B,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,WAAW,EAAE;QAAE,SAAS,EAAE,MAAM,KAAK,CAAC,SAAS,CAAC;QAAC,OAAO,EAAE,MAAM,IAAI,CAAA;KAAE,CAAC;IACvE,mBAAmB,EAAE,MAAM,CAAC;IAC5B,cAAc,EAAE,MAAM,CAAC;;CAmB1B"}
|
|
@@ -9,7 +9,12 @@ export class an_identity_provider {
|
|
|
9
9
|
this.originalApiBasePath = IdentityProvider.apiBasePath;
|
|
10
10
|
this.originalOrigin = IdentityProvider.origin;
|
|
11
11
|
if (typeof document === 'undefined') {
|
|
12
|
-
global.document = {
|
|
12
|
+
global.document = {
|
|
13
|
+
cookie: '',
|
|
14
|
+
location: {
|
|
15
|
+
origin: 'http://localhost'
|
|
16
|
+
}
|
|
17
|
+
};
|
|
13
18
|
}
|
|
14
19
|
this.fetchHelper = createFetchHelper();
|
|
15
20
|
this.fetchStub = this.fetchHelper.stubFetch();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"an_identity_provider.js","sourceRoot":"","sources":["../../../../../identity/for_IdentityProvider/given/an_identity_provider.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEjE,MAAM,OAAO,oBAAoB;IAC7B,SAAS,CAAkB;IAC3B,WAAW,CAA4D;IACvE,mBAAmB,CAAS;IAC5B,cAAc,CAAS;IAEvB;QACI,IAAI,CAAC,mBAAmB,GAAG,gBAAgB,CAAC,WAAW,CAAC;QACxD,IAAI,CAAC,cAAc,GAAG,gBAAgB,CAAC,MAAM,CAAC;QAG9C,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,CAAC;YACjC,
|
|
1
|
+
{"version":3,"file":"an_identity_provider.js","sourceRoot":"","sources":["../../../../../identity/for_IdentityProvider/given/an_identity_provider.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEjE,MAAM,OAAO,oBAAoB;IAC7B,SAAS,CAAkB;IAC3B,WAAW,CAA4D;IACvE,mBAAmB,CAAS;IAC5B,cAAc,CAAS;IAEvB;QACI,IAAI,CAAC,mBAAmB,GAAG,gBAAgB,CAAC,WAAW,CAAC;QACxD,IAAI,CAAC,cAAc,GAAG,gBAAgB,CAAC,MAAM,CAAC;QAG9C,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,CAAC;YACjC,MAA0E,CAAC,QAAQ,GAAG;gBACnF,MAAM,EAAE,EAAE;gBACV,QAAQ,EAAE;oBACN,MAAM,EAAE,kBAAkB;iBAC7B;aACJ,CAAC;QACN,CAAC;QAED,IAAI,CAAC,WAAW,GAAG,iBAAiB,EAAE,CAAC;QACvC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC;IAClD,CAAC;CACJ"}
|
|
@@ -2,6 +2,7 @@ import { IdentityProvider } from '../../IdentityProvider';
|
|
|
2
2
|
import { an_identity_provider } from '../given/an_identity_provider';
|
|
3
3
|
import { given } from '../../../given';
|
|
4
4
|
describe('when refreshing with api base path set', given(an_identity_provider, context => {
|
|
5
|
+
let actualUrl;
|
|
5
6
|
beforeEach(async () => {
|
|
6
7
|
context.fetchStub.resolves({
|
|
7
8
|
ok: true,
|
|
@@ -13,12 +14,13 @@ describe('when refreshing with api base path set', given(an_identity_provider, c
|
|
|
13
14
|
});
|
|
14
15
|
IdentityProvider.setApiBasePath('/custom/api');
|
|
15
16
|
await IdentityProvider.refresh();
|
|
17
|
+
actualUrl = context.fetchStub.firstCall.args[0];
|
|
16
18
|
});
|
|
17
19
|
afterEach(() => {
|
|
18
20
|
IdentityProvider.setApiBasePath('');
|
|
19
21
|
});
|
|
20
|
-
it('
|
|
21
|
-
|
|
22
|
+
it('should_call_fetch_with_api_base_path_prefixed', () => {
|
|
23
|
+
actualUrl.pathname.should.equal('/custom/api/.cratis/me');
|
|
22
24
|
});
|
|
23
25
|
}));
|
|
24
26
|
//# sourceMappingURL=with_api_base_path_set.js.map
|
package/dist/esm/identity/for_IdentityProvider/when_refreshing/with_api_base_path_set.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"with_api_base_path_set.js","sourceRoot":"","sources":["../../../../../identity/for_IdentityProvider/when_refreshing/with_api_base_path_set.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEvC,QAAQ,CAAC,wCAAwC,EAAE,KAAK,CAAC,oBAAoB,EAAE,OAAO,CAAC,EAAE;IACrF,UAAU,CAAC,KAAK,IAAI,EAAE;QAClB,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC;YACvB,EAAE,EAAE,IAAI;YACR,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;gBACf,EAAE,EAAE,cAAc;gBAClB,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;aAC7B,CAAC;SACO,CAAC,CAAC;QAEf,gBAAgB,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;QAC/C,MAAM,gBAAgB,CAAC,OAAO,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"with_api_base_path_set.js","sourceRoot":"","sources":["../../../../../identity/for_IdentityProvider/when_refreshing/with_api_base_path_set.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEvC,QAAQ,CAAC,wCAAwC,EAAE,KAAK,CAAC,oBAAoB,EAAE,OAAO,CAAC,EAAE;IACrF,IAAI,SAAc,CAAC;IAEnB,UAAU,CAAC,KAAK,IAAI,EAAE;QAClB,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC;YACvB,EAAE,EAAE,IAAI;YACR,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;gBACf,EAAE,EAAE,cAAc;gBAClB,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;aAC7B,CAAC;SACO,CAAC,CAAC;QAEf,gBAAgB,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;QAC/C,MAAM,gBAAgB,CAAC,OAAO,EAAE,CAAC;QAEjC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACX,gBAAgB,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACrD,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC,CAAC"}
|
package/dist/esm/identity/for_IdentityProvider/when_refreshing/with_globals_api_base_path.js
CHANGED
|
@@ -4,6 +4,7 @@ import { an_identity_provider } from '../given/an_identity_provider';
|
|
|
4
4
|
import { given } from '../../../given';
|
|
5
5
|
describe('when refreshing with globals api base path', given(an_identity_provider, context => {
|
|
6
6
|
let originalGlobalsApiBasePath;
|
|
7
|
+
let actualUrl;
|
|
7
8
|
beforeEach(async () => {
|
|
8
9
|
context.fetchStub.resolves({
|
|
9
10
|
ok: true,
|
|
@@ -17,13 +18,14 @@ describe('when refreshing with globals api base path', given(an_identity_provide
|
|
|
17
18
|
Globals.apiBasePath = '/global/api';
|
|
18
19
|
IdentityProvider.setApiBasePath('');
|
|
19
20
|
await IdentityProvider.refresh();
|
|
21
|
+
actualUrl = context.fetchStub.firstCall.args[0];
|
|
20
22
|
});
|
|
21
23
|
afterEach(() => {
|
|
22
24
|
Globals.apiBasePath = originalGlobalsApiBasePath;
|
|
23
25
|
IdentityProvider.setApiBasePath('');
|
|
24
26
|
});
|
|
25
|
-
it('
|
|
26
|
-
|
|
27
|
+
it('should_call_fetch_with_globals_api_base_path_prefixed', () => {
|
|
28
|
+
actualUrl.pathname.should.equal('/global/api/.cratis/me');
|
|
27
29
|
});
|
|
28
30
|
}));
|
|
29
31
|
//# sourceMappingURL=with_globals_api_base_path.js.map
|
package/dist/esm/identity/for_IdentityProvider/when_refreshing/with_globals_api_base_path.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"with_globals_api_base_path.js","sourceRoot":"","sources":["../../../../../identity/for_IdentityProvider/when_refreshing/with_globals_api_base_path.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEvC,QAAQ,CAAC,4CAA4C,EAAE,KAAK,CAAC,oBAAoB,EAAE,OAAO,CAAC,EAAE;IACzF,IAAI,0BAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"with_globals_api_base_path.js","sourceRoot":"","sources":["../../../../../identity/for_IdentityProvider/when_refreshing/with_globals_api_base_path.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEvC,QAAQ,CAAC,4CAA4C,EAAE,KAAK,CAAC,oBAAoB,EAAE,OAAO,CAAC,EAAE;IACzF,IAAI,0BAAkC,CAAC;IACvC,IAAI,SAAc,CAAC;IAEnB,UAAU,CAAC,KAAK,IAAI,EAAE;QAClB,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC;YACvB,EAAE,EAAE,IAAI;YACR,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;gBACf,EAAE,EAAE,cAAc;gBAClB,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;aAC7B,CAAC;SACO,CAAC,CAAC;QAEf,0BAA0B,GAAG,OAAO,CAAC,WAAW,CAAC;QACjD,OAAO,CAAC,WAAW,GAAG,aAAa,CAAC;QACpC,gBAAgB,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QACpC,MAAM,gBAAgB,CAAC,OAAO,EAAE,CAAC;QAEjC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACX,OAAO,CAAC,WAAW,GAAG,0BAA0B,CAAC;QACjD,gBAAgB,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC7D,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"with_origin_set.d.ts","sourceRoot":"","sources":["../../../../../identity/for_IdentityProvider/when_refreshing/with_origin_set.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { IdentityProvider } from '../../IdentityProvider';
|
|
2
|
+
import { an_identity_provider } from '../given/an_identity_provider';
|
|
3
|
+
import { given } from '../../../given';
|
|
4
|
+
describe('when refreshing with origin set', given(an_identity_provider, context => {
|
|
5
|
+
let actualUrl;
|
|
6
|
+
beforeEach(async () => {
|
|
7
|
+
context.fetchStub.resolves({
|
|
8
|
+
ok: true,
|
|
9
|
+
json: async () => ({
|
|
10
|
+
id: 'test-user-id',
|
|
11
|
+
name: 'Test User',
|
|
12
|
+
details: { role: 'admin' }
|
|
13
|
+
})
|
|
14
|
+
});
|
|
15
|
+
IdentityProvider.setOrigin('https://example.com');
|
|
16
|
+
IdentityProvider.setApiBasePath('/api/v1');
|
|
17
|
+
await IdentityProvider.refresh();
|
|
18
|
+
actualUrl = context.fetchStub.firstCall.args[0];
|
|
19
|
+
});
|
|
20
|
+
afterEach(() => {
|
|
21
|
+
IdentityProvider.setOrigin('');
|
|
22
|
+
IdentityProvider.setApiBasePath('');
|
|
23
|
+
});
|
|
24
|
+
it('should_call_fetch_with_full_url_including_origin', () => {
|
|
25
|
+
actualUrl.href.should.equal('https://example.com/api/v1/.cratis/me');
|
|
26
|
+
});
|
|
27
|
+
it('should_have_correct_origin', () => {
|
|
28
|
+
actualUrl.origin.should.equal('https://example.com');
|
|
29
|
+
});
|
|
30
|
+
it('should_have_correct_pathname', () => {
|
|
31
|
+
actualUrl.pathname.should.equal('/api/v1/.cratis/me');
|
|
32
|
+
});
|
|
33
|
+
}));
|
|
34
|
+
//# sourceMappingURL=with_origin_set.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"with_origin_set.js","sourceRoot":"","sources":["../../../../../identity/for_IdentityProvider/when_refreshing/with_origin_set.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEvC,QAAQ,CAAC,iCAAiC,EAAE,KAAK,CAAC,oBAAoB,EAAE,OAAO,CAAC,EAAE;IAC9E,IAAI,SAAc,CAAC;IAEnB,UAAU,CAAC,KAAK,IAAI,EAAE;QAClB,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC;YACvB,EAAE,EAAE,IAAI;YACR,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;gBACf,EAAE,EAAE,cAAc;gBAClB,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;aAC7B,CAAC;SACO,CAAC,CAAC;QAEf,gBAAgB,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;QAClD,gBAAgB,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QAE3C,MAAM,gBAAgB,CAAC,OAAO,EAAE,CAAC;QAEjC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACX,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC/B,gBAAgB,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QACxD,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QAClC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACpC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC,CAAC"}
|
|
@@ -4,6 +4,7 @@ import { an_identity_provider } from '../given/an_identity_provider';
|
|
|
4
4
|
import { given } from '../../../given';
|
|
5
5
|
describe('when refreshing without api base path', given(an_identity_provider, context => {
|
|
6
6
|
let originalGlobalsApiBasePath;
|
|
7
|
+
let actualUrl;
|
|
7
8
|
beforeEach(async () => {
|
|
8
9
|
context.fetchStub.resolves({
|
|
9
10
|
ok: true,
|
|
@@ -17,12 +18,13 @@ describe('when refreshing without api base path', given(an_identity_provider, co
|
|
|
17
18
|
Globals.apiBasePath = '';
|
|
18
19
|
IdentityProvider.setApiBasePath('');
|
|
19
20
|
await IdentityProvider.refresh();
|
|
21
|
+
actualUrl = context.fetchStub.firstCall.args[0];
|
|
20
22
|
});
|
|
21
23
|
afterEach(() => {
|
|
22
24
|
Globals.apiBasePath = originalGlobalsApiBasePath;
|
|
23
25
|
});
|
|
24
|
-
it('
|
|
25
|
-
|
|
26
|
+
it('should_call_fetch_with_default_path', () => {
|
|
27
|
+
actualUrl.pathname.should.equal('/.cratis/me');
|
|
26
28
|
});
|
|
27
29
|
}));
|
|
28
30
|
//# sourceMappingURL=without_api_base_path.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"without_api_base_path.js","sourceRoot":"","sources":["../../../../../identity/for_IdentityProvider/when_refreshing/without_api_base_path.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEvC,QAAQ,CAAC,uCAAuC,EAAE,KAAK,CAAC,oBAAoB,EAAE,OAAO,CAAC,EAAE;IACpF,IAAI,0BAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"without_api_base_path.js","sourceRoot":"","sources":["../../../../../identity/for_IdentityProvider/when_refreshing/without_api_base_path.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEvC,QAAQ,CAAC,uCAAuC,EAAE,KAAK,CAAC,oBAAoB,EAAE,OAAO,CAAC,EAAE;IACpF,IAAI,0BAAkC,CAAC;IACvC,IAAI,SAAc,CAAC;IAEnB,UAAU,CAAC,KAAK,IAAI,EAAE;QAClB,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC;YACvB,EAAE,EAAE,IAAI;YACR,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;gBACf,EAAE,EAAE,cAAc;gBAClB,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;aAC7B,CAAC;SACO,CAAC,CAAC;QAEf,0BAA0B,GAAG,OAAO,CAAC,WAAW,CAAC;QACjD,OAAO,CAAC,WAAW,GAAG,EAAE,CAAC;QACzB,gBAAgB,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QACpC,MAAM,gBAAgB,CAAC,OAAO,EAAE,CAAC;QAEjC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACX,OAAO,CAAC,WAAW,GAAG,0BAA0B,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC3C,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC,CAAC"}
|