@fluidframework/odsp-urlresolver 2.0.0-rc.4.0.6 → 2.0.0-rc.5.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/api-extractor/api-extractor-lint-bundle.json +5 -0
- package/api-extractor/api-extractor-lint-public.cjs.json +5 -0
- package/api-extractor/api-extractor-lint-public.esm.json +5 -0
- package/api-extractor.json +1 -1
- package/api-report/odsp-urlresolver.alpha.api.md +14 -0
- package/api-report/odsp-urlresolver.beta.api.md +14 -0
- package/api-report/odsp-urlresolver.public.api.md +14 -0
- package/biome.jsonc +4 -0
- package/dist/urlResolver.d.ts.map +1 -1
- package/dist/urlResolver.js.map +1 -1
- package/lib/tsdoc-metadata.json +1 -1
- package/lib/urlResolver.d.ts.map +1 -1
- package/lib/urlResolver.js.map +1 -1
- package/package.json +24 -17
- package/src/urlResolver.ts +10 -3
- package/tsconfig.json +2 -0
- package/tsdoc.json +4 -0
- package/api-report/odsp-urlresolver.api.md +0 -30
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# @fluidframework/odsp-urlresolver
|
|
2
2
|
|
|
3
|
+
## 2.0.0-rc.5.0.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- Update to TypeScript 5.4 ([#21214](https://github.com/microsoft/FluidFramework/pull/21214)) [0e6256c722](https://github.com/microsoft/FluidFramework/commit/0e6256c722d8bf024f4325bf02547daeeb18bfa6)
|
|
8
|
+
|
|
9
|
+
Update package implementations to use TypeScript 5.4.5.
|
|
10
|
+
|
|
3
11
|
## 2.0.0-rc.4.0.0
|
|
4
12
|
|
|
5
13
|
Dependency updates only.
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json",
|
|
3
|
+
"extends": "<projectFolder>/../../../common/build/build-common/api-extractor-lint.entrypoint.json",
|
|
4
|
+
"mainEntryPointFilePath": "<projectFolder>/dist/public.d.ts"
|
|
5
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json",
|
|
3
|
+
"extends": "<projectFolder>/../../../common/build/build-common/api-extractor-lint.entrypoint.json",
|
|
4
|
+
"mainEntryPointFilePath": "<projectFolder>/lib/public.d.ts"
|
|
5
|
+
}
|
package/api-extractor.json
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json",
|
|
3
|
-
"extends": "../../../common/build/build-common/api-extractor-base.esm.
|
|
3
|
+
"extends": "../../../common/build/build-common/api-extractor-base.esm.no-legacy.json"
|
|
4
4
|
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
## Alpha API Report File for "@fluidframework/odsp-urlresolver"
|
|
2
|
+
|
|
3
|
+
> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
|
|
4
|
+
|
|
5
|
+
```ts
|
|
6
|
+
|
|
7
|
+
import { IContainerPackageInfo } from '@fluidframework/driver-definitions/internal';
|
|
8
|
+
import { IRequest } from '@fluidframework/core-interfaces';
|
|
9
|
+
import { IResolvedUrl } from '@fluidframework/driver-definitions/internal';
|
|
10
|
+
import { IUrlResolver } from '@fluidframework/driver-definitions/internal';
|
|
11
|
+
|
|
12
|
+
// (No @packageDocumentation comment for this package)
|
|
13
|
+
|
|
14
|
+
```
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
## Beta API Report File for "@fluidframework/odsp-urlresolver"
|
|
2
|
+
|
|
3
|
+
> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
|
|
4
|
+
|
|
5
|
+
```ts
|
|
6
|
+
|
|
7
|
+
import { IContainerPackageInfo } from '@fluidframework/driver-definitions/internal';
|
|
8
|
+
import { IRequest } from '@fluidframework/core-interfaces';
|
|
9
|
+
import { IResolvedUrl } from '@fluidframework/driver-definitions/internal';
|
|
10
|
+
import { IUrlResolver } from '@fluidframework/driver-definitions/internal';
|
|
11
|
+
|
|
12
|
+
// (No @packageDocumentation comment for this package)
|
|
13
|
+
|
|
14
|
+
```
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
## Public API Report File for "@fluidframework/odsp-urlresolver"
|
|
2
|
+
|
|
3
|
+
> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
|
|
4
|
+
|
|
5
|
+
```ts
|
|
6
|
+
|
|
7
|
+
import { IContainerPackageInfo } from '@fluidframework/driver-definitions/internal';
|
|
8
|
+
import { IRequest } from '@fluidframework/core-interfaces';
|
|
9
|
+
import { IResolvedUrl } from '@fluidframework/driver-definitions/internal';
|
|
10
|
+
import { IUrlResolver } from '@fluidframework/driver-definitions/internal';
|
|
11
|
+
|
|
12
|
+
// (No @packageDocumentation comment for this package)
|
|
13
|
+
|
|
14
|
+
```
|
package/biome.jsonc
ADDED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"urlResolver.d.ts","sourceRoot":"","sources":["../src/urlResolver.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAE3D,OAAO,EACN,qBAAqB,EACrB,YAAY,EACZ,YAAY,EACZ,MAAM,6CAA6C,CAAC;AAgBrD;;GAEG;AACH,qBAAa,eAAgB,YAAW,YAAY;IACtC,OAAO,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;IAiB7D,cAAc,
|
|
1
|
+
{"version":3,"file":"urlResolver.d.ts","sourceRoot":"","sources":["../src/urlResolver.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAE3D,OAAO,EACN,qBAAqB,EACrB,YAAY,EACZ,YAAY,EACZ,MAAM,6CAA6C,CAAC;AAgBrD;;GAEG;AACH,qBAAa,eAAgB,YAAW,YAAY;IACtC,OAAO,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;IAiB7D,cAAc,CAC1B,WAAW,EAAE,YAAY,EACzB,WAAW,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC;CAGlB;AAWD;;;GAGG;AACH,qBAAa,uBAAwB,YAAW,YAAY;IAC9C,OAAO,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;IA6B7D,cAAc,CAC1B,WAAW,EAAE,YAAY,EACzB,WAAW,EAAE,MAAM,EACnB,iBAAiB,CAAC,EAAE,qBAAqB,GACvC,OAAO,CAAC,MAAM,CAAC;CAGlB"}
|
package/dist/urlResolver.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"urlResolver.js","sourceRoot":"","sources":["../src/urlResolver.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,+DAAgE;AAEhE,kEAA6D;AAM7D,mEAM8C;AAG9C,MAAM,4BAA4B,GAAG,IAAI,GAAG,CAAC;IAC5C,6BAA6B;IAC7B,yBAAyB;IACzB,iBAAiB;CACjB,CAAC,CAAC;AAEH;;GAEG;AACH,MAAa,eAAe;IACpB,KAAK,CAAC,OAAO,CAAC,OAAiB;QACrC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,SAAS,CAAC,MAAM,CAAC,EAAE;
|
|
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 { fromBase64ToUtf8 } from \"@fluid-internal/client-utils\";\nimport { IRequest } from \"@fluidframework/core-interfaces\";\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport {\n\tIContainerPackageInfo,\n\tIResolvedUrl,\n\tIUrlResolver,\n} from \"@fluidframework/driver-definitions/internal\";\nimport {\n\tOdspDriverUrlResolver,\n\tcreateOdspUrl,\n\tgetOdspUrlParts,\n\tisOdcUrl,\n\tisSpoUrl,\n} from \"@fluidframework/odsp-driver/internal\";\nimport { IOdspUrlParts } from \"@fluidframework/odsp-driver-definitions/internal\";\n\nconst fluidOfficeAndOneNoteServers = new Set([\n\t\"dev.fluidpreview.office.net\",\n\t\"fluidpreview.office.net\",\n\t\"www.onenote.com\",\n]);\n\n/**\n * @internal\n */\nexport class OdspUrlResolver implements IUrlResolver {\n\tpublic async resolve(request: IRequest): Promise<IResolvedUrl | undefined> {\n\t\tconst reqUrl = new URL(request.url);\n\t\tif (isOdspUrl(reqUrl)) {\n\t\t\tconst contents = await getOdspUrlParts(reqUrl);\n\t\t\tif (!contents) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tconst urlToBeResolved = createOdspUrl({ ...contents, dataStorePath: \"\" });\n\t\t\tconst odspDriverUrlResolver: IUrlResolver = new OdspDriverUrlResolver();\n\t\t\treturn odspDriverUrlResolver.resolve({\n\t\t\t\turl: urlToBeResolved,\n\t\t\t\theaders: request.headers,\n\t\t\t});\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tpublic async getAbsoluteUrl(\n\t\tresolvedUrl: IResolvedUrl,\n\t\trelativeUrl: string,\n\t): Promise<string> {\n\t\tthrow new Error(\"Not implemented\");\n\t}\n}\n\n/**\n * Returns true if the given string is a valid SPO/ODB or ODC URL.\n *\n * @internal\n */\nconst isOdspUrl = (url: URL): boolean => {\n\treturn isSpoUrl(url) || isOdcUrl(url);\n};\n\n/**\n * This class helps to resolve Fluid URLs from Office and OneNote. Construct the resolver class and invoke its resolve function to retrieve the content parameters.\n * @internal\n */\nexport class FluidAppOdspUrlResolver implements IUrlResolver {\n\tpublic async resolve(request: IRequest): Promise<IResolvedUrl | undefined> {\n\t\tconst reqUrl = new URL(request.url);\n\t\tconst server = reqUrl.hostname.toLowerCase();\n\t\tlet contents: IOdspUrlParts | undefined;\n\t\tif (fluidOfficeAndOneNoteServers.has(server)) {\n\t\t\tcontents = await initializeFluidOfficeOrOneNote(reqUrl);\n\t\t} else if (server === \"www.office.com\") {\n\t\t\tconst getRequiredParam = (name: string): string => {\n\t\t\t\tconst value = reqUrl.searchParams.get(name);\n\t\t\t\tassert(!!value, 0x097 /* Missing param from office.com URL parameter */);\n\t\t\t\treturn value;\n\t\t\t};\n\t\t\tcontents = {\n\t\t\t\tdriveId: getRequiredParam(\"drive\"),\n\t\t\t\titemId: getRequiredParam(\"item\"),\n\t\t\t\tsiteUrl: getRequiredParam(\"siteUrl\"),\n\t\t\t};\n\t\t} else {\n\t\t\treturn undefined;\n\t\t}\n\t\tif (!contents) {\n\t\t\treturn undefined;\n\t\t}\n\t\tconst urlToBeResolved = createOdspUrl({ ...contents, dataStorePath: \"\" });\n\t\tconst odspDriverUrlResolver: IUrlResolver = new OdspDriverUrlResolver();\n\t\treturn odspDriverUrlResolver.resolve({ url: urlToBeResolved });\n\t}\n\n\t// TODO: Issue-2109 Implement detach container api or put appropriate comment.\n\tpublic async getAbsoluteUrl(\n\t\tresolvedUrl: IResolvedUrl,\n\t\trelativeUrl: string,\n\t\tpackageInfoSource?: IContainerPackageInfo,\n\t): Promise<string> {\n\t\tthrow new Error(\"Not implemented\");\n\t}\n}\n\nasync function initializeFluidOfficeOrOneNote(\n\turlSource: URL,\n): Promise<IOdspUrlParts | undefined> {\n\tconst pathname = urlSource.pathname;\n\tconst siteDriveItemMatch = pathname.match(\n\t\t/\\/(p|preview|meetingnotes|notes)\\/([^/]*)\\/([^/]*)\\/([^/]*)/,\n\t);\n\tif (siteDriveItemMatch === null) {\n\t\treturn undefined;\n\t}\n\n\tconst site = decodeURIComponent(siteDriveItemMatch[2]);\n\n\t// Path value is base64 encoded so need to decode first\n\tconst decodedSite = fromBase64ToUtf8(site);\n\n\t// Site value includes storage type\n\tconst storageType = decodedSite.split(\":\")[0];\n\tconst expectedStorageType = \"spo\"; // Only support spo for now\n\tif (storageType !== expectedStorageType) {\n\t\tthrow new Error(\n\t\t\t`Unexpected storage type ${storageType}, expected: ${expectedStorageType}`,\n\t\t);\n\t}\n\n\t// Since we have the drive and item, only take the host ignore the rest\n\tconst siteUrl = decodedSite.slice(Math.max(0, storageType.length + 1));\n\tconst driveId = decodeURIComponent(siteDriveItemMatch[3]);\n\tconst itemId = decodeURIComponent(siteDriveItemMatch[4]);\n\treturn { siteUrl, driveId, itemId };\n}\n"]}
|
package/lib/tsdoc-metadata.json
CHANGED
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;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAE3D,OAAO,EACN,qBAAqB,EACrB,YAAY,EACZ,YAAY,EACZ,MAAM,6CAA6C,CAAC;AAgBrD;;GAEG;AACH,qBAAa,eAAgB,YAAW,YAAY;IACtC,OAAO,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;IAiB7D,cAAc,
|
|
1
|
+
{"version":3,"file":"urlResolver.d.ts","sourceRoot":"","sources":["../src/urlResolver.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAE3D,OAAO,EACN,qBAAqB,EACrB,YAAY,EACZ,YAAY,EACZ,MAAM,6CAA6C,CAAC;AAgBrD;;GAEG;AACH,qBAAa,eAAgB,YAAW,YAAY;IACtC,OAAO,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;IAiB7D,cAAc,CAC1B,WAAW,EAAE,YAAY,EACzB,WAAW,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC;CAGlB;AAWD;;;GAGG;AACH,qBAAa,uBAAwB,YAAW,YAAY;IAC9C,OAAO,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;IA6B7D,cAAc,CAC1B,WAAW,EAAE,YAAY,EACzB,WAAW,EAAE,MAAM,EACnB,iBAAiB,CAAC,EAAE,qBAAqB,GACvC,OAAO,CAAC,MAAM,CAAC;CAGlB"}
|
package/lib/urlResolver.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"urlResolver.js","sourceRoot":"","sources":["../src/urlResolver.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEhE,OAAO,EAAE,MAAM,EAAE,MAAM,qCAAqC,CAAC;AAM7D,OAAO,EACN,qBAAqB,EACrB,aAAa,EACb,eAAe,EACf,QAAQ,EACR,QAAQ,GACR,MAAM,sCAAsC,CAAC;AAG9C,MAAM,4BAA4B,GAAG,IAAI,GAAG,CAAC;IAC5C,6BAA6B;IAC7B,yBAAyB;IACzB,iBAAiB;CACjB,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,OAAO,eAAe;IACpB,KAAK,CAAC,OAAO,CAAC,OAAiB;QACrC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,SAAS,CAAC,MAAM,CAAC,EAAE;
|
|
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 { fromBase64ToUtf8 } from \"@fluid-internal/client-utils\";\nimport { IRequest } from \"@fluidframework/core-interfaces\";\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport {\n\tIContainerPackageInfo,\n\tIResolvedUrl,\n\tIUrlResolver,\n} from \"@fluidframework/driver-definitions/internal\";\nimport {\n\tOdspDriverUrlResolver,\n\tcreateOdspUrl,\n\tgetOdspUrlParts,\n\tisOdcUrl,\n\tisSpoUrl,\n} from \"@fluidframework/odsp-driver/internal\";\nimport { IOdspUrlParts } from \"@fluidframework/odsp-driver-definitions/internal\";\n\nconst fluidOfficeAndOneNoteServers = new Set([\n\t\"dev.fluidpreview.office.net\",\n\t\"fluidpreview.office.net\",\n\t\"www.onenote.com\",\n]);\n\n/**\n * @internal\n */\nexport class OdspUrlResolver implements IUrlResolver {\n\tpublic async resolve(request: IRequest): Promise<IResolvedUrl | undefined> {\n\t\tconst reqUrl = new URL(request.url);\n\t\tif (isOdspUrl(reqUrl)) {\n\t\t\tconst contents = await getOdspUrlParts(reqUrl);\n\t\t\tif (!contents) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tconst urlToBeResolved = createOdspUrl({ ...contents, dataStorePath: \"\" });\n\t\t\tconst odspDriverUrlResolver: IUrlResolver = new OdspDriverUrlResolver();\n\t\t\treturn odspDriverUrlResolver.resolve({\n\t\t\t\turl: urlToBeResolved,\n\t\t\t\theaders: request.headers,\n\t\t\t});\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tpublic async getAbsoluteUrl(\n\t\tresolvedUrl: IResolvedUrl,\n\t\trelativeUrl: string,\n\t): Promise<string> {\n\t\tthrow new Error(\"Not implemented\");\n\t}\n}\n\n/**\n * Returns true if the given string is a valid SPO/ODB or ODC URL.\n *\n * @internal\n */\nconst isOdspUrl = (url: URL): boolean => {\n\treturn isSpoUrl(url) || isOdcUrl(url);\n};\n\n/**\n * This class helps to resolve Fluid URLs from Office and OneNote. Construct the resolver class and invoke its resolve function to retrieve the content parameters.\n * @internal\n */\nexport class FluidAppOdspUrlResolver implements IUrlResolver {\n\tpublic async resolve(request: IRequest): Promise<IResolvedUrl | undefined> {\n\t\tconst reqUrl = new URL(request.url);\n\t\tconst server = reqUrl.hostname.toLowerCase();\n\t\tlet contents: IOdspUrlParts | undefined;\n\t\tif (fluidOfficeAndOneNoteServers.has(server)) {\n\t\t\tcontents = await initializeFluidOfficeOrOneNote(reqUrl);\n\t\t} else if (server === \"www.office.com\") {\n\t\t\tconst getRequiredParam = (name: string): string => {\n\t\t\t\tconst value = reqUrl.searchParams.get(name);\n\t\t\t\tassert(!!value, 0x097 /* Missing param from office.com URL parameter */);\n\t\t\t\treturn value;\n\t\t\t};\n\t\t\tcontents = {\n\t\t\t\tdriveId: getRequiredParam(\"drive\"),\n\t\t\t\titemId: getRequiredParam(\"item\"),\n\t\t\t\tsiteUrl: getRequiredParam(\"siteUrl\"),\n\t\t\t};\n\t\t} else {\n\t\t\treturn undefined;\n\t\t}\n\t\tif (!contents) {\n\t\t\treturn undefined;\n\t\t}\n\t\tconst urlToBeResolved = createOdspUrl({ ...contents, dataStorePath: \"\" });\n\t\tconst odspDriverUrlResolver: IUrlResolver = new OdspDriverUrlResolver();\n\t\treturn odspDriverUrlResolver.resolve({ url: urlToBeResolved });\n\t}\n\n\t// TODO: Issue-2109 Implement detach container api or put appropriate comment.\n\tpublic async getAbsoluteUrl(\n\t\tresolvedUrl: IResolvedUrl,\n\t\trelativeUrl: string,\n\t\tpackageInfoSource?: IContainerPackageInfo,\n\t): Promise<string> {\n\t\tthrow new Error(\"Not implemented\");\n\t}\n}\n\nasync function initializeFluidOfficeOrOneNote(\n\turlSource: URL,\n): Promise<IOdspUrlParts | undefined> {\n\tconst pathname = urlSource.pathname;\n\tconst siteDriveItemMatch = pathname.match(\n\t\t/\\/(p|preview|meetingnotes|notes)\\/([^/]*)\\/([^/]*)\\/([^/]*)/,\n\t);\n\tif (siteDriveItemMatch === null) {\n\t\treturn undefined;\n\t}\n\n\tconst site = decodeURIComponent(siteDriveItemMatch[2]);\n\n\t// Path value is base64 encoded so need to decode first\n\tconst decodedSite = fromBase64ToUtf8(site);\n\n\t// Site value includes storage type\n\tconst storageType = decodedSite.split(\":\")[0];\n\tconst expectedStorageType = \"spo\"; // Only support spo for now\n\tif (storageType !== expectedStorageType) {\n\t\tthrow new Error(\n\t\t\t`Unexpected storage type ${storageType}, expected: ${expectedStorageType}`,\n\t\t);\n\t}\n\n\t// Since we have the drive and item, only take the host ignore the rest\n\tconst siteUrl = decodedSite.slice(Math.max(0, storageType.length + 1));\n\tconst driveId = decodeURIComponent(siteDriveItemMatch[3]);\n\tconst itemId = decodeURIComponent(siteDriveItemMatch[4]);\n\treturn { siteUrl, driveId, itemId };\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fluidframework/odsp-urlresolver",
|
|
3
|
-
"version": "2.0.0-rc.
|
|
3
|
+
"version": "2.0.0-rc.5.0.1",
|
|
4
4
|
"description": "Url Resolver for odsp urls.",
|
|
5
5
|
"homepage": "https://fluidframework.com",
|
|
6
6
|
"repository": {
|
|
@@ -37,25 +37,26 @@
|
|
|
37
37
|
"main": "lib/index.js",
|
|
38
38
|
"types": "lib/public.d.ts",
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@fluid-internal/client-utils": ">=2.0.0-rc.
|
|
41
|
-
"@fluidframework/core-interfaces": ">=2.0.0-rc.
|
|
42
|
-
"@fluidframework/core-utils": ">=2.0.0-rc.
|
|
43
|
-
"@fluidframework/driver-definitions": ">=2.0.0-rc.
|
|
44
|
-
"@fluidframework/odsp-driver": ">=2.0.0-rc.
|
|
45
|
-
"@fluidframework/odsp-driver-definitions": ">=2.0.0-rc.
|
|
40
|
+
"@fluid-internal/client-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0",
|
|
41
|
+
"@fluidframework/core-interfaces": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0",
|
|
42
|
+
"@fluidframework/core-utils": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0",
|
|
43
|
+
"@fluidframework/driver-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0",
|
|
44
|
+
"@fluidframework/odsp-driver": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0",
|
|
45
|
+
"@fluidframework/odsp-driver-definitions": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
48
|
"@arethetypeswrong/cli": "^0.15.2",
|
|
49
|
-
"@biomejs/biome": "^1.
|
|
50
|
-
"@fluid-internal/mocha-test-setup": ">=2.0.0-rc.
|
|
51
|
-
"@fluid-tools/build-cli": "^0.
|
|
49
|
+
"@biomejs/biome": "^1.7.3",
|
|
50
|
+
"@fluid-internal/mocha-test-setup": ">=2.0.0-rc.5.0.1 <2.0.0-rc.5.1.0",
|
|
51
|
+
"@fluid-tools/build-cli": "^0.39.0",
|
|
52
52
|
"@fluidframework/build-common": "^2.0.3",
|
|
53
|
-
"@fluidframework/build-tools": "^0.
|
|
54
|
-
"@fluidframework/eslint-config-fluid": "^5.
|
|
55
|
-
"@fluidframework/odsp-urlresolver-previous": "npm:@fluidframework/odsp-urlresolver@2.0.0-rc.
|
|
56
|
-
"@microsoft/api-extractor": "^7.
|
|
53
|
+
"@fluidframework/build-tools": "^0.39.0",
|
|
54
|
+
"@fluidframework/eslint-config-fluid": "^5.3.0",
|
|
55
|
+
"@fluidframework/odsp-urlresolver-previous": "npm:@fluidframework/odsp-urlresolver@2.0.0-rc.4.0.0",
|
|
56
|
+
"@microsoft/api-extractor": "^7.45.1",
|
|
57
57
|
"@types/mocha": "^9.1.1",
|
|
58
58
|
"@types/node": "^18.19.0",
|
|
59
|
+
"concurrently": "^8.2.1",
|
|
59
60
|
"copyfiles": "^2.4.1",
|
|
60
61
|
"cross-env": "^7.0.3",
|
|
61
62
|
"eslint": "~8.55.0",
|
|
@@ -65,7 +66,7 @@
|
|
|
65
66
|
"moment": "^2.21.0",
|
|
66
67
|
"prettier": "~3.0.3",
|
|
67
68
|
"rimraf": "^4.4.0",
|
|
68
|
-
"typescript": "~5.
|
|
69
|
+
"typescript": "~5.4.5"
|
|
69
70
|
},
|
|
70
71
|
"typeValidation": {
|
|
71
72
|
"broken": {}
|
|
@@ -83,13 +84,19 @@
|
|
|
83
84
|
"build:test:cjs": "fluid-tsc commonjs --project ./src/test/tsconfig.cjs.json",
|
|
84
85
|
"build:test:esm": "tsc --project ./src/test/tsconfig.json",
|
|
85
86
|
"check:are-the-types-wrong": "attw --pack .",
|
|
87
|
+
"check:biome": "biome check . --formatter-enabled=true",
|
|
88
|
+
"check:exports": "concurrently \"npm:check:exports:*\"",
|
|
89
|
+
"check:exports:bundle-release-tags": "api-extractor run --config api-extractor/api-extractor-lint-bundle.json",
|
|
90
|
+
"check:exports:cjs:public": "api-extractor run --config api-extractor/api-extractor-lint-public.cjs.json",
|
|
91
|
+
"check:exports:esm:public": "api-extractor run --config api-extractor/api-extractor-lint-public.esm.json",
|
|
92
|
+
"check:format": "npm run check:biome",
|
|
86
93
|
"check:prettier": "prettier --check . --cache --ignore-path ../../../.prettierignore",
|
|
87
|
-
"check:release-tags": "api-extractor run --local --config ./api-extractor-lint.json",
|
|
88
94
|
"ci:build:docs": "api-extractor run",
|
|
89
95
|
"clean": "rimraf --glob dist lib \"*.d.ts\" \"**/*.tsbuildinfo\" \"**/*.build.log\" _api-extractor-temp nyc",
|
|
90
96
|
"eslint": "eslint --format stylish src",
|
|
91
97
|
"eslint:fix": "eslint --format stylish src --fix --fix-type problem,suggestion,layout",
|
|
92
|
-
"format": "
|
|
98
|
+
"format": "npm run format:biome",
|
|
99
|
+
"format:biome": "biome check . --formatter-enabled=true --apply",
|
|
93
100
|
"format:prettier": "prettier --write . --cache --ignore-path ../../../.prettierignore",
|
|
94
101
|
"lint": "fluid-build . --task lint",
|
|
95
102
|
"lint:fix": "fluid-build . --task eslint:fix --task format",
|
package/src/urlResolver.ts
CHANGED
|
@@ -47,7 +47,10 @@ export class OdspUrlResolver implements IUrlResolver {
|
|
|
47
47
|
return undefined;
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
-
public async getAbsoluteUrl(
|
|
50
|
+
public async getAbsoluteUrl(
|
|
51
|
+
resolvedUrl: IResolvedUrl,
|
|
52
|
+
relativeUrl: string,
|
|
53
|
+
): Promise<string> {
|
|
51
54
|
throw new Error("Not implemented");
|
|
52
55
|
}
|
|
53
56
|
}
|
|
@@ -104,7 +107,9 @@ export class FluidAppOdspUrlResolver implements IUrlResolver {
|
|
|
104
107
|
}
|
|
105
108
|
}
|
|
106
109
|
|
|
107
|
-
async function initializeFluidOfficeOrOneNote(
|
|
110
|
+
async function initializeFluidOfficeOrOneNote(
|
|
111
|
+
urlSource: URL,
|
|
112
|
+
): Promise<IOdspUrlParts | undefined> {
|
|
108
113
|
const pathname = urlSource.pathname;
|
|
109
114
|
const siteDriveItemMatch = pathname.match(
|
|
110
115
|
/\/(p|preview|meetingnotes|notes)\/([^/]*)\/([^/]*)\/([^/]*)/,
|
|
@@ -122,7 +127,9 @@ async function initializeFluidOfficeOrOneNote(urlSource: URL): Promise<IOdspUrlP
|
|
|
122
127
|
const storageType = decodedSite.split(":")[0];
|
|
123
128
|
const expectedStorageType = "spo"; // Only support spo for now
|
|
124
129
|
if (storageType !== expectedStorageType) {
|
|
125
|
-
throw new Error(
|
|
130
|
+
throw new Error(
|
|
131
|
+
`Unexpected storage type ${storageType}, expected: ${expectedStorageType}`,
|
|
132
|
+
);
|
|
126
133
|
}
|
|
127
134
|
|
|
128
135
|
// Since we have the drive and item, only take the host ignore the rest
|
package/tsconfig.json
CHANGED
package/tsdoc.json
ADDED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
## API Report File for "@fluidframework/odsp-urlresolver"
|
|
2
|
-
|
|
3
|
-
> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
|
|
4
|
-
|
|
5
|
-
```ts
|
|
6
|
-
|
|
7
|
-
import { IContainerPackageInfo } from '@fluidframework/driver-definitions/internal';
|
|
8
|
-
import { IRequest } from '@fluidframework/core-interfaces';
|
|
9
|
-
import { IResolvedUrl } from '@fluidframework/driver-definitions/internal';
|
|
10
|
-
import { IUrlResolver } from '@fluidframework/driver-definitions/internal';
|
|
11
|
-
|
|
12
|
-
// @internal
|
|
13
|
-
export class FluidAppOdspUrlResolver implements IUrlResolver {
|
|
14
|
-
// (undocumented)
|
|
15
|
-
getAbsoluteUrl(resolvedUrl: IResolvedUrl, relativeUrl: string, packageInfoSource?: IContainerPackageInfo): Promise<string>;
|
|
16
|
-
// (undocumented)
|
|
17
|
-
resolve(request: IRequest): Promise<IResolvedUrl | undefined>;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
// @internal (undocumented)
|
|
21
|
-
export class OdspUrlResolver implements IUrlResolver {
|
|
22
|
-
// (undocumented)
|
|
23
|
-
getAbsoluteUrl(resolvedUrl: IResolvedUrl, relativeUrl: string): Promise<string>;
|
|
24
|
-
// (undocumented)
|
|
25
|
-
resolve(request: IRequest): Promise<IResolvedUrl | undefined>;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
// (No @packageDocumentation comment for this package)
|
|
29
|
-
|
|
30
|
-
```
|