@amazon/vinyl-build-utils 1.0.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 (108) hide show
  1. package/README.md +49 -0
  2. package/dist/babel/compatTransform.d.ts +20 -0
  3. package/dist/babel/compatTransform.d.ts.map +1 -0
  4. package/dist/babel/compatTransform.js +46 -0
  5. package/dist/browserstack/BrowserStackWorker.d.ts +150 -0
  6. package/dist/browserstack/BrowserStackWorker.d.ts.map +1 -0
  7. package/dist/browserstack/BrowserStackWorker.js +280 -0
  8. package/dist/browserstack/BrowserStackWorkerController.d.ts +103 -0
  9. package/dist/browserstack/BrowserStackWorkerController.d.ts.map +1 -0
  10. package/dist/browserstack/BrowserStackWorkerController.js +199 -0
  11. package/dist/browserstack/browserStackLocal.d.ts +3 -0
  12. package/dist/browserstack/browserStackLocal.d.ts.map +1 -0
  13. package/dist/browserstack/browserStackLocal.js +36 -0
  14. package/dist/browserstack/browserStackRestApi.d.ts +304 -0
  15. package/dist/browserstack/browserStackRestApi.d.ts.map +1 -0
  16. package/dist/browserstack/browserStackRestApi.js +121 -0
  17. package/dist/browserstack/configureReporterApi.d.ts +85 -0
  18. package/dist/browserstack/configureReporterApi.d.ts.map +1 -0
  19. package/dist/browserstack/configureReporterApi.js +51 -0
  20. package/dist/browserstack/runBrowserStack.d.ts +123 -0
  21. package/dist/browserstack/runBrowserStack.d.ts.map +1 -0
  22. package/dist/browserstack/runBrowserStack.js +204 -0
  23. package/dist/esbuild/CompatTransformPlugin.d.ts +6 -0
  24. package/dist/esbuild/CompatTransformPlugin.d.ts.map +1 -0
  25. package/dist/esbuild/CompatTransformPlugin.js +59 -0
  26. package/dist/esbuild/PureExportsPlugin.d.ts +11 -0
  27. package/dist/esbuild/PureExportsPlugin.d.ts.map +1 -0
  28. package/dist/esbuild/PureExportsPlugin.js +55 -0
  29. package/dist/esbuild/TypeDeclarationsPlugin.d.ts +9 -0
  30. package/dist/esbuild/TypeDeclarationsPlugin.d.ts.map +1 -0
  31. package/dist/esbuild/TypeDeclarationsPlugin.js +60 -0
  32. package/dist/esbuild/analyzeExports.d.ts +7 -0
  33. package/dist/esbuild/analyzeExports.d.ts.map +1 -0
  34. package/dist/esbuild/analyzeExports.js +78 -0
  35. package/dist/esbuild/buildAll.d.ts +12 -0
  36. package/dist/esbuild/buildAll.d.ts.map +1 -0
  37. package/dist/esbuild/buildAll.js +16 -0
  38. package/dist/esbuild/optionalEntryPoints.d.ts +8 -0
  39. package/dist/esbuild/optionalEntryPoints.d.ts.map +1 -0
  40. package/dist/esbuild/optionalEntryPoints.js +20 -0
  41. package/dist/express/serve.d.ts +33 -0
  42. package/dist/express/serve.d.ts.map +1 -0
  43. package/dist/express/serve.js +31 -0
  44. package/dist/express/startExpressServer.d.ts +80 -0
  45. package/dist/express/startExpressServer.d.ts.map +1 -0
  46. package/dist/express/startExpressServer.js +114 -0
  47. package/dist/index.d.ts +36 -0
  48. package/dist/index.d.ts.map +1 -0
  49. package/dist/index.js +35 -0
  50. package/dist/tsconfig.tsbuildinfo +1 -0
  51. package/dist/typescript/buildTypeDeclarations.d.ts +47 -0
  52. package/dist/typescript/buildTypeDeclarations.d.ts.map +1 -0
  53. package/dist/typescript/buildTypeDeclarations.js +65 -0
  54. package/dist/typescript/parseTsConfig.d.ts +13 -0
  55. package/dist/typescript/parseTsConfig.d.ts.map +1 -0
  56. package/dist/typescript/parseTsConfig.js +23 -0
  57. package/dist/typescript/replacePathAliases.d.ts +10 -0
  58. package/dist/typescript/replacePathAliases.d.ts.map +1 -0
  59. package/dist/typescript/replacePathAliases.js +26 -0
  60. package/dist/typescript/resolveProjectReferences.d.ts +8 -0
  61. package/dist/typescript/resolveProjectReferences.d.ts.map +1 -0
  62. package/dist/typescript/resolveProjectReferences.js +42 -0
  63. package/dist/typescript/tsc.d.ts +15 -0
  64. package/dist/typescript/tsc.d.ts.map +1 -0
  65. package/dist/typescript/tsc.js +28 -0
  66. package/dist/util/Logger.d.ts +34 -0
  67. package/dist/util/Logger.d.ts.map +1 -0
  68. package/dist/util/Logger.js +88 -0
  69. package/dist/util/TaskQueue.d.ts +30 -0
  70. package/dist/util/TaskQueue.d.ts.map +1 -0
  71. package/dist/util/TaskQueue.js +55 -0
  72. package/dist/util/console.d.ts +22 -0
  73. package/dist/util/console.d.ts.map +1 -0
  74. package/dist/util/console.js +58 -0
  75. package/dist/util/copyFiles.d.ts +33 -0
  76. package/dist/util/copyFiles.d.ts.map +1 -0
  77. package/dist/util/copyFiles.js +55 -0
  78. package/dist/util/extractArgs.d.ts +12 -0
  79. package/dist/util/extractArgs.d.ts.map +1 -0
  80. package/dist/util/extractArgs.js +23 -0
  81. package/dist/util/getRootProjectDir.d.ts +2 -0
  82. package/dist/util/getRootProjectDir.d.ts.map +1 -0
  83. package/dist/util/getRootProjectDir.js +14 -0
  84. package/dist/util/prompt.d.ts +2 -0
  85. package/dist/util/prompt.d.ts.map +1 -0
  86. package/dist/util/prompt.js +15 -0
  87. package/dist/util/sleep.d.ts +6 -0
  88. package/dist/util/sleep.d.ts.map +1 -0
  89. package/dist/util/sleep.js +13 -0
  90. package/dist/util/string.d.ts +22 -0
  91. package/dist/util/string.d.ts.map +1 -0
  92. package/dist/util/string.js +35 -0
  93. package/dist/util/writeIndexFile.d.ts +13 -0
  94. package/dist/util/writeIndexFile.d.ts.map +1 -0
  95. package/dist/util/writeIndexFile.js +92 -0
  96. package/dist/vinyl/buildVinylPackage.d.ts +40 -0
  97. package/dist/vinyl/buildVinylPackage.d.ts.map +1 -0
  98. package/dist/vinyl/buildVinylPackage.js +167 -0
  99. package/dist/vinyl/vinylDefaultBrowserStackOptions.d.ts +25 -0
  100. package/dist/vinyl/vinylDefaultBrowserStackOptions.d.ts.map +1 -0
  101. package/dist/vinyl/vinylDefaultBrowserStackOptions.js +28 -0
  102. package/dist/vinyl/vinylDefaultTscOptions.d.ts +3 -0
  103. package/dist/vinyl/vinylDefaultTscOptions.d.ts.map +1 -0
  104. package/dist/vinyl/vinylDefaultTscOptions.js +11 -0
  105. package/dist/vinyl/vinylSupportedBrowsers.d.ts +18 -0
  106. package/dist/vinyl/vinylSupportedBrowsers.d.ts.map +1 -0
  107. package/dist/vinyl/vinylSupportedBrowsers.js +55 -0
  108. package/package.json +52 -0
