@fluidframework/odsp-urlresolver 2.1.0-276326 → 2.1.0-281041
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/README.md +3 -1
- package/dist/public.d.ts +1 -1
- package/dist/urlResolver.js +6 -0
- package/dist/urlResolver.js.map +1 -1
- package/internal.d.ts +1 -1
- package/lib/public.d.ts +1 -1
- package/lib/urlResolver.js +6 -0
- package/lib/urlResolver.js.map +1 -1
- package/package.json +14 -14
- package/src/urlResolver.ts +9 -3
- package/tsconfig.json +0 -1
package/README.md
CHANGED
|
@@ -9,10 +9,12 @@ This is an implementation of a url resolver which resolves onedrive and sharepoi
|
|
|
9
9
|
|
|
10
10
|
## Using Fluid Framework libraries
|
|
11
11
|
|
|
12
|
-
When taking a dependency on a Fluid Framework library, we recommend using a `^` (caret) version range, such as `^1.3.4`.
|
|
12
|
+
When taking a dependency on a Fluid Framework library's public APIs, we recommend using a `^` (caret) version range, such as `^1.3.4`.
|
|
13
13
|
While Fluid Framework libraries may use different ranges with interdependencies between other Fluid Framework libraries,
|
|
14
14
|
library consumers should always prefer `^`.
|
|
15
15
|
|
|
16
|
+
If using any of Fluid Framework's unstable APIs (for example, its `beta` APIs), we recommend using a more constrained version range, such as `~`.
|
|
17
|
+
|
|
16
18
|
<!-- prettier-ignore-end -->
|
|
17
19
|
|
|
18
20
|
<!-- AUTO-GENERATED-CONTENT:END -->
|
package/dist/public.d.ts
CHANGED
package/dist/urlResolver.js
CHANGED
|
@@ -92,6 +92,8 @@ async function initializeFluidOfficeOrOneNote(urlSource) {
|
|
|
92
92
|
if (siteDriveItemMatch === null) {
|
|
93
93
|
return undefined;
|
|
94
94
|
}
|
|
95
|
+
// TODO Why are we non null asserting here
|
|
96
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
95
97
|
const site = decodeURIComponent(siteDriveItemMatch[2]);
|
|
96
98
|
// Path value is base64 encoded so need to decode first
|
|
97
99
|
const decodedSite = (0, client_utils_1.fromBase64ToUtf8)(site);
|
|
@@ -103,7 +105,11 @@ async function initializeFluidOfficeOrOneNote(urlSource) {
|
|
|
103
105
|
}
|
|
104
106
|
// Since we have the drive and item, only take the host ignore the rest
|
|
105
107
|
const siteUrl = decodedSite.slice(Math.max(0, storageType.length + 1));
|
|
108
|
+
// TODO Why are we non null asserting here
|
|
109
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
106
110
|
const driveId = decodeURIComponent(siteDriveItemMatch[3]);
|
|
111
|
+
// TODO Why are we non null asserting here
|
|
112
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
107
113
|
const itemId = decodeURIComponent(siteDriveItemMatch[4]);
|
|
108
114
|
return { siteUrl, driveId, itemId };
|
|
109
115
|
}
|
package/dist/urlResolver.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"urlResolver.js","sourceRoot":"","sources":["../src/urlResolver.ts"],"names":[],"mappings":"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
|
|
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\t// TODO Why are we non null asserting here\n\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\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\t// TODO Why are we non null asserting here\n\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\tconst driveId = decodeURIComponent(siteDriveItemMatch[3]!);\n\t// TODO Why are we non null asserting here\n\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\tconst itemId = decodeURIComponent(siteDriveItemMatch[4]!);\n\treturn { siteUrl, driveId, itemId };\n}\n"]}
|
package/internal.d.ts
CHANGED
package/lib/public.d.ts
CHANGED
package/lib/urlResolver.js
CHANGED
|
@@ -87,6 +87,8 @@ async function initializeFluidOfficeOrOneNote(urlSource) {
|
|
|
87
87
|
if (siteDriveItemMatch === null) {
|
|
88
88
|
return undefined;
|
|
89
89
|
}
|
|
90
|
+
// TODO Why are we non null asserting here
|
|
91
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
90
92
|
const site = decodeURIComponent(siteDriveItemMatch[2]);
|
|
91
93
|
// Path value is base64 encoded so need to decode first
|
|
92
94
|
const decodedSite = fromBase64ToUtf8(site);
|
|
@@ -98,7 +100,11 @@ async function initializeFluidOfficeOrOneNote(urlSource) {
|
|
|
98
100
|
}
|
|
99
101
|
// Since we have the drive and item, only take the host ignore the rest
|
|
100
102
|
const siteUrl = decodedSite.slice(Math.max(0, storageType.length + 1));
|
|
103
|
+
// TODO Why are we non null asserting here
|
|
104
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
101
105
|
const driveId = decodeURIComponent(siteDriveItemMatch[3]);
|
|
106
|
+
// TODO Why are we non null asserting here
|
|
107
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
102
108
|
const itemId = decodeURIComponent(siteDriveItemMatch[4]);
|
|
103
109
|
return { siteUrl, driveId, itemId };
|
|
104
110
|
}
|
package/lib/urlResolver.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"urlResolver.js","sourceRoot":"","sources":["../src/urlResolver.ts"],"names":[],"mappings":"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
|
|
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\t// TODO Why are we non null asserting here\n\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\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\t// TODO Why are we non null asserting here\n\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\tconst driveId = decodeURIComponent(siteDriveItemMatch[3]!);\n\t// TODO Why are we non null asserting here\n\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\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.1.0-
|
|
3
|
+
"version": "2.1.0-281041",
|
|
4
4
|
"description": "Url Resolver for odsp urls.",
|
|
5
5
|
"homepage": "https://fluidframework.com",
|
|
6
6
|
"repository": {
|
|
@@ -37,22 +37,22 @@
|
|
|
37
37
|
"main": "lib/index.js",
|
|
38
38
|
"types": "lib/public.d.ts",
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@fluid-internal/client-utils": "2.1.0-
|
|
41
|
-
"@fluidframework/core-interfaces": "2.1.0-
|
|
42
|
-
"@fluidframework/core-utils": "2.1.0-
|
|
43
|
-
"@fluidframework/driver-definitions": "2.1.0-
|
|
44
|
-
"@fluidframework/odsp-driver": "2.1.0-
|
|
45
|
-
"@fluidframework/odsp-driver-definitions": "2.1.0-
|
|
40
|
+
"@fluid-internal/client-utils": "2.1.0-281041",
|
|
41
|
+
"@fluidframework/core-interfaces": "2.1.0-281041",
|
|
42
|
+
"@fluidframework/core-utils": "2.1.0-281041",
|
|
43
|
+
"@fluidframework/driver-definitions": "2.1.0-281041",
|
|
44
|
+
"@fluidframework/odsp-driver": "2.1.0-281041",
|
|
45
|
+
"@fluidframework/odsp-driver-definitions": "2.1.0-281041"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
48
|
"@arethetypeswrong/cli": "^0.15.2",
|
|
49
|
-
"@biomejs/biome": "
|
|
50
|
-
"@fluid-internal/mocha-test-setup": "2.1.0-
|
|
51
|
-
"@fluid-tools/build-cli": "^0.
|
|
49
|
+
"@biomejs/biome": "~1.8.3",
|
|
50
|
+
"@fluid-internal/mocha-test-setup": "2.1.0-281041",
|
|
51
|
+
"@fluid-tools/build-cli": "^0.40.0",
|
|
52
52
|
"@fluidframework/build-common": "^2.0.3",
|
|
53
|
-
"@fluidframework/build-tools": "^0.
|
|
53
|
+
"@fluidframework/build-tools": "^0.40.0",
|
|
54
54
|
"@fluidframework/eslint-config-fluid": "^5.3.0",
|
|
55
|
-
"@fluidframework/odsp-urlresolver-previous": "npm:@fluidframework/odsp-urlresolver@2.0.0
|
|
55
|
+
"@fluidframework/odsp-urlresolver-previous": "npm:@fluidframework/odsp-urlresolver@2.0.0",
|
|
56
56
|
"@microsoft/api-extractor": "^7.45.1",
|
|
57
57
|
"@types/mocha": "^9.1.1",
|
|
58
58
|
"@types/node": "^18.19.0",
|
|
@@ -84,7 +84,7 @@
|
|
|
84
84
|
"build:test:cjs": "fluid-tsc commonjs --project ./src/test/tsconfig.cjs.json",
|
|
85
85
|
"build:test:esm": "tsc --project ./src/test/tsconfig.json",
|
|
86
86
|
"check:are-the-types-wrong": "attw --pack .",
|
|
87
|
-
"check:biome": "biome check .
|
|
87
|
+
"check:biome": "biome check .",
|
|
88
88
|
"check:exports": "concurrently \"npm:check:exports:*\"",
|
|
89
89
|
"check:exports:bundle-release-tags": "api-extractor run --config api-extractor/api-extractor-lint-bundle.json",
|
|
90
90
|
"check:exports:cjs:public": "api-extractor run --config api-extractor/api-extractor-lint-public.cjs.json",
|
|
@@ -96,7 +96,7 @@
|
|
|
96
96
|
"eslint": "eslint --format stylish src",
|
|
97
97
|
"eslint:fix": "eslint --format stylish src --fix --fix-type problem,suggestion,layout",
|
|
98
98
|
"format": "npm run format:biome",
|
|
99
|
-
"format:biome": "biome check . --
|
|
99
|
+
"format:biome": "biome check . --write",
|
|
100
100
|
"format:prettier": "prettier --write . --cache --ignore-path ../../../.prettierignore",
|
|
101
101
|
"lint": "fluid-build . --task lint",
|
|
102
102
|
"lint:fix": "fluid-build . --task eslint:fix --task format",
|
package/src/urlResolver.ts
CHANGED
|
@@ -118,7 +118,9 @@ async function initializeFluidOfficeOrOneNote(
|
|
|
118
118
|
return undefined;
|
|
119
119
|
}
|
|
120
120
|
|
|
121
|
-
|
|
121
|
+
// TODO Why are we non null asserting here
|
|
122
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
123
|
+
const site = decodeURIComponent(siteDriveItemMatch[2]!);
|
|
122
124
|
|
|
123
125
|
// Path value is base64 encoded so need to decode first
|
|
124
126
|
const decodedSite = fromBase64ToUtf8(site);
|
|
@@ -134,7 +136,11 @@ async function initializeFluidOfficeOrOneNote(
|
|
|
134
136
|
|
|
135
137
|
// Since we have the drive and item, only take the host ignore the rest
|
|
136
138
|
const siteUrl = decodedSite.slice(Math.max(0, storageType.length + 1));
|
|
137
|
-
|
|
138
|
-
|
|
139
|
+
// TODO Why are we non null asserting here
|
|
140
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
141
|
+
const driveId = decodeURIComponent(siteDriveItemMatch[3]!);
|
|
142
|
+
// TODO Why are we non null asserting here
|
|
143
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
144
|
+
const itemId = decodeURIComponent(siteDriveItemMatch[4]!);
|
|
139
145
|
return { siteUrl, driveId, itemId };
|
|
140
146
|
}
|