@fluidframework/routerlicious-urlresolver 2.0.0-rc.2.0.2 → 2.0.0-rc.3.0.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.
- package/CHANGELOG.md +23 -0
- package/api-report/routerlicious-urlresolver.api.md +2 -2
- package/dist/public.d.ts +12 -0
- package/dist/urlResolver.d.ts +1 -1
- package/dist/urlResolver.d.ts.map +1 -1
- package/dist/urlResolver.js +4 -4
- package/dist/urlResolver.js.map +1 -1
- package/internal.d.ts +11 -0
- package/lib/public.d.ts +12 -0
- package/lib/urlResolver.d.ts +1 -1
- package/lib/urlResolver.d.ts.map +1 -1
- package/lib/urlResolver.js +1 -1
- package/lib/urlResolver.js.map +1 -1
- package/package.json +24 -45
- package/src/urlResolver.ts +3 -2
- package/api-extractor-cjs.json +0 -8
- package/dist/routerlicious-urlresolver-alpha.d.ts +0 -13
- package/dist/routerlicious-urlresolver-beta.d.ts +0 -17
- package/dist/routerlicious-urlresolver-public.d.ts +0 -17
- package/dist/routerlicious-urlresolver-untrimmed.d.ts +0 -44
- package/lib/routerlicious-urlresolver-alpha.d.ts +0 -13
- package/lib/routerlicious-urlresolver-beta.d.ts +0 -17
- package/lib/routerlicious-urlresolver-public.d.ts +0 -17
- package/lib/routerlicious-urlresolver-untrimmed.d.ts +0 -44
- package/lib/test/routerlicious-urlResolver.spec.js +0 -144
- package/lib/test/routerlicious-urlResolver.spec.js.map +0 -1
- package/lib/test/types/validateRouterliciousUrlresolverPrevious.generated.js +0 -8
- package/lib/test/types/validateRouterliciousUrlresolverPrevious.generated.js.map +0 -1
- /package/{dist → lib}/tsdoc-metadata.json +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,28 @@
|
|
|
1
1
|
# @fluidframework/routerlicious-urlresolver
|
|
2
2
|
|
|
3
|
+
## 2.0.0-rc.3.0.0
|
|
4
|
+
|
|
5
|
+
### Major Changes
|
|
6
|
+
|
|
7
|
+
- Packages now use package.json "exports" and require modern module resolution [97d68aa06b](https://github.com/microsoft/FluidFramework/commit/97d68aa06bd5c022ecb026655814aea222a062ae)
|
|
8
|
+
|
|
9
|
+
Fluid Framework packages have been updated to use the [package.json "exports"
|
|
10
|
+
field](https://nodejs.org/docs/latest-v18.x/api/packages.html#exports) to define explicit entry points for both
|
|
11
|
+
TypeScript types and implementation code.
|
|
12
|
+
|
|
13
|
+
This means that using Fluid Framework packages require the following TypeScript settings in tsconfig.json:
|
|
14
|
+
|
|
15
|
+
- `"moduleResolution": "Node16"` with `"module": "Node16"`
|
|
16
|
+
- `"moduleResolution": "Bundler"` with `"module": "ESNext"`
|
|
17
|
+
|
|
18
|
+
We recommend using Node16/Node16 unless absolutely necessary. That will produce transpiled JavaScript that is suitable
|
|
19
|
+
for use with modern versions of Node.js _and_ Bundlers.
|
|
20
|
+
[See the TypeScript documentation](https://www.typescriptlang.org/tsconfig#moduleResolution) for more information
|
|
21
|
+
regarding the module and moduleResolution options.
|
|
22
|
+
|
|
23
|
+
**Node10 moduleResolution is not supported; it does not support Fluid Framework's API structuring pattern that is used
|
|
24
|
+
to distinguish stable APIs from those that are in development.**
|
|
25
|
+
|
|
3
26
|
## 2.0.0-rc.2.0.0
|
|
4
27
|
|
|
5
28
|
### Minor Changes
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
```ts
|
|
6
6
|
|
|
7
7
|
import { IRequest } from '@fluidframework/core-interfaces';
|
|
8
|
-
import { IResolvedUrl } from '@fluidframework/driver-definitions';
|
|
9
|
-
import { IUrlResolver } from '@fluidframework/driver-definitions';
|
|
8
|
+
import { IResolvedUrl } from '@fluidframework/driver-definitions/internal';
|
|
9
|
+
import { IUrlResolver } from '@fluidframework/driver-definitions/internal';
|
|
10
10
|
import { IUser } from '@fluidframework/protocol-definitions';
|
|
11
11
|
import { Provider } from 'nconf';
|
|
12
12
|
|
package/dist/public.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
|
+
* Licensed under the MIT License.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
/*
|
|
7
|
+
* THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
|
|
8
|
+
* Generated by "flub generate entrypoints" in @fluidframework/build-tools.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
export {}
|
|
12
|
+
|
package/dist/urlResolver.d.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
import { IRequest } from "@fluidframework/core-interfaces";
|
|
6
|
-
import { IResolvedUrl, IUrlResolver } from "@fluidframework/driver-definitions";
|
|
6
|
+
import { IResolvedUrl, IUrlResolver } from "@fluidframework/driver-definitions/internal";
|
|
7
7
|
import { IUser } from "@fluidframework/protocol-definitions";
|
|
8
8
|
import { Provider } from "./nconf.cjs";
|
|
9
9
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"urlResolver.d.ts","sourceRoot":"","sources":["../src/urlResolver.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"urlResolver.d.ts","sourceRoot":"","sources":["../src/urlResolver.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAE3D,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,6CAA6C,CAAC;AACzF,OAAO,EAAE,KAAK,EAAE,MAAM,sCAAsC,CAAC;AAE7D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAQvC;;GAEG;AACH,qBAAa,wBAAyB,YAAW,YAAY;IAE3D,OAAO,CAAC,QAAQ,CAAC,MAAM;IAGvB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAJP,MAAM,EACpB;QAAE,QAAQ,EAAE,QAAQ,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GAC5D,SAAS,EACK,QAAQ,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,EAC/B,OAAO,EAAE,MAAM;IAGjC;;OAEG;IACU,OAAO,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;IA8G7D,cAAc,CAAC,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAgB5F;AAED;;GAEG;AACH,MAAM,WAAW,WAAY,SAAQ,KAAK;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACb;AAED;;GAEG;AACH,MAAM,WAAW,OAAO;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACnB"}
|
package/dist/urlResolver.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
7
|
exports.RouterliciousUrlResolver = void 0;
|
|
8
|
-
const
|
|
8
|
+
const internal_1 = require("@fluidframework/core-utils/internal");
|
|
9
9
|
const r11sServers = [
|
|
10
10
|
"www.wu2-ppe.prague.office-int.com",
|
|
11
11
|
"www.wu2.prague.office-int.com",
|
|
@@ -115,10 +115,10 @@ class RouterliciousUrlResolver {
|
|
|
115
115
|
}
|
|
116
116
|
async getAbsoluteUrl(resolvedUrl, relativeUrl) {
|
|
117
117
|
const parsedUrl = new URL(resolvedUrl.url);
|
|
118
|
-
(0,
|
|
118
|
+
(0, internal_1.assert)(!!parsedUrl.pathname, 0x0b9 /* "PathName should exist" */);
|
|
119
119
|
const [, tenantId, documentId] = parsedUrl.pathname.split("/");
|
|
120
|
-
(0,
|
|
121
|
-
(0,
|
|
120
|
+
(0, internal_1.assert)(!!tenantId, 0x0ba /* "Tenant id should exist" */);
|
|
121
|
+
(0, internal_1.assert)(!!documentId, 0x0bb /* "Document id should exist" */);
|
|
122
122
|
let url = relativeUrl;
|
|
123
123
|
if (url.startsWith("/")) {
|
|
124
124
|
url = url.substr(1);
|
package/dist/urlResolver.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"urlResolver.js","sourceRoot":"","sources":["../src/urlResolver.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;
|
|
1
|
+
{"version":3,"file":"urlResolver.js","sourceRoot":"","sources":["../src/urlResolver.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { IRequest } from \"@fluidframework/core-interfaces\";\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { IResolvedUrl, IUrlResolver } from \"@fluidframework/driver-definitions/internal\";\nimport { IUser } from \"@fluidframework/protocol-definitions\";\n\nimport { Provider } from \"./nconf.cjs\";\n\nconst r11sServers = [\n\t\"www.wu2-ppe.prague.office-int.com\",\n\t\"www.wu2.prague.office-int.com\",\n\t\"www.eu.prague.office-int.com\",\n];\n\n/**\n * @internal\n */\nexport class RouterliciousUrlResolver implements IUrlResolver {\n\tconstructor(\n\t\tprivate readonly config:\n\t\t\t| { provider: Provider; tenantId: string; documentId: string }\n\t\t\t| undefined,\n\t\tprivate readonly getToken: () => Promise<string>,\n\t\tprivate readonly hostUrl: string,\n\t) {}\n\n\t/**\n\t * Handles a request and returns the relevant endpoints for the environment\n\t */\n\tpublic async resolve(request: IRequest): Promise<IResolvedUrl | undefined> {\n\t\tlet requestedUrl = request.url;\n\n\t\t// If we know the original hostname, reinsert it\n\t\tif (this.config && request.url.startsWith(\"/\")) {\n\t\t\trequestedUrl = `http://dummy:3000${request.url}`;\n\t\t}\n\n\t\tconst reqUrl = new URL(requestedUrl);\n\t\tconst server = reqUrl.hostname.toLowerCase();\n\n\t\t// If we don't have a valid server or a prescriptive config, we cannot resolve the URL\n\t\tif (\n\t\t\t!(\n\t\t\t\tr11sServers.includes(server) ||\n\t\t\t\t(server === \"localhost\" && reqUrl.port === \"3000\") ||\n\t\t\t\tthis.config\n\t\t\t)\n\t\t) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst path = reqUrl.pathname.split(\"/\");\n\t\tlet tenantId: string;\n\t\tlet documentId: string;\n\t\tlet provider: Provider | undefined;\n\t\tif (this.config) {\n\t\t\ttenantId = this.config.tenantId;\n\t\t\tdocumentId = this.config.documentId;\n\t\t\tprovider = this.config.provider;\n\t\t} else if (path.length >= 4) {\n\t\t\ttenantId = path[2];\n\t\t\tdocumentId = path[3];\n\t\t} else {\n\t\t\ttenantId = \"fluid\";\n\t\t\tdocumentId = path[2];\n\t\t}\n\n\t\tconst token = await this.getToken();\n\n\t\tconst isLocalHost = server === \"localhost\";\n\t\tconst isInternalRequest = server.includes(\"gateway\"); // e.g. gateway:3000 || fierce-dog-gateway:3000\n\n\t\tconst serverSuffix = isLocalHost ? `${server}:3003` : server.substring(4);\n\n\t\tlet fluidUrl =\n\t\t\t\"https://\" +\n\t\t\t`${\n\t\t\t\tthis.config\n\t\t\t\t\t? new URL(this.config.provider.get(\"worker:serverUrl\")).host\n\t\t\t\t\t: serverSuffix\n\t\t\t}/` +\n\t\t\t`${encodeURIComponent(tenantId)}/` +\n\t\t\t`${encodeURIComponent(documentId)}`;\n\n\t\t// In case of any additional parameters add them back to the url\n\t\tif (reqUrl.search) {\n\t\t\tconst searchParams = reqUrl.search;\n\t\t\tif (searchParams) {\n\t\t\t\tfluidUrl += searchParams;\n\t\t\t}\n\t\t}\n\n\t\tlet storageUrl = \"\";\n\t\tlet ordererUrl = \"\";\n\t\tlet deltaStorageUrl = \"\";\n\n\t\t// There is no provider when using debugging tooling\n\t\tif (provider && isInternalRequest) {\n\t\t\tstorageUrl = provider.get(\"worker:internalBlobStorageUrl\");\n\t\t\tordererUrl = provider.get(\"worker:alfredUrl\");\n\t\t\tdeltaStorageUrl = `${provider.get(\"worker:alfredUrl\")}/deltas/${encodeURIComponent(\n\t\t\t\ttenantId,\n\t\t\t)}/${encodeURIComponent(documentId)}`;\n\t\t} else if (provider) {\n\t\t\tstorageUrl = provider\n\t\t\t\t.get(\"worker:blobStorageUrl\")\n\t\t\t\t.replace(\"historian:3000\", \"localhost:3001\");\n\t\t\tordererUrl = provider.get(\"worker:serverUrl\");\n\t\t\tdeltaStorageUrl = `${ordererUrl}/deltas/${encodeURIComponent(\n\t\t\t\ttenantId,\n\t\t\t)}/${encodeURIComponent(documentId)}`;\n\t\t} else if (isLocalHost) {\n\t\t\tstorageUrl = `http://localhost:3001`;\n\t\t\tordererUrl = `http://localhost:3003`;\n\t\t\tdeltaStorageUrl = `http://localhost:3003/deltas/${tenantId}/${documentId}`;\n\t\t} else {\n\t\t\tstorageUrl = `https://historian.${serverSuffix}`;\n\t\t\tordererUrl = `https://alfred.${serverSuffix}`;\n\t\t\tdeltaStorageUrl = `https://alfred.${serverSuffix}/deltas/${tenantId}/${documentId}`;\n\t\t}\n\n\t\tstorageUrl += `/repos/${tenantId}`;\n\t\tordererUrl += ``;\n\t\tdeltaStorageUrl += ``;\n\n\t\tconst resolved: IResolvedUrl = {\n\t\t\tendpoints: {\n\t\t\t\tstorageUrl,\n\t\t\t\tdeltaStorageUrl,\n\t\t\t\tordererUrl,\n\t\t\t},\n\t\t\tid: documentId,\n\t\t\ttokens: { jwt: token },\n\t\t\ttype: \"fluid\",\n\t\t\turl: fluidUrl,\n\t\t};\n\t\treturn resolved;\n\t}\n\n\tpublic async getAbsoluteUrl(resolvedUrl: IResolvedUrl, relativeUrl: string): Promise<string> {\n\t\tconst parsedUrl = new URL(resolvedUrl.url);\n\t\tassert(!!parsedUrl.pathname, 0x0b9 /* \"PathName should exist\" */);\n\t\tconst [, tenantId, documentId] = parsedUrl.pathname.split(\"/\");\n\t\tassert(!!tenantId, 0x0ba /* \"Tenant id should exist\" */);\n\t\tassert(!!documentId, 0x0bb /* \"Document id should exist\" */);\n\n\t\tlet url = relativeUrl;\n\t\tif (url.startsWith(\"/\")) {\n\t\t\turl = url.substr(1);\n\t\t}\n\n\t\treturn `${this.hostUrl}/${encodeURIComponent(tenantId)}/${encodeURIComponent(\n\t\t\tdocumentId,\n\t\t)}/${url}`;\n\t}\n}\n\n/**\n * @internal\n */\nexport interface IAlfredUser extends IUser {\n\tdisplayName: string;\n\tname: string;\n}\n\n/**\n * @internal\n */\nexport interface IConfig {\n\tserverUrl: string;\n\tblobStorageUrl: string;\n\ttenantId: string;\n\tdocumentId: string;\n}\n"]}
|
package/internal.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
|
+
* Licensed under the MIT License.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
/*
|
|
7
|
+
* THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
|
|
8
|
+
* Generated by "flub generate entrypoints" in @fluidframework/build-tools.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
export * from "./lib/index.js";
|
package/lib/public.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
|
+
* Licensed under the MIT License.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
/*
|
|
7
|
+
* THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
|
|
8
|
+
* Generated by "flub generate entrypoints" in @fluidframework/build-tools.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
export {}
|
|
12
|
+
|
package/lib/urlResolver.d.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
import { IRequest } from "@fluidframework/core-interfaces";
|
|
6
|
-
import { IResolvedUrl, IUrlResolver } from "@fluidframework/driver-definitions";
|
|
6
|
+
import { IResolvedUrl, IUrlResolver } from "@fluidframework/driver-definitions/internal";
|
|
7
7
|
import { IUser } from "@fluidframework/protocol-definitions";
|
|
8
8
|
import { Provider } from "./nconf.cjs";
|
|
9
9
|
/**
|
package/lib/urlResolver.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"urlResolver.d.ts","sourceRoot":"","sources":["../src/urlResolver.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"urlResolver.d.ts","sourceRoot":"","sources":["../src/urlResolver.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAE3D,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,6CAA6C,CAAC;AACzF,OAAO,EAAE,KAAK,EAAE,MAAM,sCAAsC,CAAC;AAE7D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAQvC;;GAEG;AACH,qBAAa,wBAAyB,YAAW,YAAY;IAE3D,OAAO,CAAC,QAAQ,CAAC,MAAM;IAGvB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAJP,MAAM,EACpB;QAAE,QAAQ,EAAE,QAAQ,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GAC5D,SAAS,EACK,QAAQ,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,EAC/B,OAAO,EAAE,MAAM;IAGjC;;OAEG;IACU,OAAO,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;IA8G7D,cAAc,CAAC,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAgB5F;AAED;;GAEG;AACH,MAAM,WAAW,WAAY,SAAQ,KAAK;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACb;AAED;;GAEG;AACH,MAAM,WAAW,OAAO;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACnB"}
|
package/lib/urlResolver.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
|
-
import { assert } from "@fluidframework/core-utils";
|
|
5
|
+
import { assert } from "@fluidframework/core-utils/internal";
|
|
6
6
|
const r11sServers = [
|
|
7
7
|
"www.wu2-ppe.prague.office-int.com",
|
|
8
8
|
"www.wu2.prague.office-int.com",
|
package/lib/urlResolver.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"urlResolver.js","sourceRoot":"","sources":["../src/urlResolver.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"urlResolver.js","sourceRoot":"","sources":["../src/urlResolver.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { IRequest } from \"@fluidframework/core-interfaces\";\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { IResolvedUrl, IUrlResolver } from \"@fluidframework/driver-definitions/internal\";\nimport { IUser } from \"@fluidframework/protocol-definitions\";\n\nimport { Provider } from \"./nconf.cjs\";\n\nconst r11sServers = [\n\t\"www.wu2-ppe.prague.office-int.com\",\n\t\"www.wu2.prague.office-int.com\",\n\t\"www.eu.prague.office-int.com\",\n];\n\n/**\n * @internal\n */\nexport class RouterliciousUrlResolver implements IUrlResolver {\n\tconstructor(\n\t\tprivate readonly config:\n\t\t\t| { provider: Provider; tenantId: string; documentId: string }\n\t\t\t| undefined,\n\t\tprivate readonly getToken: () => Promise<string>,\n\t\tprivate readonly hostUrl: string,\n\t) {}\n\n\t/**\n\t * Handles a request and returns the relevant endpoints for the environment\n\t */\n\tpublic async resolve(request: IRequest): Promise<IResolvedUrl | undefined> {\n\t\tlet requestedUrl = request.url;\n\n\t\t// If we know the original hostname, reinsert it\n\t\tif (this.config && request.url.startsWith(\"/\")) {\n\t\t\trequestedUrl = `http://dummy:3000${request.url}`;\n\t\t}\n\n\t\tconst reqUrl = new URL(requestedUrl);\n\t\tconst server = reqUrl.hostname.toLowerCase();\n\n\t\t// If we don't have a valid server or a prescriptive config, we cannot resolve the URL\n\t\tif (\n\t\t\t!(\n\t\t\t\tr11sServers.includes(server) ||\n\t\t\t\t(server === \"localhost\" && reqUrl.port === \"3000\") ||\n\t\t\t\tthis.config\n\t\t\t)\n\t\t) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst path = reqUrl.pathname.split(\"/\");\n\t\tlet tenantId: string;\n\t\tlet documentId: string;\n\t\tlet provider: Provider | undefined;\n\t\tif (this.config) {\n\t\t\ttenantId = this.config.tenantId;\n\t\t\tdocumentId = this.config.documentId;\n\t\t\tprovider = this.config.provider;\n\t\t} else if (path.length >= 4) {\n\t\t\ttenantId = path[2];\n\t\t\tdocumentId = path[3];\n\t\t} else {\n\t\t\ttenantId = \"fluid\";\n\t\t\tdocumentId = path[2];\n\t\t}\n\n\t\tconst token = await this.getToken();\n\n\t\tconst isLocalHost = server === \"localhost\";\n\t\tconst isInternalRequest = server.includes(\"gateway\"); // e.g. gateway:3000 || fierce-dog-gateway:3000\n\n\t\tconst serverSuffix = isLocalHost ? `${server}:3003` : server.substring(4);\n\n\t\tlet fluidUrl =\n\t\t\t\"https://\" +\n\t\t\t`${\n\t\t\t\tthis.config\n\t\t\t\t\t? new URL(this.config.provider.get(\"worker:serverUrl\")).host\n\t\t\t\t\t: serverSuffix\n\t\t\t}/` +\n\t\t\t`${encodeURIComponent(tenantId)}/` +\n\t\t\t`${encodeURIComponent(documentId)}`;\n\n\t\t// In case of any additional parameters add them back to the url\n\t\tif (reqUrl.search) {\n\t\t\tconst searchParams = reqUrl.search;\n\t\t\tif (searchParams) {\n\t\t\t\tfluidUrl += searchParams;\n\t\t\t}\n\t\t}\n\n\t\tlet storageUrl = \"\";\n\t\tlet ordererUrl = \"\";\n\t\tlet deltaStorageUrl = \"\";\n\n\t\t// There is no provider when using debugging tooling\n\t\tif (provider && isInternalRequest) {\n\t\t\tstorageUrl = provider.get(\"worker:internalBlobStorageUrl\");\n\t\t\tordererUrl = provider.get(\"worker:alfredUrl\");\n\t\t\tdeltaStorageUrl = `${provider.get(\"worker:alfredUrl\")}/deltas/${encodeURIComponent(\n\t\t\t\ttenantId,\n\t\t\t)}/${encodeURIComponent(documentId)}`;\n\t\t} else if (provider) {\n\t\t\tstorageUrl = provider\n\t\t\t\t.get(\"worker:blobStorageUrl\")\n\t\t\t\t.replace(\"historian:3000\", \"localhost:3001\");\n\t\t\tordererUrl = provider.get(\"worker:serverUrl\");\n\t\t\tdeltaStorageUrl = `${ordererUrl}/deltas/${encodeURIComponent(\n\t\t\t\ttenantId,\n\t\t\t)}/${encodeURIComponent(documentId)}`;\n\t\t} else if (isLocalHost) {\n\t\t\tstorageUrl = `http://localhost:3001`;\n\t\t\tordererUrl = `http://localhost:3003`;\n\t\t\tdeltaStorageUrl = `http://localhost:3003/deltas/${tenantId}/${documentId}`;\n\t\t} else {\n\t\t\tstorageUrl = `https://historian.${serverSuffix}`;\n\t\t\tordererUrl = `https://alfred.${serverSuffix}`;\n\t\t\tdeltaStorageUrl = `https://alfred.${serverSuffix}/deltas/${tenantId}/${documentId}`;\n\t\t}\n\n\t\tstorageUrl += `/repos/${tenantId}`;\n\t\tordererUrl += ``;\n\t\tdeltaStorageUrl += ``;\n\n\t\tconst resolved: IResolvedUrl = {\n\t\t\tendpoints: {\n\t\t\t\tstorageUrl,\n\t\t\t\tdeltaStorageUrl,\n\t\t\t\tordererUrl,\n\t\t\t},\n\t\t\tid: documentId,\n\t\t\ttokens: { jwt: token },\n\t\t\ttype: \"fluid\",\n\t\t\turl: fluidUrl,\n\t\t};\n\t\treturn resolved;\n\t}\n\n\tpublic async getAbsoluteUrl(resolvedUrl: IResolvedUrl, relativeUrl: string): Promise<string> {\n\t\tconst parsedUrl = new URL(resolvedUrl.url);\n\t\tassert(!!parsedUrl.pathname, 0x0b9 /* \"PathName should exist\" */);\n\t\tconst [, tenantId, documentId] = parsedUrl.pathname.split(\"/\");\n\t\tassert(!!tenantId, 0x0ba /* \"Tenant id should exist\" */);\n\t\tassert(!!documentId, 0x0bb /* \"Document id should exist\" */);\n\n\t\tlet url = relativeUrl;\n\t\tif (url.startsWith(\"/\")) {\n\t\t\turl = url.substr(1);\n\t\t}\n\n\t\treturn `${this.hostUrl}/${encodeURIComponent(tenantId)}/${encodeURIComponent(\n\t\t\tdocumentId,\n\t\t)}/${url}`;\n\t}\n}\n\n/**\n * @internal\n */\nexport interface IAlfredUser extends IUser {\n\tdisplayName: string;\n\tname: string;\n}\n\n/**\n * @internal\n */\nexport interface IConfig {\n\tserverUrl: string;\n\tblobStorageUrl: string;\n\ttenantId: string;\n\tdocumentId: string;\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fluidframework/routerlicious-urlresolver",
|
|
3
|
-
"version": "2.0.0-rc.
|
|
3
|
+
"version": "2.0.0-rc.3.0.1",
|
|
4
4
|
"description": "Url Resolver for routerlicious urls.",
|
|
5
5
|
"homepage": "https://fluidframework.com",
|
|
6
6
|
"repository": {
|
|
@@ -15,21 +15,11 @@
|
|
|
15
15
|
"exports": {
|
|
16
16
|
".": {
|
|
17
17
|
"import": {
|
|
18
|
-
"types": "./lib/
|
|
19
|
-
"default": "./lib/index.js"
|
|
20
|
-
},
|
|
21
|
-
"require": {
|
|
22
|
-
"types": "./dist/index.d.ts",
|
|
23
|
-
"default": "./dist/index.js"
|
|
24
|
-
}
|
|
25
|
-
},
|
|
26
|
-
"./public": {
|
|
27
|
-
"import": {
|
|
28
|
-
"types": "./lib/routerlicious-urlresolver-public.d.ts",
|
|
18
|
+
"types": "./lib/public.d.ts",
|
|
29
19
|
"default": "./lib/index.js"
|
|
30
20
|
},
|
|
31
21
|
"require": {
|
|
32
|
-
"types": "./dist/
|
|
22
|
+
"types": "./dist/public.d.ts",
|
|
33
23
|
"default": "./dist/index.js"
|
|
34
24
|
}
|
|
35
25
|
},
|
|
@@ -44,22 +34,23 @@
|
|
|
44
34
|
}
|
|
45
35
|
}
|
|
46
36
|
},
|
|
47
|
-
"main": "
|
|
48
|
-
"types": "
|
|
37
|
+
"main": "lib/index.js",
|
|
38
|
+
"types": "lib/public.d.ts",
|
|
49
39
|
"dependencies": {
|
|
50
|
-
"@fluidframework/core-interfaces": ">=2.0.0-rc.
|
|
51
|
-
"@fluidframework/core-utils": ">=2.0.0-rc.
|
|
52
|
-
"@fluidframework/driver-definitions": ">=2.0.0-rc.
|
|
40
|
+
"@fluidframework/core-interfaces": ">=2.0.0-rc.3.0.1 <2.0.0-rc.3.1.0",
|
|
41
|
+
"@fluidframework/core-utils": ">=2.0.0-rc.3.0.1 <2.0.0-rc.3.1.0",
|
|
42
|
+
"@fluidframework/driver-definitions": ">=2.0.0-rc.3.0.1 <2.0.0-rc.3.1.0",
|
|
53
43
|
"@fluidframework/protocol-definitions": "^3.2.0",
|
|
54
44
|
"nconf": "^0.12.0"
|
|
55
45
|
},
|
|
56
46
|
"devDependencies": {
|
|
57
|
-
"@arethetypeswrong/cli": "^0.
|
|
58
|
-
"@
|
|
59
|
-
"@fluid-
|
|
47
|
+
"@arethetypeswrong/cli": "^0.15.2",
|
|
48
|
+
"@biomejs/biome": "^1.6.2",
|
|
49
|
+
"@fluid-internal/mocha-test-setup": ">=2.0.0-rc.3.0.1 <2.0.0-rc.3.1.0",
|
|
50
|
+
"@fluid-tools/build-cli": "^0.37.0",
|
|
60
51
|
"@fluidframework/build-common": "^2.0.3",
|
|
61
|
-
"@fluidframework/build-tools": "^0.
|
|
62
|
-
"@fluidframework/eslint-config-fluid": "^
|
|
52
|
+
"@fluidframework/build-tools": "^0.37.0",
|
|
53
|
+
"@fluidframework/eslint-config-fluid": "^5.1.0",
|
|
63
54
|
"@fluidframework/routerlicious-urlresolver-previous": "npm:@fluidframework/routerlicious-urlresolver@2.0.0-internal.8.0.0",
|
|
64
55
|
"@microsoft/api-extractor": "^7.42.3",
|
|
65
56
|
"@types/mocha": "^9.1.1",
|
|
@@ -77,44 +68,32 @@
|
|
|
77
68
|
"rimraf": "^4.4.0",
|
|
78
69
|
"typescript": "~5.1.6"
|
|
79
70
|
},
|
|
80
|
-
"fluidBuild": {
|
|
81
|
-
"tasks": {
|
|
82
|
-
"build:docs": {
|
|
83
|
-
"dependsOn": [
|
|
84
|
-
"...",
|
|
85
|
-
"api-extractor:commonjs",
|
|
86
|
-
"api-extractor:esnext"
|
|
87
|
-
],
|
|
88
|
-
"script": false
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
},
|
|
92
71
|
"typeValidation": {
|
|
93
72
|
"broken": {}
|
|
94
73
|
},
|
|
95
74
|
"scripts": {
|
|
96
75
|
"api": "fluid-build . --task api",
|
|
97
|
-
"api-extractor:commonjs": "
|
|
98
|
-
"api-extractor:esnext": "
|
|
76
|
+
"api-extractor:commonjs": "flub generate entrypoints --outFileAlpha legacy --outDir ./dist",
|
|
77
|
+
"api-extractor:esnext": "flub generate entrypoints --outFileAlpha legacy --outDir ./lib --node10TypeCompat",
|
|
99
78
|
"build": "fluid-build . --task build",
|
|
100
79
|
"build:commonjs": "fluid-build . --task commonjs",
|
|
101
80
|
"build:compile": "fluid-build . --task compile",
|
|
102
|
-
"build:docs": "
|
|
81
|
+
"build:docs": "api-extractor run --local",
|
|
103
82
|
"build:esnext": "tsc --project ./tsconfig.json",
|
|
104
83
|
"build:test": "npm run build:test:esm && npm run build:test:cjs",
|
|
105
84
|
"build:test:cjs": "fluid-tsc commonjs --project ./src/test/tsconfig.cjs.json",
|
|
106
85
|
"build:test:esm": "tsc --project ./src/test/tsconfig.json",
|
|
107
|
-
"check:are-the-types-wrong": "attw --pack .
|
|
86
|
+
"check:are-the-types-wrong": "attw --pack .",
|
|
87
|
+
"check:prettier": "prettier --check . --cache --ignore-path ../../../.prettierignore",
|
|
108
88
|
"check:release-tags": "api-extractor run --local --config ./api-extractor-lint.json",
|
|
109
89
|
"ci:build:docs": "api-extractor run",
|
|
110
|
-
"clean": "rimraf --glob dist lib \"**/*.tsbuildinfo\" \"**/*.build.log\" _api-extractor-temp nyc",
|
|
90
|
+
"clean": "rimraf --glob dist lib \"*.d.ts\" \"**/*.tsbuildinfo\" \"**/*.build.log\" _api-extractor-temp nyc",
|
|
111
91
|
"eslint": "eslint --format stylish src",
|
|
112
92
|
"eslint:fix": "eslint --format stylish src --fix --fix-type problem,suggestion,layout",
|
|
113
|
-
"format": "
|
|
114
|
-
"
|
|
115
|
-
"lint
|
|
116
|
-
"
|
|
117
|
-
"prettier:fix": "prettier --write . --cache --ignore-path ../../../.prettierignore",
|
|
93
|
+
"format": "fluid-build --task format .",
|
|
94
|
+
"format:prettier": "prettier --write . --cache --ignore-path ../../../.prettierignore",
|
|
95
|
+
"lint": "fluid-build . --task lint",
|
|
96
|
+
"lint:fix": "fluid-build . --task eslint:fix --task format",
|
|
118
97
|
"test": "npm run test:mocha",
|
|
119
98
|
"test:mocha": "npm run test:mocha:esm && npm run test:mocha:cjs",
|
|
120
99
|
"test:mocha:cjs": "mocha --recursive \"dist/test/**/*.spec.*js\" --exit",
|
package/src/urlResolver.ts
CHANGED
|
@@ -3,10 +3,11 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { assert } from "@fluidframework/core-utils";
|
|
7
6
|
import { IRequest } from "@fluidframework/core-interfaces";
|
|
8
|
-
import {
|
|
7
|
+
import { assert } from "@fluidframework/core-utils/internal";
|
|
8
|
+
import { IResolvedUrl, IUrlResolver } from "@fluidframework/driver-definitions/internal";
|
|
9
9
|
import { IUser } from "@fluidframework/protocol-definitions";
|
|
10
|
+
|
|
10
11
|
import { Provider } from "./nconf.cjs";
|
|
11
12
|
|
|
12
13
|
const r11sServers = [
|
package/api-extractor-cjs.json
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json",
|
|
3
|
-
"extends": "../../../common/build/build-common/api-extractor-base.cjs.primary.json",
|
|
4
|
-
// CJS is actually secondary; so, no report.
|
|
5
|
-
"apiReport": {
|
|
6
|
-
"enabled": false
|
|
7
|
-
}
|
|
8
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { IRequest } from '@fluidframework/core-interfaces';
|
|
2
|
-
import { IResolvedUrl } from '@fluidframework/driver-definitions';
|
|
3
|
-
import { IUrlResolver } from '@fluidframework/driver-definitions';
|
|
4
|
-
import { IUser } from '@fluidframework/protocol-definitions';
|
|
5
|
-
import { Provider } from 'nconf';
|
|
6
|
-
|
|
7
|
-
/* Excluded from this release type: IAlfredUser */
|
|
8
|
-
|
|
9
|
-
/* Excluded from this release type: IConfig */
|
|
10
|
-
|
|
11
|
-
/* Excluded from this release type: RouterliciousUrlResolver */
|
|
12
|
-
|
|
13
|
-
export { }
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { IRequest } from '@fluidframework/core-interfaces';
|
|
2
|
-
import { IResolvedUrl } from '@fluidframework/driver-definitions';
|
|
3
|
-
import { IUrlResolver } from '@fluidframework/driver-definitions';
|
|
4
|
-
import { IUser } from '@fluidframework/protocol-definitions';
|
|
5
|
-
import { Provider } from 'nconf';
|
|
6
|
-
|
|
7
|
-
/* Excluded from this release type: IAlfredUser */
|
|
8
|
-
|
|
9
|
-
/* Excluded from this release type: IConfig */
|
|
10
|
-
|
|
11
|
-
/* Excluded from this release type: IResolvedUrl */
|
|
12
|
-
|
|
13
|
-
/* Excluded from this release type: IUrlResolver */
|
|
14
|
-
|
|
15
|
-
/* Excluded from this release type: RouterliciousUrlResolver */
|
|
16
|
-
|
|
17
|
-
export { }
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { IRequest } from '@fluidframework/core-interfaces';
|
|
2
|
-
import { IResolvedUrl } from '@fluidframework/driver-definitions';
|
|
3
|
-
import { IUrlResolver } from '@fluidframework/driver-definitions';
|
|
4
|
-
import { IUser } from '@fluidframework/protocol-definitions';
|
|
5
|
-
import { Provider } from 'nconf';
|
|
6
|
-
|
|
7
|
-
/* Excluded from this release type: IAlfredUser */
|
|
8
|
-
|
|
9
|
-
/* Excluded from this release type: IConfig */
|
|
10
|
-
|
|
11
|
-
/* Excluded from this release type: IResolvedUrl */
|
|
12
|
-
|
|
13
|
-
/* Excluded from this release type: IUrlResolver */
|
|
14
|
-
|
|
15
|
-
/* Excluded from this release type: RouterliciousUrlResolver */
|
|
16
|
-
|
|
17
|
-
export { }
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { IRequest } from '@fluidframework/core-interfaces';
|
|
2
|
-
import { IResolvedUrl } from '@fluidframework/driver-definitions';
|
|
3
|
-
import { IUrlResolver } from '@fluidframework/driver-definitions';
|
|
4
|
-
import { IUser } from '@fluidframework/protocol-definitions';
|
|
5
|
-
import { Provider } from 'nconf';
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* @internal
|
|
9
|
-
*/
|
|
10
|
-
export declare interface IAlfredUser extends IUser {
|
|
11
|
-
displayName: string;
|
|
12
|
-
name: string;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* @internal
|
|
17
|
-
*/
|
|
18
|
-
export declare interface IConfig {
|
|
19
|
-
serverUrl: string;
|
|
20
|
-
blobStorageUrl: string;
|
|
21
|
-
tenantId: string;
|
|
22
|
-
documentId: string;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* @internal
|
|
27
|
-
*/
|
|
28
|
-
export declare class RouterliciousUrlResolver implements IUrlResolver {
|
|
29
|
-
private readonly config;
|
|
30
|
-
private readonly getToken;
|
|
31
|
-
private readonly hostUrl;
|
|
32
|
-
constructor(config: {
|
|
33
|
-
provider: Provider;
|
|
34
|
-
tenantId: string;
|
|
35
|
-
documentId: string;
|
|
36
|
-
} | undefined, getToken: () => Promise<string>, hostUrl: string);
|
|
37
|
-
/**
|
|
38
|
-
* Handles a request and returns the relevant endpoints for the environment
|
|
39
|
-
*/
|
|
40
|
-
resolve(request: IRequest): Promise<IResolvedUrl | undefined>;
|
|
41
|
-
getAbsoluteUrl(resolvedUrl: IResolvedUrl, relativeUrl: string): Promise<string>;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
export { }
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { IRequest } from '@fluidframework/core-interfaces';
|
|
2
|
-
import { IResolvedUrl } from '@fluidframework/driver-definitions';
|
|
3
|
-
import { IUrlResolver } from '@fluidframework/driver-definitions';
|
|
4
|
-
import { IUser } from '@fluidframework/protocol-definitions';
|
|
5
|
-
import { Provider } from 'nconf';
|
|
6
|
-
|
|
7
|
-
/* Excluded from this release type: IAlfredUser */
|
|
8
|
-
|
|
9
|
-
/* Excluded from this release type: IConfig */
|
|
10
|
-
|
|
11
|
-
/* Excluded from this release type: RouterliciousUrlResolver */
|
|
12
|
-
|
|
13
|
-
export { }
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { IRequest } from '@fluidframework/core-interfaces';
|
|
2
|
-
import { IResolvedUrl } from '@fluidframework/driver-definitions';
|
|
3
|
-
import { IUrlResolver } from '@fluidframework/driver-definitions';
|
|
4
|
-
import { IUser } from '@fluidframework/protocol-definitions';
|
|
5
|
-
import { Provider } from 'nconf';
|
|
6
|
-
|
|
7
|
-
/* Excluded from this release type: IAlfredUser */
|
|
8
|
-
|
|
9
|
-
/* Excluded from this release type: IConfig */
|
|
10
|
-
|
|
11
|
-
/* Excluded from this release type: IResolvedUrl */
|
|
12
|
-
|
|
13
|
-
/* Excluded from this release type: IUrlResolver */
|
|
14
|
-
|
|
15
|
-
/* Excluded from this release type: RouterliciousUrlResolver */
|
|
16
|
-
|
|
17
|
-
export { }
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { IRequest } from '@fluidframework/core-interfaces';
|
|
2
|
-
import { IResolvedUrl } from '@fluidframework/driver-definitions';
|
|
3
|
-
import { IUrlResolver } from '@fluidframework/driver-definitions';
|
|
4
|
-
import { IUser } from '@fluidframework/protocol-definitions';
|
|
5
|
-
import { Provider } from 'nconf';
|
|
6
|
-
|
|
7
|
-
/* Excluded from this release type: IAlfredUser */
|
|
8
|
-
|
|
9
|
-
/* Excluded from this release type: IConfig */
|
|
10
|
-
|
|
11
|
-
/* Excluded from this release type: IResolvedUrl */
|
|
12
|
-
|
|
13
|
-
/* Excluded from this release type: IUrlResolver */
|
|
14
|
-
|
|
15
|
-
/* Excluded from this release type: RouterliciousUrlResolver */
|
|
16
|
-
|
|
17
|
-
export { }
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { IRequest } from '@fluidframework/core-interfaces';
|
|
2
|
-
import { IResolvedUrl } from '@fluidframework/driver-definitions';
|
|
3
|
-
import { IUrlResolver } from '@fluidframework/driver-definitions';
|
|
4
|
-
import { IUser } from '@fluidframework/protocol-definitions';
|
|
5
|
-
import { Provider } from 'nconf';
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* @internal
|
|
9
|
-
*/
|
|
10
|
-
export declare interface IAlfredUser extends IUser {
|
|
11
|
-
displayName: string;
|
|
12
|
-
name: string;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* @internal
|
|
17
|
-
*/
|
|
18
|
-
export declare interface IConfig {
|
|
19
|
-
serverUrl: string;
|
|
20
|
-
blobStorageUrl: string;
|
|
21
|
-
tenantId: string;
|
|
22
|
-
documentId: string;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* @internal
|
|
27
|
-
*/
|
|
28
|
-
export declare class RouterliciousUrlResolver implements IUrlResolver {
|
|
29
|
-
private readonly config;
|
|
30
|
-
private readonly getToken;
|
|
31
|
-
private readonly hostUrl;
|
|
32
|
-
constructor(config: {
|
|
33
|
-
provider: Provider;
|
|
34
|
-
tenantId: string;
|
|
35
|
-
documentId: string;
|
|
36
|
-
} | undefined, getToken: () => Promise<string>, hostUrl: string);
|
|
37
|
-
/**
|
|
38
|
-
* Handles a request and returns the relevant endpoints for the environment
|
|
39
|
-
*/
|
|
40
|
-
resolve(request: IRequest): Promise<IResolvedUrl | undefined>;
|
|
41
|
-
getAbsoluteUrl(resolvedUrl: IResolvedUrl, relativeUrl: string): Promise<string>;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
export { }
|
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
|
-
* Licensed under the MIT License.
|
|
4
|
-
*/
|
|
5
|
-
import { strict as assert } from "assert";
|
|
6
|
-
import { Provider } from "../nconf.cjs";
|
|
7
|
-
import { RouterliciousUrlResolver } from "../urlResolver.js";
|
|
8
|
-
describe("Routerlicious Url Resolver", () => {
|
|
9
|
-
const token = "dummy";
|
|
10
|
-
const hostUrl = "https://dummy.com";
|
|
11
|
-
it("Should resolve the Routerlicious urls correctly", async () => {
|
|
12
|
-
const urlResolver = new RouterliciousUrlResolver(undefined, async () => Promise.resolve(token), hostUrl);
|
|
13
|
-
const url = "https://www.wu2.prague.office-int.com/loader/fluid/thinkable-list?chaincode=@fluid-example/shared-text@0.11.14146";
|
|
14
|
-
const resolved = (await urlResolver.resolve({ url }));
|
|
15
|
-
assert.equal(resolved.tokens.jwt, token, "Token does not match");
|
|
16
|
-
assert.equal(resolved.endpoints.storageUrl, "https://historian.wu2.prague.office-int.com/repos/fluid", "Storage url does not match");
|
|
17
|
-
assert.equal(resolved.endpoints.deltaStorageUrl, "https://alfred.wu2.prague.office-int.com/deltas/fluid/thinkable-list", "Delta storage url does not match");
|
|
18
|
-
assert.equal(resolved.endpoints.ordererUrl, "https://alfred.wu2.prague.office-int.com", "Orderer url does not match");
|
|
19
|
-
assert.equal(resolved.url, "https://wu2.prague.office-int.com/fluid/thinkable-list?chaincode=@fluid-example/shared-text@0.11.14146", "FluidUrl does not match");
|
|
20
|
-
});
|
|
21
|
-
it("Should resolve the localhost urls correctly", async () => {
|
|
22
|
-
const urlResolver = new RouterliciousUrlResolver(undefined, async () => Promise.resolve(token), hostUrl);
|
|
23
|
-
const url = "http://localhost:3000/loader/fluid/damp-competition?chaincode=@fluid-example/shared-text@^0.11.0";
|
|
24
|
-
const resolved = (await urlResolver.resolve({ url }));
|
|
25
|
-
assert.equal(resolved.tokens.jwt, token, "Token does not match");
|
|
26
|
-
assert.equal(resolved.endpoints.storageUrl, "http://localhost:3001/repos/fluid", "Storage url does not match");
|
|
27
|
-
assert.equal(resolved.endpoints.deltaStorageUrl, "http://localhost:3003/deltas/fluid/damp-competition", "Delta storage url does not match");
|
|
28
|
-
assert.equal(resolved.endpoints.ordererUrl, "http://localhost:3003", "Orderer url does not match");
|
|
29
|
-
assert.equal(resolved.url, "https://localhost:3003/fluid/damp-competition?chaincode=@fluid-example/shared-text@^0.11.0", "FluidUrl does not match");
|
|
30
|
-
});
|
|
31
|
-
it("Should handle local External request", async () => {
|
|
32
|
-
const request = {
|
|
33
|
-
url: "/loader/fluid/damp-competition?chaincode=@fluid-example/shared-text@^0.11.0",
|
|
34
|
-
};
|
|
35
|
-
const provider = new Provider({})
|
|
36
|
-
.defaults({
|
|
37
|
-
a: "hell",
|
|
38
|
-
worker: {
|
|
39
|
-
serverUrl: "http://localhost:3003",
|
|
40
|
-
alfredUrl: "http://alfred:3000",
|
|
41
|
-
blobStorageUrl: "http://historian:3000",
|
|
42
|
-
internalBlobStorageUrl: "http://historian:3000",
|
|
43
|
-
},
|
|
44
|
-
})
|
|
45
|
-
.use("memory");
|
|
46
|
-
const config = {
|
|
47
|
-
provider,
|
|
48
|
-
tenantId: "fluid",
|
|
49
|
-
documentId: "damp-competition",
|
|
50
|
-
};
|
|
51
|
-
const urlResolver = new RouterliciousUrlResolver(config, async () => Promise.resolve(token), hostUrl);
|
|
52
|
-
const { endpoints, url } = (await urlResolver.resolve(request));
|
|
53
|
-
assert.equal(endpoints.storageUrl, "http://localhost:3001/repos/fluid", "Improperly Formed storageUrl");
|
|
54
|
-
assert.equal(endpoints.deltaStorageUrl, "http://localhost:3003/deltas/fluid/damp-competition", "Improperly Formed deltaStorageUrl");
|
|
55
|
-
assert.equal(endpoints.ordererUrl, "http://localhost:3003", "Improperly Formed OrdererUrl");
|
|
56
|
-
assert.equal(url, "https://localhost:3003/fluid/damp-competition?chaincode=@fluid-example/shared-text@^0.11.0", "Improperly formed FluidURL");
|
|
57
|
-
});
|
|
58
|
-
it("Should handle local Internal request", async () => {
|
|
59
|
-
const request = {
|
|
60
|
-
url: "http://gateway:3000/loader/fluid/damp-competition?chaincode=@fluid-example/shared-text@^0.11.0",
|
|
61
|
-
};
|
|
62
|
-
const provider = new Provider({})
|
|
63
|
-
.defaults({
|
|
64
|
-
worker: {
|
|
65
|
-
serverUrl: "http://localhost:3003",
|
|
66
|
-
alfredUrl: "http://alfred:3000",
|
|
67
|
-
blobStorageUrl: "http://historian:3000",
|
|
68
|
-
internalBlobStorageUrl: "http://historian:3000",
|
|
69
|
-
},
|
|
70
|
-
})
|
|
71
|
-
.use("memory");
|
|
72
|
-
const config = {
|
|
73
|
-
provider,
|
|
74
|
-
tenantId: "fluid",
|
|
75
|
-
documentId: "damp-competition",
|
|
76
|
-
};
|
|
77
|
-
const urlResolver = new RouterliciousUrlResolver(config, async () => Promise.resolve(token), hostUrl);
|
|
78
|
-
const { endpoints, url } = (await urlResolver.resolve(request));
|
|
79
|
-
assert.equal(endpoints.storageUrl, "http://historian:3000/repos/fluid", "Improperly Formed storageUrl");
|
|
80
|
-
assert.equal(endpoints.deltaStorageUrl, "http://alfred:3000/deltas/fluid/damp-competition", "Improperly Formed deltaStorageUrl");
|
|
81
|
-
assert.equal(endpoints.ordererUrl, "http://alfred:3000", "Improperly Formed OrdererUrl");
|
|
82
|
-
assert.equal(url, "https://localhost:3003/fluid/damp-competition?chaincode=@fluid-example/shared-text@^0.11.0", "Improperly formed FluidURL");
|
|
83
|
-
});
|
|
84
|
-
it("Should handle Deployed Internal request", async () => {
|
|
85
|
-
const request = {
|
|
86
|
-
url: "http://angry-dog-gateway:3000/loader/fluid/damp-competition?chaincode=@fluid-example/shared-text@^0.11.0",
|
|
87
|
-
};
|
|
88
|
-
const provider = new Provider({})
|
|
89
|
-
.defaults({
|
|
90
|
-
worker: {
|
|
91
|
-
serverUrl: "http://localhost:3003",
|
|
92
|
-
alfredUrl: "http://wiggly-wombat-alfred:3000",
|
|
93
|
-
blobStorageUrl: "http://historian:3000",
|
|
94
|
-
internalBlobStorageUrl: "http://smelly-wolf-historian:3000",
|
|
95
|
-
},
|
|
96
|
-
})
|
|
97
|
-
.use("memory");
|
|
98
|
-
const config = {
|
|
99
|
-
provider,
|
|
100
|
-
tenantId: "fluid",
|
|
101
|
-
documentId: "damp-competition",
|
|
102
|
-
};
|
|
103
|
-
const urlResolver = new RouterliciousUrlResolver(config, async () => Promise.resolve(token), hostUrl);
|
|
104
|
-
const { endpoints, url } = (await urlResolver.resolve(request));
|
|
105
|
-
assert.equal(endpoints.storageUrl, "http://smelly-wolf-historian:3000/repos/fluid", "Improperly Formed storageUrl");
|
|
106
|
-
assert.equal(endpoints.deltaStorageUrl, "http://wiggly-wombat-alfred:3000/deltas/fluid/damp-competition", "Improperly Formed deltaStorageUrl");
|
|
107
|
-
assert.equal(endpoints.ordererUrl, "http://wiggly-wombat-alfred:3000", "Improperly Formed OrdererUrl");
|
|
108
|
-
assert.equal(url, "https://localhost:3003/fluid/damp-competition?chaincode=@fluid-example/shared-text@^0.11.0", "Improperly formed FluidURL");
|
|
109
|
-
});
|
|
110
|
-
it("Should handle deployed External request", async () => {
|
|
111
|
-
const request = {
|
|
112
|
-
url: "/loader/fluid/damp-competition?chaincode=@fluid-example/shared-text@^0.11.0",
|
|
113
|
-
};
|
|
114
|
-
const provider = new Provider({})
|
|
115
|
-
.defaults({
|
|
116
|
-
worker: {
|
|
117
|
-
serverUrl: "https://alfred.wu2-ppe.prague.office-int.com",
|
|
118
|
-
alfredUrl: "http://wiggly-wombat-alfred",
|
|
119
|
-
blobStorageUrl: "https://historian.wu2-ppe.prague.office-int.com",
|
|
120
|
-
internalBlobStorageUrl: "http://smelly-wolf-historian",
|
|
121
|
-
},
|
|
122
|
-
})
|
|
123
|
-
.use("memory");
|
|
124
|
-
const config = {
|
|
125
|
-
provider,
|
|
126
|
-
tenantId: "fluid",
|
|
127
|
-
documentId: "damp-competition",
|
|
128
|
-
};
|
|
129
|
-
const urlResolver = new RouterliciousUrlResolver(config, async () => Promise.resolve(token), hostUrl);
|
|
130
|
-
const { endpoints, url } = (await urlResolver.resolve(request));
|
|
131
|
-
assert.equal(endpoints.storageUrl, "https://historian.wu2-ppe.prague.office-int.com/repos/fluid", "Storage url does not match");
|
|
132
|
-
assert.equal(endpoints.deltaStorageUrl, "https://alfred.wu2-ppe.prague.office-int.com/deltas/fluid/damp-competition", "Delta storage url does not match");
|
|
133
|
-
assert.equal(endpoints.ordererUrl, "https://alfred.wu2-ppe.prague.office-int.com", "Orderer url does not match");
|
|
134
|
-
assert.equal(url, "https://alfred.wu2-ppe.prague.office-int.com/fluid/damp-competition?chaincode=@fluid-example/shared-text@^0.11.0", "FluidUrl does not match");
|
|
135
|
-
});
|
|
136
|
-
it("Should return the absolute url when requested", async () => {
|
|
137
|
-
const urlResolver = new RouterliciousUrlResolver(undefined, async () => Promise.resolve(token), hostUrl);
|
|
138
|
-
const url = "http://localhost:3000/loader/fluid/damp-competition?chaincode=@fluid-example/shared-text@^0.11.0";
|
|
139
|
-
const resolved = (await urlResolver.resolve({ url }));
|
|
140
|
-
const absoluteUrl = await urlResolver.getAbsoluteUrl(resolved, "relative");
|
|
141
|
-
assert.strictEqual(absoluteUrl, `${hostUrl}/fluid/damp-competition/relative`, "Absolute url should match");
|
|
142
|
-
});
|
|
143
|
-
});
|
|
144
|
-
//# sourceMappingURL=routerlicious-urlResolver.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"routerlicious-urlResolver.spec.js","sourceRoot":"","sources":["../../src/test/routerlicious-urlResolver.spec.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { strict as assert } from \"assert\";\nimport { IResolvedUrl } from \"@fluidframework/driver-definitions\";\nimport { IRequest } from \"@fluidframework/core-interfaces\";\nimport { Provider } from \"../nconf.cjs\";\nimport { RouterliciousUrlResolver } from \"../urlResolver.js\";\n\ndescribe(\"Routerlicious Url Resolver\", () => {\n\tconst token = \"dummy\";\n\tconst hostUrl = \"https://dummy.com\";\n\tit(\"Should resolve the Routerlicious urls correctly\", async () => {\n\t\tconst urlResolver = new RouterliciousUrlResolver(\n\t\t\tundefined,\n\t\t\tasync () => Promise.resolve(token),\n\t\t\thostUrl,\n\t\t);\n\t\tconst url: string =\n\t\t\t\"https://www.wu2.prague.office-int.com/loader/fluid/thinkable-list?chaincode=@fluid-example/shared-text@0.11.14146\";\n\t\tconst resolved = (await urlResolver.resolve({ url })) as IResolvedUrl;\n\t\tassert.equal(resolved.tokens.jwt, token, \"Token does not match\");\n\t\tassert.equal(\n\t\t\tresolved.endpoints.storageUrl,\n\t\t\t\"https://historian.wu2.prague.office-int.com/repos/fluid\",\n\t\t\t\"Storage url does not match\",\n\t\t);\n\t\tassert.equal(\n\t\t\tresolved.endpoints.deltaStorageUrl,\n\t\t\t\"https://alfred.wu2.prague.office-int.com/deltas/fluid/thinkable-list\",\n\t\t\t\"Delta storage url does not match\",\n\t\t);\n\t\tassert.equal(\n\t\t\tresolved.endpoints.ordererUrl,\n\t\t\t\"https://alfred.wu2.prague.office-int.com\",\n\t\t\t\"Orderer url does not match\",\n\t\t);\n\t\tassert.equal(\n\t\t\tresolved.url,\n\t\t\t\"https://wu2.prague.office-int.com/fluid/thinkable-list?chaincode=@fluid-example/shared-text@0.11.14146\",\n\t\t\t\"FluidUrl does not match\",\n\t\t);\n\t});\n\n\tit(\"Should resolve the localhost urls correctly\", async () => {\n\t\tconst urlResolver = new RouterliciousUrlResolver(\n\t\t\tundefined,\n\t\t\tasync () => Promise.resolve(token),\n\t\t\thostUrl,\n\t\t);\n\t\tconst url: string =\n\t\t\t\"http://localhost:3000/loader/fluid/damp-competition?chaincode=@fluid-example/shared-text@^0.11.0\";\n\t\tconst resolved = (await urlResolver.resolve({ url })) as IResolvedUrl;\n\t\tassert.equal(resolved.tokens.jwt, token, \"Token does not match\");\n\t\tassert.equal(\n\t\t\tresolved.endpoints.storageUrl,\n\t\t\t\"http://localhost:3001/repos/fluid\",\n\t\t\t\"Storage url does not match\",\n\t\t);\n\t\tassert.equal(\n\t\t\tresolved.endpoints.deltaStorageUrl,\n\t\t\t\"http://localhost:3003/deltas/fluid/damp-competition\",\n\t\t\t\"Delta storage url does not match\",\n\t\t);\n\t\tassert.equal(\n\t\t\tresolved.endpoints.ordererUrl,\n\t\t\t\"http://localhost:3003\",\n\t\t\t\"Orderer url does not match\",\n\t\t);\n\t\tassert.equal(\n\t\t\tresolved.url,\n\t\t\t\"https://localhost:3003/fluid/damp-competition?chaincode=@fluid-example/shared-text@^0.11.0\",\n\t\t\t\"FluidUrl does not match\",\n\t\t);\n\t});\n\n\tit(\"Should handle local External request\", async () => {\n\t\tconst request: IRequest = {\n\t\t\turl: \"/loader/fluid/damp-competition?chaincode=@fluid-example/shared-text@^0.11.0\",\n\t\t};\n\n\t\tconst provider = new Provider({})\n\t\t\t.defaults({\n\t\t\t\ta: \"hell\",\n\t\t\t\tworker: {\n\t\t\t\t\tserverUrl: \"http://localhost:3003\",\n\t\t\t\t\talfredUrl: \"http://alfred:3000\",\n\t\t\t\t\tblobStorageUrl: \"http://historian:3000\",\n\t\t\t\t\tinternalBlobStorageUrl: \"http://historian:3000\",\n\t\t\t\t},\n\t\t\t})\n\t\t\t.use(\"memory\");\n\n\t\tconst config = {\n\t\t\tprovider,\n\t\t\ttenantId: \"fluid\",\n\t\t\tdocumentId: \"damp-competition\",\n\t\t};\n\t\tconst urlResolver = new RouterliciousUrlResolver(\n\t\t\tconfig,\n\t\t\tasync () => Promise.resolve(token),\n\t\t\thostUrl,\n\t\t);\n\n\t\tconst { endpoints, url } = (await urlResolver.resolve(request)) as IResolvedUrl;\n\n\t\tassert.equal(\n\t\t\tendpoints.storageUrl,\n\t\t\t\"http://localhost:3001/repos/fluid\",\n\t\t\t\"Improperly Formed storageUrl\",\n\t\t);\n\t\tassert.equal(\n\t\t\tendpoints.deltaStorageUrl,\n\t\t\t\"http://localhost:3003/deltas/fluid/damp-competition\",\n\t\t\t\"Improperly Formed deltaStorageUrl\",\n\t\t);\n\t\tassert.equal(endpoints.ordererUrl, \"http://localhost:3003\", \"Improperly Formed OrdererUrl\");\n\t\tassert.equal(\n\t\t\turl,\n\t\t\t\"https://localhost:3003/fluid/damp-competition?chaincode=@fluid-example/shared-text@^0.11.0\",\n\t\t\t\"Improperly formed FluidURL\",\n\t\t);\n\t});\n\n\tit(\"Should handle local Internal request\", async () => {\n\t\tconst request: IRequest = {\n\t\t\turl: \"http://gateway:3000/loader/fluid/damp-competition?chaincode=@fluid-example/shared-text@^0.11.0\",\n\t\t};\n\n\t\tconst provider = new Provider({})\n\t\t\t.defaults({\n\t\t\t\tworker: {\n\t\t\t\t\tserverUrl: \"http://localhost:3003\",\n\t\t\t\t\talfredUrl: \"http://alfred:3000\",\n\t\t\t\t\tblobStorageUrl: \"http://historian:3000\",\n\t\t\t\t\tinternalBlobStorageUrl: \"http://historian:3000\",\n\t\t\t\t},\n\t\t\t})\n\t\t\t.use(\"memory\");\n\n\t\tconst config = {\n\t\t\tprovider,\n\t\t\ttenantId: \"fluid\",\n\t\t\tdocumentId: \"damp-competition\",\n\t\t};\n\n\t\tconst urlResolver = new RouterliciousUrlResolver(\n\t\t\tconfig,\n\t\t\tasync () => Promise.resolve(token),\n\t\t\thostUrl,\n\t\t);\n\t\tconst { endpoints, url } = (await urlResolver.resolve(request)) as IResolvedUrl;\n\n\t\tassert.equal(\n\t\t\tendpoints.storageUrl,\n\t\t\t\"http://historian:3000/repos/fluid\",\n\t\t\t\"Improperly Formed storageUrl\",\n\t\t);\n\t\tassert.equal(\n\t\t\tendpoints.deltaStorageUrl,\n\t\t\t\"http://alfred:3000/deltas/fluid/damp-competition\",\n\t\t\t\"Improperly Formed deltaStorageUrl\",\n\t\t);\n\t\tassert.equal(endpoints.ordererUrl, \"http://alfred:3000\", \"Improperly Formed OrdererUrl\");\n\t\tassert.equal(\n\t\t\turl,\n\t\t\t\"https://localhost:3003/fluid/damp-competition?chaincode=@fluid-example/shared-text@^0.11.0\",\n\t\t\t\"Improperly formed FluidURL\",\n\t\t);\n\t});\n\n\tit(\"Should handle Deployed Internal request\", async () => {\n\t\tconst request: IRequest = {\n\t\t\turl: \"http://angry-dog-gateway:3000/loader/fluid/damp-competition?chaincode=@fluid-example/shared-text@^0.11.0\",\n\t\t};\n\t\tconst provider = new Provider({})\n\t\t\t.defaults({\n\t\t\t\tworker: {\n\t\t\t\t\tserverUrl: \"http://localhost:3003\",\n\t\t\t\t\talfredUrl: \"http://wiggly-wombat-alfred:3000\",\n\t\t\t\t\tblobStorageUrl: \"http://historian:3000\",\n\t\t\t\t\tinternalBlobStorageUrl: \"http://smelly-wolf-historian:3000\",\n\t\t\t\t},\n\t\t\t})\n\t\t\t.use(\"memory\");\n\n\t\tconst config = {\n\t\t\tprovider,\n\t\t\ttenantId: \"fluid\",\n\t\t\tdocumentId: \"damp-competition\",\n\t\t};\n\n\t\tconst urlResolver = new RouterliciousUrlResolver(\n\t\t\tconfig,\n\t\t\tasync () => Promise.resolve(token),\n\t\t\thostUrl,\n\t\t);\n\t\tconst { endpoints, url } = (await urlResolver.resolve(request)) as IResolvedUrl;\n\n\t\tassert.equal(\n\t\t\tendpoints.storageUrl,\n\t\t\t\"http://smelly-wolf-historian:3000/repos/fluid\",\n\t\t\t\"Improperly Formed storageUrl\",\n\t\t);\n\t\tassert.equal(\n\t\t\tendpoints.deltaStorageUrl,\n\t\t\t\"http://wiggly-wombat-alfred:3000/deltas/fluid/damp-competition\",\n\t\t\t\"Improperly Formed deltaStorageUrl\",\n\t\t);\n\t\tassert.equal(\n\t\t\tendpoints.ordererUrl,\n\t\t\t\"http://wiggly-wombat-alfred:3000\",\n\t\t\t\"Improperly Formed OrdererUrl\",\n\t\t);\n\t\tassert.equal(\n\t\t\turl,\n\t\t\t\"https://localhost:3003/fluid/damp-competition?chaincode=@fluid-example/shared-text@^0.11.0\",\n\t\t\t\"Improperly formed FluidURL\",\n\t\t);\n\t});\n\n\tit(\"Should handle deployed External request\", async () => {\n\t\tconst request: IRequest = {\n\t\t\turl: \"/loader/fluid/damp-competition?chaincode=@fluid-example/shared-text@^0.11.0\",\n\t\t};\n\n\t\tconst provider = new Provider({})\n\t\t\t.defaults({\n\t\t\t\tworker: {\n\t\t\t\t\tserverUrl: \"https://alfred.wu2-ppe.prague.office-int.com\",\n\t\t\t\t\talfredUrl: \"http://wiggly-wombat-alfred\",\n\t\t\t\t\tblobStorageUrl: \"https://historian.wu2-ppe.prague.office-int.com\",\n\t\t\t\t\tinternalBlobStorageUrl: \"http://smelly-wolf-historian\",\n\t\t\t\t},\n\t\t\t})\n\t\t\t.use(\"memory\");\n\n\t\tconst config = {\n\t\t\tprovider,\n\t\t\ttenantId: \"fluid\",\n\t\t\tdocumentId: \"damp-competition\",\n\t\t};\n\n\t\tconst urlResolver = new RouterliciousUrlResolver(\n\t\t\tconfig,\n\t\t\tasync () => Promise.resolve(token),\n\t\t\thostUrl,\n\t\t);\n\t\tconst { endpoints, url } = (await urlResolver.resolve(request)) as IResolvedUrl;\n\n\t\tassert.equal(\n\t\t\tendpoints.storageUrl,\n\t\t\t\"https://historian.wu2-ppe.prague.office-int.com/repos/fluid\",\n\t\t\t\"Storage url does not match\",\n\t\t);\n\t\tassert.equal(\n\t\t\tendpoints.deltaStorageUrl,\n\t\t\t\"https://alfred.wu2-ppe.prague.office-int.com/deltas/fluid/damp-competition\",\n\t\t\t\"Delta storage url does not match\",\n\t\t);\n\t\tassert.equal(\n\t\t\tendpoints.ordererUrl,\n\t\t\t\"https://alfred.wu2-ppe.prague.office-int.com\",\n\t\t\t\"Orderer url does not match\",\n\t\t);\n\t\tassert.equal(\n\t\t\turl,\n\t\t\t\"https://alfred.wu2-ppe.prague.office-int.com/fluid/damp-competition?chaincode=@fluid-example/shared-text@^0.11.0\",\n\t\t\t\"FluidUrl does not match\",\n\t\t);\n\t});\n\n\tit(\"Should return the absolute url when requested\", async () => {\n\t\tconst urlResolver = new RouterliciousUrlResolver(\n\t\t\tundefined,\n\t\t\tasync () => Promise.resolve(token),\n\t\t\thostUrl,\n\t\t);\n\t\tconst url: string =\n\t\t\t\"http://localhost:3000/loader/fluid/damp-competition?chaincode=@fluid-example/shared-text@^0.11.0\";\n\t\tconst resolved = (await urlResolver.resolve({ url })) as IResolvedUrl;\n\t\tconst absoluteUrl = await urlResolver.getAbsoluteUrl(resolved, \"relative\");\n\t\tassert.strictEqual(\n\t\t\tabsoluteUrl,\n\t\t\t`${hostUrl}/fluid/damp-competition/relative`,\n\t\t\t\"Absolute url should match\",\n\t\t);\n\t});\n});\n"]}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
use_current_InterfaceDeclaration_IAlfredUser(get_old_InterfaceDeclaration_IAlfredUser());
|
|
2
|
-
use_old_InterfaceDeclaration_IAlfredUser(get_current_InterfaceDeclaration_IAlfredUser());
|
|
3
|
-
use_current_InterfaceDeclaration_IConfig(get_old_InterfaceDeclaration_IConfig());
|
|
4
|
-
use_old_InterfaceDeclaration_IConfig(get_current_InterfaceDeclaration_IConfig());
|
|
5
|
-
use_current_ClassDeclaration_RouterliciousUrlResolver(get_old_ClassDeclaration_RouterliciousUrlResolver());
|
|
6
|
-
use_old_ClassDeclaration_RouterliciousUrlResolver(get_current_ClassDeclaration_RouterliciousUrlResolver());
|
|
7
|
-
export {};
|
|
8
|
-
//# sourceMappingURL=validateRouterliciousUrlresolverPrevious.generated.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validateRouterliciousUrlresolverPrevious.generated.js","sourceRoot":"","sources":["../../../src/test/types/validateRouterliciousUrlresolverPrevious.generated.ts"],"names":[],"mappings":"AAgCA,4CAA4C,CACxC,wCAAwC,EAAE,CAAC,CAAC;AAWhD,wCAAwC,CACpC,4CAA4C,EAAE,CAAC,CAAC;AAWpD,wCAAwC,CACpC,oCAAoC,EAAE,CAAC,CAAC;AAW5C,oCAAoC,CAChC,wCAAwC,EAAE,CAAC,CAAC;AAWhD,qDAAqD,CACjD,iDAAiD,EAAE,CAAC,CAAC;AAWzD,iDAAiD,CAC7C,qDAAqD,EAAE,CAAC,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/*\n * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.\n * Generated by fluid-type-test-generator in @fluidframework/build-tools.\n */\nimport type * as old from \"@fluidframework/routerlicious-urlresolver-previous\";\nimport type * as current from \"../../index.js\";\n\n\n// See 'build-tools/src/type-test-generator/compatibility.ts' for more information.\ntype TypeOnly<T> = T extends number\n\t? number\n\t: T extends string\n\t? string\n\t: T extends boolean | bigint | symbol\n\t? T\n\t: {\n\t\t\t[P in keyof T]: TypeOnly<T[P]>;\n\t };\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"InterfaceDeclaration_IAlfredUser\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_InterfaceDeclaration_IAlfredUser():\n TypeOnly<old.IAlfredUser>;\ndeclare function use_current_InterfaceDeclaration_IAlfredUser(\n use: TypeOnly<current.IAlfredUser>): void;\nuse_current_InterfaceDeclaration_IAlfredUser(\n get_old_InterfaceDeclaration_IAlfredUser());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"InterfaceDeclaration_IAlfredUser\": {\"backCompat\": false}\n*/\ndeclare function get_current_InterfaceDeclaration_IAlfredUser():\n TypeOnly<current.IAlfredUser>;\ndeclare function use_old_InterfaceDeclaration_IAlfredUser(\n use: TypeOnly<old.IAlfredUser>): void;\nuse_old_InterfaceDeclaration_IAlfredUser(\n get_current_InterfaceDeclaration_IAlfredUser());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"InterfaceDeclaration_IConfig\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_InterfaceDeclaration_IConfig():\n TypeOnly<old.IConfig>;\ndeclare function use_current_InterfaceDeclaration_IConfig(\n use: TypeOnly<current.IConfig>): void;\nuse_current_InterfaceDeclaration_IConfig(\n get_old_InterfaceDeclaration_IConfig());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"InterfaceDeclaration_IConfig\": {\"backCompat\": false}\n*/\ndeclare function get_current_InterfaceDeclaration_IConfig():\n TypeOnly<current.IConfig>;\ndeclare function use_old_InterfaceDeclaration_IConfig(\n use: TypeOnly<old.IConfig>): void;\nuse_old_InterfaceDeclaration_IConfig(\n get_current_InterfaceDeclaration_IConfig());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"ClassDeclaration_RouterliciousUrlResolver\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_ClassDeclaration_RouterliciousUrlResolver():\n TypeOnly<old.RouterliciousUrlResolver>;\ndeclare function use_current_ClassDeclaration_RouterliciousUrlResolver(\n use: TypeOnly<current.RouterliciousUrlResolver>): void;\nuse_current_ClassDeclaration_RouterliciousUrlResolver(\n get_old_ClassDeclaration_RouterliciousUrlResolver());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"ClassDeclaration_RouterliciousUrlResolver\": {\"backCompat\": false}\n*/\ndeclare function get_current_ClassDeclaration_RouterliciousUrlResolver():\n TypeOnly<current.RouterliciousUrlResolver>;\ndeclare function use_old_ClassDeclaration_RouterliciousUrlResolver(\n use: TypeOnly<old.RouterliciousUrlResolver>): void;\nuse_old_ClassDeclaration_RouterliciousUrlResolver(\n get_current_ClassDeclaration_RouterliciousUrlResolver());\n"]}
|
|
File without changes
|