@@ -0,0 +1,167 @@
1
+ /*
2
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ import process from 'node:process';
6
+ import fs from 'node:fs';
7
+ import path from 'node:path';
8
+ import { createRequire } from 'node:module';
9
+ import { vinylDefaultTscOptions } from './vinylDefaultTscOptions';
10
+ import { tscPlugin } from '../esbuild/TypeDeclarationsPlugin';
11
+ import { compatTransformPlugin } from '../esbuild/CompatTransformPlugin';
12
+ import { copyFiles } from '../util/copyFiles';
13
+ import { buildAll } from '../esbuild/buildAll';
14
+ import { pureExportsPlugin } from '../esbuild/PureExportsPlugin';
15
+ import { startServer } from '../express/serve';
16
+ import { logger, LogLevel } from '../util/Logger';
17
+ import { optionalEntryPoints } from '../esbuild/optionalEntryPoints';
18
+ import { getRootProjectDir } from '../util/getRootProjectDir';
19
+ const argv = process.argv;
20
+ const release = argv.includes('--release');
21
+ const serve = argv.includes('--serve');
22
+ const watch = argv.includes('--watch') || serve;
23
+ const debug = argv.includes('--debug');
24
+ /**
25
+ * CLI args.
26
+ */
27
+ export const vinylBuildCliOptions = {
28
+ release,
29
+ serve,
30
+ watch,
31
+ debug,
32
+ };
33
+ /**
34
+ * Common vinyl library build config.
35
+ */
36
+ export const commonVinylBuildOptions = {
37
+ bundle: true,
38
+ format: 'esm',
39
+ platform: 'browser',
40
+ target: 'es2017',
41
+ minify: false,
42
+ sourcemap: true,
43
+ logLevel: debug ? 'debug' : 'info',
44
+ metafile: true,
45
+ external: ['@amazon/*'],
46
+ define: {
47
+ global: 'globalThis',
48
+ },
49
+ };
50
+ /**
51
+ * Builds a vinyl package with inferred configuration.
52
+ *
53
+ * @param options
54
+ */
55
+ export function buildVinylPackage(options) {
56
+ if (debug)
57
+ logger.level = LogLevel.DEBUG;
58
+ const overriddenOptions = options?.commonOptions ?? {};
59
+ // Merge overridden options, apply commonVinylBuildOptions then options.commonOptions
60
+ const commonOptions = {
61
+ ...commonVinylBuildOptions,
62
+ ...overriddenOptions,
63
+ define: {
64
+ ...commonVinylBuildOptions.define,
65
+ ...overriddenOptions.define,
66
+ },
67
+ };
68
+ const require = createRequire(import.meta.url);
69
+ const tsc = tscPlugin(vinylDefaultTscOptions);
70
+ const compat = compatTransformPlugin({
71
+ enabled: release,
72
+ });
73
+ const testEntries = [];
74
+ const rootDir = getRootProjectDir();
75
+ // Copy and optionally watch the html assets.
76
+ const sharedTestResourcesDir = `${rootDir}/testResources`;
77
+ const testResourcesDir = 'test/jasmine/resources';
78
+ const testDist = './dist/test';
79
+ if (fs.existsSync('./test/integ')) {
80
+ // If this package has integ tests, copy the integ test resources,
81
+ // from /testResources, test/jasmine/resources (optional), and copy the jasmine wrapper and css
82
+ copyFiles({
83
+ src: sharedTestResourcesDir,
84
+ dest: testDist,
85
+ required: true,
86
+ watch,
87
+ debug,
88
+ filter: (source) => {
89
+ if (fs.lstatSync(source).isDirectory()) {
90
+ return true;
91
+ }
92
+ // If the file is to be overwritten in the project-specific test resources folder, do not copy from the
93
+ // shared test resources.
94
+ const relPath = path.relative(sharedTestResourcesDir, source);
95
+ return !fs.existsSync(path.resolve(testResourcesDir, relPath));
96
+ },
97
+ });
98
+ copyFiles({
99
+ src: testResourcesDir,
100
+ dest: testDist,
101
+ required: false,
102
+ watch,
103
+ debug,
104
+ });
105
+ // Copy the jasmine css. No need for a watch, imported module doesn't change.
106
+ copyFiles({
107
+ src: require.resolve('jasmine-core/lib/jasmine-core/jasmine.css'),
108
+ dest: './dist/test/jasmine.css',
109
+ debug,
110
+ });
111
+ testEntries.push({
112
+ stdin: {
113
+ contents: `import '@amazon/vinyl-jasmine-wrapper'`,
114
+ resolveDir: process.cwd(),
115
+ loader: 'ts',
116
+ },
117
+ ...commonOptions,
118
+ external: [],
119
+ plugins: [compat],
120
+ outfile: 'dist/test/jasmineHtml.js',
121
+ });
122
+ }
123
+ if (serve || release) {
124
+ // Check for integ, unit, and benchmark tests
125
+ testEntries.push({
126
+ entryPoints: optionalEntryPoints({
127
+ integ: 'test/integ/index.ts',
128
+ benchmark: 'test/benchmark/index.ts',
129
+ }),
130
+ ...commonOptions,
131
+ external: [], // Bundle everything together for integ
132
+ format: 'iife',
133
+ outdir: 'dist/test/',
134
+ plugins: [tsc, compat],
135
+ });
136
+ }
137
+ // Build and optionally watch all targets.
138
+ buildAll([
139
+ {
140
+ entryPoints: ['src/index.ts'],
141
+ ...commonOptions,
142
+ plugins: [tsc, pureExportsPlugin],
143
+ outfile: 'dist/index.js',
144
+ },
145
+ {
146
+ entryPoints: ['src/index.ts'],
147
+ ...commonOptions,
148
+ format: 'cjs',
149
+ // No need to run tsc again, esm entry point compiles declarations
150
+ plugins: [pureExportsPlugin],
151
+ outfile: 'dist/index.cjs',
152
+ },
153
+ ...(options?.buildOptions ?? []),
154
+ ...testEntries,
155
+ ], { watch })
156
+ .then(() => {
157
+ if (serve) {
158
+ if (!options?.serverOptions)
159
+ throw new Error('serverOptions not set');
160
+ void startServer(options.serverOptions);
161
+ }
162
+ })
163
+ .catch((error) => {
164
+ console.error('message' in error ? error.message : error);
165
+ process.exit(1);
166
+ });
167
+ }
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Defaults for browserstack configuration in Vinyl related projects.
3
+ */
4
+ export declare const vinylDefaultBrowserStackOptions: {
5
+ readonly credentials: import("..").BrowserStackCredentials;
6
+ readonly browsers: readonly import("..").WorkerInitOptions[];
7
+ readonly server: {
8
+ readonly http: {
9
+ readonly port: 9000;
10
+ };
11
+ readonly staticDir: "./dist/test";
12
+ readonly addressInUseAutoIncrement: true;
13
+ };
14
+ readonly stopOnFirstFailure: true;
15
+ readonly workerCommon: {
16
+ readonly video: true;
17
+ readonly timeout: number;
18
+ };
19
+ readonly worker: {
20
+ readonly queryParams: {
21
+ readonly vinylLogLevel: "debug";
22
+ };
23
+ };
24
+ };
25
+ //# sourceMappingURL=vinylDefaultBrowserStackOptions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vinylDefaultBrowserStackOptions.d.ts","sourceRoot":"","sources":["../../src/vinyl/vinylDefaultBrowserStackOptions.ts"],"names":[],"mappings":"AAWA;;GAEG;AACH,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;CAkBK,CAAA"}
@@ -0,0 +1,28 @@
1
+ /*
2
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ import { getEnvBrowserStackCredentials, } from '../browserstack/runBrowserStack';
6
+ import { vinylSupportedBrowsers } from './vinylSupportedBrowsers';
7
+ /**
8
+ * Defaults for browserstack configuration in Vinyl related projects.
9
+ */
10
+ export const vinylDefaultBrowserStackOptions = {
11
+ credentials: getEnvBrowserStackCredentials(),
12
+ browsers: vinylSupportedBrowsers,
13
+ server: {
14
+ http: { port: 9000 },
15
+ staticDir: './dist/test',
16
+ addressInUseAutoIncrement: true,
17
+ },
18
+ stopOnFirstFailure: true,
19
+ workerCommon: {
20
+ video: true,
21
+ timeout: 10 * 60, // 10 minutes
22
+ },
23
+ worker: {
24
+ queryParams: {
25
+ vinylLogLevel: 'debug',
26
+ },
27
+ },
28
+ };
@@ -0,0 +1,3 @@
1
+ import type { TypeDeclarationOptions } from '../typescript/buildTypeDeclarations';
2
+ export declare const vinylDefaultTscOptions: TypeDeclarationOptions;
3
+ //# sourceMappingURL=vinylDefaultTscOptions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vinylDefaultTscOptions.d.ts","sourceRoot":"","sources":["../../src/vinyl/vinylDefaultTscOptions.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAA;AAEjF,eAAO,MAAM,sBAAsB,EAAE,sBAMpC,CAAA"}
@@ -0,0 +1,11 @@
1
+ /*
2
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ export const vinylDefaultTscOptions = {
6
+ downlevel: {
7
+ // 4.7 must be included; typescript started supporting 'exports' in package.json at 4.7
8
+ versions: ['3.7', '4.1', '4.7'],
9
+ out: '{OUT_DIR}/../ts{VERSION}',
10
+ },
11
+ };
@@ -0,0 +1,18 @@
1
+ import type { WorkerInitOptions } from '../browserstack/runBrowserStack';
2
+ /**
3
+ * Notes:
4
+ * Firefox for Windows does not accept our root CA on BrowserStack.
5
+ * Firefox (any OS) does not run in a secure context with localhost.
6
+ * Firefox for macOS does accept our root CA.
7
+ * iOS redirects localhost to bs-local.com and must use HTTPS.
8
+ *
9
+ * Tests that require a secure context (DRM) are expected to be skipped if one cannot be
10
+ * established.
11
+ *
12
+ * https should be true for browsers that accept our root CA and are not in a secure context when
13
+ * using localhost.
14
+ *
15
+ * @module
16
+ */
17
+ export declare const vinylSupportedBrowsers: readonly WorkerInitOptions[];
18
+ //# sourceMappingURL=vinylSupportedBrowsers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vinylSupportedBrowsers.d.ts","sourceRoot":"","sources":["../../src/vinyl/vinylSupportedBrowsers.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAExE;;;;;;;;;;;;;;GAcG;AAEH,eAAO,MAAM,sBAAsB,EAAE,SAAS,iBAAiB,EAyCrD,CAAA"}
@@ -0,0 +1,55 @@
1
+ /*
2
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ /**
6
+ * Notes:
7
+ * Firefox for Windows does not accept our root CA on BrowserStack.
8
+ * Firefox (any OS) does not run in a secure context with localhost.
9
+ * Firefox for macOS does accept our root CA.
10
+ * iOS redirects localhost to bs-local.com and must use HTTPS.
11
+ *
12
+ * Tests that require a secure context (DRM) are expected to be skipped if one cannot be
13
+ * established.
14
+ *
15
+ * https should be true for browsers that accept our root CA and are not in a secure context when
16
+ * using localhost.
17
+ *
18
+ * @module
19
+ */
20
+ export const vinylSupportedBrowsers = [
21
+ {
22
+ browser: 'chrome',
23
+ browser_version: 'latest',
24
+ os: 'OS X',
25
+ os_version: 'Monterey',
26
+ },
27
+ {
28
+ browser: 'safari',
29
+ browser_version: 'latest',
30
+ os: 'OS X',
31
+ os_version: 'Sonoma',
32
+ },
33
+ {
34
+ browser: 'firefox',
35
+ browser_version: 'latest',
36
+ os: 'Windows',
37
+ os_version: '10',
38
+ },
39
+ // Mobile
40
+ {
41
+ device: 'Samsung Galaxy S23 Ultra',
42
+ os: 'android',
43
+ os_version: '13.0',
44
+ },
45
+ {
46
+ device: 'iPhone 13',
47
+ os: 'ios',
48
+ os_version: '17',
49
+ },
50
+ {
51
+ device: 'iPhone 15 Pro Max',
52
+ os: 'ios',
53
+ os_version: '17',
54
+ },
55
+ ];
package/package.json ADDED
@@ -0,0 +1,52 @@
1
+ {
2
+ "name": "@amazon/vinyl-build-utils",
3
+ "version": "1.0.0",
4
+ "description": "Build utilities and configuration for TypeScript libraries.",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "git+https://github.com/amazonmusic/vinyl.git"
8
+ },
9
+ "main": "dist/index.js",
10
+ "types": "dist/index.d.ts",
11
+ "type": "module",
12
+ "sideEffects": [
13
+ "test/**/*"
14
+ ],
15
+ "files": [
16
+ "dist",
17
+ "jscodeshift",
18
+ ".prettierrc.json"
19
+ ],
20
+ "scripts": {
21
+ "build": "tsc -p ./src/tsconfig.json",
22
+ "build:release": "tsc -p ./src/tsconfig.json",
23
+ "build:watch": "tsc -p ./src/tsconfig.json -w",
24
+ "clean": "rimraf --glob dist .eslintcache \"**/*.tsbuildinfo\"",
25
+ "eslint:check": "eslint . --cache --max-warnings=0",
26
+ "eslint:write": "eslint . --cache --fix",
27
+ "indexFiles:check": "tsx ./buildScripts/writeIndexFiles.ts --check",
28
+ "indexFiles:write": "tsx ./buildScripts/writeIndexFiles.ts",
29
+ "lint": "npm run eslint:check && npm run prettier:check && npm run indexFiles:check",
30
+ "lint:write": "npm run indexFiles:write && npm run eslint:write && npm run prettier:write",
31
+ "prettier:check": "prettier . --ignore-path ../../.prettierignore --cache --check",
32
+ "prettier:write": "prettier . --ignore-path ../../.prettierignore --cache --write",
33
+ "release": "npm run lint && npm run build:release",
34
+ "test": "tsx ../../node_modules/jasmine/bin/jasmine --config=test/unit/jasmine.config.json",
35
+ "test:coverage": "echo \"No tests\"",
36
+ "validate": "npm run lint"
37
+ },
38
+ "author": "",
39
+ "license": "ISC",
40
+ "devDependencies": {
41
+ "@nbilyk/downlevel-dts": "^0.15.2",
42
+ "@types/babel__core": "^7.20.5",
43
+ "@types/express": "^5.0.1",
44
+ "@types/jscodeshift": "^0.12.0",
45
+ "jscodeshift": "^17.1.2",
46
+ "magic-string": "^0.30.17"
47
+ },
48
+ "dependencies": {
49
+ "express": "^5.1.0",
50
+ "http-proxy-middleware": "^3.0.5"
51
+ }
52
+ }