@fluidframework/routerlicious-urlresolver 0.59.2000 → 0.59.3000-67119

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.
@@ -5,5 +5,5 @@
5
5
  * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY
6
6
  */
7
7
  export declare const pkgName = "@fluidframework/routerlicious-urlresolver";
8
- export declare const pkgVersion = "0.59.2000";
8
+ export declare const pkgVersion = "0.59.3000-67119";
9
9
  //# sourceMappingURL=packageVersion.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"packageVersion.d.ts","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,OAAO,8CAA8C,CAAC;AACnE,eAAO,MAAM,UAAU,cAAc,CAAC"}
1
+ {"version":3,"file":"packageVersion.d.ts","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,OAAO,8CAA8C,CAAC;AACnE,eAAO,MAAM,UAAU,oBAAoB,CAAC"}
@@ -8,5 +8,5 @@
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.pkgVersion = exports.pkgName = void 0;
10
10
  exports.pkgName = "@fluidframework/routerlicious-urlresolver";
11
- exports.pkgVersion = "0.59.2000";
11
+ exports.pkgVersion = "0.59.3000-67119";
12
12
  //# sourceMappingURL=packageVersion.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"packageVersion.js","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEU,QAAA,OAAO,GAAG,2CAA2C,CAAC;AACtD,QAAA,UAAU,GAAG,WAAW,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n *\n * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY\n */\n\nexport const pkgName = \"@fluidframework/routerlicious-urlresolver\";\nexport const pkgVersion = \"0.59.2000\";\n"]}
