@fluidframework/routerlicious-urlresolver 2.0.0-dev-rc.3.0.0.250606 → 2.0.0-dev-rc.3.0.0.254274
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/api-report/routerlicious-urlresolver.api.md +2 -2
- package/dist/routerlicious-urlresolver-alpha.d.ts +2 -2
- package/dist/routerlicious-urlresolver-beta.d.ts +2 -2
- package/dist/routerlicious-urlresolver-public.d.ts +2 -2
- package/dist/routerlicious-urlresolver-untrimmed.d.ts +2 -2
- 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/lib/routerlicious-urlresolver-alpha.d.ts +2 -2
- package/lib/routerlicious-urlresolver-beta.d.ts +2 -2
- package/lib/routerlicious-urlresolver-public.d.ts +2 -2
- package/lib/routerlicious-urlresolver-untrimmed.d.ts +2 -2
- package/lib/tsdoc-metadata.json +11 -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 +7 -19
- package/src/urlResolver.ts +3 -2
- 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
|
@@ -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
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { IRequest } from '@fluidframework/core-interfaces';
|
|
2
|
-
import { IResolvedUrl } from '@fluidframework/driver-definitions';
|
|
3
|
-
import { IUrlResolver } from '@fluidframework/driver-definitions';
|
|
2
|
+
import { IResolvedUrl } from '@fluidframework/driver-definitions/internal';
|
|
3
|
+
import { IUrlResolver } from '@fluidframework/driver-definitions/internal';
|
|
4
4
|
import { IUser } from '@fluidframework/protocol-definitions';
|
|
5
5
|
import { Provider } from 'nconf';
|
|
6
6
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { IRequest } from '@fluidframework/core-interfaces';
|
|
2
|
-
import { IResolvedUrl } from '@fluidframework/driver-definitions';
|
|
3
|
-
import { IUrlResolver } from '@fluidframework/driver-definitions';
|
|
2
|
+
import { IResolvedUrl } from '@fluidframework/driver-definitions/internal';
|
|
3
|
+
import { IUrlResolver } from '@fluidframework/driver-definitions/internal';
|
|
4
4
|
import { IUser } from '@fluidframework/protocol-definitions';
|
|
5
5
|
import { Provider } from 'nconf';
|
|
6
6
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { IRequest } from '@fluidframework/core-interfaces';
|
|
2
|
-
import { IResolvedUrl } from '@fluidframework/driver-definitions';
|
|
3
|
-
import { IUrlResolver } from '@fluidframework/driver-definitions';
|
|
2
|
+
import { IResolvedUrl } from '@fluidframework/driver-definitions/internal';
|
|
3
|
+
import { IUrlResolver } from '@fluidframework/driver-definitions/internal';
|
|
4
4
|
import { IUser } from '@fluidframework/protocol-definitions';
|
|
5
5
|
import { Provider } from 'nconf';
|
|
6
6
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { IRequest } from '@fluidframework/core-interfaces';
|
|
2
|
-
import { IResolvedUrl } from '@fluidframework/driver-definitions';
|
|
3
|
-
import { IUrlResolver } from '@fluidframework/driver-definitions';
|
|
2
|
+
import { IResolvedUrl } from '@fluidframework/driver-definitions/internal';
|
|
3
|
+
import { IUrlResolver } from '@fluidframework/driver-definitions/internal';
|
|
4
4
|
import { IUser } from '@fluidframework/protocol-definitions';
|
|
5
5
|
import { Provider } from 'nconf';
|
|
6
6
|
|
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;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAE3D,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,
|
|
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;;;AAGH,
|
|
1
|
+
{"version":3,"file":"urlResolver.js","sourceRoot":"","sources":["../src/urlResolver.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAGH,kEAA6D;AAM7D,MAAM,WAAW,GAAG;IACnB,mCAAmC;IACnC,+BAA+B;IAC/B,8BAA8B;CAC9B,CAAC;AAEF;;GAEG;AACH,MAAa,wBAAwB;IACpC,YACkB,MAEL,EACK,QAA+B,EAC/B,OAAe;QAJf,WAAM,GAAN,MAAM,CAEX;QACK,aAAQ,GAAR,QAAQ,CAAuB;QAC/B,YAAO,GAAP,OAAO,CAAQ;IAC9B,CAAC;IAEJ;;OAEG;IACI,KAAK,CAAC,OAAO,CAAC,OAAiB;QACrC,IAAI,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC;QAE/B,gDAAgD;QAChD,IAAI,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;YAC/C,YAAY,GAAG,oBAAoB,OAAO,CAAC,GAAG,EAAE,CAAC;SACjD;QAED,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC;QACrC,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;QAE7C,sFAAsF;QACtF,IACC,CAAC,CACA,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC;YAC5B,CAAC,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC;YAClD,IAAI,CAAC,MAAM,CACX,EACA;YACD,OAAO,SAAS,CAAC;SACjB;QAED,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,QAAgB,CAAC;QACrB,IAAI,UAAkB,CAAC;QACvB,IAAI,QAA8B,CAAC;QACnC,IAAI,IAAI,CAAC,MAAM,EAAE;YAChB,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;YAChC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;YACpC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;SAChC;aAAM,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;YAC5B,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACnB,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;SACrB;aAAM;YACN,QAAQ,GAAG,OAAO,CAAC;YACnB,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;SACrB;QAED,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QAEpC,MAAM,WAAW,GAAG,MAAM,KAAK,WAAW,CAAC;QAC3C,MAAM,iBAAiB,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,+CAA+C;QAErG,MAAM,YAAY,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,MAAM,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAE1E,IAAI,QAAQ,GACX,UAAU;YACV,GACC,IAAI,CAAC,MAAM;gBACV,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI;gBAC5D,CAAC,CAAC,YACJ,GAAG;YACH,GAAG,kBAAkB,CAAC,QAAQ,CAAC,GAAG;YAClC,GAAG,kBAAkB,CAAC,UAAU,CAAC,EAAE,CAAC;QAErC,gEAAgE;QAChE,IAAI,MAAM,CAAC,MAAM,EAAE;YAClB,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;YACnC,IAAI,YAAY,EAAE;gBACjB,QAAQ,IAAI,YAAY,CAAC;aACzB;SACD;QAED,IAAI,UAAU,GAAG,EAAE,CAAC;QACpB,IAAI,UAAU,GAAG,EAAE,CAAC;QACpB,IAAI,eAAe,GAAG,EAAE,CAAC;QAEzB,oDAAoD;QACpD,IAAI,QAAQ,IAAI,iBAAiB,EAAE;YAClC,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;YAC3D,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;YAC9C,eAAe,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,kBAAkB,CAAC,WAAW,kBAAkB,CACjF,QAAQ,CACR,IAAI,kBAAkB,CAAC,UAAU,CAAC,EAAE,CAAC;SACtC;aAAM,IAAI,QAAQ,EAAE;YACpB,UAAU,GAAG,QAAQ;iBACnB,GAAG,CAAC,uBAAuB,CAAC;iBAC5B,OAAO,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;YAC9C,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;YAC9C,eAAe,GAAG,GAAG,UAAU,WAAW,kBAAkB,CAC3D,QAAQ,CACR,IAAI,kBAAkB,CAAC,UAAU,CAAC,EAAE,CAAC;SACtC;aAAM,IAAI,WAAW,EAAE;YACvB,UAAU,GAAG,uBAAuB,CAAC;YACrC,UAAU,GAAG,uBAAuB,CAAC;YACrC,eAAe,GAAG,gCAAgC,QAAQ,IAAI,UAAU,EAAE,CAAC;SAC3E;aAAM;YACN,UAAU,GAAG,qBAAqB,YAAY,EAAE,CAAC;YACjD,UAAU,GAAG,kBAAkB,YAAY,EAAE,CAAC;YAC9C,eAAe,GAAG,kBAAkB,YAAY,WAAW,QAAQ,IAAI,UAAU,EAAE,CAAC;SACpF;QAED,UAAU,IAAI,UAAU,QAAQ,EAAE,CAAC;QACnC,UAAU,IAAI,EAAE,CAAC;QACjB,eAAe,IAAI,EAAE,CAAC;QAEtB,MAAM,QAAQ,GAAiB;YAC9B,SAAS,EAAE;gBACV,UAAU;gBACV,eAAe;gBACf,UAAU;aACV;YACD,EAAE,EAAE,UAAU;YACd,MAAM,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE;YACtB,IAAI,EAAE,OAAO;YACb,GAAG,EAAE,QAAQ;SACb,CAAC;QACF,OAAO,QAAQ,CAAC;IACjB,CAAC;IAEM,KAAK,CAAC,cAAc,CAAC,WAAyB,EAAE,WAAmB;QACzE,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAC3C,IAAA,iBAAM,EAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,6BAA6B,CAAC,CAAC;QAClE,MAAM,CAAC,EAAE,QAAQ,EAAE,UAAU,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/D,IAAA,iBAAM,EAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,8BAA8B,CAAC,CAAC;QACzD,IAAA,iBAAM,EAAC,CAAC,CAAC,UAAU,EAAE,KAAK,CAAC,gCAAgC,CAAC,CAAC;QAE7D,IAAI,GAAG,GAAG,WAAW,CAAC;QACtB,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;YACxB,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;SACpB;QAED,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,kBAAkB,CAAC,QAAQ,CAAC,IAAI,kBAAkB,CAC3E,UAAU,CACV,IAAI,GAAG,EAAE,CAAC;IACZ,CAAC;CACD;AA1ID,4DA0IC","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"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { IRequest } from '@fluidframework/core-interfaces';
|
|
2
|
-
import { IResolvedUrl } from '@fluidframework/driver-definitions';
|
|
3
|
-
import { IUrlResolver } from '@fluidframework/driver-definitions';
|
|
2
|
+
import { IResolvedUrl } from '@fluidframework/driver-definitions/internal';
|
|
3
|
+
import { IUrlResolver } from '@fluidframework/driver-definitions/internal';
|
|
4
4
|
import { IUser } from '@fluidframework/protocol-definitions';
|
|
5
5
|
import { Provider } from 'nconf';
|
|
6
6
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { IRequest } from '@fluidframework/core-interfaces';
|
|
2
|
-
import { IResolvedUrl } from '@fluidframework/driver-definitions';
|
|
3
|
-
import { IUrlResolver } from '@fluidframework/driver-definitions';
|
|
2
|
+
import { IResolvedUrl } from '@fluidframework/driver-definitions/internal';
|
|
3
|
+
import { IUrlResolver } from '@fluidframework/driver-definitions/internal';
|
|
4
4
|
import { IUser } from '@fluidframework/protocol-definitions';
|
|
5
5
|
import { Provider } from 'nconf';
|
|
6
6
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { IRequest } from '@fluidframework/core-interfaces';
|
|
2
|
-
import { IResolvedUrl } from '@fluidframework/driver-definitions';
|
|
3
|
-
import { IUrlResolver } from '@fluidframework/driver-definitions';
|
|
2
|
+
import { IResolvedUrl } from '@fluidframework/driver-definitions/internal';
|
|
3
|
+
import { IUrlResolver } from '@fluidframework/driver-definitions/internal';
|
|
4
4
|
import { IUser } from '@fluidframework/protocol-definitions';
|
|
5
5
|
import { Provider } from 'nconf';
|
|
6
6
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { IRequest } from '@fluidframework/core-interfaces';
|
|
2
|
-
import { IResolvedUrl } from '@fluidframework/driver-definitions';
|
|
3
|
-
import { IUrlResolver } from '@fluidframework/driver-definitions';
|
|
2
|
+
import { IResolvedUrl } from '@fluidframework/driver-definitions/internal';
|
|
3
|
+
import { IUrlResolver } from '@fluidframework/driver-definitions/internal';
|
|
4
4
|
import { IUser } from '@fluidframework/protocol-definitions';
|
|
5
5
|
import { Provider } from 'nconf';
|
|
6
6
|
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// This file is read by tools that parse documentation comments conforming to the TSDoc standard.
|
|
2
|
+
// It should be published with your NPM package. It should not be tracked by Git.
|
|
3
|
+
{
|
|
4
|
+
"tsdocVersion": "0.12",
|
|
5
|
+
"toolPackages": [
|
|
6
|
+
{
|
|
7
|
+
"packageName": "@microsoft/api-extractor",
|
|
8
|
+
"packageVersion": "7.42.3"
|
|
9
|
+
}
|
|
10
|
+
]
|
|
11
|
+
}
|
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;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAE3D,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,
|
|
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;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,
|
|
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-dev-rc.3.0.0.
|
|
3
|
+
"version": "2.0.0-dev-rc.3.0.0.254274",
|
|
4
4
|
"description": "Url Resolver for routerlicious urls.",
|
|
5
5
|
"homepage": "https://fluidframework.com",
|
|
6
6
|
"repository": {
|
|
@@ -14,16 +14,6 @@
|
|
|
14
14
|
"type": "module",
|
|
15
15
|
"exports": {
|
|
16
16
|
".": {
|
|
17
|
-
"import": {
|
|
18
|
-
"types": "./lib/index.d.ts",
|
|
19
|
-
"default": "./lib/index.js"
|
|
20
|
-
},
|
|
21
|
-
"require": {
|
|
22
|
-
"types": "./dist/index.d.ts",
|
|
23
|
-
"default": "./dist/index.js"
|
|
24
|
-
}
|
|
25
|
-
},
|
|
26
|
-
"./public": {
|
|
27
17
|
"import": {
|
|
28
18
|
"types": "./lib/routerlicious-urlresolver-public.d.ts",
|
|
29
19
|
"default": "./lib/index.js"
|
|
@@ -45,18 +35,18 @@
|
|
|
45
35
|
}
|
|
46
36
|
},
|
|
47
37
|
"main": "dist/index.js",
|
|
48
|
-
"types": "dist/
|
|
38
|
+
"types": "./dist/routerlicious-urlresolver-public.d.ts",
|
|
49
39
|
"dependencies": {
|
|
50
|
-
"@fluidframework/core-interfaces": "2.0.0-dev-rc.3.0.0.
|
|
51
|
-
"@fluidframework/core-utils": "2.0.0-dev-rc.3.0.0.
|
|
52
|
-
"@fluidframework/driver-definitions": "2.0.0-dev-rc.3.0.0.
|
|
40
|
+
"@fluidframework/core-interfaces": "2.0.0-dev-rc.3.0.0.254274",
|
|
41
|
+
"@fluidframework/core-utils": "2.0.0-dev-rc.3.0.0.254274",
|
|
42
|
+
"@fluidframework/driver-definitions": "2.0.0-dev-rc.3.0.0.254274",
|
|
53
43
|
"@fluidframework/protocol-definitions": "^3.2.0",
|
|
54
44
|
"nconf": "^0.12.0"
|
|
55
45
|
},
|
|
56
46
|
"devDependencies": {
|
|
57
|
-
"@arethetypeswrong/cli": "^0.
|
|
47
|
+
"@arethetypeswrong/cli": "^0.15.2",
|
|
58
48
|
"@biomejs/biome": "^1.6.2",
|
|
59
|
-
"@fluid-internal/mocha-test-setup": "2.0.0-dev-rc.3.0.0.
|
|
49
|
+
"@fluid-internal/mocha-test-setup": "2.0.0-dev-rc.3.0.0.254274",
|
|
60
50
|
"@fluid-tools/build-cli": "^0.34.0",
|
|
61
51
|
"@fluidframework/build-common": "^2.0.3",
|
|
62
52
|
"@fluidframework/build-tools": "^0.34.0",
|
|
@@ -106,7 +96,6 @@
|
|
|
106
96
|
"build:test:cjs": "fluid-tsc commonjs --project ./src/test/tsconfig.cjs.json",
|
|
107
97
|
"build:test:esm": "tsc --project ./src/test/tsconfig.json",
|
|
108
98
|
"check:are-the-types-wrong": "attw --pack . --entrypoints .",
|
|
109
|
-
"check:biome": "biome check .",
|
|
110
99
|
"check:prettier": "prettier --check . --cache --ignore-path ../../../.prettierignore",
|
|
111
100
|
"check:release-tags": "api-extractor run --local --config ./api-extractor-lint.json",
|
|
112
101
|
"ci:build:docs": "api-extractor run",
|
|
@@ -114,7 +103,6 @@
|
|
|
114
103
|
"eslint": "eslint --format stylish src",
|
|
115
104
|
"eslint:fix": "eslint --format stylish src --fix --fix-type problem,suggestion,layout",
|
|
116
105
|
"format": "fluid-build --task format .",
|
|
117
|
-
"format:biome": "biome check --apply .",
|
|
118
106
|
"format:prettier": "prettier --write . --cache --ignore-path ../../../.prettierignore",
|
|
119
107
|
"lint": "fluid-build . --task lint",
|
|
120
108
|
"lint:fix": "fluid-build . --task eslint:fix --task format",
|
package/src/urlResolver.ts
CHANGED
|
@@ -4,9 +4,10 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import { IRequest } from "@fluidframework/core-interfaces";
|
|
7
|
-
import { assert } from "@fluidframework/core-utils";
|
|
8
|
-
import { IResolvedUrl, IUrlResolver } from "@fluidframework/driver-definitions";
|
|
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 = [
|
|
@@ -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 { IRequest } from \"@fluidframework/core-interfaces\";\nimport { IResolvedUrl } from \"@fluidframework/driver-definitions\";\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"]}
|