@ms-cloudpack/cli 0.33.5 → 0.35.0

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.
Files changed (56) hide show
  1. package/lib/commands/init/evaluateImportsForOverrides.d.ts +1 -1
  2. package/lib/commands/init/evaluateImportsForOverrides.js.map +1 -1
  3. package/lib/commands/init/init.js +6 -8
  4. package/lib/commands/init/init.js.map +1 -1
  5. package/lib/commands/init/patchAllInternalPackageExports.d.ts +1 -1
  6. package/lib/commands/init/patchAllInternalPackageExports.js.map +1 -1
  7. package/lib/commands/init/patchPackageExports.d.ts +1 -1
  8. package/lib/commands/init/patchPackageExports.js.map +1 -1
  9. package/lib/commands/init/preparePackageOverride.d.ts +1 -1
  10. package/lib/commands/init/preparePackageOverride.js.map +1 -1
  11. package/lib/commands/start/createBundleTask.js +1 -0
  12. package/lib/commands/start/createBundleTask.js.map +1 -1
  13. package/lib/commands/start/createSession.js +1 -0
  14. package/lib/commands/start/createSession.js.map +1 -1
  15. package/lib/commands/start/index.js +1 -0
  16. package/lib/commands/start/index.js.map +1 -1
  17. package/lib/commands/start/start.js +1 -1
  18. package/lib/commands/start/start.js.map +1 -1
  19. package/lib/commands/start/startBundleServer.d.ts +2 -1
  20. package/lib/commands/start/startBundleServer.js +23 -3
  21. package/lib/commands/start/startBundleServer.js.map +1 -1
  22. package/lib/commands/start/types.d.ts +1 -0
  23. package/lib/commands/start/types.js.map +1 -1
  24. package/lib/common/findPackageOverride.d.ts +1 -1
  25. package/lib/common/findPackageOverride.js.map +1 -1
  26. package/lib/index.d.ts +1 -1
  27. package/lib/index.js +2 -3
  28. package/lib/index.js.map +1 -1
  29. package/lib/initTelemetry.js +2 -2
  30. package/lib/initTelemetry.js.map +1 -1
  31. package/lib/tasks/bundleTaskWorker.d.ts +4 -0
  32. package/lib/tasks/bundleTaskWorker.js +7 -0
  33. package/lib/tasks/bundleTaskWorker.js.map +1 -0
  34. package/lib/tasks/getFileSizeSync.js +1 -0
  35. package/lib/tasks/getFileSizeSync.js.map +1 -1
  36. package/lib/types.d.ts +0 -6
  37. package/lib/types.js.map +1 -1
  38. package/package.json +7 -7
  39. package/lib/commands/init/evaluateImportsForOverrides.test.d.ts +0 -1
  40. package/lib/commands/init/evaluateImportsForOverrides.test.js +0 -67
  41. package/lib/commands/init/evaluateImportsForOverrides.test.js.map +0 -1
  42. package/lib/commands/init/findImports.test.d.ts +0 -1
  43. package/lib/commands/init/findImports.test.js +0 -35
  44. package/lib/commands/init/findImports.test.js.map +0 -1
  45. package/lib/commands/init/init.test.d.ts +0 -1
  46. package/lib/commands/init/init.test.js +0 -215
  47. package/lib/commands/init/init.test.js.map +0 -1
  48. package/lib/commands/start/createSession.test.d.ts +0 -1
  49. package/lib/commands/start/createSession.test.js +0 -87
  50. package/lib/commands/start/createSession.test.js.map +0 -1
  51. package/lib/commands/start/parseRequestInfo.test.d.ts +0 -1
  52. package/lib/commands/start/parseRequestInfo.test.js +0 -117
  53. package/lib/commands/start/parseRequestInfo.test.js.map +0 -1
  54. package/lib/getVersion.d.ts +0 -1
  55. package/lib/getVersion.js +0 -15
  56. package/lib/getVersion.js.map +0 -1
@@ -3,6 +3,7 @@ import fs from 'fs';
3
3
  * Given a file path, returns a human-readable file size description.
4
4
  */