1
+ {"version":3,"file":"packageVersion.js","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEU,QAAA,OAAO,GAAG,2CAA2C,CAAC;AACtD,QAAA,UAAU,GAAG,iBAAiB,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n *\n * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY\n */\n\nexport const pkgName = \"@fluidframework/routerlicious-urlresolver\";\nexport const pkgVersion = \"0.59.3000-67119\";\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"urlResolver.d.ts","sourceRoot":"","sources":["../src/urlResolver.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EACH,QAAQ,EACX,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAEH,YAAY,EACZ,YAAY,EACf,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,sCAAsC,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAQjC,qBAAa,wBAAyB,YAAW,YAAY;IAErD,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAFP,MAAM,EAAE;QAAE,QAAQ,EAAE,QAAQ,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,EAChF,QAAQ,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,EAC/B,OAAO,EAAE,MAAM;IAGpC;;OAEG;IACU,OAAO,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;IAgG7D,cAAc,CACvB,WAAW,EAAE,YAAY,EACzB,WAAW,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,CAAC;CAiBrB;AAED,MAAM,WAAW,WAAY,SAAQ,KAAK;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,OAAO;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACtB"}
1
+ {"version":3,"file":"urlResolver.d.ts","sourceRoot":"","sources":["../src/urlResolver.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EACH,QAAQ,EACX,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAEH,YAAY,EACZ,YAAY,EACf,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,sCAAsC,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAQjC,qBAAa,wBAAyB,YAAW,YAAY;IAErD,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAFP,MAAM,EAAE;QAAE,QAAQ,EAAE,QAAQ,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;KAAE,GAAG,SAAS,EACjF,QAAQ,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,EAC/B,OAAO,EAAE,MAAM;IAGpC;;OAEG;IACU,OAAO,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;IAgG7D,cAAc,CACvB,WAAW,EAAE,YAAY,EACzB,WAAW,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,CAAC;CAiBrB;AAED,MAAM,WAAW,WAAY,SAAQ,KAAK;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,OAAO;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACtB"}
@@ -55,7 +55,7 @@ class RouterliciousUrlResolver {
55
55
  const isInternalRequest = server.includes("gateway"); // e.g. gateway:3000 || fierce-dog-gateway:3000
56
56
  const serverSuffix = isLocalHost ? `${server}:3003` : server.substring(4);
57
57
  let fluidUrl = "fluid://" +
58
- `${this.config ? url_1.parse(this.config.provider.get("worker:serverUrl")).host : serverSuffix}/` +
58
+ `${this.config ? (0, url_1.parse)(this.config.provider.get("worker:serverUrl")).host : serverSuffix}/` +
59
59
  `${encodeURIComponent(tenantId)}/` +
60
60
  `${encodeURIComponent(documentId)}`;
61
61
  // In case of any additional parameters add them back to the url
@@ -110,11 +110,11 @@ class RouterliciousUrlResolver {
110
110
  }
111
111
  async getAbsoluteUrl(resolvedUrl, relativeUrl) {
112
112
  const fluidResolvedUrl = resolvedUrl;
113
- const parsedUrl = url_1.parse(fluidResolvedUrl.url);
114
- common_utils_1.assert(!!parsedUrl.pathname, 0x0b9 /* "PathName should exist" */);
113
+ const parsedUrl = (0, url_1.parse)(fluidResolvedUrl.url);
114
+ (0, common_utils_1.assert)(!!parsedUrl.pathname, 0x0b9 /* "PathName should exist" */);
115
115
  const [, tenantId, documentId] = parsedUrl.pathname.split("/");
116
- common_utils_1.assert(!!tenantId, 0x0ba /* "Tenant id should exist" */);
117
- common_utils_1.assert(!!documentId, 0x0bb /* "Document id should exist" */);
116
+ (0, common_utils_1.assert)(!!tenantId, 0x0ba /* "Tenant id should exist" */);
117
+ (0, common_utils_1.assert)(!!documentId, 0x0bb /* "Document id should exist" */);
118
118
  let url = relativeUrl;
119
119
  if (url.startsWith("/")) {
120
120
  url = url.substr(1);
@@ -1 +1 @@
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 { parse } from \"url\";\nimport { assert } from \"@fluidframework/common-utils\";\nimport {\n IRequest,\n} from \"@fluidframework/core-interfaces\";\nimport {\n IFluidResolvedUrl,\n IResolvedUrl,\n IUrlResolver,\n} from \"@fluidframework/driver-definitions\";\nimport { IUser } from \"@fluidframework/protocol-definitions\";\nimport { Provider } from \"nconf\";\n\nconst r11sServers = [\n \"www.wu2-ppe.prague.office-int.com\",\n \"www.wu2.prague.office-int.com\",\n \"www.eu.prague.office-int.com\",\n];\n\nexport class RouterliciousUrlResolver implements IUrlResolver {\n constructor(\n private readonly config: { provider: Provider, tenantId: string, documentId: string } | undefined,\n private readonly getToken: () => Promise<string>,\n private readonly hostUrl: string) {\n }\n\n /**\n * Handles a request and returns the relevant endpoints for the environment\n */\n public async resolve(request: IRequest): Promise<IResolvedUrl | undefined> {\n let requestedUrl = request.url;\n\n // If we know the original hostname, reinsert it\n if (this.config && request.url.startsWith(\"/\")) {\n requestedUrl = `http://dummy:3000${request.url}`;\n }\n\n const reqUrl = new URL(requestedUrl);\n const server = reqUrl.hostname.toLowerCase();\n\n // If we don't have a valid server or a prescriptive config, we cannot resolve the URL\n if (!(r11sServers.includes(server) || (server === \"localhost\" && reqUrl.port === \"3000\") || this.config)) {\n return undefined;\n }\n\n const path = reqUrl.pathname.split(\"/\");\n let tenantId: string;\n let documentId: string;\n let provider: Provider | undefined;\n if (this.config) {\n tenantId = this.config.tenantId;\n documentId = this.config.documentId;\n provider = this.config.provider;\n } else if (path.length >= 4) {\n tenantId = path[2];\n documentId = path[3];\n } else {\n tenantId = \"fluid\";\n documentId = path[2];\n }\n\n const token = await this.getToken();\n\n const isLocalHost = server === \"localhost\";\n const isInternalRequest = server.includes(\"gateway\"); // e.g. gateway:3000 || fierce-dog-gateway:3000\n\n const serverSuffix = isLocalHost ? `${server}:3003` : server.substring(4);\n\n let fluidUrl = \"fluid://\" +\n `${this.config ? parse(this.config.provider.get(\"worker:serverUrl\")).host : serverSuffix}/` +\n `${encodeURIComponent(tenantId)}/` +\n `${encodeURIComponent(documentId)}`;\n\n // In case of any additional parameters add them back to the url\n if (reqUrl.search) {\n const searchParams = reqUrl.search;\n if (searchParams) {\n fluidUrl += searchParams;\n }\n }\n\n let storageUrl = \"\";\n let ordererUrl = \"\";\n let deltaStorageUrl = \"\";\n\n // There is no provider when using debugging tooling\n if (provider && isInternalRequest) {\n storageUrl = provider.get(\"worker:internalBlobStorageUrl\");\n ordererUrl = provider.get(\"worker:alfredUrl\");\n deltaStorageUrl =\n // eslint-disable-next-line max-len\n `${provider.get(\"worker:alfredUrl\")}/deltas/${encodeURIComponent(tenantId)}/${encodeURIComponent(documentId)}`;\n } else if (provider) {\n storageUrl = provider.get(\"worker:blobStorageUrl\").replace(\"historian:3000\", \"localhost:3001\");\n ordererUrl = provider.get(\"worker:serverUrl\");\n deltaStorageUrl =\n `${ordererUrl}/deltas/${encodeURIComponent(tenantId)}/${encodeURIComponent(documentId)}`;\n } else if (isLocalHost) {\n storageUrl = `http://localhost:3001`;\n ordererUrl = `http://localhost:3003`;\n deltaStorageUrl = `http://localhost:3003/deltas/${tenantId}/${documentId}`;\n } else {\n storageUrl = `https://historian.${serverSuffix}`;\n ordererUrl = `https://alfred.${serverSuffix}`;\n deltaStorageUrl = `https://alfred.${serverSuffix}/deltas/${tenantId}/${documentId}`;\n }\n\n storageUrl += `/repos/${tenantId}`;\n ordererUrl += ``;\n deltaStorageUrl += ``;\n\n const resolved: IFluidResolvedUrl = {\n endpoints: {\n storageUrl,\n deltaStorageUrl,\n ordererUrl,\n },\n id: documentId,\n tokens: { jwt: token },\n type: \"fluid\",\n url: fluidUrl,\n };\n return resolved;\n }\n\n public async getAbsoluteUrl(\n resolvedUrl: IResolvedUrl,\n relativeUrl: string,\n ): Promise<string> {\n const fluidResolvedUrl = resolvedUrl as IFluidResolvedUrl;\n\n const parsedUrl = parse(fluidResolvedUrl.url);\n assert(!!parsedUrl.pathname, 0x0b9 /* \"PathName should exist\" */);\n const [, tenantId, documentId] = parsedUrl.pathname.split(\"/\");\n assert(!!tenantId, 0x0ba /* \"Tenant id should exist\" */);\n assert(!!documentId, 0x0bb /* \"Document id should exist\" */);\n\n let url = relativeUrl;\n if (url.startsWith(\"/\")) {\n url = url.substr(1);\n }\n\n return `${this.hostUrl}/${encodeURIComponent(\n tenantId)}/${encodeURIComponent(documentId)}/${url}`;\n }\n}\n\nexport interface IAlfredUser extends IUser {\n displayName: string;\n name: string;\n}\n\nexport interface IConfig {\n serverUrl: string;\n blobStorageUrl: string;\n tenantId: string;\n documentId: string;\n}\n"]}
1
+ {"version":3,"file":"urlResolver.js","sourceRoot":"","sources":["../src/urlResolver.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,6BAA4B;AAC5B,+DAAsD;AAYtD,MAAM,WAAW,GAAG;IAChB,mCAAmC;IACnC,+BAA+B;IAC/B,8BAA8B;CACjC,CAAC;AAEF,MAAa,wBAAwB;IACjC,YACqB,MAAiF,EACjF,QAA+B,EAC/B,OAAe;QAFf,WAAM,GAAN,MAAM,CAA2E;QACjF,aAAQ,GAAR,QAAQ,CAAuB;QAC/B,YAAO,GAAP,OAAO,CAAQ;IACpC,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,OAAO,CAAC,OAAiB;QAClC,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;YAC5C,YAAY,GAAG,oBAAoB,OAAO,CAAC,GAAG,EAAE,CAAC;SACpD;QAED,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC;QACrC,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;QAE7C,sFAAsF;QACtF,IAAI,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE;YACtG,OAAO,SAAS,CAAC;SACpB;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;YACb,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;SACnC;aAAM,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;YACzB,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACnB,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;SACxB;aAAM;YACH,QAAQ,GAAG,OAAO,CAAC;YACnB,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;SACxB;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,GAAG,UAAU;YACrB,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAA,WAAK,EAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,GAAG;YAC3F,GAAG,kBAAkB,CAAC,QAAQ,CAAC,GAAG;YAClC,GAAG,kBAAkB,CAAC,UAAU,CAAC,EAAE,CAAC;QAExC,gEAAgE;QAChE,IAAI,MAAM,CAAC,MAAM,EAAE;YACf,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;YACnC,IAAI,YAAY,EAAE;gBACd,QAAQ,IAAI,YAAY,CAAC;aAC5B;SACJ;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;YAC/B,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;YAC3D,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;YAC9C,eAAe;gBACX,mCAAmC;gBACnC,GAAG,QAAQ,CAAC,GAAG,CAAC,kBAAkB,CAAC,WAAW,kBAAkB,CAAC,QAAQ,CAAC,IAAI,kBAAkB,CAAC,UAAU,CAAC,EAAE,CAAC;SACtH;aAAM,IAAI,QAAQ,EAAE;YACjB,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,OAAO,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;YAC/F,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;YAC9C,eAAe;gBACX,GAAG,UAAU,WAAW,kBAAkB,CAAC,QAAQ,CAAC,IAAI,kBAAkB,CAAC,UAAU,CAAC,EAAE,CAAC;SAChG;aAAM,IAAI,WAAW,EAAE;YACpB,UAAU,GAAG,uBAAuB,CAAC;YACrC,UAAU,GAAG,uBAAuB,CAAC;YACrC,eAAe,GAAG,gCAAgC,QAAQ,IAAI,UAAU,EAAE,CAAC;SAC9E;aAAM;YACH,UAAU,GAAG,qBAAqB,YAAY,EAAE,CAAC;YACjD,UAAU,GAAG,kBAAkB,YAAY,EAAE,CAAC;YAC9C,eAAe,GAAG,kBAAkB,YAAY,WAAW,QAAQ,IAAI,UAAU,EAAE,CAAC;SACvF;QAED,UAAU,IAAI,UAAU,QAAQ,EAAE,CAAC;QACnC,UAAU,IAAI,EAAE,CAAC;QACjB,eAAe,IAAI,EAAE,CAAC;QAEtB,MAAM,QAAQ,GAAsB;YAChC,SAAS,EAAE;gBACP,UAAU;gBACV,eAAe;gBACf,UAAU;aACb;YACD,EAAE,EAAE,UAAU;YACd,MAAM,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE;YACtB,IAAI,EAAE,OAAO;YACb,GAAG,EAAE,QAAQ;SAChB,CAAC;QACF,OAAO,QAAQ,CAAC;IACpB,CAAC;IAEM,KAAK,CAAC,cAAc,CACvB,WAAyB,EACzB,WAAmB;QAEnB,MAAM,gBAAgB,GAAG,WAAgC,CAAC;QAE1D,MAAM,SAAS,GAAG,IAAA,WAAK,EAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAC9C,IAAA,qBAAM,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,qBAAM,EAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,8BAA8B,CAAC,CAAC;QACzD,IAAA,qBAAM,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;YACrB,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;SACvB;QAED,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,kBAAkB,CACxC,QAAQ,CAAC,IAAI,kBAAkB,CAAC,UAAU,CAAC,IAAI,GAAG,EAAE,CAAC;IAC7D,CAAC;CACJ;AA9HD,4DA8HC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { parse } from \"url\";\nimport { assert } from \"@fluidframework/common-utils\";\nimport {\n IRequest,\n} from \"@fluidframework/core-interfaces\";\nimport {\n IFluidResolvedUrl,\n IResolvedUrl,\n IUrlResolver,\n} from \"@fluidframework/driver-definitions\";\nimport { IUser } from \"@fluidframework/protocol-definitions\";\nimport { Provider } from \"nconf\";\n\nconst r11sServers = [\n \"www.wu2-ppe.prague.office-int.com\",\n \"www.wu2.prague.office-int.com\",\n \"www.eu.prague.office-int.com\",\n];\n\nexport class RouterliciousUrlResolver implements IUrlResolver {\n constructor(\n private readonly config: { provider: Provider; tenantId: string; documentId: string; } | undefined,\n private readonly getToken: () => Promise<string>,\n private readonly hostUrl: string) {\n }\n\n /**\n * Handles a request and returns the relevant endpoints for the environment\n */\n public async resolve(request: IRequest): Promise<IResolvedUrl | undefined> {\n let requestedUrl = request.url;\n\n // If we know the original hostname, reinsert it\n if (this.config && request.url.startsWith(\"/\")) {\n requestedUrl = `http://dummy:3000${request.url}`;\n }\n\n const reqUrl = new URL(requestedUrl);\n const server = reqUrl.hostname.toLowerCase();\n\n // If we don't have a valid server or a prescriptive config, we cannot resolve the URL\n if (!(r11sServers.includes(server) || (server === \"localhost\" && reqUrl.port === \"3000\") || this.config)) {\n return undefined;\n }\n\n const path = reqUrl.pathname.split(\"/\");\n let tenantId: string;\n let documentId: string;\n let provider: Provider | undefined;\n if (this.config) {\n tenantId = this.config.tenantId;\n documentId = this.config.documentId;\n provider = this.config.provider;\n } else if (path.length >= 4) {\n tenantId = path[2];\n documentId = path[3];\n } else {\n tenantId = \"fluid\";\n documentId = path[2];\n }\n\n const token = await this.getToken();\n\n const isLocalHost = server === \"localhost\";\n const isInternalRequest = server.includes(\"gateway\"); // e.g. gateway:3000 || fierce-dog-gateway:3000\n\n const serverSuffix = isLocalHost ? `${server}:3003` : server.substring(4);\n\n let fluidUrl = \"fluid://\" +\n `${this.config ? parse(this.config.provider.get(\"worker:serverUrl\")).host : serverSuffix}/` +\n `${encodeURIComponent(tenantId)}/` +\n `${encodeURIComponent(documentId)}`;\n\n // In case of any additional parameters add them back to the url\n if (reqUrl.search) {\n const searchParams = reqUrl.search;\n if (searchParams) {\n fluidUrl += searchParams;\n }\n }\n\n let storageUrl = \"\";\n let ordererUrl = \"\";\n let deltaStorageUrl = \"\";\n\n // There is no provider when using debugging tooling\n if (provider && isInternalRequest) {\n storageUrl = provider.get(\"worker:internalBlobStorageUrl\");\n ordererUrl = provider.get(\"worker:alfredUrl\");\n deltaStorageUrl =\n // eslint-disable-next-line max-len\n `${provider.get(\"worker:alfredUrl\")}/deltas/${encodeURIComponent(tenantId)}/${encodeURIComponent(documentId)}`;\n } else if (provider) {\n storageUrl = provider.get(\"worker:blobStorageUrl\").replace(\"historian:3000\", \"localhost:3001\");\n ordererUrl = provider.get(\"worker:serverUrl\");\n deltaStorageUrl =\n `${ordererUrl}/deltas/${encodeURIComponent(tenantId)}/${encodeURIComponent(documentId)}`;\n } else if (isLocalHost) {\n storageUrl = `http://localhost:3001`;\n ordererUrl = `http://localhost:3003`;\n deltaStorageUrl = `http://localhost:3003/deltas/${tenantId}/${documentId}`;\n } else {\n storageUrl = `https://historian.${serverSuffix}`;\n ordererUrl = `https://alfred.${serverSuffix}`;\n deltaStorageUrl = `https://alfred.${serverSuffix}/deltas/${tenantId}/${documentId}`;\n }\n\n storageUrl += `/repos/${tenantId}`;\n ordererUrl += ``;\n deltaStorageUrl += ``;\n\n const resolved: IFluidResolvedUrl = {\n endpoints: {\n storageUrl,\n deltaStorageUrl,\n ordererUrl,\n },\n id: documentId,\n tokens: { jwt: token },\n type: \"fluid\",\n url: fluidUrl,\n };\n return resolved;\n }\n\n public async getAbsoluteUrl(\n resolvedUrl: IResolvedUrl,\n relativeUrl: string,\n ): Promise<string> {\n const fluidResolvedUrl = resolvedUrl as IFluidResolvedUrl;\n\n const parsedUrl = parse(fluidResolvedUrl.url);\n assert(!!parsedUrl.pathname, 0x0b9 /* \"PathName should exist\" */);\n const [, tenantId, documentId] = parsedUrl.pathname.split(\"/\");\n assert(!!tenantId, 0x0ba /* \"Tenant id should exist\" */);\n assert(!!documentId, 0x0bb /* \"Document id should exist\" */);\n\n let url = relativeUrl;\n if (url.startsWith(\"/\")) {\n url = url.substr(1);\n }\n\n return `${this.hostUrl}/${encodeURIComponent(\n tenantId)}/${encodeURIComponent(documentId)}/${url}`;\n }\n}\n\nexport interface IAlfredUser extends IUser {\n displayName: string;\n name: string;\n}\n\nexport interface IConfig {\n serverUrl: string;\n blobStorageUrl: string;\n tenantId: string;\n documentId: string;\n}\n"]}
@@ -5,5 +5,5 @@
5
5
  * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY
6
6
  */
7
7
  export declare const pkgName = "@fluidframework/routerlicious-urlresolver";
8
- export declare const pkgVersion = "0.59.2000";
8
+ export declare const pkgVersion = "0.59.3000-67119";
9
9
  //# sourceMappingURL=packageVersion.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"packageVersion.d.ts","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,OAAO,8CAA8C,CAAC;AACnE,eAAO,MAAM,UAAU,cAAc,CAAC"}
1
+ {"version":3,"file":"packageVersion.d.ts","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,OAAO,8CAA8C,CAAC;AACnE,eAAO,MAAM,UAAU,oBAAoB,CAAC"}
@@ -5,5 +5,5 @@
5
5
  * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY
6
6
  */
7
7
  export const pkgName = "@fluidframework/routerlicious-urlresolver";
8
- export const pkgVersion = "0.59.2000";
8
+ export const pkgVersion = "0.59.3000-67119";
9
9
  //# sourceMappingURL=packageVersion.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"packageVersion.js","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,OAAO,GAAG,2CAA2C,CAAC;AACnE,MAAM,CAAC,MAAM,UAAU,GAAG,WAAW,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n *\n * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY\n */\n\nexport const pkgName = \"@fluidframework/routerlicious-urlresolver\";\nexport const pkgVersion = \"0.59.2000\";\n"]}
1
+ {"version":3,"file":"packageVersion.js","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,OAAO,GAAG,2CAA2C,CAAC;AACnE,MAAM,CAAC,MAAM,UAAU,GAAG,iBAAiB,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n *\n * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY\n */\n\nexport const pkgName = \"@fluidframework/routerlicious-urlresolver\";\nexport const pkgVersion = \"0.59.3000-67119\";\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"urlResolver.d.ts","sourceRoot":"","sources":["../src/urlResolver.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EACH,QAAQ,EACX,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAEH,YAAY,EACZ,YAAY,EACf,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,sCAAsC,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAQjC,qBAAa,wBAAyB,YAAW,YAAY;IAErD,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAFP,MAAM,EAAE;QAAE,QAAQ,EAAE,QAAQ,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,EAChF,QAAQ,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,EAC/B,OAAO,EAAE,MAAM;IAGpC;;OAEG;IACU,OAAO,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;IAgG7D,cAAc,CACvB,WAAW,EAAE,YAAY,EACzB,WAAW,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,CAAC;CAiBrB;AAED,MAAM,WAAW,WAAY,SAAQ,KAAK;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,OAAO;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACtB"}
1
+ {"version":3,"file":"urlResolver.d.ts","sourceRoot":"","sources":["../src/urlResolver.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EACH,QAAQ,EACX,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAEH,YAAY,EACZ,YAAY,EACf,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,sCAAsC,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAQjC,qBAAa,wBAAyB,YAAW,YAAY;IAErD,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAFP,MAAM,EAAE;QAAE,QAAQ,EAAE,QAAQ,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;KAAE,GAAG,SAAS,EACjF,QAAQ,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,EAC/B,OAAO,EAAE,MAAM;IAGpC;;OAEG;IACU,OAAO,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;IAgG7D,cAAc,CACvB,WAAW,EAAE,YAAY,EACzB,WAAW,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,CAAC;CAiBrB;AAED,MAAM,WAAW,WAAY,SAAQ,KAAK;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,OAAO;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACtB"}
@@ -1 +1 @@
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 { parse } from \"url\";\nimport { assert } from \"@fluidframework/common-utils\";\nimport {\n IRequest,\n} from \"@fluidframework/core-interfaces\";\nimport {\n IFluidResolvedUrl,\n IResolvedUrl,\n IUrlResolver,\n} from \"@fluidframework/driver-definitions\";\nimport { IUser } from \"@fluidframework/protocol-definitions\";\nimport { Provider } from \"nconf\";\n\nconst r11sServers = [\n \"www.wu2-ppe.prague.office-int.com\",\n \"www.wu2.prague.office-int.com\",\n \"www.eu.prague.office-int.com\",\n];\n\nexport class RouterliciousUrlResolver implements IUrlResolver {\n constructor(\n private readonly config: { provider: Provider, tenantId: string, documentId: string } | undefined,\n private readonly getToken: () => Promise<string>,\n private readonly hostUrl: string) {\n }\n\n /**\n * Handles a request and returns the relevant endpoints for the environment\n */\n public async resolve(request: IRequest): Promise<IResolvedUrl | undefined> {\n let requestedUrl = request.url;\n\n // If we know the original hostname, reinsert it\n if (this.config && request.url.startsWith(\"/\")) {\n requestedUrl = `http://dummy:3000${request.url}`;\n }\n\n const reqUrl = new URL(requestedUrl);\n const server = reqUrl.hostname.toLowerCase();\n\n // If we don't have a valid server or a prescriptive config, we cannot resolve the URL\n if (!(r11sServers.includes(server) || (server === \"localhost\" && reqUrl.port === \"3000\") || this.config)) {\n return undefined;\n }\n\n const path = reqUrl.pathname.split(\"/\");\n let tenantId: string;\n let documentId: string;\n let provider: Provider | undefined;\n if (this.config) {\n tenantId = this.config.tenantId;\n documentId = this.config.documentId;\n provider = this.config.provider;\n } else if (path.length >= 4) {\n tenantId = path[2];\n documentId = path[3];\n } else {\n tenantId = \"fluid\";\n documentId = path[2];\n }\n\n const token = await this.getToken();\n\n const isLocalHost = server === \"localhost\";\n const isInternalRequest = server.includes(\"gateway\"); // e.g. gateway:3000 || fierce-dog-gateway:3000\n\n const serverSuffix = isLocalHost ? `${server}:3003` : server.substring(4);\n\n let fluidUrl = \"fluid://\" +\n `${this.config ? parse(this.config.provider.get(\"worker:serverUrl\")).host : serverSuffix}/` +\n `${encodeURIComponent(tenantId)}/` +\n `${encodeURIComponent(documentId)}`;\n\n // In case of any additional parameters add them back to the url\n if (reqUrl.search) {\n const searchParams = reqUrl.search;\n if (searchParams) {\n fluidUrl += searchParams;\n }\n }\n\n let storageUrl = \"\";\n let ordererUrl = \"\";\n let deltaStorageUrl = \"\";\n\n // There is no provider when using debugging tooling\n if (provider && isInternalRequest) {\n storageUrl = provider.get(\"worker:internalBlobStorageUrl\");\n ordererUrl = provider.get(\"worker:alfredUrl\");\n deltaStorageUrl =\n // eslint-disable-next-line max-len\n `${provider.get(\"worker:alfredUrl\")}/deltas/${encodeURIComponent(tenantId)}/${encodeURIComponent(documentId)}`;\n } else if (provider) {\n storageUrl = provider.get(\"worker:blobStorageUrl\").replace(\"historian:3000\", \"localhost:3001\");\n ordererUrl = provider.get(\"worker:serverUrl\");\n deltaStorageUrl =\n `${ordererUrl}/deltas/${encodeURIComponent(tenantId)}/${encodeURIComponent(documentId)}`;\n } else if (isLocalHost) {\n storageUrl = `http://localhost:3001`;\n ordererUrl = `http://localhost:3003`;\n deltaStorageUrl = `http://localhost:3003/deltas/${tenantId}/${documentId}`;\n } else {\n storageUrl = `https://historian.${serverSuffix}`;\n ordererUrl = `https://alfred.${serverSuffix}`;\n deltaStorageUrl = `https://alfred.${serverSuffix}/deltas/${tenantId}/${documentId}`;\n }\n\n storageUrl += `/repos/${tenantId}`;\n ordererUrl += ``;\n deltaStorageUrl += ``;\n\n const resolved: IFluidResolvedUrl = {\n endpoints: {\n storageUrl,\n deltaStorageUrl,\n ordererUrl,\n },\n id: documentId,\n tokens: { jwt: token },\n type: \"fluid\",\n url: fluidUrl,\n };\n return resolved;\n }\n\n public async getAbsoluteUrl(\n resolvedUrl: IResolvedUrl,\n relativeUrl: string,\n ): Promise<string> {\n const fluidResolvedUrl = resolvedUrl as IFluidResolvedUrl;\n\n const parsedUrl = parse(fluidResolvedUrl.url);\n assert(!!parsedUrl.pathname, 0x0b9 /* \"PathName should exist\" */);\n const [, tenantId, documentId] = parsedUrl.pathname.split(\"/\");\n assert(!!tenantId, 0x0ba /* \"Tenant id should exist\" */);\n assert(!!documentId, 0x0bb /* \"Document id should exist\" */);\n\n let url = relativeUrl;\n if (url.startsWith(\"/\")) {\n url = url.substr(1);\n }\n\n return `${this.hostUrl}/${encodeURIComponent(\n tenantId)}/${encodeURIComponent(documentId)}/${url}`;\n }\n}\n\nexport interface IAlfredUser extends IUser {\n displayName: string;\n name: string;\n}\n\nexport interface IConfig {\n serverUrl: string;\n blobStorageUrl: string;\n tenantId: string;\n documentId: string;\n}\n"]}
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 { parse } from \"url\";\nimport { assert } from \"@fluidframework/common-utils\";\nimport {\n IRequest,\n} from \"@fluidframework/core-interfaces\";\nimport {\n IFluidResolvedUrl,\n IResolvedUrl,\n IUrlResolver,\n} from \"@fluidframework/driver-definitions\";\nimport { IUser } from \"@fluidframework/protocol-definitions\";\nimport { Provider } from \"nconf\";\n\nconst r11sServers = [\n \"www.wu2-ppe.prague.office-int.com\",\n \"www.wu2.prague.office-int.com\",\n \"www.eu.prague.office-int.com\",\n];\n\nexport class RouterliciousUrlResolver implements IUrlResolver {\n constructor(\n private readonly config: { provider: Provider; tenantId: string; documentId: string; } | undefined,\n private readonly getToken: () => Promise<string>,\n private readonly hostUrl: string) {\n }\n\n /**\n * Handles a request and returns the relevant endpoints for the environment\n */\n public async resolve(request: IRequest): Promise<IResolvedUrl | undefined> {\n let requestedUrl = request.url;\n\n // If we know the original hostname, reinsert it\n if (this.config && request.url.startsWith(\"/\")) {\n requestedUrl = `http://dummy:3000${request.url}`;\n }\n\n const reqUrl = new URL(requestedUrl);\n const server = reqUrl.hostname.toLowerCase();\n\n // If we don't have a valid server or a prescriptive config, we cannot resolve the URL\n if (!(r11sServers.includes(server) || (server === \"localhost\" && reqUrl.port === \"3000\") || this.config)) {\n return undefined;\n }\n\n const path = reqUrl.pathname.split(\"/\");\n let tenantId: string;\n let documentId: string;\n let provider: Provider | undefined;\n if (this.config) {\n tenantId = this.config.tenantId;\n documentId = this.config.documentId;\n provider = this.config.provider;\n } else if (path.length >= 4) {\n tenantId = path[2];\n documentId = path[3];\n } else {\n tenantId = \"fluid\";\n documentId = path[2];\n }\n\n const token = await this.getToken();\n\n const isLocalHost = server === \"localhost\";\n const isInternalRequest = server.includes(\"gateway\"); // e.g. gateway:3000 || fierce-dog-gateway:3000\n\n const serverSuffix = isLocalHost ? `${server}:3003` : server.substring(4);\n\n let fluidUrl = \"fluid://\" +\n `${this.config ? parse(this.config.provider.get(\"worker:serverUrl\")).host : serverSuffix}/` +\n `${encodeURIComponent(tenantId)}/` +\n `${encodeURIComponent(documentId)}`;\n\n // In case of any additional parameters add them back to the url\n if (reqUrl.search) {\n const searchParams = reqUrl.search;\n if (searchParams) {\n fluidUrl += searchParams;\n }\n }\n\n let storageUrl = \"\";\n let ordererUrl = \"\";\n let deltaStorageUrl = \"\";\n\n // There is no provider when using debugging tooling\n if (provider && isInternalRequest) {\n storageUrl = provider.get(\"worker:internalBlobStorageUrl\");\n ordererUrl = provider.get(\"worker:alfredUrl\");\n deltaStorageUrl =\n // eslint-disable-next-line max-len\n `${provider.get(\"worker:alfredUrl\")}/deltas/${encodeURIComponent(tenantId)}/${encodeURIComponent(documentId)}`;\n } else if (provider) {\n storageUrl = provider.get(\"worker:blobStorageUrl\").replace(\"historian:3000\", \"localhost:3001\");\n ordererUrl = provider.get(\"worker:serverUrl\");\n deltaStorageUrl =\n `${ordererUrl}/deltas/${encodeURIComponent(tenantId)}/${encodeURIComponent(documentId)}`;\n } else if (isLocalHost) {\n storageUrl = `http://localhost:3001`;\n ordererUrl = `http://localhost:3003`;\n deltaStorageUrl = `http://localhost:3003/deltas/${tenantId}/${documentId}`;\n } else {\n storageUrl = `https://historian.${serverSuffix}`;\n ordererUrl = `https://alfred.${serverSuffix}`;\n deltaStorageUrl = `https://alfred.${serverSuffix}/deltas/${tenantId}/${documentId}`;\n }\n\n storageUrl += `/repos/${tenantId}`;\n ordererUrl += ``;\n deltaStorageUrl += ``;\n\n const resolved: IFluidResolvedUrl = {\n endpoints: {\n storageUrl,\n deltaStorageUrl,\n ordererUrl,\n },\n id: documentId,\n tokens: { jwt: token },\n type: \"fluid\",\n url: fluidUrl,\n };\n return resolved;\n }\n\n public async getAbsoluteUrl(\n resolvedUrl: IResolvedUrl,\n relativeUrl: string,\n ): Promise<string> {\n const fluidResolvedUrl = resolvedUrl as IFluidResolvedUrl;\n\n const parsedUrl = parse(fluidResolvedUrl.url);\n assert(!!parsedUrl.pathname, 0x0b9 /* \"PathName should exist\" */);\n const [, tenantId, documentId] = parsedUrl.pathname.split(\"/\");\n assert(!!tenantId, 0x0ba /* \"Tenant id should exist\" */);\n assert(!!documentId, 0x0bb /* \"Document id should exist\" */);\n\n let url = relativeUrl;\n if (url.startsWith(\"/\")) {\n url = url.substr(1);\n }\n\n return `${this.hostUrl}/${encodeURIComponent(\n tenantId)}/${encodeURIComponent(documentId)}/${url}`;\n }\n}\n\nexport interface IAlfredUser extends IUser {\n displayName: string;\n name: string;\n}\n\nexport interface IConfig {\n serverUrl: string;\n blobStorageUrl: string;\n tenantId: string;\n documentId: string;\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fluidframework/routerlicious-urlresolver",
3
- "version": "0.59.2000",
3
+ "version": "0.59.3000-67119",
4
4
  "description": "Url Resolver for routerlicious urls.",
5
5
  "homepage": "https://fluidframework.com",
6
6
  "repository": {
@@ -45,9 +45,10 @@
45
45
  },
46
46
  "devDependencies": {
47
47
  "@fluidframework/build-common": "^0.23.0",
48
- "@fluidframework/eslint-config-fluid": "^0.28.1000",
49
- "@fluidframework/mocha-test-setup": "^0.59.2000",
50
- "@fluidframework/routerlicious-urlresolver-previous": "npm:@fluidframework/routerlicious-urlresolver@0.59.1000",
48
+ "@fluidframework/build-tools": "^0.2.66793",
49
+ "@fluidframework/eslint-config-fluid": "^0.28.2000-0",
50
+ "@fluidframework/mocha-test-setup": "0.59.3000-67119",
51
+ "@fluidframework/routerlicious-urlresolver-previous": "npm:@fluidframework/routerlicious-urlresolver@0.59.2000",
51
52
  "@rushstack/eslint-config": "^2.5.1",
52
53
  "@types/mocha": "^8.2.2",
53
54
  "@types/nconf": "^0.10.0",
@@ -69,11 +70,11 @@
69
70
  "eslint-plugin-unicorn": "~40.0.0",
70
71
  "mocha": "^8.4.0",
71
72
  "rimraf": "^2.6.2",
72
- "typescript": "~4.1.3",
73
+ "typescript": "~4.5.5",
73
74
  "typescript-formatter": "7.1.0"
74
75
  },
75
76
  "typeValidation": {
76
- "version": "0.59.2000",
77
+ "version": "0.59.3000",
77
78
  "broken": {}
78
79
  }
79
80
  }
@@ -6,4 +6,4 @@
6
6
  */
7
7
 
8
8
  export const pkgName = "@fluidframework/routerlicious-urlresolver";
9
- export const pkgVersion = "0.59.2000";
9
+ export const pkgVersion = "0.59.3000-67119";
@@ -24,7 +24,7 @@ const r11sServers = [
24
24
 
25
25
  export class RouterliciousUrlResolver implements IUrlResolver {
26
26
  constructor(
27
- private readonly config: { provider: Provider, tenantId: string, documentId: string } | undefined,
27
+ private readonly config: { provider: Provider; tenantId: string; documentId: string; } | undefined,
28
28
  private readonly getToken: () => Promise<string>,
29
29
  private readonly hostUrl: string) {
30
30
  }