@fluid-tools/fetch-tool 2.0.2 → 2.1.0-276326
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/dist/fluidFetchInit.d.ts.map +1 -1
- package/dist/fluidFetchInit.js +1 -2
- package/dist/fluidFetchInit.js.map +1 -1
- package/dist/fluidFetchSharePoint.d.ts +1 -0
- package/dist/fluidFetchSharePoint.d.ts.map +1 -1
- package/dist/fluidFetchSharePoint.js +13 -6
- package/dist/fluidFetchSharePoint.js.map +1 -1
- package/lib/fluidFetchInit.d.ts.map +1 -1
- package/lib/fluidFetchInit.js +2 -3
- package/lib/fluidFetchInit.js.map +1 -1
- package/lib/fluidFetchSharePoint.d.ts +1 -0
- package/lib/fluidFetchSharePoint.d.ts.map +1 -1
- package/lib/fluidFetchSharePoint.js +13 -6
- package/lib/fluidFetchSharePoint.js.map +1 -1
- package/package.json +16 -16
- package/src/fluidFetchInit.ts +2 -3
- package/src/fluidFetchSharePoint.ts +15 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fluidFetchInit.d.ts","sourceRoot":"","sources":["../src/fluidFetchInit.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"fluidFetchInit.d.ts","sourceRoot":"","sources":["../src/fluidFetchInit.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAuBH,eAAO,IAAI,gBAAgB,EAAE,MAAW,CAAC;AACzC,eAAO,IAAI,cAAc,EAAE,GAAG,CAAC;AAwI/B,wBAAsB,cAAc,CAAC,MAAM,EAAE,MAAM,+FAkBlD"}
|
package/dist/fluidFetchInit.js
CHANGED
|
@@ -32,7 +32,6 @@ const odsp = __importStar(require("@fluidframework/odsp-driver/internal"));
|
|
|
32
32
|
const internal_1 = require("@fluidframework/odsp-urlresolver/internal");
|
|
33
33
|
const r11s = __importStar(require("@fluidframework/routerlicious-driver/internal"));
|
|
34
34
|
const internal_2 = require("@fluidframework/routerlicious-urlresolver/internal");
|
|
35
|
-
const internal_3 = require("@fluidframework/tool-utils/internal");
|
|
36
35
|
const fluidFetchArgs_js_1 = require("./fluidFetchArgs.js");
|
|
37
36
|
const fluidFetchSharePoint_js_1 = require("./fluidFetchSharePoint.js");
|
|
38
37
|
exports.latestVersionsId = "";
|
|
@@ -131,7 +130,7 @@ async function fluidFetchInit(urlStr) {
|
|
|
131
130
|
const fluidResolvedUrl = resolvedInfo.resolvedUrl;
|
|
132
131
|
if (resolvedInfo.serviceType === "odsp") {
|
|
133
132
|
const odspResolvedUrl = fluidResolvedUrl;
|
|
134
|
-
return initializeODSPCore(odspResolvedUrl, new URL(odspResolvedUrl.siteUrl).host,
|
|
133
|
+
return initializeODSPCore(odspResolvedUrl, new URL(odspResolvedUrl.siteUrl).host, fluidFetchSharePoint_js_1.fetchToolClientConfig);
|
|
135
134
|
}
|
|
136
135
|
else if (resolvedInfo.serviceType === "r11s") {
|
|
137
136
|
const url = new URL(urlStr);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fluidFetchInit.js","sourceRoot":"","sources":["../src/fluidFetchInit.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;AAQH,2EAA6D;AAK7D,wEAGmD;AACnD,oFAAsE;AACtE,iFAA8F;
|
|
1
|
+
{"version":3,"file":"fluidFetchInit.js","sourceRoot":"","sources":["../src/fluidFetchInit.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 { IResolvedUrl } from \"@fluidframework/driver-definitions/internal\";\nimport {\n\tIPublicClientConfig,\n\tIOdspAuthRequestInfo,\n} from \"@fluidframework/odsp-doclib-utils/internal\";\nimport * as odsp from \"@fluidframework/odsp-driver/internal\";\nimport {\n\tIOdspResolvedUrl,\n\tOdspResourceTokenFetchOptions,\n} from \"@fluidframework/odsp-driver-definitions/internal\";\nimport {\n\tFluidAppOdspUrlResolver,\n\tOdspUrlResolver,\n} from \"@fluidframework/odsp-urlresolver/internal\";\nimport * as r11s from \"@fluidframework/routerlicious-driver/internal\";\nimport { RouterliciousUrlResolver } from \"@fluidframework/routerlicious-urlresolver/internal\";\n\nimport { localDataOnly, paramJWT } from \"./fluidFetchArgs.js\";\nimport { resolveWrapper, fetchToolClientConfig } from \"./fluidFetchSharePoint.js\";\n\nexport let latestVersionsId: string = \"\";\nexport let connectionInfo: any;\n\nasync function initializeODSPCore(\n\todspResolvedUrl: IOdspResolvedUrl,\n\tserver: string,\n\tclientConfig: IPublicClientConfig,\n) {\n\tconst { driveId, itemId } = odspResolvedUrl;\n\n\tconnectionInfo = {\n\t\tserver,\n\t\tdrive: driveId,\n\t\titem: itemId,\n\t};\n\n\tif (localDataOnly) {\n\t\treturn;\n\t}\n\n\tconst docId = await odsp.getHashedDocumentId(driveId, itemId);\n\n\tconsole.log(`Connecting to ODSP:\n server: ${server}\n drive: ${driveId}\n item: ${itemId}\n docId: ${docId}`);\n\n\tconst getStorageTokenStub = async (options: OdspResourceTokenFetchOptions) => {\n\t\treturn resolveWrapper(\n\t\t\tasync (authRequestInfo: IOdspAuthRequestInfo) => {\n\t\t\t\tif (\n\t\t\t\t\t(options.refresh || !authRequestInfo.accessToken) &&\n\t\t\t\t\tauthRequestInfo.refreshTokenFn\n\t\t\t\t) {\n\t\t\t\t\treturn authRequestInfo.refreshTokenFn();\n\t\t\t\t}\n\t\t\t\treturn authRequestInfo.accessToken;\n\t\t\t},\n\t\t\tserver,\n\t\t\tclientConfig,\n\t\t\tundefined,\n\t\t\ttrue,\n\t\t);\n\t};\n\t// eslint-disable-next-line @typescript-eslint/promise-function-async\n\tconst getWebsocketTokenStub = (_options: OdspResourceTokenFetchOptions) =>\n\t\tPromise.resolve(\"\");\n\tconst odspDocumentServiceFactory = new odsp.OdspDocumentServiceFactory(\n\t\tgetStorageTokenStub,\n\t\tgetWebsocketTokenStub,\n\t\tundefined,\n\t\t{\n\t\t\topsBatchSize: 20000,\n\t\t\tconcurrentOpsBatches: 4,\n\t\t},\n\t);\n\treturn odspDocumentServiceFactory.createDocumentService(odspResolvedUrl);\n}\n\nasync function initializeR11s(\n\tserver: string,\n\tpathname: string,\n\tr11sResolvedUrl: IResolvedUrl,\n) {\n\tconst path = pathname.split(\"/\");\n\tlet tenantId: string;\n\tlet documentId: string;\n\tif (server === \"localhost\" && path.length < 4) {\n\t\ttenantId = \"fluid\";\n\t\tdocumentId = path[2];\n\t} else {\n\t\ttenantId = path[2];\n\t\tdocumentId = path[3];\n\t}\n\n\t// Latest version id is the documentId for r11s\n\tlatestVersionsId = documentId;\n\n\tconnectionInfo = {\n\t\tserver,\n\t\ttenantId,\n\t\tid: documentId,\n\t};\n\n\tif (localDataOnly) {\n\t\treturn;\n\t}\n\n\tconsole.log(`Connecting to r11s: tenantId=${tenantId} id:${documentId}`);\n\tconst tokenProvider = new r11s.DefaultTokenProvider(paramJWT);\n\tconst r11sDocumentServiceFactory = new r11s.RouterliciousDocumentServiceFactory(\n\t\ttokenProvider,\n\t);\n\treturn r11sDocumentServiceFactory.createDocumentService(r11sResolvedUrl);\n}\n\ninterface IResolvedInfo {\n\tresolvedUrl: IResolvedUrl;\n\tserviceType: \"odsp\" | \"r11s\";\n}\nasync function resolveUrl(url: string): Promise<IResolvedInfo | undefined> {\n\tconst request: IRequest = { url };\n\tlet maybeResolvedUrl: IResolvedUrl | undefined;\n\n\t// Try each url resolver in turn to figure out which one the request is compatible with.\n\tmaybeResolvedUrl = await new OdspUrlResolver().resolve(request);\n\tif (maybeResolvedUrl !== undefined) {\n\t\treturn {\n\t\t\tresolvedUrl: maybeResolvedUrl,\n\t\t\tserviceType: \"odsp\",\n\t\t};\n\t}\n\n\tmaybeResolvedUrl = await new FluidAppOdspUrlResolver().resolve(request);\n\tif (maybeResolvedUrl !== undefined) {\n\t\treturn {\n\t\t\tresolvedUrl: maybeResolvedUrl,\n\t\t\tserviceType: \"odsp\",\n\t\t};\n\t}\n\n\tmaybeResolvedUrl = await new RouterliciousUrlResolver(\n\t\tundefined,\n\t\tasync () => Promise.resolve(paramJWT),\n\t\t\"\",\n\t).resolve(request);\n\tif (maybeResolvedUrl !== undefined) {\n\t\treturn {\n\t\t\tresolvedUrl: maybeResolvedUrl,\n\t\t\tserviceType: \"r11s\",\n\t\t};\n\t}\n\n\treturn undefined;\n}\n\nexport async function fluidFetchInit(urlStr: string) {\n\tconst resolvedInfo = await resolveUrl(urlStr);\n\tif (resolvedInfo === undefined) {\n\t\tthrow new Error(`Unknown URL ${urlStr}`);\n\t}\n\tconst fluidResolvedUrl = resolvedInfo.resolvedUrl;\n\tif (resolvedInfo.serviceType === \"odsp\") {\n\t\tconst odspResolvedUrl = fluidResolvedUrl as IOdspResolvedUrl;\n\t\treturn initializeODSPCore(\n\t\t\todspResolvedUrl,\n\t\t\tnew URL(odspResolvedUrl.siteUrl).host,\n\t\t\tfetchToolClientConfig,\n\t\t);\n\t} else if (resolvedInfo.serviceType === \"r11s\") {\n\t\tconst url = new URL(urlStr);\n\t\tconst server = url.hostname.toLowerCase();\n\t\treturn initializeR11s(server, url.pathname, fluidResolvedUrl);\n\t}\n}\n"]}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
import { IPublicClientConfig, IOdspAuthRequestInfo, IOdspDriveItem } from "@fluidframework/odsp-doclib-utils/internal";
|
|
6
|
+
export declare const fetchToolClientConfig: IPublicClientConfig;
|
|
6
7
|
export declare function resolveWrapper<T>(callback: (authRequestInfo: IOdspAuthRequestInfo) => Promise<T>, server: string, clientConfig: IPublicClientConfig, forceTokenReauth?: boolean, forToken?: boolean): Promise<T>;
|
|
7
8
|
export declare function getSharepointFiles(server: string, serverRelativePath: string, recurse: boolean): Promise<IOdspDriveItem[]>;
|
|
8
9
|
export declare function getSingleSharePointFile(server: string, drive: string, item: string): Promise<IOdspDriveItem>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fluidFetchSharePoint.d.ts","sourceRoot":"","sources":["../src/fluidFetchSharePoint.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EACN,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,EAKd,MAAM,4CAA4C,CAAC;
|
|
1
|
+
{"version":3,"file":"fluidFetchSharePoint.d.ts","sourceRoot":"","sources":["../src/fluidFetchSharePoint.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EACN,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,EAKd,MAAM,4CAA4C,CAAC;AAUpD,eAAO,MAAM,qBAAqB,EAAE,mBAUnC,CAAC;AAEF,wBAAsB,cAAc,CAAC,CAAC,EACrC,QAAQ,EAAE,CAAC,eAAe,EAAE,oBAAoB,KAAK,OAAO,CAAC,CAAC,CAAC,EAC/D,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,mBAAmB,EACjC,gBAAgB,UAAQ,EACxB,QAAQ,UAAQ,GACd,OAAO,CAAC,CAAC,CAAC,CAoCZ;AA6BD,wBAAsB,kBAAkB,CACvC,MAAM,EAAE,MAAM,EACd,kBAAkB,EAAE,MAAM,EAC1B,OAAO,EAAE,OAAO,6BAoChB;AAED,wBAAsB,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,2BAOxF"}
|
|
@@ -7,12 +7,21 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
7
7
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
8
8
|
};
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
-
exports.getSingleSharePointFile = exports.getSharepointFiles = exports.resolveWrapper = void 0;
|
|
10
|
+
exports.getSingleSharePointFile = exports.getSharepointFiles = exports.resolveWrapper = exports.fetchToolClientConfig = void 0;
|
|
11
11
|
const child_process_1 = __importDefault(require("child_process"));
|
|
12
12
|
const internal_1 = require("@fluidframework/driver-definitions/internal");
|
|
13
13
|
const internal_2 = require("@fluidframework/odsp-doclib-utils/internal");
|
|
14
14
|
const internal_3 = require("@fluidframework/tool-utils/internal");
|
|
15
15
|
const fluidFetchArgs_js_1 = require("./fluidFetchArgs.js");
|
|
16
|
+
exports.fetchToolClientConfig = {
|
|
17
|
+
get clientId() {
|
|
18
|
+
const clientId = process.env.fetch__tool__clientId;
|
|
19
|
+
if (clientId === undefined) {
|
|
20
|
+
throw new Error("Client ID environment variable not set: fetch__tool__clientId. Use the getkeys tool to populate it.");
|
|
21
|
+
}
|
|
22
|
+
return clientId;
|
|
23
|
+
},
|
|
24
|
+
};
|
|
16
25
|
async function resolveWrapper(callback, server, clientConfig, forceTokenReauth = false, forToken = false) {
|
|
17
26
|
try {
|
|
18
27
|
const odspTokenManager = new internal_3.OdspTokenManager(internal_3.odspTokensCache);
|
|
@@ -56,8 +65,7 @@ async function resolveChildrenByDriveItem(server, folderDriveItem, clientConfig)
|
|
|
56
65
|
(authRequestInfo) => (0, internal_2.getChildrenByDriveItem)(folderDriveItem, server, authRequestInfo), server, clientConfig);
|
|
57
66
|
}
|
|
58
67
|
async function getSharepointFiles(server, serverRelativePath, recurse) {
|
|
59
|
-
const
|
|
60
|
-
const fileInfo = await resolveDriveItemByServerRelativePath(server, serverRelativePath, clientConfig);
|
|
68
|
+
const fileInfo = await resolveDriveItemByServerRelativePath(server, serverRelativePath, exports.fetchToolClientConfig);
|
|
61
69
|
console.log(fileInfo);
|
|
62
70
|
const pendingFolder = [];
|
|
63
71
|
const files = [];
|
|
@@ -74,7 +82,7 @@ async function getSharepointFiles(server, serverRelativePath, recurse) {
|
|
|
74
82
|
break;
|
|
75
83
|
}
|
|
76
84
|
const { path, folder } = folderInfo;
|
|
77
|
-
const children = await resolveChildrenByDriveItem(server, folder,
|
|
85
|
+
const children = await resolveChildrenByDriveItem(server, folder, exports.fetchToolClientConfig);
|
|
78
86
|
for (const child of children) {
|
|
79
87
|
const childPath = `${path}/${child.name}`;
|
|
80
88
|
if (child.isFolder) {
|
|
@@ -91,10 +99,9 @@ async function getSharepointFiles(server, serverRelativePath, recurse) {
|
|
|
91
99
|
}
|
|
92
100
|
exports.getSharepointFiles = getSharepointFiles;
|
|
93
101
|
async function getSingleSharePointFile(server, drive, item) {
|
|
94
|
-
const clientConfig = (0, internal_3.getMicrosoftConfiguration)();
|
|
95
102
|
return resolveWrapper(
|
|
96
103
|
// eslint-disable-next-line @typescript-eslint/promise-function-async
|
|
97
|
-
(authRequestInfo) => (0, internal_2.getDriveItemFromDriveAndItem)(server, drive, item, authRequestInfo), server,
|
|
104
|
+
(authRequestInfo) => (0, internal_2.getDriveItemFromDriveAndItem)(server, drive, item, authRequestInfo), server, exports.fetchToolClientConfig);
|
|
98
105
|
}
|
|
99
106
|
exports.getSingleSharePointFile = getSingleSharePointFile;
|
|
100
107
|
const fluidFetchWebNavigator = (url) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fluidFetchSharePoint.js","sourceRoot":"","sources":["../src/fluidFetchSharePoint.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;AAEH,kEAA0C;AAE1C,0EAA+E;AAC/E,yEAQoD;AACpD,
|
|
1
|
+
{"version":3,"file":"fluidFetchSharePoint.js","sourceRoot":"","sources":["../src/fluidFetchSharePoint.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 child_process from \"child_process\";\n\nimport { DriverErrorTypes } from \"@fluidframework/driver-definitions/internal\";\nimport {\n\tIPublicClientConfig,\n\tIOdspAuthRequestInfo,\n\tIOdspDriveItem,\n\tgetChildrenByDriveItem,\n\tgetDriveItemByServerRelativePath,\n\tgetDriveItemFromDriveAndItem,\n\tgetOdspRefreshTokenFn,\n} from \"@fluidframework/odsp-doclib-utils/internal\";\nimport {\n\tIOdspTokenManagerCacheKey,\n\tOdspTokenConfig,\n\tOdspTokenManager,\n\todspTokensCache,\n} from \"@fluidframework/tool-utils/internal\";\n\nimport { getForceTokenReauth } from \"./fluidFetchArgs.js\";\n\nexport const fetchToolClientConfig: IPublicClientConfig = {\n\tget clientId(): string {\n\t\tconst clientId = process.env.fetch__tool__clientId;\n\t\tif (clientId === undefined) {\n\t\t\tthrow new Error(\n\t\t\t\t\"Client ID environment variable not set: fetch__tool__clientId. Use the getkeys tool to populate it.\",\n\t\t\t);\n\t\t}\n\t\treturn clientId;\n\t},\n};\n\nexport async function resolveWrapper<T>(\n\tcallback: (authRequestInfo: IOdspAuthRequestInfo) => Promise<T>,\n\tserver: string,\n\tclientConfig: IPublicClientConfig,\n\tforceTokenReauth = false,\n\tforToken = false,\n): Promise<T> {\n\ttry {\n\t\tconst odspTokenManager = new OdspTokenManager(odspTokensCache);\n\t\tconst tokenConfig: OdspTokenConfig = {\n\t\t\ttype: \"browserLogin\",\n\t\t\tnavigator: fluidFetchWebNavigator,\n\t\t};\n\t\tconst tokens = await odspTokenManager.getOdspTokens(\n\t\t\tserver,\n\t\t\tclientConfig,\n\t\t\ttokenConfig,\n\t\t\tundefined /* forceRefresh */,\n\t\t\tforceTokenReauth || getForceTokenReauth(),\n\t\t);\n\n\t\tconst result = await callback({\n\t\t\taccessToken: tokens.accessToken,\n\t\t\trefreshTokenFn: getOdspRefreshTokenFn(server, clientConfig, tokens),\n\t\t});\n\t\t// If this is used for getting a token, then refresh the cache with new token.\n\t\tif (forToken) {\n\t\t\tconst key: IOdspTokenManagerCacheKey = { isPush: false, userOrServer: server };\n\t\t\tawait odspTokenManager.updateTokensCache(key, {\n\t\t\t\taccessToken: result as any as string,\n\t\t\t\trefreshToken: tokens.refreshToken,\n\t\t\t});\n\t\t\treturn result;\n\t\t}\n\t\treturn result;\n\t} catch (e: any) {\n\t\tif (e.errorType === DriverErrorTypes.authorizationError && !forceTokenReauth) {\n\t\t\t// Re-auth\n\t\t\treturn resolveWrapper<T>(callback, server, clientConfig, true, forToken);\n\t\t}\n\t\tthrow e;\n\t}\n}\n\nasync function resolveDriveItemByServerRelativePath(\n\tserver: string,\n\tserverRelativePath: string,\n\tclientConfig: IPublicClientConfig,\n) {\n\treturn resolveWrapper<IOdspDriveItem>(\n\t\t// eslint-disable-next-line @typescript-eslint/promise-function-async\n\t\t(authRequestInfo) =>\n\t\t\tgetDriveItemByServerRelativePath(server, serverRelativePath, authRequestInfo, false),\n\t\tserver,\n\t\tclientConfig,\n\t);\n}\n\nasync function resolveChildrenByDriveItem(\n\tserver: string,\n\tfolderDriveItem: IOdspDriveItem,\n\tclientConfig: IPublicClientConfig,\n) {\n\treturn resolveWrapper<IOdspDriveItem[]>(\n\t\t// eslint-disable-next-line @typescript-eslint/promise-function-async\n\t\t(authRequestInfo) => getChildrenByDriveItem(folderDriveItem, server, authRequestInfo),\n\t\tserver,\n\t\tclientConfig,\n\t);\n}\n\nexport async function getSharepointFiles(\n\tserver: string,\n\tserverRelativePath: string,\n\trecurse: boolean,\n) {\n\tconst fileInfo = await resolveDriveItemByServerRelativePath(\n\t\tserver,\n\t\tserverRelativePath,\n\t\tfetchToolClientConfig,\n\t);\n\tconsole.log(fileInfo);\n\tconst pendingFolder: { path: string; folder: IOdspDriveItem }[] = [];\n\tconst files: IOdspDriveItem[] = [];\n\tif (fileInfo.isFolder) {\n\t\tpendingFolder.push({ path: serverRelativePath, folder: fileInfo });\n\t} else {\n\t\tfiles.push(fileInfo);\n\t}\n\n\t// eslint-disable-next-line no-constant-condition\n\twhile (true) {\n\t\tconst folderInfo = pendingFolder.shift();\n\t\tif (!folderInfo) {\n\t\t\tbreak;\n\t\t}\n\t\tconst { path, folder } = folderInfo;\n\t\tconst children = await resolveChildrenByDriveItem(server, folder, fetchToolClientConfig);\n\t\tfor (const child of children) {\n\t\t\tconst childPath = `${path}/${child.name}`;\n\t\t\tif (child.isFolder) {\n\t\t\t\tif (recurse) {\n\t\t\t\t\tpendingFolder.push({ path: childPath, folder: child });\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfiles.push(child);\n\t\t\t}\n\t\t}\n\t}\n\treturn files;\n}\n\nexport async function getSingleSharePointFile(server: string, drive: string, item: string) {\n\treturn resolveWrapper<IOdspDriveItem>(\n\t\t// eslint-disable-next-line @typescript-eslint/promise-function-async\n\t\t(authRequestInfo) => getDriveItemFromDriveAndItem(server, drive, item, authRequestInfo),\n\t\tserver,\n\t\tfetchToolClientConfig,\n\t);\n}\n\nconst fluidFetchWebNavigator = (url: string) => {\n\tlet message = \"Please open browser and navigate to this URL:\";\n\tif (process.platform === \"win32\") {\n\t\tchild_process.exec(`start \"fluid-fetch\" /B \"${url}\"`);\n\t\tmessage =\n\t\t\t\"Opening browser to get authorization code. If that doesn't open, please go to this URL manually\";\n\t}\n\tconsole.log(`${message}\\n ${url}`);\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fluidFetchInit.d.ts","sourceRoot":"","sources":["../src/fluidFetchInit.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"fluidFetchInit.d.ts","sourceRoot":"","sources":["../src/fluidFetchInit.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAuBH,eAAO,IAAI,gBAAgB,EAAE,MAAW,CAAC;AACzC,eAAO,IAAI,cAAc,EAAE,GAAG,CAAC;AAwI/B,wBAAsB,cAAc,CAAC,MAAM,EAAE,MAAM,+FAkBlD"}
|
package/lib/fluidFetchInit.js
CHANGED
|
@@ -6,9 +6,8 @@ import * as odsp from "@fluidframework/odsp-driver/internal";
|
|
|
6
6
|
import { FluidAppOdspUrlResolver, OdspUrlResolver, } from "@fluidframework/odsp-urlresolver/internal";
|
|
7
7
|
import * as r11s from "@fluidframework/routerlicious-driver/internal";
|
|
8
8
|
import { RouterliciousUrlResolver } from "@fluidframework/routerlicious-urlresolver/internal";
|
|
9
|
-
import { getMicrosoftConfiguration } from "@fluidframework/tool-utils/internal";
|
|
10
9
|
import { localDataOnly, paramJWT } from "./fluidFetchArgs.js";
|
|
11
|
-
import { resolveWrapper } from "./fluidFetchSharePoint.js";
|
|
10
|
+
import { resolveWrapper, fetchToolClientConfig } from "./fluidFetchSharePoint.js";
|
|
12
11
|
export let latestVersionsId = "";
|
|
13
12
|
export let connectionInfo;
|
|
14
13
|
async function initializeODSPCore(odspResolvedUrl, server, clientConfig) {
|
|
@@ -106,7 +105,7 @@ export async function fluidFetchInit(urlStr) {
|
|
|
106
105
|
const fluidResolvedUrl = resolvedInfo.resolvedUrl;
|
|
107
106
|
if (resolvedInfo.serviceType === "odsp") {
|
|
108
107
|
const odspResolvedUrl = fluidResolvedUrl;
|
|
109
|
-
return initializeODSPCore(odspResolvedUrl, new URL(odspResolvedUrl.siteUrl).host,
|
|
108
|
+
return initializeODSPCore(odspResolvedUrl, new URL(odspResolvedUrl.siteUrl).host, fetchToolClientConfig);
|
|
110
109
|
}
|
|
111
110
|
else if (resolvedInfo.serviceType === "r11s") {
|
|
112
111
|
const url = new URL(urlStr);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fluidFetchInit.js","sourceRoot":"","sources":["../src/fluidFetchInit.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,OAAO,KAAK,IAAI,MAAM,sCAAsC,CAAC;AAK7D,OAAO,EACN,uBAAuB,EACvB,eAAe,GACf,MAAM,2CAA2C,CAAC;AACnD,OAAO,KAAK,IAAI,MAAM,+CAA+C,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,oDAAoD,CAAC;
|
|
1
|
+
{"version":3,"file":"fluidFetchInit.js","sourceRoot":"","sources":["../src/fluidFetchInit.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 { IResolvedUrl } from \"@fluidframework/driver-definitions/internal\";\nimport {\n\tIPublicClientConfig,\n\tIOdspAuthRequestInfo,\n} from \"@fluidframework/odsp-doclib-utils/internal\";\nimport * as odsp from \"@fluidframework/odsp-driver/internal\";\nimport {\n\tIOdspResolvedUrl,\n\tOdspResourceTokenFetchOptions,\n} from \"@fluidframework/odsp-driver-definitions/internal\";\nimport {\n\tFluidAppOdspUrlResolver,\n\tOdspUrlResolver,\n} from \"@fluidframework/odsp-urlresolver/internal\";\nimport * as r11s from \"@fluidframework/routerlicious-driver/internal\";\nimport { RouterliciousUrlResolver } from \"@fluidframework/routerlicious-urlresolver/internal\";\n\nimport { localDataOnly, paramJWT } from \"./fluidFetchArgs.js\";\nimport { resolveWrapper, fetchToolClientConfig } from \"./fluidFetchSharePoint.js\";\n\nexport let latestVersionsId: string = \"\";\nexport let connectionInfo: any;\n\nasync function initializeODSPCore(\n\todspResolvedUrl: IOdspResolvedUrl,\n\tserver: string,\n\tclientConfig: IPublicClientConfig,\n) {\n\tconst { driveId, itemId } = odspResolvedUrl;\n\n\tconnectionInfo = {\n\t\tserver,\n\t\tdrive: driveId,\n\t\titem: itemId,\n\t};\n\n\tif (localDataOnly) {\n\t\treturn;\n\t}\n\n\tconst docId = await odsp.getHashedDocumentId(driveId, itemId);\n\n\tconsole.log(`Connecting to ODSP:\n server: ${server}\n drive: ${driveId}\n item: ${itemId}\n docId: ${docId}`);\n\n\tconst getStorageTokenStub = async (options: OdspResourceTokenFetchOptions) => {\n\t\treturn resolveWrapper(\n\t\t\tasync (authRequestInfo: IOdspAuthRequestInfo) => {\n\t\t\t\tif (\n\t\t\t\t\t(options.refresh || !authRequestInfo.accessToken) &&\n\t\t\t\t\tauthRequestInfo.refreshTokenFn\n\t\t\t\t) {\n\t\t\t\t\treturn authRequestInfo.refreshTokenFn();\n\t\t\t\t}\n\t\t\t\treturn authRequestInfo.accessToken;\n\t\t\t},\n\t\t\tserver,\n\t\t\tclientConfig,\n\t\t\tundefined,\n\t\t\ttrue,\n\t\t);\n\t};\n\t// eslint-disable-next-line @typescript-eslint/promise-function-async\n\tconst getWebsocketTokenStub = (_options: OdspResourceTokenFetchOptions) =>\n\t\tPromise.resolve(\"\");\n\tconst odspDocumentServiceFactory = new odsp.OdspDocumentServiceFactory(\n\t\tgetStorageTokenStub,\n\t\tgetWebsocketTokenStub,\n\t\tundefined,\n\t\t{\n\t\t\topsBatchSize: 20000,\n\t\t\tconcurrentOpsBatches: 4,\n\t\t},\n\t);\n\treturn odspDocumentServiceFactory.createDocumentService(odspResolvedUrl);\n}\n\nasync function initializeR11s(\n\tserver: string,\n\tpathname: string,\n\tr11sResolvedUrl: IResolvedUrl,\n) {\n\tconst path = pathname.split(\"/\");\n\tlet tenantId: string;\n\tlet documentId: string;\n\tif (server === \"localhost\" && path.length < 4) {\n\t\ttenantId = \"fluid\";\n\t\tdocumentId = path[2];\n\t} else {\n\t\ttenantId = path[2];\n\t\tdocumentId = path[3];\n\t}\n\n\t// Latest version id is the documentId for r11s\n\tlatestVersionsId = documentId;\n\n\tconnectionInfo = {\n\t\tserver,\n\t\ttenantId,\n\t\tid: documentId,\n\t};\n\n\tif (localDataOnly) {\n\t\treturn;\n\t}\n\n\tconsole.log(`Connecting to r11s: tenantId=${tenantId} id:${documentId}`);\n\tconst tokenProvider = new r11s.DefaultTokenProvider(paramJWT);\n\tconst r11sDocumentServiceFactory = new r11s.RouterliciousDocumentServiceFactory(\n\t\ttokenProvider,\n\t);\n\treturn r11sDocumentServiceFactory.createDocumentService(r11sResolvedUrl);\n}\n\ninterface IResolvedInfo {\n\tresolvedUrl: IResolvedUrl;\n\tserviceType: \"odsp\" | \"r11s\";\n}\nasync function resolveUrl(url: string): Promise<IResolvedInfo | undefined> {\n\tconst request: IRequest = { url };\n\tlet maybeResolvedUrl: IResolvedUrl | undefined;\n\n\t// Try each url resolver in turn to figure out which one the request is compatible with.\n\tmaybeResolvedUrl = await new OdspUrlResolver().resolve(request);\n\tif (maybeResolvedUrl !== undefined) {\n\t\treturn {\n\t\t\tresolvedUrl: maybeResolvedUrl,\n\t\t\tserviceType: \"odsp\",\n\t\t};\n\t}\n\n\tmaybeResolvedUrl = await new FluidAppOdspUrlResolver().resolve(request);\n\tif (maybeResolvedUrl !== undefined) {\n\t\treturn {\n\t\t\tresolvedUrl: maybeResolvedUrl,\n\t\t\tserviceType: \"odsp\",\n\t\t};\n\t}\n\n\tmaybeResolvedUrl = await new RouterliciousUrlResolver(\n\t\tundefined,\n\t\tasync () => Promise.resolve(paramJWT),\n\t\t\"\",\n\t).resolve(request);\n\tif (maybeResolvedUrl !== undefined) {\n\t\treturn {\n\t\t\tresolvedUrl: maybeResolvedUrl,\n\t\t\tserviceType: \"r11s\",\n\t\t};\n\t}\n\n\treturn undefined;\n}\n\nexport async function fluidFetchInit(urlStr: string) {\n\tconst resolvedInfo = await resolveUrl(urlStr);\n\tif (resolvedInfo === undefined) {\n\t\tthrow new Error(`Unknown URL ${urlStr}`);\n\t}\n\tconst fluidResolvedUrl = resolvedInfo.resolvedUrl;\n\tif (resolvedInfo.serviceType === \"odsp\") {\n\t\tconst odspResolvedUrl = fluidResolvedUrl as IOdspResolvedUrl;\n\t\treturn initializeODSPCore(\n\t\t\todspResolvedUrl,\n\t\t\tnew URL(odspResolvedUrl.siteUrl).host,\n\t\t\tfetchToolClientConfig,\n\t\t);\n\t} else if (resolvedInfo.serviceType === \"r11s\") {\n\t\tconst url = new URL(urlStr);\n\t\tconst server = url.hostname.toLowerCase();\n\t\treturn initializeR11s(server, url.pathname, fluidResolvedUrl);\n\t}\n}\n"]}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
import { IPublicClientConfig, IOdspAuthRequestInfo, IOdspDriveItem } from "@fluidframework/odsp-doclib-utils/internal";
|
|
6
|
+
export declare const fetchToolClientConfig: IPublicClientConfig;
|
|
6
7
|
export declare function resolveWrapper<T>(callback: (authRequestInfo: IOdspAuthRequestInfo) => Promise<T>, server: string, clientConfig: IPublicClientConfig, forceTokenReauth?: boolean, forToken?: boolean): Promise<T>;
|
|
7
8
|
export declare function getSharepointFiles(server: string, serverRelativePath: string, recurse: boolean): Promise<IOdspDriveItem[]>;
|
|
8
9
|
export declare function getSingleSharePointFile(server: string, drive: string, item: string): Promise<IOdspDriveItem>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fluidFetchSharePoint.d.ts","sourceRoot":"","sources":["../src/fluidFetchSharePoint.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EACN,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,EAKd,MAAM,4CAA4C,CAAC;
|
|
1
|
+
{"version":3,"file":"fluidFetchSharePoint.d.ts","sourceRoot":"","sources":["../src/fluidFetchSharePoint.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EACN,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,EAKd,MAAM,4CAA4C,CAAC;AAUpD,eAAO,MAAM,qBAAqB,EAAE,mBAUnC,CAAC;AAEF,wBAAsB,cAAc,CAAC,CAAC,EACrC,QAAQ,EAAE,CAAC,eAAe,EAAE,oBAAoB,KAAK,OAAO,CAAC,CAAC,CAAC,EAC/D,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,mBAAmB,EACjC,gBAAgB,UAAQ,EACxB,QAAQ,UAAQ,GACd,OAAO,CAAC,CAAC,CAAC,CAoCZ;AA6BD,wBAAsB,kBAAkB,CACvC,MAAM,EAAE,MAAM,EACd,kBAAkB,EAAE,MAAM,EAC1B,OAAO,EAAE,OAAO,6BAoChB;AAED,wBAAsB,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,2BAOxF"}
|
|
@@ -5,8 +5,17 @@
|
|
|
5
5
|
import child_process from "child_process";
|
|
6
6
|
import { DriverErrorTypes } from "@fluidframework/driver-definitions/internal";
|
|
7
7
|
import { getChildrenByDriveItem, getDriveItemByServerRelativePath, getDriveItemFromDriveAndItem, getOdspRefreshTokenFn, } from "@fluidframework/odsp-doclib-utils/internal";
|
|
8
|
-
import { OdspTokenManager,
|
|
8
|
+
import { OdspTokenManager, odspTokensCache, } from "@fluidframework/tool-utils/internal";
|
|
9
9
|
import { getForceTokenReauth } from "./fluidFetchArgs.js";
|
|
10
|
+
export const fetchToolClientConfig = {
|
|
11
|
+
get clientId() {
|
|
12
|
+
const clientId = process.env.fetch__tool__clientId;
|
|
13
|
+
if (clientId === undefined) {
|
|
14
|
+
throw new Error("Client ID environment variable not set: fetch__tool__clientId. Use the getkeys tool to populate it.");
|
|
15
|
+
}
|
|
16
|
+
return clientId;
|
|
17
|
+
},
|
|
18
|
+
};
|
|
10
19
|
export async function resolveWrapper(callback, server, clientConfig, forceTokenReauth = false, forToken = false) {
|
|
11
20
|
try {
|
|
12
21
|
const odspTokenManager = new OdspTokenManager(odspTokensCache);
|
|
@@ -49,8 +58,7 @@ async function resolveChildrenByDriveItem(server, folderDriveItem, clientConfig)
|
|
|
49
58
|
(authRequestInfo) => getChildrenByDriveItem(folderDriveItem, server, authRequestInfo), server, clientConfig);
|
|
50
59
|
}
|
|
51
60
|
export async function getSharepointFiles(server, serverRelativePath, recurse) {
|
|
52
|
-
const
|
|
53
|
-
const fileInfo = await resolveDriveItemByServerRelativePath(server, serverRelativePath, clientConfig);
|
|
61
|
+
const fileInfo = await resolveDriveItemByServerRelativePath(server, serverRelativePath, fetchToolClientConfig);
|
|
54
62
|
console.log(fileInfo);
|
|
55
63
|
const pendingFolder = [];
|
|
56
64
|
const files = [];
|
|
@@ -67,7 +75,7 @@ export async function getSharepointFiles(server, serverRelativePath, recurse) {
|
|
|
67
75
|
break;
|
|
68
76
|
}
|
|
69
77
|
const { path, folder } = folderInfo;
|
|
70
|
-
const children = await resolveChildrenByDriveItem(server, folder,
|
|
78
|
+
const children = await resolveChildrenByDriveItem(server, folder, fetchToolClientConfig);
|
|
71
79
|
for (const child of children) {
|
|
72
80
|
const childPath = `${path}/${child.name}`;
|
|
73
81
|
if (child.isFolder) {
|
|
@@ -83,10 +91,9 @@ export async function getSharepointFiles(server, serverRelativePath, recurse) {
|
|
|
83
91
|
return files;
|
|
84
92
|
}
|
|
85
93
|
export async function getSingleSharePointFile(server, drive, item) {
|
|
86
|
-
const clientConfig = getMicrosoftConfiguration();
|
|
87
94
|
return resolveWrapper(
|
|
88
95
|
// eslint-disable-next-line @typescript-eslint/promise-function-async
|
|
89
|
-
(authRequestInfo) => getDriveItemFromDriveAndItem(server, drive, item, authRequestInfo), server,
|
|
96
|
+
(authRequestInfo) => getDriveItemFromDriveAndItem(server, drive, item, authRequestInfo), server, fetchToolClientConfig);
|
|
90
97
|
}
|
|
91
98
|
const fluidFetchWebNavigator = (url) => {
|
|
92
99
|
let message = "Please open browser and navigate to this URL:";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fluidFetchSharePoint.js","sourceRoot":"","sources":["../src/fluidFetchSharePoint.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,aAAa,MAAM,eAAe,CAAC;AAE1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,6CAA6C,CAAC;AAC/E,OAAO,EAIN,sBAAsB,EACtB,gCAAgC,EAChC,4BAA4B,EAC5B,qBAAqB,GACrB,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAGN,gBAAgB,EAChB,
|
|
1
|
+
{"version":3,"file":"fluidFetchSharePoint.js","sourceRoot":"","sources":["../src/fluidFetchSharePoint.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 child_process from \"child_process\";\n\nimport { DriverErrorTypes } from \"@fluidframework/driver-definitions/internal\";\nimport {\n\tIPublicClientConfig,\n\tIOdspAuthRequestInfo,\n\tIOdspDriveItem,\n\tgetChildrenByDriveItem,\n\tgetDriveItemByServerRelativePath,\n\tgetDriveItemFromDriveAndItem,\n\tgetOdspRefreshTokenFn,\n} from \"@fluidframework/odsp-doclib-utils/internal\";\nimport {\n\tIOdspTokenManagerCacheKey,\n\tOdspTokenConfig,\n\tOdspTokenManager,\n\todspTokensCache,\n} from \"@fluidframework/tool-utils/internal\";\n\nimport { getForceTokenReauth } from \"./fluidFetchArgs.js\";\n\nexport const fetchToolClientConfig: IPublicClientConfig = {\n\tget clientId(): string {\n\t\tconst clientId = process.env.fetch__tool__clientId;\n\t\tif (clientId === undefined) {\n\t\t\tthrow new Error(\n\t\t\t\t\"Client ID environment variable not set: fetch__tool__clientId. Use the getkeys tool to populate it.\",\n\t\t\t);\n\t\t}\n\t\treturn clientId;\n\t},\n};\n\nexport async function resolveWrapper<T>(\n\tcallback: (authRequestInfo: IOdspAuthRequestInfo) => Promise<T>,\n\tserver: string,\n\tclientConfig: IPublicClientConfig,\n\tforceTokenReauth = false,\n\tforToken = false,\n): Promise<T> {\n\ttry {\n\t\tconst odspTokenManager = new OdspTokenManager(odspTokensCache);\n\t\tconst tokenConfig: OdspTokenConfig = {\n\t\t\ttype: \"browserLogin\",\n\t\t\tnavigator: fluidFetchWebNavigator,\n\t\t};\n\t\tconst tokens = await odspTokenManager.getOdspTokens(\n\t\t\tserver,\n\t\t\tclientConfig,\n\t\t\ttokenConfig,\n\t\t\tundefined /* forceRefresh */,\n\t\t\tforceTokenReauth || getForceTokenReauth(),\n\t\t);\n\n\t\tconst result = await callback({\n\t\t\taccessToken: tokens.accessToken,\n\t\t\trefreshTokenFn: getOdspRefreshTokenFn(server, clientConfig, tokens),\n\t\t});\n\t\t// If this is used for getting a token, then refresh the cache with new token.\n\t\tif (forToken) {\n\t\t\tconst key: IOdspTokenManagerCacheKey = { isPush: false, userOrServer: server };\n\t\t\tawait odspTokenManager.updateTokensCache(key, {\n\t\t\t\taccessToken: result as any as string,\n\t\t\t\trefreshToken: tokens.refreshToken,\n\t\t\t});\n\t\t\treturn result;\n\t\t}\n\t\treturn result;\n\t} catch (e: any) {\n\t\tif (e.errorType === DriverErrorTypes.authorizationError && !forceTokenReauth) {\n\t\t\t// Re-auth\n\t\t\treturn resolveWrapper<T>(callback, server, clientConfig, true, forToken);\n\t\t}\n\t\tthrow e;\n\t}\n}\n\nasync function resolveDriveItemByServerRelativePath(\n\tserver: string,\n\tserverRelativePath: string,\n\tclientConfig: IPublicClientConfig,\n) {\n\treturn resolveWrapper<IOdspDriveItem>(\n\t\t// eslint-disable-next-line @typescript-eslint/promise-function-async\n\t\t(authRequestInfo) =>\n\t\t\tgetDriveItemByServerRelativePath(server, serverRelativePath, authRequestInfo, false),\n\t\tserver,\n\t\tclientConfig,\n\t);\n}\n\nasync function resolveChildrenByDriveItem(\n\tserver: string,\n\tfolderDriveItem: IOdspDriveItem,\n\tclientConfig: IPublicClientConfig,\n) {\n\treturn resolveWrapper<IOdspDriveItem[]>(\n\t\t// eslint-disable-next-line @typescript-eslint/promise-function-async\n\t\t(authRequestInfo) => getChildrenByDriveItem(folderDriveItem, server, authRequestInfo),\n\t\tserver,\n\t\tclientConfig,\n\t);\n}\n\nexport async function getSharepointFiles(\n\tserver: string,\n\tserverRelativePath: string,\n\trecurse: boolean,\n) {\n\tconst fileInfo = await resolveDriveItemByServerRelativePath(\n\t\tserver,\n\t\tserverRelativePath,\n\t\tfetchToolClientConfig,\n\t);\n\tconsole.log(fileInfo);\n\tconst pendingFolder: { path: string; folder: IOdspDriveItem }[] = [];\n\tconst files: IOdspDriveItem[] = [];\n\tif (fileInfo.isFolder) {\n\t\tpendingFolder.push({ path: serverRelativePath, folder: fileInfo });\n\t} else {\n\t\tfiles.push(fileInfo);\n\t}\n\n\t// eslint-disable-next-line no-constant-condition\n\twhile (true) {\n\t\tconst folderInfo = pendingFolder.shift();\n\t\tif (!folderInfo) {\n\t\t\tbreak;\n\t\t}\n\t\tconst { path, folder } = folderInfo;\n\t\tconst children = await resolveChildrenByDriveItem(server, folder, fetchToolClientConfig);\n\t\tfor (const child of children) {\n\t\t\tconst childPath = `${path}/${child.name}`;\n\t\t\tif (child.isFolder) {\n\t\t\t\tif (recurse) {\n\t\t\t\t\tpendingFolder.push({ path: childPath, folder: child });\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfiles.push(child);\n\t\t\t}\n\t\t}\n\t}\n\treturn files;\n}\n\nexport async function getSingleSharePointFile(server: string, drive: string, item: string) {\n\treturn resolveWrapper<IOdspDriveItem>(\n\t\t// eslint-disable-next-line @typescript-eslint/promise-function-async\n\t\t(authRequestInfo) => getDriveItemFromDriveAndItem(server, drive, item, authRequestInfo),\n\t\tserver,\n\t\tfetchToolClientConfig,\n\t);\n}\n\nconst fluidFetchWebNavigator = (url: string) => {\n\tlet message = \"Please open browser and navigate to this URL:\";\n\tif (process.platform === \"win32\") {\n\t\tchild_process.exec(`start \"fluid-fetch\" /B \"${url}\"`);\n\t\tmessage =\n\t\t\t\"Opening browser to get authorization code. If that doesn't open, please go to this URL manually\";\n\t}\n\tconsole.log(`${message}\\n ${url}`);\n};\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fluid-tools/fetch-tool",
|
|
3
|
-
"version": "2.0
|
|
3
|
+
"version": "2.1.0-276326",
|
|
4
4
|
"description": "Console tool to fetch Fluid data from relay service",
|
|
5
5
|
"homepage": "https://fluidframework.com",
|
|
6
6
|
"repository": {
|
|
@@ -15,25 +15,25 @@
|
|
|
15
15
|
"fluid-fetch": "bin/fluid-fetch"
|
|
16
16
|
},
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@fluid-internal/client-utils": "
|
|
19
|
-
"@fluidframework/container-runtime": "
|
|
20
|
-
"@fluidframework/core-interfaces": "
|
|
21
|
-
"@fluidframework/core-utils": "
|
|
22
|
-
"@fluidframework/datastore": "
|
|
23
|
-
"@fluidframework/driver-definitions": "
|
|
24
|
-
"@fluidframework/odsp-doclib-utils": "
|
|
25
|
-
"@fluidframework/odsp-driver": "
|
|
26
|
-
"@fluidframework/odsp-driver-definitions": "
|
|
27
|
-
"@fluidframework/odsp-urlresolver": "
|
|
28
|
-
"@fluidframework/routerlicious-driver": "
|
|
29
|
-
"@fluidframework/routerlicious-urlresolver": "
|
|
30
|
-
"@fluidframework/runtime-definitions": "
|
|
31
|
-
"@fluidframework/tool-utils": "
|
|
18
|
+
"@fluid-internal/client-utils": "2.1.0-276326",
|
|
19
|
+
"@fluidframework/container-runtime": "2.1.0-276326",
|
|
20
|
+
"@fluidframework/core-interfaces": "2.1.0-276326",
|
|
21
|
+
"@fluidframework/core-utils": "2.1.0-276326",
|
|
22
|
+
"@fluidframework/datastore": "2.1.0-276326",
|
|
23
|
+
"@fluidframework/driver-definitions": "2.1.0-276326",
|
|
24
|
+
"@fluidframework/odsp-doclib-utils": "2.1.0-276326",
|
|
25
|
+
"@fluidframework/odsp-driver": "2.1.0-276326",
|
|
26
|
+
"@fluidframework/odsp-driver-definitions": "2.1.0-276326",
|
|
27
|
+
"@fluidframework/odsp-urlresolver": "2.1.0-276326",
|
|
28
|
+
"@fluidframework/routerlicious-driver": "2.1.0-276326",
|
|
29
|
+
"@fluidframework/routerlicious-urlresolver": "2.1.0-276326",
|
|
30
|
+
"@fluidframework/runtime-definitions": "2.1.0-276326",
|
|
31
|
+
"@fluidframework/tool-utils": "2.1.0-276326"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
34
|
"@biomejs/biome": "^1.7.3",
|
|
35
35
|
"@fluid-tools/build-cli": "^0.39.0",
|
|
36
|
-
"@fluid-tools/fetch-tool-previous": "npm:@fluid-tools/fetch-tool@2.0.0-rc.
|
|
36
|
+
"@fluid-tools/fetch-tool-previous": "npm:@fluid-tools/fetch-tool@2.0.0-rc.5.0.0",
|
|
37
37
|
"@fluidframework/build-common": "^2.0.3",
|
|
38
38
|
"@fluidframework/build-tools": "^0.39.0",
|
|
39
39
|
"@fluidframework/eslint-config-fluid": "^5.3.0",
|
package/src/fluidFetchInit.ts
CHANGED
|
@@ -20,10 +20,9 @@ import {
|
|
|
20
20
|
} from "@fluidframework/odsp-urlresolver/internal";
|
|
21
21
|
import * as r11s from "@fluidframework/routerlicious-driver/internal";
|
|
22
22
|
import { RouterliciousUrlResolver } from "@fluidframework/routerlicious-urlresolver/internal";
|
|
23
|
-
import { getMicrosoftConfiguration } from "@fluidframework/tool-utils/internal";
|
|
24
23
|
|
|
25
24
|
import { localDataOnly, paramJWT } from "./fluidFetchArgs.js";
|
|
26
|
-
import { resolveWrapper } from "./fluidFetchSharePoint.js";
|
|
25
|
+
import { resolveWrapper, fetchToolClientConfig } from "./fluidFetchSharePoint.js";
|
|
27
26
|
|
|
28
27
|
export let latestVersionsId: string = "";
|
|
29
28
|
export let connectionInfo: any;
|
|
@@ -173,7 +172,7 @@ export async function fluidFetchInit(urlStr: string) {
|
|
|
173
172
|
return initializeODSPCore(
|
|
174
173
|
odspResolvedUrl,
|
|
175
174
|
new URL(odspResolvedUrl.siteUrl).host,
|
|
176
|
-
|
|
175
|
+
fetchToolClientConfig,
|
|
177
176
|
);
|
|
178
177
|
} else if (resolvedInfo.serviceType === "r11s") {
|
|
179
178
|
const url = new URL(urlStr);
|
|
@@ -19,12 +19,23 @@ import {
|
|
|
19
19
|
IOdspTokenManagerCacheKey,
|
|
20
20
|
OdspTokenConfig,
|
|
21
21
|
OdspTokenManager,
|
|
22
|
-
getMicrosoftConfiguration,
|
|
23
22
|
odspTokensCache,
|
|
24
23
|
} from "@fluidframework/tool-utils/internal";
|
|
25
24
|
|
|
26
25
|
import { getForceTokenReauth } from "./fluidFetchArgs.js";
|
|
27
26
|
|
|
27
|
+
export const fetchToolClientConfig: IPublicClientConfig = {
|
|
28
|
+
get clientId(): string {
|
|
29
|
+
const clientId = process.env.fetch__tool__clientId;
|
|
30
|
+
if (clientId === undefined) {
|
|
31
|
+
throw new Error(
|
|
32
|
+
"Client ID environment variable not set: fetch__tool__clientId. Use the getkeys tool to populate it.",
|
|
33
|
+
);
|
|
34
|
+
}
|
|
35
|
+
return clientId;
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
|
|
28
39
|
export async function resolveWrapper<T>(
|
|
29
40
|
callback: (authRequestInfo: IOdspAuthRequestInfo) => Promise<T>,
|
|
30
41
|
server: string,
|
|
@@ -101,12 +112,10 @@ export async function getSharepointFiles(
|
|
|
101
112
|
serverRelativePath: string,
|
|
102
113
|
recurse: boolean,
|
|
103
114
|
) {
|
|
104
|
-
const clientConfig = getMicrosoftConfiguration();
|
|
105
|
-
|
|
106
115
|
const fileInfo = await resolveDriveItemByServerRelativePath(
|
|
107
116
|
server,
|
|
108
117
|
serverRelativePath,
|
|
109
|
-
|
|
118
|
+
fetchToolClientConfig,
|
|
110
119
|
);
|
|
111
120
|
console.log(fileInfo);
|
|
112
121
|
const pendingFolder: { path: string; folder: IOdspDriveItem }[] = [];
|
|
@@ -124,7 +133,7 @@ export async function getSharepointFiles(
|
|
|
124
133
|
break;
|
|
125
134
|
}
|
|
126
135
|
const { path, folder } = folderInfo;
|
|
127
|
-
const children = await resolveChildrenByDriveItem(server, folder,
|
|
136
|
+
const children = await resolveChildrenByDriveItem(server, folder, fetchToolClientConfig);
|
|
128
137
|
for (const child of children) {
|
|
129
138
|
const childPath = `${path}/${child.name}`;
|
|
130
139
|
if (child.isFolder) {
|
|
@@ -140,13 +149,11 @@ export async function getSharepointFiles(
|
|
|
140
149
|
}
|
|
141
150
|
|
|
142
151
|
export async function getSingleSharePointFile(server: string, drive: string, item: string) {
|
|
143
|
-
const clientConfig = getMicrosoftConfiguration();
|
|
144
|
-
|
|
145
152
|
return resolveWrapper<IOdspDriveItem>(
|
|
146
153
|
// eslint-disable-next-line @typescript-eslint/promise-function-async
|
|
147
154
|
(authRequestInfo) => getDriveItemFromDriveAndItem(server, drive, item, authRequestInfo),
|
|
148
155
|
server,
|
|
149
|
-
|
|
156
|
+
fetchToolClientConfig,
|
|
150
157
|
);
|
|
151
158
|
}
|
|
152
159
|
|