@fluid-tools/fetch-tool 2.0.0-rc.1.0.6 → 2.0.0-rc.2.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.
@@ -4,9 +4,12 @@
4
4
  */
5
5
 
6
6
  module.exports = {
7
- extends: [require.resolve("@fluidframework/eslint-config-fluid/minimal"), "prettier"],
7
+ extends: [
8
+ require.resolve("@fluidframework/eslint-config-fluid/minimal-deprecated"),
9
+ "prettier",
10
+ ],
8
11
  rules: {
9
12
  // This library is used in the browser, so we don't want dependencies on most node libraries.
10
- "import/no-nodejs-modules": ["error", { allow: ["child_process", "fs", "url", "util"] }],
13
+ "import/no-nodejs-modules": ["error", { allow: ["child_process", "fs", "util"] }],
11
14
  },
12
15
  };
package/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # @fluid-tools/fetch-tool
2
2
 
3
+ ## 2.0.0-rc.2.0.0
4
+
5
+ Dependency updates only.
6
+
3
7
  ## 2.0.0-rc.1.0.0
4
8
 
5
9
  ### Minor Changes
@@ -9,7 +9,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
10
  const fs_1 = __importDefault(require("fs"));
11
11
  const util_1 = __importDefault(require("util"));
12
- const odsp_doclib_utils_1 = require("@fluidframework/odsp-doclib-utils");
12
+ const internal_1 = require("@fluidframework/odsp-doclib-utils/internal");
13
13
  const fluidFetchArgs_1 = require("./fluidFetchArgs");
14
14
  const fluidFetchInit_1 = require("./fluidFetchInit");
15
15
  const fluidFetchMessages_1 = require("./fluidFetchMessages");
@@ -75,7 +75,7 @@ async function fluidFetchMain() {
75
75
  }
76
76
  const url = new URL(fluidFetchArgs_1.paramURL);
77
77
  const server = url.hostname;
