@fluidframework/fluid-runner 2.0.0-dev.2.3.0.115467 → 2.0.0-dev.4.1.0.148229
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/.eslintrc.js +11 -13
- package/.mocharc.js +2 -2
- package/README.md +23 -10
- package/bin/fluid-runner +0 -0
- package/dist/codeLoaderBundle.d.ts +3 -2
- package/dist/codeLoaderBundle.d.ts.map +1 -1
- package/dist/codeLoaderBundle.js +4 -2
- package/dist/codeLoaderBundle.js.map +1 -1
- package/dist/exportFile.d.ts.map +1 -1
- package/dist/exportFile.js +8 -4
- package/dist/exportFile.js.map +1 -1
- package/dist/fakeUrlResolver.d.ts.map +1 -1
- package/dist/fakeUrlResolver.js.map +1 -1
- package/dist/fluidRunner.d.ts.map +1 -1
- package/dist/fluidRunner.js +11 -7
- package/dist/fluidRunner.js.map +1 -1
- package/dist/getArgsValidationError.d.ts.map +1 -1
- package/dist/getArgsValidationError.js.map +1 -1
- package/dist/logger/baseFileLogger.d.ts.map +1 -1
- package/dist/logger/baseFileLogger.js.map +1 -1
- package/dist/logger/csvFileLogger.d.ts.map +1 -1
- package/dist/logger/csvFileLogger.js.map +1 -1
- package/dist/logger/fileLogger.d.ts.map +1 -1
- package/dist/logger/fileLogger.js.map +1 -1
- package/dist/logger/jsonFileLogger.d.ts.map +1 -1
- package/dist/logger/jsonFileLogger.js.map +1 -1
- package/dist/logger/loggerUtils.d.ts +1 -1
- package/dist/logger/loggerUtils.d.ts.map +1 -1
- package/dist/logger/loggerUtils.js +19 -5
- package/dist/logger/loggerUtils.js.map +1 -1
- package/dist/parseBundleAndExportFile.d.ts.map +1 -1
- package/dist/parseBundleAndExportFile.js.map +1 -1
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +2 -3
- package/dist/utils.js.map +1 -1
- package/lib/codeLoaderBundle.d.ts +3 -2
- package/lib/codeLoaderBundle.d.ts.map +1 -1
- package/lib/codeLoaderBundle.js +4 -2
- package/lib/codeLoaderBundle.js.map +1 -1
- package/lib/exportFile.d.ts.map +1 -1
- package/lib/exportFile.js +8 -4
- package/lib/exportFile.js.map +1 -1
- package/lib/fakeUrlResolver.d.ts.map +1 -1
- package/lib/fakeUrlResolver.js.map +1 -1
- package/lib/fluidRunner.d.ts.map +1 -1
- package/lib/fluidRunner.js +11 -7
- package/lib/fluidRunner.js.map +1 -1
- package/lib/getArgsValidationError.d.ts.map +1 -1
- package/lib/getArgsValidationError.js.map +1 -1
- package/lib/logger/baseFileLogger.d.ts.map +1 -1
- package/lib/logger/baseFileLogger.js.map +1 -1
- package/lib/logger/csvFileLogger.d.ts.map +1 -1
- package/lib/logger/csvFileLogger.js.map +1 -1
- package/lib/logger/fileLogger.d.ts.map +1 -1
- package/lib/logger/fileLogger.js.map +1 -1
- package/lib/logger/jsonFileLogger.d.ts.map +1 -1
- package/lib/logger/jsonFileLogger.js.map +1 -1
- package/lib/logger/loggerUtils.d.ts +1 -1
- package/lib/logger/loggerUtils.d.ts.map +1 -1
- package/lib/logger/loggerUtils.js +19 -5
- package/lib/logger/loggerUtils.js.map +1 -1
- package/lib/parseBundleAndExportFile.d.ts.map +1 -1
- package/lib/parseBundleAndExportFile.js.map +1 -1
- package/lib/utils.d.ts.map +1 -1
- package/lib/utils.js +2 -3
- package/lib/utils.js.map +1 -1
- package/package.json +50 -46
- package/prettier.config.cjs +1 -1
- package/src/codeLoaderBundle.ts +29 -24
- package/src/exportFile.ts +69 -58
- package/src/fakeUrlResolver.ts +35 -31
- package/src/fluidRunner.ts +99 -85
- package/src/getArgsValidationError.ts +14 -17
- package/src/logger/baseFileLogger.ts +44 -44
- package/src/logger/csvFileLogger.ts +20 -20
- package/src/logger/fileLogger.ts +15 -15
- package/src/logger/jsonFileLogger.ts +12 -12
- package/src/logger/loggerUtils.ts +55 -39
- package/src/parseBundleAndExportFile.ts +58 -50
- package/src/utils.ts +14 -15
- package/tsconfig.esnext.json +6 -6
- package/tsconfig.json +10 -13
|
@@ -21,60 +21,68 @@ const clientArgsValidationError = "Client_ArgsValidationError";
|
|
|
21
21
|
* @param codeLoader - path to provided JS bundle that implements ICodeLoaderBundle (see codeLoaderBundle.ts)
|
|
22
22
|
*/
|
|
23
23
|
export async function parseBundleAndExportFile(
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
24
|
+
codeLoader: string,
|
|
25
|
+
inputFile: string,
|
|
26
|
+
outputFile: string,
|
|
27
|
+
telemetryFile: string,
|
|
28
|
+
options?: string,
|
|
29
|
+
telemetryOptions?: ITelemetryOptions,
|
|
30
30
|
): Promise<IExportFileResponse> {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
31
|
+
const telemetryArgError = getTelemetryFileValidationError(telemetryFile);
|
|
32
|
+
if (telemetryArgError) {
|
|
33
|
+
const eventName = clientArgsValidationError;
|
|
34
|
+
return { success: false, eventName, errorMessage: telemetryArgError };
|
|
35
|
+
}
|
|
36
|
+
const { fileLogger, logger } = createLogger(telemetryFile, telemetryOptions);
|
|
37
37
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
38
|
+
try {
|
|
39
|
+
return await PerformanceEvent.timedExecAsync(
|
|
40
|
+
logger,
|
|
41
|
+
{ eventName: "ParseBundleAndExportFile" },
|
|
42
|
+
async () => {
|
|
43
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires
|
|
44
|
+
const codeLoaderBundle = require(codeLoader);
|
|
45
|
+
if (!isCodeLoaderBundle(codeLoaderBundle)) {
|
|
46
|
+
const eventName = clientArgsValidationError;
|
|
47
|
+
const errorMessage = "Code loader bundle is not of type ICodeLoaderBundle";
|
|
48
|
+
logger.sendErrorEvent({ eventName, message: errorMessage });
|
|
49
|
+
return { success: false, eventName, errorMessage };
|
|
50
|
+
}
|
|
48
51
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
52
|
+
const fluidExport = await codeLoaderBundle.fluidExport;
|
|
53
|
+
if (!isFluidFileConverter(fluidExport)) {
|
|
54
|
+
const eventName = clientArgsValidationError;
|
|
55
|
+
const errorMessage =
|
|
56
|
+
"Fluid export from CodeLoaderBundle is not of type IFluidFileConverter";
|
|
57
|
+
logger.sendErrorEvent({ eventName, message: errorMessage });
|
|
58
|
+
return { success: false, eventName, errorMessage };
|
|
59
|
+
}
|
|
56
60
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
61
|
+
const argsValidationError = getArgsValidationError(inputFile, outputFile);
|
|
62
|
+
if (argsValidationError) {
|
|
63
|
+
const eventName = clientArgsValidationError;
|
|
64
|
+
logger.sendErrorEvent({ eventName, message: argsValidationError });
|
|
65
|
+
return { success: false, eventName, errorMessage: argsValidationError };
|
|
66
|
+
}
|
|
63
67
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
68
|
+
fs.writeFileSync(
|
|
69
|
+
outputFile,
|
|
70
|
+
await createContainerAndExecute(
|
|
71
|
+
getSnapshotFileContent(inputFile),
|
|
72
|
+
fluidExport,
|
|
73
|
+
logger,
|
|
74
|
+
options,
|
|
75
|
+
),
|
|
76
|
+
);
|
|
70
77
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
78
|
+
return { success: true };
|
|
79
|
+
},
|
|
80
|
+
);
|
|
81
|
+
} catch (error) {
|
|
82
|
+
const eventName = "Client_UnexpectedError";
|
|
83
|
+
logger.sendErrorEvent({ eventName }, error);
|
|
84
|
+
return { success: false, eventName, errorMessage: "Unexpected error", error };
|
|
85
|
+
} finally {
|
|
86
|
+
await fileLogger.close();
|
|
87
|
+
}
|
|
80
88
|
}
|
package/src/utils.ts
CHANGED
|
@@ -12,7 +12,7 @@ import { IFluidFileConverter } from "./codeLoaderBundle";
|
|
|
12
12
|
* @internal
|
|
13
13
|
*/
|
|
14
14
|
export function isJsonSnapshot(content: Buffer): boolean {
|
|
15
|
-
|
|
15
|
+
return content.toString(undefined, 0, 1) === "{";
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
/**
|
|
@@ -21,25 +21,24 @@ export function isJsonSnapshot(content: Buffer): boolean {
|
|
|
21
21
|
* @param filePath - path to the ODSP snapshot file
|
|
22
22
|
*/
|
|
23
23
|
export function getSnapshotFileContent(filePath: string): string | Buffer {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
24
|
+
// TODO: read file stream
|
|
25
|
+
const content = fs.readFileSync(filePath);
|
|
26
|
+
return isJsonSnapshot(content) ? content.toString() : content;
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
/**
|
|
30
30
|
* Validate provided command line arguments
|
|
31
31
|
* @internal
|
|
32
32
|
*/
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
33
|
+
export function validateCommandLineArgs(
|
|
34
|
+
codeLoader?: string,
|
|
35
|
+
fluidFileConverter?: IFluidFileConverter,
|
|
36
36
|
): string | undefined {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
return undefined;
|
|
37
|
+
if (codeLoader && fluidFileConverter !== undefined) {
|
|
38
|
+
return '"codeLoader" and "fluidFileConverter" cannot both be provided. See README for details.';
|
|
39
|
+
}
|
|
40
|
+
if (!codeLoader && fluidFileConverter === undefined) {
|
|
41
|
+
return '"codeLoader" must be provided if there is no explicit "fluidFileConverter". See README for details.';
|
|
42
|
+
}
|
|
43
|
+
return undefined;
|
|
45
44
|
}
|
package/tsconfig.esnext.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
}
|
|
2
|
+
"extends": "./tsconfig.json",
|
|
3
|
+
"compilerOptions": {
|
|
4
|
+
"outDir": "./lib",
|
|
5
|
+
"module": "esnext",
|
|
6
|
+
},
|
|
7
|
+
}
|
package/tsconfig.json
CHANGED
|
@@ -1,14 +1,11 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
"src/**/*"
|
|
13
|
-
]
|
|
14
|
-
}
|
|
2
|
+
"extends": "@fluidframework/build-common/ts-common-config.json",
|
|
3
|
+
"exclude": ["src/test/**/*"],
|
|
4
|
+
"compilerOptions": {
|
|
5
|
+
"rootDir": "./src",
|
|
6
|
+
"outDir": "./dist",
|
|
7
|
+
"types": ["node"],
|
|
8
|
+
"composite": true,
|
|
9
|
+
},
|
|
10
|
+
"include": ["src/**/*"],
|
|
11
|
+
}
|