5
5
  export function getFileSizeSync(filePath) {
6
+ // eslint-disable-next-line no-restricted-syntax
6
7
  const { size } = fs.statSync(filePath);
7
8
  if (size > 1024 * 1024) {
8
9
  return `${(size / 1024 / 1024).toFixed(2)} MB`;
@@ -1 +1 @@
1
- {"version":3,"file":"getFileSizeSync.js","sourceRoot":"","sources":["../../src/tasks/getFileSizeSync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,QAAgB;IAC9C,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAEvC,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,EAAE;QACtB,OAAO,GAAG,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;KAChD;IAED,IAAI,IAAI,GAAG,IAAI,EAAE;QACf,OAAO,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;KACzC;IAED,OAAO,GAAG,IAAI,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;AACpD,CAAC","sourcesContent":["import fs from 'fs';\n\n/**\n * Given a file path, returns a human-readable file size description.\n */\nexport function getFileSizeSync(filePath: string): string {\n const { size } = fs.statSync(filePath);\n\n if (size > 1024 * 1024) {\n return `${(size / 1024 / 1024).toFixed(2)} MB`;\n }\n\n if (size > 1024) {\n return `${(size / 1024).toFixed(2)} KB`;\n }\n\n return `${size} ${size === 1 ? 'byte' : 'bytes'}`;\n}\n"]}
1
+ {"version":3,"file":"getFileSizeSync.js","sourceRoot":"","sources":["../../src/tasks/getFileSizeSync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,QAAgB;IAC9C,gDAAgD;IAChD,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAEvC,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,EAAE;QACtB,OAAO,GAAG,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;KAChD;IAED,IAAI,IAAI,GAAG,IAAI,EAAE;QACf,OAAO,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;KACzC;IAED,OAAO,GAAG,IAAI,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;AACpD,CAAC","sourcesContent":["import fs from 'fs';\n\n/**\n * Given a file path, returns a human-readable file size description.\n */\nexport function getFileSizeSync(filePath: string): string {\n // eslint-disable-next-line no-restricted-syntax\n const { size } = fs.statSync(filePath);\n\n if (size > 1024 * 1024) {\n return `${(size / 1024 / 1024).toFixed(2)} MB`;\n }\n\n if (size > 1024) {\n return `${(size / 1024).toFixed(2)} KB`;\n }\n\n return `${size} ${size === 1 ? 'byte' : 'bytes'}`;\n}\n"]}
package/lib/types.d.ts CHANGED
@@ -27,12 +27,6 @@ export interface BundleServer {
27
27
  port: number;
28
28
  close: () => Promise<void>;
29
29
  }
30
- export interface PackageOverride {
31
- name: string;
32
- versionRequirement: string;
33
- isInternal?: boolean;
34
- overrides: PackageJson;
35
- }
36
30
  export interface Watcher {
37
31
  watch: (bundleRequest: BundleRequest) => void;
38
32
  }
package/lib/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { ImportMap } from '@ms-cloudpack/package-utilities';\nimport type { BundleResult, PackageJson, PackageDefinitionsCache } from '@ms-cloudpack/bundler-types';\nimport type { Route } from '@ms-cloudpack/config';\nimport type { Session } from '@ms-cloudpack/api-server';\n\n/**\n * Tracks a given bundle request and its result.\n */\nexport interface BundleRequest {\n id: string;\n packageName: string;\n version: string;\n packagePath: string;\n outputPath: string;\n isExternal: boolean;\n bundlerType?: string;\n result?: BundleResult;\n resultFromCache?: boolean;\n isRebuildRequired?: boolean;\n disableSourceMaps?: boolean;\n packages?: PackageDefinitionsCache;\n}\n\nexport interface BundleTaskOptions {\n force?: boolean;\n}\n\nexport interface BundleServer {\n url: string;\n port: number;\n close: () => Promise<void>;\n}\n\nexport interface PackageOverride {\n name: string;\n versionRequirement: string;\n isInternal?: boolean;\n overrides: PackageJson;\n}\n\nexport interface Watcher {\n watch: (bundleRequest: BundleRequest) => void;\n}\n\n/**\n * The input options for a createHtml custom server render function.\n */\nexport type CreateHtmlOptions = {\n session: Session;\n route: Route;\n baseUrl: string;\n definition: PackageJson;\n importMap: ImportMap;\n overlayScript: string | undefined;\n entryScript: string | undefined;\n inlineScripts: string[];\n};\n\n/**\n * The expected result of the createHtml custom server render function.\n */\nexport type CreateHtmlResult =\n | string\n | {\n html: string;\n statusCode: number;\n };\n\n/**\n * A custom server render function that can be used to override the default HTML response.\n */\nexport type CreateHtmlFunction = (options: CreateHtmlOptions) => Promise<CreateHtmlResult> | CreateHtmlResult;\n\n/**\n * The expected shape of the createHtml custom server render function script.\n */\nexport type CreateHtmlScript = { default: CreateHtmlFunction };\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { ImportMap } from '@ms-cloudpack/package-utilities';\nimport type { BundleResult, PackageJson, PackageDefinitionsCache } from '@ms-cloudpack/bundler-types';\nimport type { Route } from '@ms-cloudpack/config';\nimport type { Session } from '@ms-cloudpack/api-server';\n\n/**\n * Tracks a given bundle request and its result.\n */\nexport interface BundleRequest {\n id: string;\n packageName: string;\n version: string;\n packagePath: string;\n outputPath: string;\n isExternal: boolean;\n bundlerType?: string;\n result?: BundleResult;\n resultFromCache?: boolean;\n isRebuildRequired?: boolean;\n disableSourceMaps?: boolean;\n packages?: PackageDefinitionsCache;\n}\n\nexport interface BundleTaskOptions {\n force?: boolean;\n}\n\nexport interface BundleServer {\n url: string;\n port: number;\n close: () => Promise<void>;\n}\n\nexport interface Watcher {\n watch: (bundleRequest: BundleRequest) => void;\n}\n\n/**\n * The input options for a createHtml custom server render function.\n */\nexport type CreateHtmlOptions = {\n session: Session;\n route: Route;\n baseUrl: string;\n definition: PackageJson;\n importMap: ImportMap;\n overlayScript: string | undefined;\n entryScript: string | undefined;\n inlineScripts: string[];\n};\n\n/**\n * The expected result of the createHtml custom server render function.\n */\nexport type CreateHtmlResult =\n | string\n | {\n html: string;\n statusCode: number;\n };\n\n/**\n * A custom server render function that can be used to override the default HTML response.\n */\nexport type CreateHtmlFunction = (options: CreateHtmlOptions) => Promise<CreateHtmlResult> | CreateHtmlResult;\n\n/**\n * The expected shape of the createHtml custom server render function script.\n */\nexport type CreateHtmlScript = { default: CreateHtmlFunction };\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ms-cloudpack/cli",
3
- "version": "0.33.5",
3
+ "version": "0.35.0",
4
4
  "description": "The Cloudpack command line interface - a tool for managing fast inner and outer looping in web apps.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -16,15 +16,15 @@
16
16
  "cloudpack": "./bin/cloudpack.js"
17
17
  },
18
18
  "dependencies": {
19
- "@ms-cloudpack/api-server": "^0.3.2",
20
- "@ms-cloudpack/bundler": "^0.11.23",
21
- "@ms-cloudpack/config": "^0.3.2",
22
- "@ms-cloudpack/create-express-app": "^1.3.2",
19
+ "@ms-cloudpack/api-server": "^0.5.0",
20
+ "@ms-cloudpack/bundler": "^0.11.25",
21
+ "@ms-cloudpack/config": "^0.5.0",
22
+ "@ms-cloudpack/create-express-app": "^1.3.3",
23
23
  "@ms-cloudpack/data-bus": "^0.1.1",
24
24
  "@ms-cloudpack/json-utilities": "^0.0.6",
25
25
  "@ms-cloudpack/overlay": "^0.13.2",
26
- "@ms-cloudpack/package-utilities": "^2.3.13",
27
- "@ms-cloudpack/path-utilities": "^2.2.0",
26
+ "@ms-cloudpack/package-utilities": "^2.4.0",
27
+ "@ms-cloudpack/path-utilities": "^2.2.1",
28
28
  "@ms-cloudpack/path-string-parsing": "^1.0.1",
29
29
  "@ms-cloudpack/task-reporter": "^0.3.0",
30
30
  "@ms-cloudpack/telemetry": "^0.2.2",
@@ -1,67 +0,0 @@
1
- import { afterAll, afterEach, beforeAll, describe, expect, it, jest } from '@jest/globals';
2
- import { PackageDefinitions } from '@ms-cloudpack/package-utilities';
3
- import { evaluateImportsForOverrides } from './evaluateImportsForOverrides.js';
4
- describe('evaluateImportsForOverrides', () => {
5
- beforeAll(() => {
6
- jest.spyOn(console, 'error').mockImplementation(() => {
7
- // Disabling console.error to keep jest logs clean.
8
- // This will also be used in the assertions to ensure that the errors are logged.
9
- });
10
- });
11
- afterAll(() => {
12
- console.error.mockRestore();
13
- });
14
- afterEach(() => {
15
- console.error.mockClear();
16
- });
17
- it('should error out when dependency was not found in the resolve map', async () => {
18
- const imports = new Map();
19
- imports.set('exampleDependencyName', new Set(['exampleImportPath']));
20
- const result = await evaluateImportsForOverrides({
21
- definition: {
22
- name: 'test',
23
- version: '1.0.0',
24
- },
25
- evaluatedPackages: new Set(),
26
- imports,
27
- packageOverrides: [],
28
- packagePathsToEvaluate: new Set(),
29
- packages: new PackageDefinitions(),
30
- resolveMap: {},
31
- packagePath: '',
32
- });
33
- expect(console.error).toHaveBeenCalledTimes(1);
34
- expect(result.changeCount).toBe(0);
35
- expect(result.errors.length).toEqual(1);
36
- });
37
- it('should error out when definition of a dependency could not be loaded', async () => {
38
- const imports = new Map();
39
- imports.set('a', new Set(['b']));
40
- const result = await evaluateImportsForOverrides({
41
- definition: {
42
- name: 'test',
43
- version: '1.0.0',
44
- },
45
- evaluatedPackages: new Set(),
46
- imports,
47
- packageOverrides: [],
48
- packagePathsToEvaluate: new Set(),
49
- packages: new PackageDefinitions(),
50
- resolveMap: {
51
- a: {
52
- version: '1.0.0',
53
- name: 'a',
54
- requiredBy: {
55
- test: '1.0.0',
56
- },
57
- path: 'path',
58
- },
59
- },
60
- packagePath: '',
61
- });
62
- expect(result.changeCount).toBe(0);
63
- expect(result.errors.length).toEqual(1);
64
- expect(console.error).toHaveBeenCalledTimes(1);
65
- });
66
- });
67
- //# sourceMappingURL=evaluateImportsForOverrides.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"evaluateImportsForOverrides.test.js","sourceRoot":"","sources":["../../../src/commands/init/evaluateImportsForOverrides.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { afterAll, afterEach, beforeAll, describe, expect, it, jest } from '@jest/globals';\nimport { PackageDefinitions } from '@ms-cloudpack/package-utilities';\nimport { evaluateImportsForOverrides } from './evaluateImportsForOverrides.js';\n\ntype MockErrorFn = jest.MockedFunction<typeof console.error>;\n\ndescribe('evaluateImportsForOverrides', () => {\n beforeAll(() => {\n jest.spyOn(console, 'error').mockImplementation(() => {\n // Disabling console.error to keep jest logs clean.\n // This will also be used in the assertions to ensure that the errors are logged.\n });\n });\n\n afterAll(() => {\n (console.error as MockErrorFn).mockRestore();\n });\n\n afterEach(() => {\n (console.error as MockErrorFn).mockClear();\n });\n\n it('should error out when dependency was not found in the resolve map', async () => {\n const imports = new Map<string, Set<string>>();\n imports.set('exampleDependencyName', new Set<string>(['exampleImportPath']));\n\n const result = await evaluateImportsForOverrides({\n definition: {\n name: 'test',\n version: '1.0.0',\n },\n evaluatedPackages: new Set<string>(),\n imports,\n packageOverrides: [],\n packagePathsToEvaluate: new Set<string>(),\n packages: new PackageDefinitions(),\n resolveMap: {},\n packagePath: '',\n });\n\n expect(console.error).toHaveBeenCalledTimes(1);\n expect(result.changeCount).toBe(0);\n expect(result.errors.length).toEqual(1);\n });\n\n it('should error out when definition of a dependency could not be loaded', async () => {\n const imports = new Map<string, Set<string>>();\n imports.set('a', new Set<string>(['b']));\n\n const result = await evaluateImportsForOverrides({\n definition: {\n name: 'test',\n version: '1.0.0',\n },\n evaluatedPackages: new Set<string>(),\n imports,\n packageOverrides: [],\n packagePathsToEvaluate: new Set<string>(),\n packages: new PackageDefinitions(),\n resolveMap: {\n a: {\n version: '1.0.0',\n name: 'a',\n requiredBy: {\n test: '1.0.0',\n },\n path: 'path',\n },\n },\n packagePath: '',\n });\n\n expect(result.changeCount).toBe(0);\n expect(result.errors.length).toEqual(1);\n expect(console.error).toHaveBeenCalledTimes(1);\n });\n});\n"]}
@@ -1 +0,0 @@
1
- export {};
@@ -1,35 +0,0 @@
1
- import { findImports } from './findImports.js';
2
- import { describe, it, expect } from '@jest/globals';
3
- import { createTestFileStructure } from '@ms-cloudpack/test-utilities';
4
- import path from 'path';
5
- describe('findImports', () => {
6
- it('can find the imports in a bundle', async () => {
7
- const testFiles = {
8
- './lib/entry1.js': 'import { foo } from "./foo.js";',
9
- './lib/foo.js': 'export { a, b, c, foo } from "react/lib/foo";',
10
- './lib/entry2.js': 'import react from "react";',
11
- };
12
- const testPath = await createTestFileStructure(testFiles);
13
- const filePaths = Object.keys(testFiles).map((filePath) => path.join(testPath, filePath));
14
- const result = await findImports(filePaths);
15
- console.log(result);
16
- expect(result).toEqual({
17
- react: new Set(['./lib/foo', '.']),
18
- });
19
- });
20
- it('can walk to files up a level', async () => {
21
- const testFiles = {
22
- './lib/entry1.js': 'import { foo } from "../chunk/foo.js";',
23
- './chunk/foo.js': 'export { a, b, c, foo } from "react/lib/foo";',
24
- './lib/entry2.js': 'import react from "react";',
25
- };
26
- const testPath = await createTestFileStructure(testFiles);
27
- const filePaths = Object.keys(testFiles).map((filePath) => path.join(testPath, filePath));
28
- const result = await findImports(filePaths);
29
- console.log(result);
30
- expect(result).toEqual({
31
- react: new Set(['./lib/foo', '.']),
32
- });
33
- });
34
- });
35
- //# sourceMappingURL=findImports.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"findImports.test.js","sourceRoot":"","sources":["../../../src/commands/init/findImports.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;QAChD,MAAM,SAAS,GAAG;YAChB,iBAAiB,EAAE,iCAAiC;YACpD,cAAc,EAAE,+CAA+C;YAC/D,iBAAiB,EAAE,4BAA4B;SAChD,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,uBAAuB,CAAC,SAAS,CAAC,CAAC;QAC1D,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC1F,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,SAAS,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpB,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;YACrB,KAAK,EAAE,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;SACnC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;QAC5C,MAAM,SAAS,GAAG;YAChB,iBAAiB,EAAE,wCAAwC;YAC3D,gBAAgB,EAAE,+CAA+C;YACjE,iBAAiB,EAAE,4BAA4B;SAChD,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,uBAAuB,CAAC,SAAS,CAAC,CAAC;QAC1D,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC1F,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,SAAS,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpB,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;YACrB,KAAK,EAAE,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;SACnC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { findImports } from './findImports.js';\nimport { describe, it, expect } from '@jest/globals';\nimport { createTestFileStructure } from '@ms-cloudpack/test-utilities';\nimport path from 'path';\n\ndescribe('findImports', () => {\n it('can find the imports in a bundle', async () => {\n const testFiles = {\n './lib/entry1.js': 'import { foo } from \"./foo.js\";',\n './lib/foo.js': 'export { a, b, c, foo } from \"react/lib/foo\";',\n './lib/entry2.js': 'import react from \"react\";',\n };\n const testPath = await createTestFileStructure(testFiles);\n const filePaths = Object.keys(testFiles).map((filePath) => path.join(testPath, filePath));\n const result = await findImports(filePaths);\n console.log(result);\n expect(result).toEqual({\n react: new Set(['./lib/foo', '.']),\n });\n });\n\n it('can walk to files up a level', async () => {\n const testFiles = {\n './lib/entry1.js': 'import { foo } from \"../chunk/foo.js\";',\n './chunk/foo.js': 'export { a, b, c, foo } from \"react/lib/foo\";',\n './lib/entry2.js': 'import react from \"react\";',\n };\n const testPath = await createTestFileStructure(testFiles);\n const filePaths = Object.keys(testFiles).map((filePath) => path.join(testPath, filePath));\n const result = await findImports(filePaths);\n console.log(result);\n expect(result).toEqual({\n react: new Set(['./lib/foo', '.']),\n });\n });\n});\n"]}
@@ -1 +0,0 @@
1
- export {};
@@ -1,215 +0,0 @@
1
- import { afterEach, describe, it, expect, beforeAll } from '@jest/globals';
2
- import { init } from './init.js';
3
- import fsPromises from 'fs/promises';
4
- import path from 'path';
5
- import { isFile } from '@ms-cloudpack/path-utilities';
6
- import { readJson } from '@ms-cloudpack/json-utilities';
7
- import { createTestFileStructure } from '@ms-cloudpack/test-utilities';
8
- import { noLoggingConfig } from '@ms-cloudpack/task-reporter';
9
- import { reporter } from '../../reporter.js';
10
- import { getConfigPath, readConfig } from '@ms-cloudpack/config';
11
- describe('init', () => {
12
- let testPath;
13
- beforeAll(() => {
14
- reporter.setOptions(noLoggingConfig);
15
- });
16
- afterEach(async () => {
17
- if (testPath) {
18
- await fsPromises.rm(testPath, { recursive: true });
19
- testPath = undefined;
20
- }
21
- });
22
- it('can make no changes to a package that has no config and needs no changes', async () => {
23
- testPath = await createTestFileStructure({
24
- 'package.json': {
25
- name: 'test-package',
26
- version: '1.0.0',
27
- main: 'lib/index.js',
28
- dependencies: {
29
- foo: '1.0.0',
30
- },
31
- },
32
- 'src/index.ts': 'import foo from "foo"; console.log(foo);',
33
- 'node_modules/foo/package.json': {
34
- name: 'foo',
35
- version: '1.0.0',
36
- main: 'lib/index.js',
37
- },
38
- 'node_modules/foo/lib/index.js': 'export default "foo";',
39
- });
40
- await init({ cwd: testPath });
41
- expect(await isFile(getConfigPath(testPath))).toBe(false);
42
- });
43
- it('can create a config when a package needs to have an exports map defined', async () => {
44
- testPath = await createTestFileStructure({
45
- 'package.json': {
46
- name: 'test-package',
47
- version: '1.0.0',
48
- main: 'lib/index.js',
49
- dependencies: {
50
- foo: '1.0.0',
51
- },
52
- },
53
- 'src/index.ts': 'import foo from "foo/lib/bar"; console.log(foo);',
54
- 'node_modules/foo/package.json': {
55
- name: 'foo',
56
- version: '1.0.0',
57
- main: 'lib/index.js',
58
- },
59
- 'node_modules/foo/lib/index.js': 'export default "index";',
60
- 'node_modules/foo/lib/bar.js': 'export default "foo";',
61
- });
62
- expect(await init({ cwd: testPath })).toEqual({ changeCount: 1 });
63
- const configPath = getConfigPath(testPath);
64
- expect(await isFile(configPath)).toBe(true);
65
- expect(await readJson(configPath)).toMatchInlineSnapshot(`
66
- {
67
- "packageOverrides": [
68
- {
69
- "name": "foo",
70
- "overrides": {
71
- "exports": {
72
- ".": {
73
- "default": "./lib/index.js",
74
- },
75
- "./lib/bar": {
76
- "default": "./lib/bar.js",
77
- },
78
- },
79
- },
80
- "versionRequirement": "^1.0.0",
81
- },
82
- ],
83
- }
84
- `);
85
- });
86
- it('can modify inner-repo packages if the fix option is specified and a package needs an override', async () => {
87
- testPath = await createTestFileStructure({
88
- 'app/package.json': {
89
- name: 'test-package',
90
- version: '1.0.0',
91
- main: 'lib/index.js',
92
- dependencies: {
93
- library: '1.0.0',
94
- },
95
- },
96
- 'app/src/index.ts': 'import foo from "library/lib/bar"; console.log(foo);',
97
- 'library/package.json': {
98
- name: 'library',
99
- version: '1.0.0',
100
- main: 'lib/index.js',
101
- },
102
- 'library/lib/index.js': 'export default "index";',
103
- 'library/lib/bar.js': 'export default "bar";',
104
- }, { links: { 'app/node_modules/library': 'library' } });
105
- await init({ cwd: path.join(testPath, 'app'), fix: true });
106
- // There are no overrides required in this scenario; everything is fixed locally, so no
107
- // config file should be created.
108
- expect(await isFile(getConfigPath(testPath))).toBe(false);
109
- // Both the app and the library should have been fixed to have the correct exports map.
110
- // The app package shouldn't require an exports map; no changes expected.
111
- const appDefinition = (await readJson(path.join(testPath, 'app/package.json')));
112
- expect(appDefinition.exports).toBeUndefined();
113
- // The library exports should have the main entry hoisted ("."), as well as the "./lib/bar" import that the app
114
- // depends on. There should be no source/typings as the library only has a js file and no src/*.ts
115
- // files.
116
- const libraryDefinition = (await readJson(path.join(testPath, 'library/package.json')));
117
- expect(libraryDefinition.exports).toMatchInlineSnapshot(`
118
- {
119
- ".": {
120
- "default": "./lib/index.js",
121
- },
122
- "./lib/bar": {
123
- "default": "./lib/bar.js",
124
- },
125
- }
126
- `);
127
- });
128
- it('can avoids modifying external packages if the fix option is specified and a package needs an override', async () => {
129
- testPath = await createTestFileStructure({
130
- 'package.json': {
131
- name: 'test-package',
132
- version: '1.0.0',
133
- main: 'lib/index.js',
134
- dependencies: {
135
- library: '1.0.0',
136
- },
137
- },
138
- 'src/index.ts': 'import foo from "library/lib/bar"; console.log(foo);',
139
- 'node_modules/library/package.json': {
140
- name: 'library',
141
- version: '1.0.0',
142
- main: 'lib/index.js',
143
- },
144
- 'node_modules/library/lib/index.js': 'export default "index";',
145
- 'node_modules/library/lib/bar.js': 'export default "bar";',
146
- });
147
- await init({ cwd: testPath, fix: true });
148
- // An override config would be created for this scenario.
149
- const config = await readConfig(testPath);
150
- expect(config).toMatchInlineSnapshot(`
151
- {
152
- "packageOverrides": [
153
- {
154
- "name": "library",
155
- "overrides": {
156
- "exports": {
157
- ".": {
158
- "default": "./lib/index.js",
159
- },
160
- "./lib/bar": {
161
- "default": "./lib/bar.js",
162
- },
163
- },
164
- },
165
- "versionRequirement": "^1.0.0",
166
- },
167
- ],
168
- }
169
- `);
170
- // The library package shouldn't be modified.
171
- const libraryDefinition = (await readJson(path.join(testPath, 'node_modules/library/package.json')));
172
- expect(libraryDefinition.exports).toBeUndefined();
173
- });
174
- it('can update an existing exports map when fix is provided', async () => {
175
- testPath = await createTestFileStructure({
176
- 'app/package.json': {
177
- name: 'test-package',
178
- version: '1.0.0',
179
- main: 'lib/index.js',
180
- dependencies: {
181
- library: '1.0.0',
182
- },
183
- },
184
- 'app/src/index.ts': 'import bar from "library/lib/bar"; console.log(bar);',
185
- 'library/package.json': {
186
- name: 'library',
187
- version: '1.0.0',
188
- exports: {
189
- '.': {
190
- default: './lib/index.js',
191
- },
192
- },
193
- },
194
- 'library/lib/index.js': 'export default "index";',
195
- 'library/lib/bar.js': 'export default "bar";',
196
- }, { links: { 'app/node_modules/library': 'library' } });
197
- await init({ cwd: path.join(testPath, 'app'), fix: true });
198
- expect(await isFile(getConfigPath(testPath))).toBe(false);
199
- expect(await readJson(path.join(testPath, 'library/package.json'))).toMatchInlineSnapshot(`
200
- {
201
- "exports": {
202
- ".": {
203
- "default": "./lib/index.js",
204
- },
205
- "./lib/bar": {
206
- "default": "./lib/bar.js",
207
- },
208
- },
209
- "name": "library",
210
- "version": "1.0.0",
211
- }
212
- `);
213
- });
214
- });
215
- //# sourceMappingURL=init.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"init.test.js","sourceRoot":"","sources":["../../../src/commands/init/init.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { afterEach, describe, it, expect, beforeAll } from '@jest/globals';\nimport { init } from './init.js';\nimport fsPromises from 'fs/promises';\nimport path from 'path';\nimport { isFile } from '@ms-cloudpack/path-utilities';\nimport { readJson } from '@ms-cloudpack/json-utilities';\nimport type { PackageJson } from '@ms-cloudpack/bundler-types';\nimport { createTestFileStructure } from '@ms-cloudpack/test-utilities';\nimport { noLoggingConfig } from '@ms-cloudpack/task-reporter';\nimport { reporter } from '../../reporter.js';\nimport { getConfigPath, readConfig } from '@ms-cloudpack/config';\n\ndescribe('init', () => {\n let testPath: string | undefined;\n\n beforeAll(() => {\n reporter.setOptions(noLoggingConfig);\n });\n\n afterEach(async () => {\n if (testPath) {\n await fsPromises.rm(testPath, { recursive: true });\n testPath = undefined;\n }\n });\n\n it('can make no changes to a package that has no config and needs no changes', async () => {\n testPath = await createTestFileStructure({\n 'package.json': {\n name: 'test-package',\n version: '1.0.0',\n main: 'lib/index.js',\n dependencies: {\n foo: '1.0.0',\n },\n },\n 'src/index.ts': 'import foo from \"foo\"; console.log(foo);',\n 'node_modules/foo/package.json': {\n name: 'foo',\n version: '1.0.0',\n main: 'lib/index.js',\n },\n 'node_modules/foo/lib/index.js': 'export default \"foo\";',\n });\n\n await init({ cwd: testPath });\n\n expect(await isFile(getConfigPath(testPath))).toBe(false);\n });\n\n it('can create a config when a package needs to have an exports map defined', async () => {\n testPath = await createTestFileStructure({\n 'package.json': {\n name: 'test-package',\n version: '1.0.0',\n main: 'lib/index.js',\n dependencies: {\n foo: '1.0.0',\n },\n },\n 'src/index.ts': 'import foo from \"foo/lib/bar\"; console.log(foo);',\n 'node_modules/foo/package.json': {\n name: 'foo',\n version: '1.0.0',\n main: 'lib/index.js',\n },\n 'node_modules/foo/lib/index.js': 'export default \"index\";',\n 'node_modules/foo/lib/bar.js': 'export default \"foo\";',\n });\n\n expect(await init({ cwd: testPath })).toEqual({ changeCount: 1 });\n\n const configPath = getConfigPath(testPath);\n expect(await isFile(configPath)).toBe(true);\n expect(await readJson(configPath)).toMatchInlineSnapshot(`\n {\n \"packageOverrides\": [\n {\n \"name\": \"foo\",\n \"overrides\": {\n \"exports\": {\n \".\": {\n \"default\": \"./lib/index.js\",\n },\n \"./lib/bar\": {\n \"default\": \"./lib/bar.js\",\n },\n },\n },\n \"versionRequirement\": \"^1.0.0\",\n },\n ],\n }\n `);\n });\n\n it('can modify inner-repo packages if the fix option is specified and a package needs an override', async () => {\n testPath = await createTestFileStructure(\n {\n 'app/package.json': {\n name: 'test-package',\n version: '1.0.0',\n main: 'lib/index.js',\n dependencies: {\n library: '1.0.0',\n },\n },\n 'app/src/index.ts': 'import foo from \"library/lib/bar\"; console.log(foo);',\n 'library/package.json': {\n name: 'library',\n version: '1.0.0',\n main: 'lib/index.js',\n },\n 'library/lib/index.js': 'export default \"index\";',\n 'library/lib/bar.js': 'export default \"bar\";',\n },\n { links: { 'app/node_modules/library': 'library' } },\n );\n\n await init({ cwd: path.join(testPath, 'app'), fix: true });\n\n // There are no overrides required in this scenario; everything is fixed locally, so no\n // config file should be created.\n expect(await isFile(getConfigPath(testPath))).toBe(false);\n\n // Both the app and the library should have been fixed to have the correct exports map.\n\n // The app package shouldn't require an exports map; no changes expected.\n const appDefinition = (await readJson(path.join(testPath, 'app/package.json'))) as PackageJson;\n expect(appDefinition.exports).toBeUndefined();\n\n // The library exports should have the main entry hoisted (\".\"), as well as the \"./lib/bar\" import that the app\n // depends on. There should be no source/typings as the library only has a js file and no src/*.ts\n // files.\n const libraryDefinition = (await readJson(path.join(testPath, 'library/package.json'))) as PackageJson;\n expect(libraryDefinition.exports).toMatchInlineSnapshot(`\n {\n \".\": {\n \"default\": \"./lib/index.js\",\n },\n \"./lib/bar\": {\n \"default\": \"./lib/bar.js\",\n },\n }\n `);\n });\n\n it('can avoids modifying external packages if the fix option is specified and a package needs an override', async () => {\n testPath = await createTestFileStructure({\n 'package.json': {\n name: 'test-package',\n version: '1.0.0',\n main: 'lib/index.js',\n dependencies: {\n library: '1.0.0',\n },\n },\n 'src/index.ts': 'import foo from \"library/lib/bar\"; console.log(foo);',\n 'node_modules/library/package.json': {\n name: 'library',\n version: '1.0.0',\n main: 'lib/index.js',\n },\n 'node_modules/library/lib/index.js': 'export default \"index\";',\n 'node_modules/library/lib/bar.js': 'export default \"bar\";',\n });\n\n await init({ cwd: testPath, fix: true });\n\n // An override config would be created for this scenario.\n const config = await readConfig(testPath);\n expect(config).toMatchInlineSnapshot(`\n {\n \"packageOverrides\": [\n {\n \"name\": \"library\",\n \"overrides\": {\n \"exports\": {\n \".\": {\n \"default\": \"./lib/index.js\",\n },\n \"./lib/bar\": {\n \"default\": \"./lib/bar.js\",\n },\n },\n },\n \"versionRequirement\": \"^1.0.0\",\n },\n ],\n }\n `);\n\n // The library package shouldn't be modified.\n const libraryDefinition = (await readJson(path.join(testPath, 'node_modules/library/package.json'))) as PackageJson;\n expect(libraryDefinition.exports).toBeUndefined();\n });\n\n it('can update an existing exports map when fix is provided', async () => {\n testPath = await createTestFileStructure(\n {\n 'app/package.json': {\n name: 'test-package',\n version: '1.0.0',\n main: 'lib/index.js',\n dependencies: {\n library: '1.0.0',\n },\n },\n 'app/src/index.ts': 'import bar from \"library/lib/bar\"; console.log(bar);',\n 'library/package.json': {\n name: 'library',\n version: '1.0.0',\n exports: {\n '.': {\n default: './lib/index.js',\n },\n },\n },\n 'library/lib/index.js': 'export default \"index\";',\n 'library/lib/bar.js': 'export default \"bar\";',\n },\n { links: { 'app/node_modules/library': 'library' } },\n );\n\n await init({ cwd: path.join(testPath, 'app'), fix: true });\n\n expect(await isFile(getConfigPath(testPath))).toBe(false);\n expect(await readJson(path.join(testPath, 'library/package.json'))).toMatchInlineSnapshot(`\n {\n \"exports\": {\n \".\": {\n \"default\": \"./lib/index.js\",\n },\n \"./lib/bar\": {\n \"default\": \"./lib/bar.js\",\n },\n },\n \"name\": \"library\",\n \"version\": \"1.0.0\",\n }\n `);\n });\n});\n"]}
@@ -1 +0,0 @@
1
- export {};
@@ -1,87 +0,0 @@
1
- import { describe, it, expect, beforeAll, beforeEach, afterEach } from '@jest/globals';
2
- import fsPromises from 'fs/promises';
3
- import { createSession } from './createSession.js';
4
- import { createTestFileStructure } from '@ms-cloudpack/test-utilities';
5
- import { createImportMap } from '@ms-cloudpack/package-utilities';
6
- import { reporter, noLoggingConfig } from '../../reporter.js';
7
- let tempFolderPath;
8
- describe('createSession', () => {
9
- beforeAll(() => {
10
- reporter.setOptions(noLoggingConfig);
11
- });
12
- beforeEach(async () => {
13
- tempFolderPath = await createTestFileStructure({
14
- 'package.json': {
15
- name: 'test-project-1',
16
- version: '0.0.1',
17
- type: 'module',
18
- exports: {
19
- '.': './lib/index.js',
20
- },
21
- dependencies: {
22
- b: '^1.0.0',
23
- },
24
- },
25
- 'src/index.ts': `import { b } from 'b'; export const a = 'a' + b();`,
26
- 'node_modules/b/package.json': {
27
- name: 'b',
28
- version: '1.0.0',
29
- main: 'index.js',
30
- },
31
- 'node_modules/b/index.js': `export const b = () => 'b';`,
32
- });
33
- });
34
- afterEach(async () => {
35
- await fsPromises.rm(tempFolderPath, { recursive: true });
36
- });
37
- it('can set and get import map', async () => {
38
- const session = await createSession({ appPath: tempFolderPath, config: {} });
39
- expect(session.getImportMap()).toBeUndefined();
40
- const importMap = await createImportMap(session.resolveMap, 'http://localhost/', {
41
- sessionVersion: session.getSessionVersion(),
42
- targetVersions: session.targetVersions,
43
- });
44
- session.setImportMap(await createImportMap(session.resolveMap, 'http://localhost/', {
45
- sessionVersion: session.getSessionVersion(),
46
- targetVersions: session.targetVersions,
47
- }));
48
- expect(session.getImportMap()).toEqual(importMap);
49
- console.log(session.resolveMap);
50
- });
51
- it('can get and increment session version', async () => {
52
- const session = await createSession({ appPath: tempFolderPath, config: {} });
53
- expect(session.getSessionVersion()).toBe(0);
54
- session.setImportMap(await createImportMap(session.resolveMap, 'http://localhost/', {
55
- sessionVersion: session.getSessionVersion(),
56
- targetVersions: session.targetVersions,
57
- }));
58
- session.incrementSessionVersion();
59
- expect(session.getSessionVersion()).toBe(1);
60
- expect(session.getImportMap()).toBeUndefined();
61
- session.setImportMap(await createImportMap(session.resolveMap, 'http://localhost/', {
62
- sessionVersion: session.getSessionVersion(),
63
- targetVersions: session.targetVersions,
64
- }));
65
- session.incrementSessionVersion(30);
66
- expect(session.getSessionVersion()).toBe(30);
67
- expect(session.getImportMap()).toBeUndefined();
68
- session.setImportMap(await createImportMap(session.resolveMap, 'http://localhost/', {
69
- sessionVersion: session.getSessionVersion(),
70
- targetVersions: session.targetVersions,
71
- }));
72
- session.incrementSessionVersion(5);
73
- expect(session.getSessionVersion()).toBe(30);
74
- expect(session.getImportMap()).not.toBeUndefined();
75
- });
76
- it('can increment target versions', async () => {
77
- const session = await createSession({ appPath: tempFolderPath, config: {} });
78
- session.setImportMap(await createImportMap(session.resolveMap, 'http://localhost/', {
79
- sessionVersion: session.getSessionVersion(),
80
- targetVersions: session.targetVersions,
81
- }));
82
- session.incrementTargetVersion(tempFolderPath);
83
- expect(session.targetVersions).toEqual({ [tempFolderPath]: 1 });
84
- expect(session.getImportMap()).toBeUndefined();
85
- });
86
- });
87
- //# sourceMappingURL=createSession.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createSession.test.js","sourceRoot":"","sources":["../../../src/commands/start/createSession.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { describe, it, expect, beforeAll, beforeEach, afterEach } from '@jest/globals';\nimport fsPromises from 'fs/promises';\nimport { createSession } from './createSession.js';\nimport { createTestFileStructure } from '@ms-cloudpack/test-utilities';\nimport { createImportMap } from '@ms-cloudpack/package-utilities';\nimport { reporter, noLoggingConfig } from '../../reporter.js';\n\nlet tempFolderPath: string;\n\ndescribe('createSession', () => {\n beforeAll(() => {\n reporter.setOptions(noLoggingConfig);\n });\n\n beforeEach(async () => {\n tempFolderPath = await createTestFileStructure({\n 'package.json': {\n name: 'test-project-1',\n version: '0.0.1',\n type: 'module',\n exports: {\n '.': './lib/index.js',\n },\n dependencies: {\n b: '^1.0.0',\n },\n },\n 'src/index.ts': `import { b } from 'b'; export const a = 'a' + b();`,\n 'node_modules/b/package.json': {\n name: 'b',\n version: '1.0.0',\n main: 'index.js',\n },\n 'node_modules/b/index.js': `export const b = () => 'b';`,\n });\n });\n\n afterEach(async () => {\n await fsPromises.rm(tempFolderPath, { recursive: true });\n });\n\n it('can set and get import map', async () => {\n const session = await createSession({ appPath: tempFolderPath, config: {} });\n expect(session.getImportMap()).toBeUndefined();\n const importMap = await createImportMap(session.resolveMap, 'http://localhost/', {\n sessionVersion: session.getSessionVersion(),\n targetVersions: session.targetVersions,\n });\n session.setImportMap(\n await createImportMap(session.resolveMap, 'http://localhost/', {\n sessionVersion: session.getSessionVersion(),\n targetVersions: session.targetVersions,\n }),\n );\n expect(session.getImportMap()).toEqual(importMap);\n console.log(session.resolveMap);\n });\n\n it('can get and increment session version', async () => {\n const session = await createSession({ appPath: tempFolderPath, config: {} });\n expect(session.getSessionVersion()).toBe(0);\n\n session.setImportMap(\n await createImportMap(session.resolveMap, 'http://localhost/', {\n sessionVersion: session.getSessionVersion(),\n targetVersions: session.targetVersions,\n }),\n );\n session.incrementSessionVersion();\n expect(session.getSessionVersion()).toBe(1);\n expect(session.getImportMap()).toBeUndefined();\n\n session.setImportMap(\n await createImportMap(session.resolveMap, 'http://localhost/', {\n sessionVersion: session.getSessionVersion(),\n targetVersions: session.targetVersions,\n }),\n );\n session.incrementSessionVersion(30);\n expect(session.getSessionVersion()).toBe(30);\n expect(session.getImportMap()).toBeUndefined();\n\n session.setImportMap(\n await createImportMap(session.resolveMap, 'http://localhost/', {\n sessionVersion: session.getSessionVersion(),\n targetVersions: session.targetVersions,\n }),\n );\n session.incrementSessionVersion(5);\n expect(session.getSessionVersion()).toBe(30);\n expect(session.getImportMap()).not.toBeUndefined();\n });\n\n it('can increment target versions', async () => {\n const session = await createSession({ appPath: tempFolderPath, config: {} });\n session.setImportMap(\n await createImportMap(session.resolveMap, 'http://localhost/', {\n sessionVersion: session.getSessionVersion(),\n targetVersions: session.targetVersions,\n }),\n );\n session.incrementTargetVersion(tempFolderPath);\n expect(session.targetVersions).toEqual({ [tempFolderPath]: 1 });\n expect(session.getImportMap()).toBeUndefined();\n });\n});\n"]}
@@ -1 +0,0 @@
1
- export {};