78
- if ((0, odsp_doclib_utils_1.isOdspHostname)(server)) {
78
+ if ((0, internal_1.isOdspHostname)(server)) {
79
79
  // See if the url already has the specific item
80
80
  const driveItem = getSharePointSpecificDriveItem(url);
81
81
  if (driveItem) {
@@ -1 +1 @@
1
- {"version":3,"file":"fluidFetch.js","sourceRoot":"","sources":["../src/fluidFetch.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 fs from \"fs\";\nimport util from \"util\";\nimport { isOdspHostname, IOdspDriveItem } from \"@fluidframework/odsp-doclib-utils\";\nimport { paramSaveDir, paramURL, parseArguments } from \"./fluidFetchArgs\";\nimport { connectionInfo, fluidFetchInit } from \"./fluidFetchInit\";\nimport { fluidFetchMessages } from \"./fluidFetchMessages\";\nimport { getSharepointFiles, getSingleSharePointFile } from \"./fluidFetchSharePoint\";\nimport { fluidFetchSnapshot } from \"./fluidFetchSnapshot\";\n\nasync function fluidFetchOneFile(urlStr: string, name?: string) {\n\tconst documentService = await fluidFetchInit(urlStr);\n\tconst saveDir =\n\t\tparamSaveDir !== undefined\n\t\t\t? name !== undefined\n\t\t\t\t? `${paramSaveDir}/${name}`\n\t\t\t\t: paramSaveDir\n\t\t\t: undefined;\n\tif (saveDir !== undefined) {\n\t\tconst mkdir = util.promisify(fs.mkdir);\n\t\tconst writeFile = util.promisify(fs.writeFile);\n\t\tawait mkdir(saveDir, { recursive: true });\n\t\tconst info = {\n\t\t\tcreationDate: new Date().toString(),\n\t\t\tconnectionInfo,\n\t\t\turl: urlStr,\n\t\t};\n\t\tawait writeFile(`${saveDir}/info.json`, JSON.stringify(info, undefined, 2));\n\t}\n\n\tawait fluidFetchSnapshot(documentService, saveDir);\n\tawait fluidFetchMessages(documentService, saveDir);\n}\n\nasync function tryFluidFetchOneSharePointFile(server: string, driveItem: IOdspDriveItem) {\n\tconst { path, name, driveId, itemId } = driveItem;\n\tconsole.log(`File: ${path}/${name}`);\n\tawait fluidFetchOneFile(`https://${server}/_api/v2.1/drives/${driveId}/items/${itemId}`, name);\n}\n\nfunction getSharePointSpecificDriveItem(url: URL): { driveId: string; itemId: string } | undefined {\n\tif (url.searchParams.has(\"driveId\") && url.searchParams.has(\"itemId\")) {\n\t\treturn {\n\t\t\tdriveId: url.searchParams.get(\"driveId\") as string,\n\t\t\titemId: url.searchParams.get(\"itemId\") as string,\n\t\t};\n\t}\n}\n\nfunction getSharepointServerRelativePathFromURL(url: URL) {\n\tif (url.pathname.startsWith(\"/_api/v2.1/drives/\")) {\n\t\treturn undefined;\n\t}\n\n\tconst hostnameParts = url.hostname.split(\".\");\n\tconst suffix = hostnameParts[0].endsWith(\"-my\")\n\t\t? \"/_layouts/15/onedrive.aspx\"\n\t\t: \"/forms/allitems.aspx\";\n\n\tlet sitePath = url.pathname;\n\tif (url.searchParams.has(\"id\")) {\n\t\tsitePath = url.searchParams.get(\"id\") as string;\n\t} else if (url.searchParams.has(\"RootFolder\")) {\n\t\tsitePath = url.searchParams.get(\"RootFolder\") as string;\n\t} else if (url.pathname.toLowerCase().endsWith(suffix)) {\n\t\tsitePath = sitePath.substr(0, url.pathname.length - suffix.length);\n\t}\n\n\treturn decodeURI(sitePath);\n}\n\nasync function fluidFetchMain() {\n\tif (paramURL === undefined) {\n\t\treturn;\n\t}\n\n\tconst url = new URL(paramURL);\n\tconst server = url.hostname;\n\tif (isOdspHostname(server)) {\n\t\t// See if the url already has the specific item\n\t\tconst driveItem = getSharePointSpecificDriveItem(url);\n\t\tif (driveItem) {\n\t\t\tconst file = await getSingleSharePointFile(server, driveItem.driveId, driveItem.itemId);\n\t\t\tawait tryFluidFetchOneSharePointFile(server, file);\n\t\t\treturn;\n\t\t}\n\n\t\t// See if the url given represent a sharepoint directory\n\t\tconst serverRelativePath = getSharepointServerRelativePathFromURL(url);\n\t\tif (serverRelativePath !== undefined) {\n\t\t\tconst files = await getSharepointFiles(server, serverRelativePath, false);\n\t\t\tfor (const file of files) {\n\t\t\t\tif (file.name.endsWith(\".b\") || file.name.endsWith(\".fluid\")) {\n\t\t\t\t\tawait tryFluidFetchOneSharePointFile(server, file);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t}\n\n\treturn fluidFetchOneFile(paramURL);\n}\n\nparseArguments();\n\n// eslint-disable-next-line @typescript-eslint/no-floating-promises\nfluidFetchMain()\n\t.catch((error: Error) => {\n\t\tif (error instanceof Error) {\n\t\t\tlet extraMsg = \"\";\n\t\t\tfor (const key of Object.keys(error)) {\n\t\t\t\t// error[key] might have circular structure\n\t\t\t\ttry {\n\t\t\t\t\tif (key !== \"message\" && key !== \"stack\") {\n\t\t\t\t\t\textraMsg += `\\n${key}: ${JSON.stringify(error[key], undefined, 2)}`;\n\t\t\t\t\t}\n\t\t\t\t} catch (_) {}\n\t\t\t}\n\t\t\tconsole.error(`ERROR: ${error.stack}${extraMsg}`);\n\t\t} else if (typeof error === \"object\") {\n\t\t\tconsole.error(\n\t\t\t\t`ERROR: Unknown exception object\\n${JSON.stringify(error, undefined, 2)}`,\n\t\t\t);\n\t\t} else {\n\t\t\tconsole.error(`ERROR: ${error}`);\n\t\t}\n\t})\n\t.then(() => process.exit(0));\n"]}
1
+ {"version":3,"file":"fluidFetch.js","sourceRoot":"","sources":["../src/fluidFetch.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 fs from \"fs\";\nimport util from \"util\";\nimport { isOdspHostname, IOdspDriveItem } from \"@fluidframework/odsp-doclib-utils/internal\";\nimport { paramSaveDir, paramURL, parseArguments } from \"./fluidFetchArgs\";\nimport { connectionInfo, fluidFetchInit } from \"./fluidFetchInit\";\nimport { fluidFetchMessages } from \"./fluidFetchMessages\";\nimport { getSharepointFiles, getSingleSharePointFile } from \"./fluidFetchSharePoint\";\nimport { fluidFetchSnapshot } from \"./fluidFetchSnapshot\";\n\nasync function fluidFetchOneFile(urlStr: string, name?: string) {\n\tconst documentService = await fluidFetchInit(urlStr);\n\tconst saveDir =\n\t\tparamSaveDir !== undefined\n\t\t\t? name !== undefined\n\t\t\t\t? `${paramSaveDir}/${name}`\n\t\t\t\t: paramSaveDir\n\t\t\t: undefined;\n\tif (saveDir !== undefined) {\n\t\tconst mkdir = util.promisify(fs.mkdir);\n\t\tconst writeFile = util.promisify(fs.writeFile);\n\t\tawait mkdir(saveDir, { recursive: true });\n\t\tconst info = {\n\t\t\tcreationDate: new Date().toString(),\n\t\t\tconnectionInfo,\n\t\t\turl: urlStr,\n\t\t};\n\t\tawait writeFile(`${saveDir}/info.json`, JSON.stringify(info, undefined, 2));\n\t}\n\n\tawait fluidFetchSnapshot(documentService, saveDir);\n\tawait fluidFetchMessages(documentService, saveDir);\n}\n\nasync function tryFluidFetchOneSharePointFile(server: string, driveItem: IOdspDriveItem) {\n\tconst { path, name, driveId, itemId } = driveItem;\n\tconsole.log(`File: ${path}/${name}`);\n\tawait fluidFetchOneFile(`https://${server}/_api/v2.1/drives/${driveId}/items/${itemId}`, name);\n}\n\nfunction getSharePointSpecificDriveItem(url: URL): { driveId: string; itemId: string } | undefined {\n\tif (url.searchParams.has(\"driveId\") && url.searchParams.has(\"itemId\")) {\n\t\treturn {\n\t\t\tdriveId: url.searchParams.get(\"driveId\") as string,\n\t\t\titemId: url.searchParams.get(\"itemId\") as string,\n\t\t};\n\t}\n}\n\nfunction getSharepointServerRelativePathFromURL(url: URL) {\n\tif (url.pathname.startsWith(\"/_api/v2.1/drives/\")) {\n\t\treturn undefined;\n\t}\n\n\tconst hostnameParts = url.hostname.split(\".\");\n\tconst suffix = hostnameParts[0].endsWith(\"-my\")\n\t\t? \"/_layouts/15/onedrive.aspx\"\n\t\t: \"/forms/allitems.aspx\";\n\n\tlet sitePath = url.pathname;\n\tif (url.searchParams.has(\"id\")) {\n\t\tsitePath = url.searchParams.get(\"id\") as string;\n\t} else if (url.searchParams.has(\"RootFolder\")) {\n\t\tsitePath = url.searchParams.get(\"RootFolder\") as string;\n\t} else if (url.pathname.toLowerCase().endsWith(suffix)) {\n\t\tsitePath = sitePath.substr(0, url.pathname.length - suffix.length);\n\t}\n\n\treturn decodeURI(sitePath);\n}\n\nasync function fluidFetchMain() {\n\tif (paramURL === undefined) {\n\t\treturn;\n\t}\n\n\tconst url = new URL(paramURL);\n\tconst server = url.hostname;\n\tif (isOdspHostname(server)) {\n\t\t// See if the url already has the specific item\n\t\tconst driveItem = getSharePointSpecificDriveItem(url);\n\t\tif (driveItem) {\n\t\t\tconst file = await getSingleSharePointFile(server, driveItem.driveId, driveItem.itemId);\n\t\t\tawait tryFluidFetchOneSharePointFile(server, file);\n\t\t\treturn;\n\t\t}\n\n\t\t// See if the url given represent a sharepoint directory\n\t\tconst serverRelativePath = getSharepointServerRelativePathFromURL(url);\n\t\tif (serverRelativePath !== undefined) {\n\t\t\tconst files = await getSharepointFiles(server, serverRelativePath, false);\n\t\t\tfor (const file of files) {\n\t\t\t\tif (file.name.endsWith(\".b\") || file.name.endsWith(\".fluid\")) {\n\t\t\t\t\tawait tryFluidFetchOneSharePointFile(server, file);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t}\n\n\treturn fluidFetchOneFile(paramURL);\n}\n\nparseArguments();\n\n// eslint-disable-next-line @typescript-eslint/no-floating-promises\nfluidFetchMain()\n\t.catch((error: Error) => {\n\t\tif (error instanceof Error) {\n\t\t\tlet extraMsg = \"\";\n\t\t\tfor (const key of Object.keys(error)) {\n\t\t\t\t// error[key] might have circular structure\n\t\t\t\ttry {\n\t\t\t\t\tif (key !== \"message\" && key !== \"stack\") {\n\t\t\t\t\t\textraMsg += `\\n${key}: ${JSON.stringify(error[key], undefined, 2)}`;\n\t\t\t\t\t}\n\t\t\t\t} catch (_) {}\n\t\t\t}\n\t\t\tconsole.error(`ERROR: ${error.stack}${extraMsg}`);\n\t\t} else if (typeof error === \"object\") {\n\t\t\tconsole.error(\n\t\t\t\t`ERROR: Unknown exception object\\n${JSON.stringify(error, undefined, 2)}`,\n\t\t\t);\n\t\t} else {\n\t\t\tconsole.error(`ERROR: ${error}`);\n\t\t}\n\t})\n\t.then(() => process.exit(0));\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"fluidFetchArgs.d.ts","sourceRoot":"","sources":["../src/fluidFetchArgs.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,eAAO,IAAI,YAAY,SAAQ,CAAC;AAChC,eAAO,IAAI,gBAAgB,SAAQ,CAAC;AACpC,eAAO,IAAI,iBAAiB,SAAQ,CAAC;AACrC,eAAO,IAAI,iBAAiB,SAAQ,CAAC;AACrC,eAAO,IAAI,oBAAoB,SAAQ,CAAC;AACxC,eAAO,IAAI,SAAS,SAAQ,CAAC;AAC7B,eAAO,IAAI,yBAAyB,EAAE,MAAM,GAAG,SAAS,CAAC;AACzD,eAAO,IAAI,wBAAwB,QAAK,CAAC;AACzC,eAAO,IAAI,qBAAqB,SAAQ,CAAC;AAKzC,wBAAgB,mBAAmB,YAIlC;AAED,eAAO,IAAI,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;AAC5C,eAAO,MAAM,iBAAiB,aAAoB,CAAC;AAEnD,eAAO,IAAI,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;AACxC,eAAO,IAAI,QAAQ,EAAE,MAAM,CAAC;AAE5B,eAAO,IAAI,kBAAkB,SAAQ,CAAC;AAEtC,eAAO,IAAI,aAAa,SAAQ,CAAC;AAkCjC,wBAAgB,YAAY,CAAC,MAAM,EAAE;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,SAAS,CAAC,EAAE,OAAO,CAAC;CACpB,QAQA;AAED,wBAAgB,cAAc,SA+E7B"}
1
+ {"version":3,"file":"fluidFetchArgs.d.ts","sourceRoot":"","sources":["../src/fluidFetchArgs.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,eAAO,IAAI,YAAY,SAAQ,CAAC;AAChC,eAAO,IAAI,gBAAgB,SAAQ,CAAC;AACpC,eAAO,IAAI,iBAAiB,SAAQ,CAAC;AACrC,eAAO,IAAI,iBAAiB,SAAQ,CAAC;AACrC,eAAO,IAAI,oBAAoB,SAAQ,CAAC;AACxC,eAAO,IAAI,SAAS,SAAQ,CAAC;AAC7B,eAAO,IAAI,yBAAyB,EAAE,MAAM,GAAG,SAAS,CAAC;AACzD,eAAO,IAAI,wBAAwB,QAAK,CAAC;AACzC,eAAO,IAAI,qBAAqB,SAAQ,CAAC;AAKzC,wBAAgB,mBAAmB,YAIlC;AAED,eAAO,IAAI,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;AAC5C,eAAO,MAAM,iBAAiB,aAAoB,CAAC;AAEnD,eAAO,IAAI,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;AACxC,eAAO,IAAI,QAAQ,EAAE,MAAM,CAAC;AAE5B,eAAO,IAAI,kBAAkB,SAAQ,CAAC;AAEtC,eAAO,IAAI,aAAa,SAAQ,CAAC;AAkCjC,wBAAgB,YAAY,CAAC,MAAM,EAAE;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,SAAS,CAAC,EAAE,OAAO,CAAC;CACpB,QAQA;AAED,wBAAgB,cAAc,SA+E7B"}
@@ -9,7 +9,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
10
  exports.parseArguments = exports.setArguments = exports.localDataOnly = exports.connectToWebSocket = exports.paramJWT = exports.paramURL = exports.messageTypeFilter = exports.paramSaveDir = exports.getForceTokenReauth = exports.paramActualFormatting = exports.paramNumSnapshotVersions = exports.paramSnapshotVersionIndex = exports.overWrite = exports.dumpSnapshotVersions = exports.dumpSnapshotTrees = exports.dumpSnapshotStats = exports.dumpMessageStats = exports.dumpMessages = void 0;
11
11
  const fs_1 = __importDefault(require("fs"));
12
- const url_1 = require("url");
13
12
  exports.dumpMessages = false;
14
13
  exports.dumpMessageStats = false;
15
14
  exports.dumpSnapshotStats = false;
@@ -128,7 +127,7 @@ function parseArguments() {
128
127
  break;
129
128
  default:
130
129
  try {
131
- const url = new url_1.URL(arg);
130
+ const url = new URL(arg);
132
131
  if (url.protocol === "https:") {
133
132
  exports.paramURL = arg;
134
133
  break;
@@ -1 +1 @@
1
- {"version":3,"file":"fluidFetchArgs.js","sourceRoot":"","sources":["../src/fluidFetchArgs.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 fs from \"fs\";\nimport { URL } from \"url\";\n\nexport let dumpMessages = false;\nexport let dumpMessageStats = false;\nexport let dumpSnapshotStats = false;\nexport let dumpSnapshotTrees = false;\nexport let dumpSnapshotVersions = false;\nexport let overWrite = false;\nexport let paramSnapshotVersionIndex: number | undefined;\nexport let paramNumSnapshotVersions = 10;\nexport let paramActualFormatting = false;\n\nlet paramForceTokenReauth = false;\n\n// Only return true once, to reauth on first call.\nexport function getForceTokenReauth() {\n\tconst result = paramForceTokenReauth;\n\tparamForceTokenReauth = false;\n\treturn result;\n}\n\nexport let paramSaveDir: string | undefined;\nexport const messageTypeFilter = new Set<string>();\n\nexport let paramURL: string | undefined;\nexport let paramJWT: string;\n\nexport let connectToWebSocket = false;\n\nexport let localDataOnly = false;\n\nconst optionsArray = [\n\t[\"--dump:rawmessage\", \"dump all messages\"],\n\t[\"--dump:snapshotVersion\", \"dump a list of snapshot version\"],\n\t[\"--dump:snapshotTree\", \"dump the snapshot trees\"],\n\t[\"--forceTokenReauth\", \"Force reauthorize token (SPO only)\"],\n\t[\"--stat:message\", \"show message type, channel type, data type statistics\"],\n\t[\"--stat:snapshot\", \"show a table of snapshot path and blob size\"],\n\t[\"--stat\", \"Show both messages & snapshot stats\"],\n\t[\"--filter:messageType <type>\", \"filter message by <type>\"],\n\t[\"--jwt <token>\", \"token to be used for routerlicious URLs\"],\n\t[\"--numSnapshotVersions <number>\", \"Number of versions to load (default:10)\"],\n\t[\n\t\t\"--actualPayload\",\n\t\t\"Do not format json payloads nicely, preserve actual bytes / formatting in storage\",\n\t],\n\t[\"--saveDir <outdir>\", \"Save data of the snapshots and messages\"],\n\t[\"--snapshotVersionIndex <number>\", \"Index of the version to dump\"],\n\t[\"--websocket\", \"Connect to web socket to download initial messages\"],\n\t[\"--local\", \"Do not connect to storage, use earlier downloaded data. Requires --saveDir.\"],\n];\n\nfunction printUsage() {\n\tconsole.log(\"Usage: fluid-fetch [options] URL\");\n\tconsole.log(\"URL: <ODSP URL>|<Routerlicious URL>\");\n\tconsole.log(\"Options:\");\n\tfor (const i of optionsArray) {\n\t\tconsole.log(` ${i[0].padEnd(32)}: ${i[1]}`);\n\t}\n}\n\n// Can be used in unit test to pass in customized argument values\n// More argument options can be added when needed\nexport function setArguments(values: {\n\tsaveDir: string;\n\tparamURL: string;\n\tdumpMessages?: boolean;\n\tdumpMessageStats?: boolean;\n\tdumpSnapshotStats?: boolean;\n\tdumpSnapshotTrees?: boolean;\n\toverWrite?: boolean;\n}) {\n\tparamSaveDir = values.saveDir;\n\tparamURL = values.paramURL;\n\tdumpMessages = values.dumpMessages ?? dumpMessages;\n\tdumpMessageStats = values.dumpMessageStats ?? dumpMessageStats;\n\tdumpSnapshotStats = values.dumpSnapshotStats ?? dumpSnapshotStats;\n\tdumpSnapshotTrees = values.dumpSnapshotTrees ?? dumpSnapshotTrees;\n\toverWrite = values.overWrite ?? overWrite;\n}\n\nexport function parseArguments() {\n\tfor (let i = 2; i < process.argv.length; i++) {\n\t\tconst arg = process.argv[i];\n\t\tswitch (arg) {\n\t\t\tcase \"--dump:rawmessage\":\n\t\t\t\tdumpMessages = true;\n\t\t\t\tbreak;\n\t\t\tcase \"--dump:rawmessage:overwrite\":\n\t\t\t\tdumpMessages = true;\n\t\t\t\toverWrite = true;\n\t\t\t\tbreak;\n\t\t\tcase \"--stat:message\":\n\t\t\t\tdumpMessageStats = true;\n\t\t\t\tbreak;\n\t\t\tcase \"--stat\":\n\t\t\t\tdumpMessageStats = true;\n\t\t\t\tdumpSnapshotStats = true;\n\t\t\t\tbreak;\n\t\t\tcase \"--filter:messageType\":\n\t\t\t\tmessageTypeFilter.add(parseStrArg(i++, \"type name for messageType filter\"));\n\t\t\t\tbreak;\n\t\t\tcase \"--stat:snapshot\":\n\t\t\t\tdumpSnapshotStats = true;\n\t\t\t\tbreak;\n\t\t\tcase \"--dump:snapshotVersion\":\n\t\t\t\tdumpSnapshotVersions = true;\n\t\t\t\tbreak;\n\t\t\tcase \"--dump:snapshotTree\":\n\t\t\t\tdumpSnapshotTrees = true;\n\t\t\t\tbreak;\n\t\t\tcase \"--help\":\n\t\t\t\tprintUsage();\n\t\t\t\tprocess.exit(0);\n\t\t\tcase \"--jwt\":\n\t\t\t\tparamJWT = parseStrArg(i++, \"jwt token\");\n\t\t\t\tbreak;\n\t\t\tcase \"--forceTokenReauth\":\n\t\t\t\tparamForceTokenReauth = true;\n\t\t\t\tbreak;\n\t\t\tcase \"--snapshotVersionIndex\":\n\t\t\t\tparamSnapshotVersionIndex = parseIntArg(i++, \"version index\", true);\n\t\t\t\tbreak;\n\t\t\tcase \"--numSnapshotVersions\":\n\t\t\t\tparamNumSnapshotVersions = parseIntArg(i++, \"number of versions\", false);\n\t\t\t\tbreak;\n\t\t\tcase \"--actualPayload\":\n\t\t\t\tparamActualFormatting = true;\n\t\t\t\tbreak;\n\t\t\tcase \"--saveDir\":\n\t\t\t\tparamSaveDir = parseStrArg(i++, \"save data path\");\n\t\t\t\tbreak;\n\t\t\tcase \"--websocket\":\n\t\t\t\tconnectToWebSocket = true;\n\t\t\t\tbreak;\n\t\t\tcase \"--local\":\n\t\t\t\tlocalDataOnly = true;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\ttry {\n\t\t\t\t\tconst url = new URL(arg);\n\t\t\t\t\tif (url.protocol === \"https:\") {\n\t\t\t\t\t\tparamURL = arg;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif (url.protocol === \"http:\" && url.hostname === \"localhost\") {\n\t\t\t\t\t\tparamURL = arg;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {\n\t\t\t\t\tconsole.error(e);\n\t\t\t\t}\n\n\t\t\t\tconsole.error(`ERROR: Invalid argument ${arg}`);\n\t\t\t\tprintUsage();\n\t\t\t\tprocess.exit(-1);\n\t\t\t\tbreak;\n\t\t}\n\t}\n\tcheckArgs();\n}\n\nfunction parseStrArg(i: number, name: string) {\n\tif (i + 1 >= process.argv.length) {\n\t\tconsole.error(`ERROR: Missing ${name}`);\n\t\tprintUsage();\n\t\tprocess.exit(-1);\n\t}\n\treturn process.argv[i + 1];\n}\nfunction parseIntArg(i: number, name: string, allowZero: boolean) {\n\tif (i + 1 >= process.argv.length) {\n\t\tconsole.error(`ERROR: Missing ${name}`);\n\t\tprintUsage();\n\t\tprocess.exit(-1);\n\t}\n\tconst numStr = process.argv[i + 1];\n\tconst paramNumber = parseInt(numStr, 10);\n\tif (isNaN(paramNumber) || (allowZero ? paramNumber < 0 : paramNumber <= 0)) {\n\t\tconsole.error(`ERROR: Invalid ${name} ${numStr}`);\n\t\tprintUsage();\n\t\tprocess.exit(-1);\n\t}\n\treturn paramNumber;\n}\n\nfunction checkArgs() {\n\tif (paramSnapshotVersionIndex !== undefined) {\n\t\tparamNumSnapshotVersions = Math.max(\n\t\t\tparamSnapshotVersionIndex + 1,\n\t\t\tparamNumSnapshotVersions,\n\t\t);\n\t}\n\n\tif (paramURL === undefined) {\n\t\tif (paramSaveDir !== undefined) {\n\t\t\tconst file = `${paramSaveDir}/info.json`;\n\t\t\tif (fs.existsSync(file)) {\n\t\t\t\tconst info = JSON.parse(fs.readFileSync(file, { encoding: \"utf-8\" }));\n\t\t\t\tparamURL = info.url;\n\t\t\t} else {\n\t\t\t\tconsole.log(`Can't find file ${file}`);\n\t\t\t}\n\t\t}\n\n\t\tif (paramURL === undefined) {\n\t\t\tconsole.error(\"ERROR: Missing URL\");\n\t\t\tprintUsage();\n\t\t\tprocess.exit(-1);\n\t\t}\n\t}\n}\n"]}
1
+ {"version":3,"file":"fluidFetchArgs.js","sourceRoot":"","sources":["../src/fluidFetchArgs.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 fs from \"fs\";\n\nexport let dumpMessages = false;\nexport let dumpMessageStats = false;\nexport let dumpSnapshotStats = false;\nexport let dumpSnapshotTrees = false;\nexport let dumpSnapshotVersions = false;\nexport let overWrite = false;\nexport let paramSnapshotVersionIndex: number | undefined;\nexport let paramNumSnapshotVersions = 10;\nexport let paramActualFormatting = false;\n\nlet paramForceTokenReauth = false;\n\n// Only return true once, to reauth on first call.\nexport function getForceTokenReauth() {\n\tconst result = paramForceTokenReauth;\n\tparamForceTokenReauth = false;\n\treturn result;\n}\n\nexport let paramSaveDir: string | undefined;\nexport const messageTypeFilter = new Set<string>();\n\nexport let paramURL: string | undefined;\nexport let paramJWT: string;\n\nexport let connectToWebSocket = false;\n\nexport let localDataOnly = false;\n\nconst optionsArray = [\n\t[\"--dump:rawmessage\", \"dump all messages\"],\n\t[\"--dump:snapshotVersion\", \"dump a list of snapshot version\"],\n\t[\"--dump:snapshotTree\", \"dump the snapshot trees\"],\n\t[\"--forceTokenReauth\", \"Force reauthorize token (SPO only)\"],\n\t[\"--stat:message\", \"show message type, channel type, data type statistics\"],\n\t[\"--stat:snapshot\", \"show a table of snapshot path and blob size\"],\n\t[\"--stat\", \"Show both messages & snapshot stats\"],\n\t[\"--filter:messageType <type>\", \"filter message by <type>\"],\n\t[\"--jwt <token>\", \"token to be used for routerlicious URLs\"],\n\t[\"--numSnapshotVersions <number>\", \"Number of versions to load (default:10)\"],\n\t[\n\t\t\"--actualPayload\",\n\t\t\"Do not format json payloads nicely, preserve actual bytes / formatting in storage\",\n\t],\n\t[\"--saveDir <outdir>\", \"Save data of the snapshots and messages\"],\n\t[\"--snapshotVersionIndex <number>\", \"Index of the version to dump\"],\n\t[\"--websocket\", \"Connect to web socket to download initial messages\"],\n\t[\"--local\", \"Do not connect to storage, use earlier downloaded data. Requires --saveDir.\"],\n];\n\nfunction printUsage() {\n\tconsole.log(\"Usage: fluid-fetch [options] URL\");\n\tconsole.log(\"URL: <ODSP URL>|<Routerlicious URL>\");\n\tconsole.log(\"Options:\");\n\tfor (const i of optionsArray) {\n\t\tconsole.log(` ${i[0].padEnd(32)}: ${i[1]}`);\n\t}\n}\n\n// Can be used in unit test to pass in customized argument values\n// More argument options can be added when needed\nexport function setArguments(values: {\n\tsaveDir: string;\n\tparamURL: string;\n\tdumpMessages?: boolean;\n\tdumpMessageStats?: boolean;\n\tdumpSnapshotStats?: boolean;\n\tdumpSnapshotTrees?: boolean;\n\toverWrite?: boolean;\n}) {\n\tparamSaveDir = values.saveDir;\n\tparamURL = values.paramURL;\n\tdumpMessages = values.dumpMessages ?? dumpMessages;\n\tdumpMessageStats = values.dumpMessageStats ?? dumpMessageStats;\n\tdumpSnapshotStats = values.dumpSnapshotStats ?? dumpSnapshotStats;\n\tdumpSnapshotTrees = values.dumpSnapshotTrees ?? dumpSnapshotTrees;\n\toverWrite = values.overWrite ?? overWrite;\n}\n\nexport function parseArguments() {\n\tfor (let i = 2; i < process.argv.length; i++) {\n\t\tconst arg = process.argv[i];\n\t\tswitch (arg) {\n\t\t\tcase \"--dump:rawmessage\":\n\t\t\t\tdumpMessages = true;\n\t\t\t\tbreak;\n\t\t\tcase \"--dump:rawmessage:overwrite\":\n\t\t\t\tdumpMessages = true;\n\t\t\t\toverWrite = true;\n\t\t\t\tbreak;\n\t\t\tcase \"--stat:message\":\n\t\t\t\tdumpMessageStats = true;\n\t\t\t\tbreak;\n\t\t\tcase \"--stat\":\n\t\t\t\tdumpMessageStats = true;\n\t\t\t\tdumpSnapshotStats = true;\n\t\t\t\tbreak;\n\t\t\tcase \"--filter:messageType\":\n\t\t\t\tmessageTypeFilter.add(parseStrArg(i++, \"type name for messageType filter\"));\n\t\t\t\tbreak;\n\t\t\tcase \"--stat:snapshot\":\n\t\t\t\tdumpSnapshotStats = true;\n\t\t\t\tbreak;\n\t\t\tcase \"--dump:snapshotVersion\":\n\t\t\t\tdumpSnapshotVersions = true;\n\t\t\t\tbreak;\n\t\t\tcase \"--dump:snapshotTree\":\n\t\t\t\tdumpSnapshotTrees = true;\n\t\t\t\tbreak;\n\t\t\tcase \"--help\":\n\t\t\t\tprintUsage();\n\t\t\t\tprocess.exit(0);\n\t\t\tcase \"--jwt\":\n\t\t\t\tparamJWT = parseStrArg(i++, \"jwt token\");\n\t\t\t\tbreak;\n\t\t\tcase \"--forceTokenReauth\":\n\t\t\t\tparamForceTokenReauth = true;\n\t\t\t\tbreak;\n\t\t\tcase \"--snapshotVersionIndex\":\n\t\t\t\tparamSnapshotVersionIndex = parseIntArg(i++, \"version index\", true);\n\t\t\t\tbreak;\n\t\t\tcase \"--numSnapshotVersions\":\n\t\t\t\tparamNumSnapshotVersions = parseIntArg(i++, \"number of versions\", false);\n\t\t\t\tbreak;\n\t\t\tcase \"--actualPayload\":\n\t\t\t\tparamActualFormatting = true;\n\t\t\t\tbreak;\n\t\t\tcase \"--saveDir\":\n\t\t\t\tparamSaveDir = parseStrArg(i++, \"save data path\");\n\t\t\t\tbreak;\n\t\t\tcase \"--websocket\":\n\t\t\t\tconnectToWebSocket = true;\n\t\t\t\tbreak;\n\t\t\tcase \"--local\":\n\t\t\t\tlocalDataOnly = true;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\ttry {\n\t\t\t\t\tconst url = new URL(arg);\n\t\t\t\t\tif (url.protocol === \"https:\") {\n\t\t\t\t\t\tparamURL = arg;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif (url.protocol === \"http:\" && url.hostname === \"localhost\") {\n\t\t\t\t\t\tparamURL = arg;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {\n\t\t\t\t\tconsole.error(e);\n\t\t\t\t}\n\n\t\t\t\tconsole.error(`ERROR: Invalid argument ${arg}`);\n\t\t\t\tprintUsage();\n\t\t\t\tprocess.exit(-1);\n\t\t\t\tbreak;\n\t\t}\n\t}\n\tcheckArgs();\n}\n\nfunction parseStrArg(i: number, name: string) {\n\tif (i + 1 >= process.argv.length) {\n\t\tconsole.error(`ERROR: Missing ${name}`);\n\t\tprintUsage();\n\t\tprocess.exit(-1);\n\t}\n\treturn process.argv[i + 1];\n}\nfunction parseIntArg(i: number, name: string, allowZero: boolean) {\n\tif (i + 1 >= process.argv.length) {\n\t\tconsole.error(`ERROR: Missing ${name}`);\n\t\tprintUsage();\n\t\tprocess.exit(-1);\n\t}\n\tconst numStr = process.argv[i + 1];\n\tconst paramNumber = parseInt(numStr, 10);\n\tif (isNaN(paramNumber) || (allowZero ? paramNumber < 0 : paramNumber <= 0)) {\n\t\tconsole.error(`ERROR: Invalid ${name} ${numStr}`);\n\t\tprintUsage();\n\t\tprocess.exit(-1);\n\t}\n\treturn paramNumber;\n}\n\nfunction checkArgs() {\n\tif (paramSnapshotVersionIndex !== undefined) {\n\t\tparamNumSnapshotVersions = Math.max(\n\t\t\tparamSnapshotVersionIndex + 1,\n\t\t\tparamNumSnapshotVersions,\n\t\t);\n\t}\n\n\tif (paramURL === undefined) {\n\t\tif (paramSaveDir !== undefined) {\n\t\t\tconst file = `${paramSaveDir}/info.json`;\n\t\t\tif (fs.existsSync(file)) {\n\t\t\t\tconst info = JSON.parse(fs.readFileSync(file, { encoding: \"utf-8\" }));\n\t\t\t\tparamURL = info.url;\n\t\t\t} else {\n\t\t\t\tconsole.log(`Can't find file ${file}`);\n\t\t\t}\n\t\t}\n\n\t\tif (paramURL === undefined) {\n\t\t\tconsole.error(\"ERROR: Missing URL\");\n\t\t\tprintUsage();\n\t\t\tprocess.exit(-1);\n\t\t}\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"fluidFetchInit.d.ts","sourceRoot":"","sources":["../src/fluidFetchInit.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAmBH,eAAO,IAAI,gBAAgB,EAAE,MAAW,CAAC;AACzC,eAAO,IAAI,cAAc,EAAE,GAAG,CAAC;AAiI/B,wBAAsB,cAAc,CAAC,MAAM,EAAE,MAAM,sFAkBlD"}
1
+ {"version":3,"file":"fluidFetchInit.d.ts","sourceRoot":"","sources":["../src/fluidFetchInit.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAiBH,eAAO,IAAI,gBAAgB,EAAE,MAAW,CAAC;AACzC,eAAO,IAAI,cAAc,EAAE,GAAG,CAAC;AAiI/B,wBAAsB,cAAc,CAAC,MAAM,EAAE,MAAM,sFAkBlD"}
@@ -28,8 +28,6 @@ var __importStar = (this && this.__importStar) || function (mod) {
28
28
  };
29
29
  Object.defineProperty(exports, "__esModule", { value: true });
30
30
  exports.fluidFetchInit = exports.connectionInfo = exports.latestVersionsId = void 0;
31
- const url_1 = require("url");
32
- const fluidapp_odsp_urlresolver_1 = require("@fluid-tools/fluidapp-odsp-urlresolver");
33
31
  const odsp = __importStar(require("@fluidframework/odsp-driver"));
34
32
  const odsp_urlresolver_1 = require("@fluidframework/odsp-urlresolver");
35
33
  const r11s = __importStar(require("@fluidframework/routerlicious-driver"));
@@ -109,7 +107,7 @@ async function resolveUrl(url) {
109
107
  serviceType: "odsp",
110
108
  };
111
109
  }
112
- maybeResolvedUrl = await new fluidapp_odsp_urlresolver_1.FluidAppOdspUrlResolver().resolve(request);
110
+ maybeResolvedUrl = await new odsp_urlresolver_1.FluidAppOdspUrlResolver().resolve(request);
113
111
  if (maybeResolvedUrl !== undefined) {
114
112
  return {
115
113
  resolvedUrl: maybeResolvedUrl,
@@ -133,10 +131,10 @@ async function fluidFetchInit(urlStr) {
133
131
  const fluidResolvedUrl = resolvedInfo.resolvedUrl;
134
132
  if (resolvedInfo.serviceType === "odsp") {
135
133
  const odspResolvedUrl = fluidResolvedUrl;
136
- return initializeODSPCore(odspResolvedUrl, new url_1.URL(odspResolvedUrl.siteUrl).host, (0, tool_utils_1.getMicrosoftConfiguration)());
134
+ return initializeODSPCore(odspResolvedUrl, new URL(odspResolvedUrl.siteUrl).host, (0, tool_utils_1.getMicrosoftConfiguration)());
137
135
  }
138
136
  else if (resolvedInfo.serviceType === "r11s") {
139
- const url = new url_1.URL(urlStr);
137
+ const url = new URL(urlStr);
140
138
  const server = url.hostname.toLowerCase();
141
139
  return initializeR11s(server, url.pathname, fluidResolvedUrl);
142
140
  }
@@ -1 +1 @@
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 { URL } from \"url\";\nimport { IRequest } from \"@fluidframework/core-interfaces\";\nimport { IResolvedUrl } from \"@fluidframework/driver-definitions\";\nimport { FluidAppOdspUrlResolver } from \"@fluid-tools/fluidapp-odsp-urlresolver\";\nimport { IClientConfig, IOdspAuthRequestInfo } from \"@fluidframework/odsp-doclib-utils\";\nimport * as odsp from \"@fluidframework/odsp-driver\";\nimport {\n\tIOdspResolvedUrl,\n\tOdspResourceTokenFetchOptions,\n} from \"@fluidframework/odsp-driver-definitions\";\nimport { OdspUrlResolver } from \"@fluidframework/odsp-urlresolver\";\nimport * as r11s from \"@fluidframework/routerlicious-driver\";\nimport { RouterliciousUrlResolver } from \"@fluidframework/routerlicious-urlresolver\";\nimport { getMicrosoftConfiguration } from \"@fluidframework/tool-utils\";\nimport { localDataOnly, paramJWT } from \"./fluidFetchArgs\";\nimport { resolveWrapper } from \"./fluidFetchSharePoint\";\n\nexport let latestVersionsId: string = \"\";\nexport let connectionInfo: any;\n\nasync function initializeODSPCore(\n\todspResolvedUrl: IOdspResolvedUrl,\n\tserver: string,\n\tclientConfig: IClientConfig,\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) => Promise.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(server: string, pathname: string, r11sResolvedUrl: IResolvedUrl) {\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(tokenProvider);\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\tgetMicrosoftConfiguration(),\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"]}
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\";\nimport { IClientConfig, IOdspAuthRequestInfo } from \"@fluidframework/odsp-doclib-utils/internal\";\nimport * as odsp from \"@fluidframework/odsp-driver\";\nimport {\n\tIOdspResolvedUrl,\n\tOdspResourceTokenFetchOptions,\n} from \"@fluidframework/odsp-driver-definitions\";\nimport { FluidAppOdspUrlResolver, OdspUrlResolver } from \"@fluidframework/odsp-urlresolver\";\nimport * as r11s from \"@fluidframework/routerlicious-driver\";\nimport { RouterliciousUrlResolver } from \"@fluidframework/routerlicious-urlresolver\";\nimport { getMicrosoftConfiguration } from \"@fluidframework/tool-utils\";\nimport { localDataOnly, paramJWT } from \"./fluidFetchArgs\";\nimport { resolveWrapper } from \"./fluidFetchSharePoint\";\n\nexport let latestVersionsId: string = \"\";\nexport let connectionInfo: any;\n\nasync function initializeODSPCore(\n\todspResolvedUrl: IOdspResolvedUrl,\n\tserver: string,\n\tclientConfig: IClientConfig,\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) => Promise.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(server: string, pathname: string, r11sResolvedUrl: IResolvedUrl) {\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(tokenProvider);\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\tgetMicrosoftConfiguration(),\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"]}
@@ -2,7 +2,7 @@
2
2
  * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
3
  * Licensed under the MIT License.
4
4
  */
5
- import { IClientConfig, IOdspDriveItem, IOdspAuthRequestInfo } from "@fluidframework/odsp-doclib-utils";
5
+ import { IClientConfig, IOdspDriveItem, IOdspAuthRequestInfo } from "@fluidframework/odsp-doclib-utils/internal";
6
6
  export declare function resolveWrapper<T>(callback: (authRequestInfo: IOdspAuthRequestInfo) => Promise<T>, server: string, clientConfig: IClientConfig, forceTokenReauth?: boolean, forToken?: boolean): Promise<T>;
7
7
  export declare function getSharepointFiles(server: string, serverRelativePath: string, recurse: boolean): Promise<IOdspDriveItem[]>;
8
8
  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;AAIH,OAAO,EAIN,aAAa,EACb,cAAc,EAEd,oBAAoB,EACpB,MAAM,mCAAmC,CAAC;AAU3C,wBAAsB,cAAc,CAAC,CAAC,EACrC,QAAQ,EAAE,CAAC,eAAe,EAAE,oBAAoB,KAAK,OAAO,CAAC,CAAC,CAAC,EAC/D,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,aAAa,EAC3B,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,6BAsChB;AAED,wBAAsB,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,2BASxF"}
1
+ {"version":3,"file":"fluidFetchSharePoint.d.ts","sourceRoot":"","sources":["../src/fluidFetchSharePoint.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAIN,aAAa,EACb,cAAc,EAEd,oBAAoB,EACpB,MAAM,4CAA4C,CAAC;AAUpD,wBAAsB,cAAc,CAAC,CAAC,EACrC,QAAQ,EAAE,CAAC,eAAe,EAAE,oBAAoB,KAAK,OAAO,CAAC,CAAC,CAAC,EAC/D,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,aAAa,EAC3B,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,6BAsChB;AAED,wBAAsB,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,2BASxF"}
@@ -10,7 +10,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
10
10
  exports.getSingleSharePointFile = exports.getSharepointFiles = exports.resolveWrapper = void 0;
11
11
  const child_process_1 = __importDefault(require("child_process"));
12
12
  const driver_definitions_1 = require("@fluidframework/driver-definitions");
13
- const odsp_doclib_utils_1 = require("@fluidframework/odsp-doclib-utils");
13
+ const internal_1 = require("@fluidframework/odsp-doclib-utils/internal");
14
14
  const tool_utils_1 = require("@fluidframework/tool-utils");
15
15
  const fluidFetchArgs_1 = require("./fluidFetchArgs");
16
16
  async function resolveWrapper(callback, server, clientConfig, forceTokenReauth = false, forToken = false) {
@@ -23,7 +23,7 @@ async function resolveWrapper(callback, server, clientConfig, forceTokenReauth =
23
23
  const tokens = await odspTokenManager.getOdspTokens(server, clientConfig, tokenConfig, undefined /* forceRefresh */, forceTokenReauth || (0, fluidFetchArgs_1.getForceTokenReauth)());
24
24
  const result = await callback({
25
25
  accessToken: tokens.accessToken,
26
- refreshTokenFn: (0, odsp_doclib_utils_1.getOdspRefreshTokenFn)(server, clientConfig, tokens),
26
+ refreshTokenFn: (0, internal_1.getOdspRefreshTokenFn)(server, clientConfig, tokens),
27
27
  });
28
28
  // If this is used for getting a token, then refresh the cache with new token.
29
29
  if (forToken) {
@@ -48,12 +48,12 @@ exports.resolveWrapper = resolveWrapper;
48
48
  async function resolveDriveItemByServerRelativePath(server, serverRelativePath, clientConfig) {
49
49
  return resolveWrapper(
50
50
  // eslint-disable-next-line @typescript-eslint/promise-function-async
51
- (authRequestInfo) => (0, odsp_doclib_utils_1.getDriveItemByServerRelativePath)(server, serverRelativePath, authRequestInfo, false), server, clientConfig);
51
+ (authRequestInfo) => (0, internal_1.getDriveItemByServerRelativePath)(server, serverRelativePath, authRequestInfo, false), server, clientConfig);
52
52
  }
53
53
  async function resolveChildrenByDriveItem(server, folderDriveItem, clientConfig) {
54
54
  return resolveWrapper(
55
55
  // eslint-disable-next-line @typescript-eslint/promise-function-async
56
- (authRequestInfo) => (0, odsp_doclib_utils_1.getChildrenByDriveItem)(folderDriveItem, server, authRequestInfo), server, clientConfig);
56
+ (authRequestInfo) => (0, internal_1.getChildrenByDriveItem)(folderDriveItem, server, authRequestInfo), server, clientConfig);
57
57
  }
58
58
  async function getSharepointFiles(server, serverRelativePath, recurse) {
59
59
  const clientConfig = (0, tool_utils_1.getMicrosoftConfiguration)();
@@ -94,7 +94,7 @@ async function getSingleSharePointFile(server, drive, item) {
94
94
  const clientConfig = (0, tool_utils_1.getMicrosoftConfiguration)();
95
95
  return resolveWrapper(
96
96
  // eslint-disable-next-line @typescript-eslint/promise-function-async
97
- (authRequestInfo) => (0, odsp_doclib_utils_1.getDriveItemFromDriveAndItem)(server, drive, item, authRequestInfo), server, clientConfig);
97
+ (authRequestInfo) => (0, internal_1.getDriveItemFromDriveAndItem)(server, drive, item, authRequestInfo), server, clientConfig);
98
98
  }
99
99
  exports.getSingleSharePointFile = getSingleSharePointFile;
100
100
  const fluidFetchWebNavigator = (url) => {
@@ -1 +1 @@
1
- {"version":3,"file":"fluidFetchSharePoint.js","sourceRoot":"","sources":["../src/fluidFetchSharePoint.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;AAEH,kEAA0C;AAC1C,2EAAsE;AACtE,yEAQ2C;AAC3C,2DAMoC;AACpC,qDAAuD;AAEhD,KAAK,UAAU,cAAc,CACnC,QAA+D,EAC/D,MAAc,EACd,YAA2B,EAC3B,gBAAgB,GAAG,KAAK,EACxB,QAAQ,GAAG,KAAK;IAEhB,IAAI;QACH,MAAM,gBAAgB,GAAG,IAAI,6BAAgB,CAAC,4BAAe,CAAC,CAAC;QAC/D,MAAM,WAAW,GAAoB;YACpC,IAAI,EAAE,cAAc;YACpB,SAAS,EAAE,sBAAsB;SACjC,CAAC;QACF,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,aAAa,CAClD,MAAM,EACN,YAAY,EACZ,WAAW,EACX,SAAS,CAAC,kBAAkB,EAC5B,gBAAgB,IAAI,IAAA,oCAAmB,GAAE,CACzC,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC;YAC7B,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,cAAc,EAAE,IAAA,yCAAqB,EAAC,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC;SACnE,CAAC,CAAC;QACH,8EAA8E;QAC9E,IAAI,QAAQ,EAAE;YACb,MAAM,GAAG,GAA8B,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC;YAC/E,MAAM,gBAAgB,CAAC,iBAAiB,CAAC,GAAG,EAAE;gBAC7C,WAAW,EAAE,MAAuB;gBACpC,YAAY,EAAE,MAAM,CAAC,YAAY;aACjC,CAAC,CAAC;YACH,OAAO,MAAM,CAAC;SACd;QACD,OAAO,MAAM,CAAC;KACd;IAAC,OAAO,CAAM,EAAE;QAChB,IAAI,CAAC,CAAC,SAAS,KAAK,qCAAgB,CAAC,kBAAkB,IAAI,CAAC,gBAAgB,EAAE;YAC7E,UAAU;YACV,OAAO,cAAc,CAAI,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;SACzE;QACD,MAAM,CAAC,CAAC;KACR;AACF,CAAC;AA1CD,wCA0CC;AAED,KAAK,UAAU,oCAAoC,CAClD,MAAc,EACd,kBAA0B,EAC1B,YAA2B;IAE3B,OAAO,cAAc;IACpB,qEAAqE;IACrE,CAAC,eAAe,EAAE,EAAE,CACnB,IAAA,oDAAgC,EAAC,MAAM,EAAE,kBAAkB,EAAE,eAAe,EAAE,KAAK,CAAC,EACrF,MAAM,EACN,YAAY,CACZ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,0BAA0B,CACxC,MAAc,EACd,eAA+B,EAC/B,YAA2B;IAE3B,OAAO,cAAc;IACpB,qEAAqE;IACrE,CAAC,eAAe,EAAE,EAAE,CAAC,IAAA,0CAAsB,EAAC,eAAe,EAAE,MAAM,EAAE,eAAe,CAAC,EACrF,MAAM,EACN,YAAY,CACZ,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,kBAAkB,CACvC,MAAc,EACd,kBAA0B,EAC1B,OAAgB;IAEhB,MAAM,YAAY,GAAG,IAAA,sCAAyB,GAAE,CAAC;IAEjD,MAAM,QAAQ,GAAG,MAAM,oCAAoC,CAC1D,MAAM,EACN,kBAAkB,EAClB,YAAY,CACZ,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACtB,MAAM,aAAa,GAA+C,EAAE,CAAC;IACrE,MAAM,KAAK,GAAqB,EAAE,CAAC;IACnC,IAAI,QAAQ,CAAC,QAAQ,EAAE;QACtB,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;KACnE;SAAM;QACN,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KACrB;IAED,iDAAiD;IACjD,OAAO,IAAI,EAAE;QACZ,MAAM,UAAU,GAAG,aAAa,CAAC,KAAK,EAAE,CAAC;QACzC,IAAI,CAAC,UAAU,EAAE;YAChB,MAAM;SACN;QACD,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC;QACpC,MAAM,QAAQ,GAAG,MAAM,0BAA0B,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;QAChF,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE;YAC7B,MAAM,SAAS,GAAG,GAAG,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YAC1C,IAAI,KAAK,CAAC,QAAQ,EAAE;gBACnB,IAAI,OAAO,EAAE;oBACZ,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;iBACvD;aACD;iBAAM;gBACN,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAClB;SACD;KACD;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAzCD,gDAyCC;AAEM,KAAK,UAAU,uBAAuB,CAAC,MAAc,EAAE,KAAa,EAAE,IAAY;IACxF,MAAM,YAAY,GAAG,IAAA,sCAAyB,GAAE,CAAC;IAEjD,OAAO,cAAc;IACpB,qEAAqE;IACrE,CAAC,eAAe,EAAE,EAAE,CAAC,IAAA,gDAA4B,EAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,eAAe,CAAC,EACvF,MAAM,EACN,YAAY,CACZ,CAAC;AACH,CAAC;AATD,0DASC;AAED,MAAM,sBAAsB,GAAG,CAAC,GAAW,EAAE,EAAE;IAC9C,IAAI,OAAO,GAAG,+CAA+C,CAAC;IAC9D,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE;QACjC,uBAAa,CAAC,IAAI,CAAC,2BAA2B,GAAG,GAAG,CAAC,CAAC;QACtD,OAAO;YACN,kGAAkG,CAAC;KACpG;IACD,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,OAAO,GAAG,EAAE,CAAC,CAAC;AACrC,CAAC,CAAC","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\";\nimport { DriverErrorTypes } from \"@fluidframework/driver-definitions\";\nimport {\n\tgetChildrenByDriveItem,\n\tgetDriveItemByServerRelativePath,\n\tgetDriveItemFromDriveAndItem,\n\tIClientConfig,\n\tIOdspDriveItem,\n\tgetOdspRefreshTokenFn,\n\tIOdspAuthRequestInfo,\n} from \"@fluidframework/odsp-doclib-utils\";\nimport {\n\tgetMicrosoftConfiguration,\n\tOdspTokenManager,\n\todspTokensCache,\n\tOdspTokenConfig,\n\tIOdspTokenManagerCacheKey,\n} from \"@fluidframework/tool-utils\";\nimport { getForceTokenReauth } from \"./fluidFetchArgs\";\n\nexport async function resolveWrapper<T>(\n\tcallback: (authRequestInfo: IOdspAuthRequestInfo) => Promise<T>,\n\tserver: string,\n\tclientConfig: IClientConfig,\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: IClientConfig,\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: IClientConfig,\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 clientConfig = getMicrosoftConfiguration();\n\n\tconst fileInfo = await resolveDriveItemByServerRelativePath(\n\t\tserver,\n\t\tserverRelativePath,\n\t\tclientConfig,\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, clientConfig);\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\tconst clientConfig = getMicrosoftConfiguration();\n\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\tclientConfig,\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
+ {"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\";\nimport { DriverErrorTypes } from \"@fluidframework/driver-definitions\";\nimport {\n\tgetChildrenByDriveItem,\n\tgetDriveItemByServerRelativePath,\n\tgetDriveItemFromDriveAndItem,\n\tIClientConfig,\n\tIOdspDriveItem,\n\tgetOdspRefreshTokenFn,\n\tIOdspAuthRequestInfo,\n} from \"@fluidframework/odsp-doclib-utils/internal\";\nimport {\n\tgetMicrosoftConfiguration,\n\tOdspTokenManager,\n\todspTokensCache,\n\tOdspTokenConfig,\n\tIOdspTokenManagerCacheKey,\n} from \"@fluidframework/tool-utils\";\nimport { getForceTokenReauth } from \"./fluidFetchArgs\";\n\nexport async function resolveWrapper<T>(\n\tcallback: (authRequestInfo: IOdspAuthRequestInfo) => Promise<T>,\n\tserver: string,\n\tclientConfig: IClientConfig,\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: IClientConfig,\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: IClientConfig,\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 clientConfig = getMicrosoftConfiguration();\n\n\tconst fileInfo = await resolveDriveItemByServerRelativePath(\n\t\tserver,\n\t\tserverRelativePath,\n\t\tclientConfig,\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, clientConfig);\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\tconst clientConfig = getMicrosoftConfiguration();\n\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\tclientConfig,\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.0-rc.1.0.6",
3
+ "version": "2.0.0-rc.2.0.1",
4
4
  "description": "Console tool to fetch Fluid data from relay service",
5
5
  "homepage": "https://fluidframework.com",
6
6
  "repository": {
@@ -16,32 +16,31 @@
16
16
  "fluid-fetch": "bin/fluid-fetch"
17
17
  },
18
18
  "dependencies": {
19
- "@fluid-internal/client-utils": ">=2.0.0-rc.1.0.6 <2.0.0-rc.1.1.0",
20
- "@fluid-tools/fluidapp-odsp-urlresolver": ">=2.0.0-rc.1.0.6 <2.0.0-rc.1.1.0",
21
- "@fluidframework/container-runtime": ">=2.0.0-rc.1.0.6 <2.0.0-rc.1.1.0",
22
- "@fluidframework/core-interfaces": ">=2.0.0-rc.1.0.6 <2.0.0-rc.1.1.0",
23
- "@fluidframework/core-utils": ">=2.0.0-rc.1.0.6 <2.0.0-rc.1.1.0",
24
- "@fluidframework/datastore": ">=2.0.0-rc.1.0.6 <2.0.0-rc.1.1.0",
25
- "@fluidframework/driver-definitions": ">=2.0.0-rc.1.0.6 <2.0.0-rc.1.1.0",
26
- "@fluidframework/odsp-doclib-utils": ">=2.0.0-rc.1.0.6 <2.0.0-rc.1.1.0",
27
- "@fluidframework/odsp-driver": ">=2.0.0-rc.1.0.6 <2.0.0-rc.1.1.0",
28
- "@fluidframework/odsp-driver-definitions": ">=2.0.0-rc.1.0.6 <2.0.0-rc.1.1.0",
29
- "@fluidframework/odsp-urlresolver": ">=2.0.0-rc.1.0.6 <2.0.0-rc.1.1.0",
30
- "@fluidframework/protocol-definitions": "^3.1.0",
31
- "@fluidframework/routerlicious-driver": ">=2.0.0-rc.1.0.6 <2.0.0-rc.1.1.0",
32
- "@fluidframework/routerlicious-urlresolver": ">=2.0.0-rc.1.0.6 <2.0.0-rc.1.1.0",
33
- "@fluidframework/runtime-definitions": ">=2.0.0-rc.1.0.6 <2.0.0-rc.1.1.0",
34
- "@fluidframework/tool-utils": ">=2.0.0-rc.1.0.6 <2.0.0-rc.1.1.0"
19
+ "@fluid-internal/client-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0",
20
+ "@fluidframework/container-runtime": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0",
21
+ "@fluidframework/core-interfaces": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0",
22
+ "@fluidframework/core-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0",
23
+ "@fluidframework/datastore": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0",
24
+ "@fluidframework/driver-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0",
25
+ "@fluidframework/odsp-doclib-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0",
26
+ "@fluidframework/odsp-driver": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0",
27
+ "@fluidframework/odsp-driver-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0",
28
+ "@fluidframework/odsp-urlresolver": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0",
29
+ "@fluidframework/protocol-definitions": "^3.2.0",
30
+ "@fluidframework/routerlicious-driver": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0",
31
+ "@fluidframework/routerlicious-urlresolver": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0",
32
+ "@fluidframework/runtime-definitions": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0",
33
+ "@fluidframework/tool-utils": ">=2.0.0-rc.2.0.1 <2.0.0-rc.2.1.0"
35
34
  },
36
35
  "devDependencies": {
37
36
  "@arethetypeswrong/cli": "^0.13.3",
38
- "@fluid-tools/build-cli": "^0.29.0",
37
+ "@fluid-tools/build-cli": "^0.34.0",
39
38
  "@fluid-tools/fetch-tool-previous": "npm:@fluid-tools/fetch-tool@2.0.0-internal.8.0.0",
40
39
  "@fluidframework/build-common": "^2.0.3",
41
- "@fluidframework/build-tools": "^0.29.0",
42
- "@fluidframework/eslint-config-fluid": "^3.2.0",
40
+ "@fluidframework/build-tools": "^0.34.0",
41
+ "@fluidframework/eslint-config-fluid": "^4.0.0",
43
42
  "@types/node": "^18.19.0",
44
- "eslint": "~8.50.0",
43
+ "eslint": "~8.55.0",
45
44
  "prettier": "~3.0.3",
46
45
  "rimraf": "^4.4.0",
47
46
  "typescript": "~5.1.6"
package/src/fluidFetch.ts CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  import fs from "fs";
7
7
  import util from "util";
8
- import { isOdspHostname, IOdspDriveItem } from "@fluidframework/odsp-doclib-utils";
8
+ import { isOdspHostname, IOdspDriveItem } from "@fluidframework/odsp-doclib-utils/internal";
9
9
  import { paramSaveDir, paramURL, parseArguments } from "./fluidFetchArgs";
10
10
  import { connectionInfo, fluidFetchInit } from "./fluidFetchInit";
11
11
  import { fluidFetchMessages } from "./fluidFetchMessages";
@@ -4,7 +4,6 @@
4
4
  */
5
5
 
6
6
  import fs from "fs";
7
- import { URL } from "url";
8
7
 
9
8
  export let dumpMessages = false;
10
9
  export let dumpMessageStats = false;
@@ -3,17 +3,15 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import { URL } from "url";
7
6
  import { IRequest } from "@fluidframework/core-interfaces";
8
7
  import { IResolvedUrl } from "@fluidframework/driver-definitions";
9
- import { FluidAppOdspUrlResolver } from "@fluid-tools/fluidapp-odsp-urlresolver";
10
- import { IClientConfig, IOdspAuthRequestInfo } from "@fluidframework/odsp-doclib-utils";
8
+ import { IClientConfig, IOdspAuthRequestInfo } from "@fluidframework/odsp-doclib-utils/internal";
11
9
  import * as odsp from "@fluidframework/odsp-driver";
12
10
  import {
13
11
  IOdspResolvedUrl,
14
12
  OdspResourceTokenFetchOptions,
15
13
  } from "@fluidframework/odsp-driver-definitions";
16
- import { OdspUrlResolver } from "@fluidframework/odsp-urlresolver";
14
+ import { FluidAppOdspUrlResolver, OdspUrlResolver } from "@fluidframework/odsp-urlresolver";
17
15
  import * as r11s from "@fluidframework/routerlicious-driver";
18
16
  import { RouterliciousUrlResolver } from "@fluidframework/routerlicious-urlresolver";
19
17
  import { getMicrosoftConfiguration } from "@fluidframework/tool-utils";
@@ -13,7 +13,7 @@ import {
13
13
  IOdspDriveItem,
14
14
  getOdspRefreshTokenFn,
15
15
  IOdspAuthRequestInfo,
16
- } from "@fluidframework/odsp-doclib-utils";
16
+ } from "@fluidframework/odsp-doclib-utils/internal";
17
17
  import {
18
18
  getMicrosoftConfiguration,
19
19
  OdspTokenManager,
package/tsconfig.json CHANGED
@@ -1,10 +1,13 @@
1
1
  {
2
- "extends": "@fluidframework/build-common/ts-common-config.json",
2
+ "extends": [
3
+ "../../../common/build/build-common/tsconfig.base.json",
4
+ "../../../common/build/build-common/tsconfig.cjs.json",
5
+ ],
6
+ "include": ["src/**/*.ts"],
3
7
  "exclude": ["dist", "node_modules"],
4
8
  "compilerOptions": {
5
9
  "rootDir": "./src",
6
10
  "outDir": "./dist",
7
11
  "types": ["node"],
8
12
  },
9
- "include": ["src/**/*.ts"],
10
13
  }