skuba 8.0.0-update-eslint-config-skuba-20240323071344 → 8.0.1-cjs-mjs-output-20240326042856

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/README.md CHANGED
@@ -2,9 +2,9 @@
2
2
 
3
3
  ---
4
4
 
5
- [![GitHub Release](https://github.com/seek-oss/skuba/workflows/Release/badge.svg?branch=master)](https://github.com/seek-oss/skuba/actions?query=workflow%3ARelease)
6
- [![GitHub Validate](https://github.com/seek-oss/skuba/workflows/Validate/badge.svg?branch=master)](https://github.com/seek-oss/skuba/actions?query=workflow%3AValidate)
7
- [![Node.js version](https://img.shields.io/badge/node-%3E%3D%2018.12-brightgreen)](https://nodejs.org/en/)
5
+ [![GitHub Release](https://github.com/seek-oss/skuba/workflows/Release/badge.svg?branch=main)](https://github.com/seek-oss/skuba/actions?query=workflow%3ARelease)
6
+ [![GitHub Validate](https://github.com/seek-oss/skuba/workflows/Validate/badge.svg?branch=main)](https://github.com/seek-oss/skuba/actions?query=workflow%3AValidate)
7
+ [![Node.js version](https://img.shields.io/badge/node-%3E%3D%2018.18-brightgreen)](https://nodejs.org/en/)
8
8
  [![npm package](https://img.shields.io/npm/v/skuba)](https://www.npmjs.com/package/skuba)
9
9
 
10
10
  ---
@@ -12,136 +12,4 @@ type DefaultOptions = 'collectCoverage' | 'collectCoverageFrom' | 'coveragePathI
12
12
  *
13
13
  * This concatenates array options like `testPathIgnorePatterns`.
14
14
  */
15
- export declare const mergePreset: <AdditionalOptions extends "filter" | "json" | "silent" | "transform" | "cache" | "runtime" | "watch" | "runner" | "projects" | "id" | "automock" | "cacheDirectory" | "clearMocks" | "collectCoverageFrom" | "coverageDirectory" | "coveragePathIgnorePatterns" | "dependencyExtractor" | "detectLeaks" | "detectOpenHandles" | "displayName" | "errorOnDeprecated" | "extensionsToTreatAsEsm" | "fakeTimers" | "forceCoverageMatch" | "globalSetup" | "globalTeardown" | "globals" | "haste" | "injectGlobals" | "moduleDirectories" | "moduleFileExtensions" | "moduleNameMapper" | "modulePathIgnorePatterns" | "modulePaths" | "openHandlesTimeout" | "preset" | "prettierPath" | "resetMocks" | "resetModules" | "resolver" | "restoreMocks" | "rootDir" | "roots" | "sandboxInjectedGlobals" | "setupFiles" | "setupFilesAfterEnv" | "skipFilter" | "skipNodeResolution" | "slowTestThreshold" | "snapshotResolver" | "snapshotSerializers" | "snapshotFormat" | "testEnvironment" | "testEnvironmentOptions" | "testMatch" | "testLocationInResults" | "testPathIgnorePatterns" | "testRegex" | "testRunner" | "transformIgnorePatterns" | "watchPathIgnorePatterns" | "unmockedModulePathPatterns" | "workerIdleMemoryLimit" | "bail" | "ci" | "changedFilesWithAncestor" | "changedSince" | "collectCoverage" | "coverageProvider" | "coverageReporters" | "coverageThreshold" | "expand" | "findRelatedTests" | "forceExit" | "reporters" | "logHeapUsage" | "lastCommit" | "listTests" | "maxConcurrency" | "maxWorkers" | "noStackTrace" | "notify" | "notifyMode" | "onlyChanged" | "onlyFailures" | "outputFile" | "passWithNoTests" | "randomize" | "replname" | "runTestsByPath" | "showSeed" | "testFailureExitCode" | "testNamePattern" | "testResultsProcessor" | "testSequencer" | "testTimeout" | "updateSnapshot" | "useStderr" | "verbose" | "watchAll" | "watchman" | "watchPlugins" | "workerThreads">({ projects, ...options }: Pick<Partial<{
16
- automock: boolean;
17
- bail: number | boolean;
18
- cache: boolean;
19
- cacheDirectory: string;
20
- ci: boolean;
21
- clearMocks: boolean;
22
- changedFilesWithAncestor: boolean;
23
- changedSince: string;
24
- collectCoverage: boolean;
25
- collectCoverageFrom: string[];
26
- coverageDirectory: string;
27
- coveragePathIgnorePatterns: string[];
28
- coverageProvider: "v8" | "babel";
29
- coverageReporters: Config.CoverageReporters;
30
- coverageThreshold: {
31
- [path: string]: Config.CoverageThresholdValue;
32
- global: Config.CoverageThresholdValue;
33
- };
34
- dependencyExtractor: string;
35
- detectLeaks: boolean;
36
- detectOpenHandles: boolean;
37
- displayName: string | Config.DisplayName;
38
- expand: boolean;
39
- extensionsToTreatAsEsm: string[];
40
- fakeTimers: Config.GlobalFakeTimersConfig & ((Config.FakeTimersConfig & {
41
- now?: number | undefined;
42
- }) | Config.LegacyFakeTimersConfig);
43
- filter: string;
44
- findRelatedTests: boolean;
45
- forceCoverageMatch: string[];
46
- forceExit: boolean;
47
- json: boolean;
48
- globals: Config.ConfigGlobals;
49
- globalSetup: string | null | undefined;
50
- globalTeardown: string | null | undefined;
51
- haste: Config.HasteConfig;
52
- id: string;
53
- injectGlobals: boolean;
54
- reporters: (string | Config.ReporterConfig)[];
55
- logHeapUsage: boolean;
56
- lastCommit: boolean;
57
- listTests: boolean;
58
- maxConcurrency: number;
59
- maxWorkers: string | number;
60
- moduleDirectories: string[];
61
- moduleFileExtensions: string[];
62
- moduleNameMapper: {
63
- [key: string]: string | string[];
64
- };
65
- modulePathIgnorePatterns: string[];
66
- modulePaths: string[];
67
- noStackTrace: boolean;
68
- notify: boolean;
69
- notifyMode: string;
70
- onlyChanged: boolean;
71
- onlyFailures: boolean;
72
- openHandlesTimeout: number;
73
- outputFile: string;
74
- passWithNoTests: boolean;
75
- preset: string | null | undefined;
76
- prettierPath: string | null | undefined;
77
- projects: (string | Config.InitialProjectOptions)[];
78
- randomize: boolean;
79
- replname: string | null | undefined;
80
- resetMocks: boolean;
81
- resetModules: boolean;
82
- resolver: string | null | undefined;
83
- restoreMocks: boolean;
84
- rootDir: string;
85
- roots: string[];
86
- runner: string;
87
- runTestsByPath: boolean;
88
- runtime: string;
89
- sandboxInjectedGlobals: string[];
90
- setupFiles: string[];
91
- setupFilesAfterEnv: string[];
92
- showSeed: boolean;
93
- silent: boolean;
94
- skipFilter: boolean;
95
- skipNodeResolution: boolean;
96
- slowTestThreshold: number;
97
- snapshotResolver: string;
98
- snapshotSerializers: string[];
99
- snapshotFormat: {
100
- readonly min?: boolean | undefined;
101
- readonly callToJSON?: boolean | undefined;
102
- readonly compareKeys?: null | undefined;
103
- readonly escapeRegex?: boolean | undefined;
104
- readonly escapeString?: boolean | undefined;
105
- readonly highlight?: boolean | undefined;
106
- readonly indent?: number | undefined;
107
- readonly maxDepth?: number | undefined;
108
- readonly maxWidth?: number | undefined;
109
- readonly printBasicPrototype?: boolean | undefined;
110
- readonly printFunctionName?: boolean | undefined;
111
- readonly theme?: {
112
- readonly value?: string | undefined;
113
- readonly tag?: string | undefined;
114
- readonly content?: string | undefined;
115
- readonly comment?: string | undefined;
116
- readonly prop?: string | undefined;
117
- } | undefined;
118
- };
119
- errorOnDeprecated: boolean;
120
- testEnvironment: string;
121
- testEnvironmentOptions: Record<string, unknown>;
122
- testFailureExitCode: string | number;
123
- testLocationInResults: boolean;
124
- testMatch: string[];
125
- testNamePattern: string;
126
- testPathIgnorePatterns: string[];
127
- testRegex: string | string[];
128
- testResultsProcessor: string;
129
- testRunner: string;
130
- testSequencer: string;
131
- testTimeout: number;
132
- transform: {
133
- [regex: string]: string | Config.TransformerConfig;
134
- };
135
- transformIgnorePatterns: string[];
136
- watchPathIgnorePatterns: string[];
137
- unmockedModulePathPatterns: string[];
138
- updateSnapshot: boolean;
139
- useStderr: boolean;
140
- verbose?: boolean | undefined;
141
- watch: boolean;
142
- watchAll: boolean;
143
- watchman: boolean;
144
- watchPlugins: (string | [string, Record<string, unknown>])[];
145
- workerIdleMemoryLimit: string | number;
146
- workerThreads: boolean;
147
- }>, DefaultOptions | AdditionalOptions>) => Config.InitialOptions;
15
+ export declare const mergePreset: <AdditionalOptions extends "filter" | "json" | "silent" | "transform" | "cache" | "runtime" | "watch" | "runner" | "projects" | "id" | "automock" | "cacheDirectory" | "clearMocks" | "collectCoverageFrom" | "coverageDirectory" | "coveragePathIgnorePatterns" | "dependencyExtractor" | "detectLeaks" | "detectOpenHandles" | "displayName" | "errorOnDeprecated" | "extensionsToTreatAsEsm" | "fakeTimers" | "forceCoverageMatch" | "globalSetup" | "globalTeardown" | "globals" | "haste" | "injectGlobals" | "moduleDirectories" | "moduleFileExtensions" | "moduleNameMapper" | "modulePathIgnorePatterns" | "modulePaths" | "openHandlesTimeout" | "preset" | "prettierPath" | "resetMocks" | "resetModules" | "resolver" | "restoreMocks" | "rootDir" | "roots" | "sandboxInjectedGlobals" | "setupFiles" | "setupFilesAfterEnv" | "skipFilter" | "skipNodeResolution" | "slowTestThreshold" | "snapshotResolver" | "snapshotSerializers" | "snapshotFormat" | "testEnvironment" | "testEnvironmentOptions" | "testMatch" | "testLocationInResults" | "testPathIgnorePatterns" | "testRegex" | "testRunner" | "transformIgnorePatterns" | "watchPathIgnorePatterns" | "unmockedModulePathPatterns" | "workerIdleMemoryLimit" | "bail" | "ci" | "changedFilesWithAncestor" | "changedSince" | "collectCoverage" | "coverageProvider" | "coverageReporters" | "coverageThreshold" | "expand" | "findRelatedTests" | "forceExit" | "reporters" | "logHeapUsage" | "lastCommit" | "listTests" | "maxConcurrency" | "maxWorkers" | "noStackTrace" | "notify" | "notifyMode" | "onlyChanged" | "onlyFailures" | "outputFile" | "passWithNoTests" | "randomize" | "replname" | "runTestsByPath" | "showSeed" | "testFailureExitCode" | "testNamePattern" | "testResultsProcessor" | "testSequencer" | "testTimeout" | "updateSnapshot" | "useStderr" | "verbose" | "watchAll" | "watchman" | "watchPlugins" | "workerThreads">({ projects, ...options }: Pick<Config.InitialOptions, AdditionalOptions | DefaultOptions>) => Config.InitialOptions;
@@ -1,5 +1,6 @@
1
1
  interface EsbuildParameters {
2
2
  debug: boolean;
3
+ mode: 'build' | 'build-package';
3
4
  }
4
- export declare const esbuild: ({ debug }: EsbuildParameters, args?: string[]) => Promise<void>;
5
+ export declare const esbuild: ({ debug, mode }: EsbuildParameters, args?: string[]) => Promise<void>;
5
6
  export {};
@@ -38,7 +38,7 @@ var import_typescript = require("typescript");
38
38
  var import_logging = require("../../utils/logging");
39
39
  var import_args = require("./args");
40
40
  var import_tsc = require("./tsc");
41
- const esbuild = async ({ debug }, args = process.argv.slice(2)) => {
41
+ const esbuild = async ({ debug, mode }, args = process.argv.slice(2)) => {
42
42
  const log = (0, import_logging.createLogger)(debug);
43
43
  const tscArgs = (0, import_args.parseTscArgs)(args);
44
44
  if (tscArgs.build) {
@@ -58,15 +58,86 @@ const esbuild = async ({ debug }, args = process.argv.slice(2)) => {
58
58
  log.debug(log.bold("Compiler options"));
59
59
  log.debug((0, import_util.inspect)(compilerOptions));
60
60
  const start = process.hrtime.bigint();
61
+ switch (mode) {
62
+ case "build":
63
+ await runBuild({
64
+ compilerOptions,
65
+ debug,
66
+ entryPoints,
67
+ tsconfig: tscArgs.pathname
68
+ });
69
+ break;
70
+ case "build-package":
71
+ await runBuild({
72
+ compilerOptions: {
73
+ ...compilerOptions,
74
+ module: import_typescript.ModuleKind.ESNext
75
+ },
76
+ debug,
77
+ entryPoints,
78
+ outExtension: { ".js": ".mjs" },
79
+ tsconfig: tscArgs.pathname
80
+ });
81
+ await runBuild({
82
+ compilerOptions: {
83
+ ...compilerOptions,
84
+ module: import_typescript.ModuleKind.NodeNext
85
+ },
86
+ debug,
87
+ entryPoints,
88
+ outExtension: { ".js": ".cjs" },
89
+ tsconfig: tscArgs.pathname
90
+ });
91
+ break;
92
+ }
93
+ const end = process.hrtime.bigint();
94
+ log.plain(`Built in ${log.timing(start, end)}.`);
95
+ if (compilerOptions.declaration) {
96
+ await (0, import_tsc.tsc)([
97
+ "--declaration",
98
+ "--emitDeclarationOnly",
99
+ ...tscArgs.project ? ["--project", tscArgs.project] : []
100
+ ]);
101
+ }
102
+ };
103
+ const ES_MODULE_KINDS = /* @__PURE__ */ new Set([
104
+ import_typescript.ModuleKind.ES2015,
105
+ import_typescript.ModuleKind.ES2020,
106
+ import_typescript.ModuleKind.ES2022,
107
+ import_typescript.ModuleKind.ESNext
108
+ ]);
109
+ const NODE_MODULE_KINDS = /* @__PURE__ */ new Set([
110
+ import_typescript.ModuleKind.CommonJS,
111
+ import_typescript.ModuleKind.Node16,
112
+ import_typescript.ModuleKind.NodeNext
113
+ ]);
114
+ const mapModule = (compilerOptions) => {
115
+ if (NODE_MODULE_KINDS.has(compilerOptions.module)) {
116
+ return { format: "cjs", platform: "node" };
117
+ }
118
+ if (ES_MODULE_KINDS.has(compilerOptions.module)) {
119
+ return { format: "esm", platform: "neutral" };
120
+ }
121
+ return { format: void 0, platform: void 0 };
122
+ };
123
+ const runBuild = async ({
124
+ compilerOptions,
125
+ debug,
126
+ entryPoints,
127
+ outExtension,
128
+ tsconfig
129
+ }) => {
61
130
  const bundle = false;
131
+ const { format, platform } = mapModule(compilerOptions);
62
132
  await (0, import_esbuild.build)({
63
133
  bundle,
64
134
  entryPoints,
65
- format: compilerOptions.module === import_typescript.ModuleKind.CommonJS ? "cjs" : void 0,
135
+ format,
66
136
  outdir: compilerOptions.outDir,
67
137
  logLevel: debug ? "debug" : "info",
68
138
  logLimit: 0,
69
- platform: compilerOptions.moduleResolution === import_typescript.ModuleResolutionKind.NodeJs ? "node" : void 0,
139
+ outExtension,
140
+ platform,
70
141
  plugins: bundle ? [] : [
71
142
  // evanw/esbuild#394
72
143
  (0, import_tsconfig_paths.default)({
@@ -79,17 +150,8 @@ const esbuild = async ({ debug }, args = process.argv.slice(2)) => {
79
150
  // This would be unusual for a typical SEEK project but we can still explore
80
151
  // an explicit setting once we implement `skuba.config.ts` (#1167).
81
152
  target: compilerOptions.target ? import_typescript.ScriptTarget[compilerOptions.target].toLocaleLowerCase() : void 0,
82
- tsconfig: tscArgs.pathname
153
+ tsconfig
83
154
  });
84
- const end = process.hrtime.bigint();
85
- log.plain(`Built in ${log.timing(start, end)}.`);
86
- if (compilerOptions.declaration) {
87
- await (0, import_tsc.tsc)([
88
- "--declaration",
89
- "--emitDeclarationOnly",
90
- ...tscArgs.project ? ["--project", tscArgs.project] : []
91
- ]);
92
- }
93
155
  };
94
156
  // Annotate the CommonJS export names for ESM import in node:
95
157
  0 && (module.exports = {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/cli/build/esbuild.ts"],
4
- "sourcesContent": ["import { inspect } from 'util';\n\nimport tsconfigPaths from '@esbuild-plugins/tsconfig-paths';\nimport { build } from 'esbuild';\nimport { ModuleKind, ModuleResolutionKind, ScriptTarget } from 'typescript';\n\nimport { createLogger } from '../../utils/logging';\n\nimport { parseTscArgs } from './args';\nimport { readTsconfig, tsc } from './tsc';\n\ninterface EsbuildParameters {\n debug: boolean;\n}\n\nexport const esbuild = async (\n { debug }: EsbuildParameters,\n args = process.argv.slice(2),\n) => {\n const log = createLogger(debug);\n\n const tscArgs = parseTscArgs(args);\n\n if (tscArgs.build) {\n log.err(\n 'skuba does not currently support the tsc --build flag with esbuild',\n );\n process.exitCode = 1;\n return;\n }\n\n const parsedCommandLine = readTsconfig(args, log);\n\n if (!parsedCommandLine || process.exitCode) {\n return;\n }\n\n const { fileNames: entryPoints, options: compilerOptions } =\n parsedCommandLine;\n\n log.debug(log.bold('Files'));\n entryPoints.forEach((filepath) => log.debug(filepath));\n\n log.debug(log.bold('Compiler options'));\n log.debug(inspect(compilerOptions));\n\n const start = process.hrtime.bigint();\n\n // TODO: support `bundle`, `minify`, `splitting`, `treeShaking`\n const bundle = false;\n\n await build({\n bundle,\n entryPoints,\n format: compilerOptions.module === ModuleKind.CommonJS ? 'cjs' : undefined,\n outdir: compilerOptions.outDir,\n logLevel: debug ? 'debug' : 'info',\n logLimit: 0,\n platform:\n compilerOptions.moduleResolution === ModuleResolutionKind.NodeJs\n ? 'node'\n : undefined,\n plugins: bundle\n ? []\n : [\n // evanw/esbuild#394\n tsconfigPaths({\n tsconfig: { baseUrl: compilerOptions.baseUrl, compilerOptions },\n }),\n ],\n sourcemap: compilerOptions.sourceMap,\n // TODO: as of 0.18, the esbuild CLI no longer infers the target property to\n // avoid ambiguity where multiple `tsconfig.json`s are involved in a build.\n // This would be unusual for a typical SEEK project but we can still explore\n // an explicit setting once we implement `skuba.config.ts` (#1167).\n target: compilerOptions.target\n ? ScriptTarget[compilerOptions.target].toLocaleLowerCase()\n : undefined,\n tsconfig: tscArgs.pathname,\n });\n\n const end = process.hrtime.bigint();\n\n log.plain(`Built in ${log.timing(start, end)}.`);\n\n if (compilerOptions.declaration) {\n await tsc([\n '--declaration',\n '--emitDeclarationOnly',\n ...(tscArgs.project ? ['--project', tscArgs.project] : []),\n ]);\n }\n};\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAwB;AAExB,4BAA0B;AAC1B,qBAAsB;AACtB,wBAA+D;AAE/D,qBAA6B;AAE7B,kBAA6B;AAC7B,iBAAkC;AAM3B,MAAM,UAAU,OACrB,EAAE,MAAM,GACR,OAAO,QAAQ,KAAK,MAAM,CAAC,MACxB;AACH,QAAM,UAAM,6BAAa,KAAK;AAE9B,QAAM,cAAU,0BAAa,IAAI;AAEjC,MAAI,QAAQ,OAAO;AACjB,QAAI;AAAA,MACF;AAAA,IACF;AACA,YAAQ,WAAW;AACnB;AAAA,EACF;AAEA,QAAM,wBAAoB,yBAAa,MAAM,GAAG;AAEhD,MAAI,CAAC,qBAAqB,QAAQ,UAAU;AAC1C;AAAA,EACF;AAEA,QAAM,EAAE,WAAW,aAAa,SAAS,gBAAgB,IACvD;AAEF,MAAI,MAAM,IAAI,KAAK,OAAO,CAAC;AAC3B,cAAY,QAAQ,CAAC,aAAa,IAAI,MAAM,QAAQ,CAAC;AAErD,MAAI,MAAM,IAAI,KAAK,kBAAkB,CAAC;AACtC,MAAI,UAAM,qBAAQ,eAAe,CAAC;AAElC,QAAM,QAAQ,QAAQ,OAAO,OAAO;AAGpC,QAAM,SAAS;AAEf,YAAM,sBAAM;AAAA,IACV;AAAA,IACA;AAAA,IACA,QAAQ,gBAAgB,WAAW,6BAAW,WAAW,QAAQ;AAAA,IACjE,QAAQ,gBAAgB;AAAA,IACxB,UAAU,QAAQ,UAAU;AAAA,IAC5B,UAAU;AAAA,IACV,UACE,gBAAgB,qBAAqB,uCAAqB,SACtD,SACA;AAAA,IACN,SAAS,SACL,CAAC,IACD;AAAA;AAAA,UAEE,sBAAAA,SAAc;AAAA,QACZ,UAAU,EAAE,SAAS,gBAAgB,SAAS,gBAAgB;AAAA,MAChE,CAAC;AAAA,IACH;AAAA,IACJ,WAAW,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA,IAK3B,QAAQ,gBAAgB,SACpB,+BAAa,gBAAgB,MAAM,EAAE,kBAAkB,IACvD;AAAA,IACJ,UAAU,QAAQ;AAAA,EACpB,CAAC;AAED,QAAM,MAAM,QAAQ,OAAO,OAAO;AAElC,MAAI,MAAM,YAAY,IAAI,OAAO,OAAO,GAAG,CAAC,GAAG;AAE/C,MAAI,gBAAgB,aAAa;AAC/B,cAAM,gBAAI;AAAA,MACR;AAAA,MACA;AAAA,MACA,GAAI,QAAQ,UAAU,CAAC,aAAa,QAAQ,OAAO,IAAI,CAAC;AAAA,IAC1D,CAAC;AAAA,EACH;AACF;",
4
+ "sourcesContent": ["import { inspect } from 'util';\n\nimport tsconfigPaths from '@esbuild-plugins/tsconfig-paths';\nimport { type BuildOptions, build } from 'esbuild';\nimport { type CompilerOptions, ModuleKind, ScriptTarget } from 'typescript';\n\nimport { createLogger } from '../../utils/logging';\n\nimport { parseTscArgs } from './args';\nimport { readTsconfig, tsc } from './tsc';\n\ninterface EsbuildParameters {\n debug: boolean;\n mode: 'build' | 'build-package';\n}\n\nexport const esbuild = async (\n { debug, mode }: EsbuildParameters,\n args = process.argv.slice(2),\n) => {\n const log = createLogger(debug);\n\n const tscArgs = parseTscArgs(args);\n\n if (tscArgs.build) {\n log.err(\n 'skuba does not currently support the tsc --build flag with esbuild',\n );\n process.exitCode = 1;\n return;\n }\n\n const parsedCommandLine = readTsconfig(args, log);\n\n if (!parsedCommandLine || process.exitCode) {\n return;\n }\n\n const { fileNames: entryPoints, options: compilerOptions } =\n parsedCommandLine;\n\n log.debug(log.bold('Files'));\n entryPoints.forEach((filepath) => log.debug(filepath));\n\n log.debug(log.bold('Compiler options'));\n log.debug(inspect(compilerOptions));\n\n const start = process.hrtime.bigint();\n\n switch (mode) {\n case 'build':\n await runBuild({\n compilerOptions,\n debug,\n entryPoints,\n tsconfig: tscArgs.pathname,\n });\n\n break;\n\n case 'build-package':\n await runBuild({\n compilerOptions: {\n ...compilerOptions,\n module: ModuleKind.ESNext,\n },\n debug,\n entryPoints,\n outExtension: { '.js': '.mjs' },\n tsconfig: tscArgs.pathname,\n });\n\n await runBuild({\n compilerOptions: {\n ...compilerOptions,\n module: ModuleKind.NodeNext,\n },\n debug,\n entryPoints,\n outExtension: { '.js': '.cjs' },\n tsconfig: tscArgs.pathname,\n });\n\n break;\n }\n\n const end = process.hrtime.bigint();\n\n log.plain(`Built in ${log.timing(start, end)}.`);\n\n if (compilerOptions.declaration) {\n await tsc([\n '--declaration',\n '--emitDeclarationOnly',\n ...(tscArgs.project ? ['--project', tscArgs.project] : []),\n ]);\n }\n};\n\nconst ES_MODULE_KINDS = new Set<ModuleKind | undefined>([\n ModuleKind.ES2015,\n ModuleKind.ES2020,\n ModuleKind.ES2022,\n ModuleKind.ESNext,\n]);\n\nconst NODE_MODULE_KINDS = new Set<ModuleKind | undefined>([\n ModuleKind.CommonJS,\n ModuleKind.Node16,\n ModuleKind.NodeNext,\n]);\n\nconst mapModule = (\n compilerOptions: CompilerOptions,\n): Pick<BuildOptions, 'format' | 'platform'> => {\n if (NODE_MODULE_KINDS.has(compilerOptions.module)) {\n return { format: 'cjs', platform: 'node' };\n }\n\n if (ES_MODULE_KINDS.has(compilerOptions.module)) {\n return { format: 'esm', platform: 'neutral' };\n }\n\n return { format: undefined, platform: undefined };\n};\n\ntype RunEsbuildOptions = {\n compilerOptions: Pick<\n CompilerOptions,\n 'baseUrl' | 'module' | 'outDir' | 'paths' | 'sourceMap' | 'target'\n >;\n debug: boolean;\n entryPoints: string[];\n outExtension?: BuildOptions['outExtension'];\n tsconfig: string;\n};\n\nconst runBuild = async ({\n compilerOptions,\n debug,\n entryPoints,\n outExtension,\n tsconfig,\n}: RunEsbuildOptions) => {\n // TODO: support `bundle`, `minify`, `splitting`, `treeShaking`\n const bundle = false;\n\n const { format, platform } = mapModule(compilerOptions);\n\n await build({\n bundle,\n entryPoints,\n format,\n outdir: compilerOptions.outDir,\n logLevel: debug ? 'debug' : 'info',\n logLimit: 0,\n outExtension,\n platform,\n plugins: bundle\n ? []\n : [\n // evanw/esbuild#394\n tsconfigPaths({\n tsconfig: { baseUrl: compilerOptions.baseUrl, compilerOptions },\n }),\n ],\n sourcemap: compilerOptions.sourceMap,\n // TODO: as of 0.18, the esbuild CLI no longer infers the target property to\n // avoid ambiguity where multiple `tsconfig.json`s are involved in a build.\n // This would be unusual for a typical SEEK project but we can still explore\n // an explicit setting once we implement `skuba.config.ts` (#1167).\n target: compilerOptions.target\n ? ScriptTarget[compilerOptions.target].toLocaleLowerCase()\n : undefined,\n tsconfig,\n });\n};\n"],
5
+ "mappings": "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",
6
6
  "names": ["tsconfigPaths"]
7
7
  }
@@ -44,7 +44,7 @@ const build = async (args = process.argv.slice(2)) => {
44
44
  case "esbuild": {
45
45
  const debug = (0, import_args.hasDebugFlag)(args);
46
46
  import_logging.log.plain(import_chalk.default.yellow("esbuild"));
47
- await (0, import_esbuild.esbuild)({ debug }, args);
47
+ await (0, import_esbuild.esbuild)({ debug, mode: "build" }, args);
48
48
  break;
49
49
  }
50
50
  case void 0:
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/cli/build/index.ts"],
4
- "sourcesContent": ["import chalk from 'chalk';\n\nimport { hasDebugFlag } from '../../utils/args';\nimport { log } from '../../utils/logging';\nimport { getStringPropFromConsumerManifest } from '../../utils/manifest';\n\nimport { copyAssets } from './assets';\nimport { esbuild } from './esbuild';\nimport { readTsconfig, tsc } from './tsc';\n\nexport const build = async (args = process.argv.slice(2)) => {\n // TODO: define a unified `package.json#/skuba` schema and parser so we don't\n // need all these messy lookups.\n const tool = await getStringPropFromConsumerManifest('build');\n\n switch (tool) {\n case 'esbuild': {\n const debug = hasDebugFlag(args);\n\n log.plain(chalk.yellow('esbuild'));\n await esbuild({ debug }, args);\n break;\n }\n\n // TODO: flip the default case over to `esbuild` in skuba vNext.\n case undefined:\n case 'tsc': {\n log.plain(chalk.blue('tsc'));\n await tsc(args);\n break;\n }\n\n default: {\n log.err(\n 'We don\u2019t support the build tool specified in your',\n log.bold('package.json'),\n 'yet:',\n );\n log.err(log.subtle(JSON.stringify({ skuba: { build: tool } }, null, 2)));\n process.exitCode = 1;\n return;\n }\n }\n\n const parsedCommandLine = readTsconfig(args, log);\n\n if (!parsedCommandLine || process.exitCode) {\n return;\n }\n\n const { options: compilerOptions } = parsedCommandLine;\n\n if (!compilerOptions.outDir) {\n return;\n }\n\n await copyAssets(compilerOptions.outDir);\n};\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAkB;AAElB,kBAA6B;AAC7B,qBAAoB;AACpB,sBAAkD;AAElD,oBAA2B;AAC3B,qBAAwB;AACxB,iBAAkC;AAE3B,MAAM,QAAQ,OAAO,OAAO,QAAQ,KAAK,MAAM,CAAC,MAAM;AAG3D,QAAM,OAAO,UAAM,mDAAkC,OAAO;AAE5D,UAAQ,MAAM;AAAA,IACZ,KAAK,WAAW;AACd,YAAM,YAAQ,0BAAa,IAAI;AAE/B,yBAAI,MAAM,aAAAA,QAAM,OAAO,SAAS,CAAC;AACjC,gBAAM,wBAAQ,EAAE,MAAM,GAAG,IAAI;AAC7B;AAAA,IACF;AAAA,IAGA,KAAK;AAAA,IACL,KAAK,OAAO;AACV,yBAAI,MAAM,aAAAA,QAAM,KAAK,KAAK,CAAC;AAC3B,gBAAM,gBAAI,IAAI;AACd;AAAA,IACF;AAAA,IAEA,SAAS;AACP,yBAAI;AAAA,QACF;AAAA,QACA,mBAAI,KAAK,cAAc;AAAA,QACvB;AAAA,MACF;AACA,yBAAI,IAAI,mBAAI,OAAO,KAAK,UAAU,EAAE,OAAO,EAAE,OAAO,KAAK,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC;AACvE,cAAQ,WAAW;AACnB;AAAA,IACF;AAAA,EACF;AAEA,QAAM,wBAAoB,yBAAa,MAAM,kBAAG;AAEhD,MAAI,CAAC,qBAAqB,QAAQ,UAAU;AAC1C;AAAA,EACF;AAEA,QAAM,EAAE,SAAS,gBAAgB,IAAI;AAErC,MAAI,CAAC,gBAAgB,QAAQ;AAC3B;AAAA,EACF;AAEA,YAAM,0BAAW,gBAAgB,MAAM;AACzC;",
4
+ "sourcesContent": ["import chalk from 'chalk';\n\nimport { hasDebugFlag } from '../../utils/args';\nimport { log } from '../../utils/logging';\nimport { getStringPropFromConsumerManifest } from '../../utils/manifest';\n\nimport { copyAssets } from './assets';\nimport { esbuild } from './esbuild';\nimport { readTsconfig, tsc } from './tsc';\n\nexport const build = async (args = process.argv.slice(2)) => {\n // TODO: define a unified `package.json#/skuba` schema and parser so we don't\n // need all these messy lookups.\n const tool = await getStringPropFromConsumerManifest('build');\n\n switch (tool) {\n case 'esbuild': {\n const debug = hasDebugFlag(args);\n\n log.plain(chalk.yellow('esbuild'));\n await esbuild({ debug, mode: 'build' }, args);\n break;\n }\n\n // TODO: flip the default case over to `esbuild` in skuba vNext.\n case undefined:\n case 'tsc': {\n log.plain(chalk.blue('tsc'));\n await tsc(args);\n break;\n }\n\n default: {\n log.err(\n 'We don\u2019t support the build tool specified in your',\n log.bold('package.json'),\n 'yet:',\n );\n log.err(log.subtle(JSON.stringify({ skuba: { build: tool } }, null, 2)));\n process.exitCode = 1;\n return;\n }\n }\n\n const parsedCommandLine = readTsconfig(args, log);\n\n if (!parsedCommandLine || process.exitCode) {\n return;\n }\n\n const { options: compilerOptions } = parsedCommandLine;\n\n if (!compilerOptions.outDir) {\n return;\n }\n\n await copyAssets(compilerOptions.outDir);\n};\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAkB;AAElB,kBAA6B;AAC7B,qBAAoB;AACpB,sBAAkD;AAElD,oBAA2B;AAC3B,qBAAwB;AACxB,iBAAkC;AAE3B,MAAM,QAAQ,OAAO,OAAO,QAAQ,KAAK,MAAM,CAAC,MAAM;AAG3D,QAAM,OAAO,UAAM,mDAAkC,OAAO;AAE5D,UAAQ,MAAM;AAAA,IACZ,KAAK,WAAW;AACd,YAAM,YAAQ,0BAAa,IAAI;AAE/B,yBAAI,MAAM,aAAAA,QAAM,OAAO,SAAS,CAAC;AACjC,gBAAM,wBAAQ,EAAE,OAAO,MAAM,QAAQ,GAAG,IAAI;AAC5C;AAAA,IACF;AAAA,IAGA,KAAK;AAAA,IACL,KAAK,OAAO;AACV,yBAAI,MAAM,aAAAA,QAAM,KAAK,KAAK,CAAC;AAC3B,gBAAM,gBAAI,IAAI;AACd;AAAA,IACF;AAAA,IAEA,SAAS;AACP,yBAAI;AAAA,QACF;AAAA,QACA,mBAAI,KAAK,cAAc;AAAA,QACvB;AAAA,MACF;AACA,yBAAI,IAAI,mBAAI,OAAO,KAAK,UAAU,EAAE,OAAO,EAAE,OAAO,KAAK,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC;AACvE,cAAQ,WAAW;AACnB;AAAA,IACF;AAAA,EACF;AAEA,QAAM,wBAAoB,yBAAa,MAAM,kBAAG;AAEhD,MAAI,CAAC,qBAAqB,QAAQ,UAAU;AAC1C;AAAA,EACF;AAEA,QAAM,EAAE,SAAS,gBAAgB,IAAI;AAErC,MAAI,CAAC,gBAAgB,QAAQ;AAC3B;AAAA,EACF;AAEA,YAAM,0BAAW,gBAAgB,MAAM;AACzC;",
6
6
  "names": ["chalk"]
7
7
  }
@@ -1,7 +1,9 @@
1
1
  "use strict";
2
+ var __create = Object.create;
2
3
  var __defProp = Object.defineProperty;
3
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
5
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
5
7
  var __hasOwnProp = Object.prototype.hasOwnProperty;
6
8
  var __export = (target, all) => {
7
9
  for (var name in all)
@@ -15,16 +17,69 @@ var __copyProps = (to, from, except, desc) => {
15
17
  }
16
18
  return to;
17
19
  };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
18
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
29
  var buildPackage_exports = {};
20
30
  __export(buildPackage_exports, {
21
31
  buildPackage: () => buildPackage
22
32
  });
23
33
  module.exports = __toCommonJS(buildPackage_exports);
34
+ var import_chalk = __toESM(require("chalk"));
24
35
  var import_args = require("../utils/args");
25
36
  var import_exec = require("../utils/exec");
37
+ var import_logging = require("../utils/logging");
38
+ var import_manifest = require("../utils/manifest");
26
39
  var import_assets = require("./build/assets");
40
+ var import_esbuild = require("./build/esbuild");
41
+ var import_tsc = require("./build/tsc");
27
42
  const buildPackage = async (args = process.argv.slice(2)) => {
43
+ const debug = (0, import_args.hasDebugFlag)(args);
44
+ const log = (0, import_logging.createLogger)(debug);
45
+ const tool = await (0, import_manifest.getStringPropFromConsumerManifest)("build");
46
+ switch (tool) {
47
+ case "esbuild": {
48
+ log.plain(import_chalk.default.yellow("esbuild"));
49
+ await runEsbuild(debug, log, args);
50
+ break;
51
+ }
52
+ case void 0:
53
+ case "tsc": {
54
+ log.plain(import_chalk.default.blue("tsc"));
55
+ await tsc(args);
56
+ break;
57
+ }
58
+ default: {
59
+ log.err(
60
+ "We don\u2019t support the build tool specified in your",
61
+ log.bold("package.json"),
62
+ "yet:"
63
+ );
64
+ log.err(log.subtle(JSON.stringify({ skuba: { build: tool } }, null, 2)));
65
+ process.exitCode = 1;
66
+ return;
67
+ }
68
+ }
69
+ };
70
+ const runEsbuild = async (debug, log, args) => {
71
+ await (0, import_esbuild.esbuild)({ debug, mode: "build-package" }, args);
72
+ const parsedCommandLine = (0, import_tsc.readTsconfig)(args, log);
73
+ if (!parsedCommandLine || process.exitCode) {
74
+ return;
75
+ }
76
+ const { options: compilerOptions } = parsedCommandLine;
77
+ if (!compilerOptions.outDir) {
78
+ return;
79
+ }
80
+ await (0, import_assets.copyAssets)(compilerOptions.outDir);
81
+ };
82
+ const tsc = async (args) => {
28
83
  await (0, import_exec.execConcurrently)(
29
84
  [
30
85
  {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/cli/buildPackage.ts"],
4
- "sourcesContent": ["import { hasSerialFlag } from '../utils/args';\nimport { execConcurrently } from '../utils/exec';\n\nimport { copyAssetsConcurrently } from './build/assets';\n\nexport const buildPackage = async (args = process.argv.slice(2)) => {\n await execConcurrently(\n [\n {\n command:\n 'tsc --module CommonJS --outDir lib-commonjs --project tsconfig.build.json',\n name: 'commonjs',\n prefixColor: 'green',\n },\n {\n command:\n 'tsc --module ES2015 --outDir lib-es2015 --project tsconfig.build.json',\n name: 'es2015',\n prefixColor: 'yellow',\n },\n {\n command:\n 'tsc --allowJS false --declaration --emitDeclarationOnly --outDir lib-types --project tsconfig.build.json',\n name: 'types',\n prefixColor: 'blue',\n },\n ],\n {\n maxProcesses: hasSerialFlag(args) ? 1 : undefined,\n },\n );\n\n await copyAssetsConcurrently([\n {\n outDir: 'lib-commonjs',\n name: 'commonjs',\n prefixColor: 'green',\n },\n {\n outDir: 'lib-es2015',\n name: 'es2015',\n prefixColor: 'yellow',\n },\n ]);\n};\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAA8B;AAC9B,kBAAiC;AAEjC,oBAAuC;AAEhC,MAAM,eAAe,OAAO,OAAO,QAAQ,KAAK,MAAM,CAAC,MAAM;AAClE,YAAM;AAAA,IACJ;AAAA,MACE;AAAA,QACE,SACE;AAAA,QACF,MAAM;AAAA,QACN,aAAa;AAAA,MACf;AAAA,MACA;AAAA,QACE,SACE;AAAA,QACF,MAAM;AAAA,QACN,aAAa;AAAA,MACf;AAAA,MACA;AAAA,QACE,SACE;AAAA,QACF,MAAM;AAAA,QACN,aAAa;AAAA,MACf;AAAA,IACF;AAAA,IACA;AAAA,MACE,kBAAc,2BAAc,IAAI,IAAI,IAAI;AAAA,IAC1C;AAAA,EACF;AAEA,YAAM,sCAAuB;AAAA,IAC3B;AAAA,MACE,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,aAAa;AAAA,IACf;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,aAAa;AAAA,IACf;AAAA,EACF,CAAC;AACH;",
6
- "names": []
4
+ "sourcesContent": ["import chalk from 'chalk';\n\nimport { hasDebugFlag, hasSerialFlag } from '../utils/args';\nimport { execConcurrently } from '../utils/exec';\nimport { type Logger, createLogger } from '../utils/logging';\nimport { getStringPropFromConsumerManifest } from '../utils/manifest';\n\nimport { copyAssets, copyAssetsConcurrently } from './build/assets';\nimport { esbuild } from './build/esbuild';\nimport { readTsconfig } from './build/tsc';\n\nexport const buildPackage = async (args = process.argv.slice(2)) => {\n const debug = hasDebugFlag(args);\n\n const log = createLogger(debug);\n\n // TODO: define a unified `package.json#/skuba` schema and parser so we don't\n // need all these messy lookups.\n const tool = await getStringPropFromConsumerManifest('build');\n\n switch (tool) {\n case 'esbuild': {\n log.plain(chalk.yellow('esbuild'));\n await runEsbuild(debug, log, args);\n break;\n }\n\n // TODO: flip the default case over to `esbuild` in skuba vNext.\n case undefined:\n case 'tsc': {\n log.plain(chalk.blue('tsc'));\n await tsc(args);\n break;\n }\n\n default: {\n log.err(\n 'We don\u2019t support the build tool specified in your',\n log.bold('package.json'),\n 'yet:',\n );\n log.err(log.subtle(JSON.stringify({ skuba: { build: tool } }, null, 2)));\n process.exitCode = 1;\n return;\n }\n }\n};\n\nconst runEsbuild = async (debug: boolean, log: Logger, args: string[]) => {\n await esbuild({ debug, mode: 'build-package' }, args);\n\n const parsedCommandLine = readTsconfig(args, log);\n\n if (!parsedCommandLine || process.exitCode) {\n return;\n }\n\n const { options: compilerOptions } = parsedCommandLine;\n\n if (!compilerOptions.outDir) {\n return;\n }\n\n await copyAssets(compilerOptions.outDir);\n};\n\nconst tsc = async (args: string[]) => {\n await execConcurrently(\n [\n {\n command:\n 'tsc --module CommonJS --outDir lib-commonjs --project tsconfig.build.json',\n name: 'commonjs',\n prefixColor: 'green',\n },\n {\n command:\n 'tsc --module ES2015 --outDir lib-es2015 --project tsconfig.build.json',\n name: 'es2015',\n prefixColor: 'yellow',\n },\n {\n command:\n 'tsc --allowJS false --declaration --emitDeclarationOnly --outDir lib-types --project tsconfig.build.json',\n name: 'types',\n prefixColor: 'blue',\n },\n ],\n {\n maxProcesses: hasSerialFlag(args) ? 1 : undefined,\n },\n );\n\n await copyAssetsConcurrently([\n {\n outDir: 'lib-commonjs',\n name: 'commonjs',\n prefixColor: 'green',\n },\n {\n outDir: 'lib-es2015',\n name: 'es2015',\n prefixColor: 'yellow',\n },\n ]);\n};\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAkB;AAElB,kBAA4C;AAC5C,kBAAiC;AACjC,qBAA0C;AAC1C,sBAAkD;AAElD,oBAAmD;AACnD,qBAAwB;AACxB,iBAA6B;AAEtB,MAAM,eAAe,OAAO,OAAO,QAAQ,KAAK,MAAM,CAAC,MAAM;AAClE,QAAM,YAAQ,0BAAa,IAAI;AAE/B,QAAM,UAAM,6BAAa,KAAK;AAI9B,QAAM,OAAO,UAAM,mDAAkC,OAAO;AAE5D,UAAQ,MAAM;AAAA,IACZ,KAAK,WAAW;AACd,UAAI,MAAM,aAAAA,QAAM,OAAO,SAAS,CAAC;AACjC,YAAM,WAAW,OAAO,KAAK,IAAI;AACjC;AAAA,IACF;AAAA,IAGA,KAAK;AAAA,IACL,KAAK,OAAO;AACV,UAAI,MAAM,aAAAA,QAAM,KAAK,KAAK,CAAC;AAC3B,YAAM,IAAI,IAAI;AACd;AAAA,IACF;AAAA,IAEA,SAAS;AACP,UAAI;AAAA,QACF;AAAA,QACA,IAAI,KAAK,cAAc;AAAA,QACvB;AAAA,MACF;AACA,UAAI,IAAI,IAAI,OAAO,KAAK,UAAU,EAAE,OAAO,EAAE,OAAO,KAAK,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC;AACvE,cAAQ,WAAW;AACnB;AAAA,IACF;AAAA,EACF;AACF;AAEA,MAAM,aAAa,OAAO,OAAgB,KAAa,SAAmB;AACxE,YAAM,wBAAQ,EAAE,OAAO,MAAM,gBAAgB,GAAG,IAAI;AAEpD,QAAM,wBAAoB,yBAAa,MAAM,GAAG;AAEhD,MAAI,CAAC,qBAAqB,QAAQ,UAAU;AAC1C;AAAA,EACF;AAEA,QAAM,EAAE,SAAS,gBAAgB,IAAI;AAErC,MAAI,CAAC,gBAAgB,QAAQ;AAC3B;AAAA,EACF;AAEA,YAAM,0BAAW,gBAAgB,MAAM;AACzC;AAEA,MAAM,MAAM,OAAO,SAAmB;AACpC,YAAM;AAAA,IACJ;AAAA,MACE;AAAA,QACE,SACE;AAAA,QACF,MAAM;AAAA,QACN,aAAa;AAAA,MACf;AAAA,MACA;AAAA,QACE,SACE;AAAA,QACF,MAAM;AAAA,QACN,aAAa;AAAA,MACf;AAAA,MACA;AAAA,QACE,SACE;AAAA,QACF,MAAM;AAAA,QACN,aAAa;AAAA,MACf;AAAA,IACF;AAAA,IACA;AAAA,MACE,kBAAc,2BAAc,IAAI,IAAI,IAAI;AAAA,IAC1C;AAAA,EACF;AAEA,YAAM,sCAAuB;AAAA,IAC3B;AAAA,MACE,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,aAAa;AAAA,IACf;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,aAAa;AAAA,IACf;AAAA,EACF,CAAC;AACH;",
6
+ "names": ["chalk"]
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "skuba",
3
- "version": "8.0.0-update-eslint-config-skuba-20240323071344",
3
+ "version": "8.0.1-cjs-mjs-output-20240326042856",
4
4
  "private": false,
5
5
  "description": "SEEK development toolkit for backend applications and packages",
6
6
  "homepage": "https://github.com/seek-oss/skuba#readme",
@@ -87,7 +87,7 @@
87
87
  "prettier": "~3.2.5",
88
88
  "prettier-plugin-packagejson": "^2.4.10",
89
89
  "read-pkg-up": "^7.0.1",
90
- "semantic-release": "^21.0.0",
90
+ "semantic-release": "^22.0.12",
91
91
  "serialize-error": "^8.0.1",
92
92
  "simple-git": "^3.5.0",
93
93
  "strip-ansi": "^6.0.1",
@@ -97,10 +97,10 @@
97
97
  "ts-node-dev": "^2.0.0",
98
98
  "tsconfig-paths": "^4.0.0",
99
99
  "tsconfig-seek": "2.0.0",
100
- "typescript": "~5.3.0",
100
+ "typescript": "~5.4.0",
101
101
  "validate-npm-package-name": "^5.0.0",
102
102
  "zod": "^3.22.4",
103
- "eslint-config-skuba": "4.0.0-update-eslint-config-skuba-20240323071344"
103
+ "eslint-config-skuba": "4.0.0"
104
104
  },
105
105
  "devDependencies": {
106
106
  "@changesets/cli": "2.27.1",
@@ -119,7 +119,7 @@
119
119
  "@types/supertest": "6.0.2",
120
120
  "@types/validate-npm-package-name": "4.0.2",
121
121
  "enhanced-resolve": "5.15.0",
122
- "express": "4.18.2",
122
+ "express": "4.19.2",
123
123
  "fastify": "4.26.1",
124
124
  "jest-diff": "29.7.0",
125
125
  "jsonfile": "6.1.0",
@@ -9,7 +9,6 @@ image: '{{values "prodAccountId"}}.dkr.ecr.<%- region %>.amazonaws.com/{{values
9
9
  # datadogSecretId: arn:aws:secretsmanager:<%- region %>:<aws-account-id>:secret:<secret-name>
10
10
 
11
11
  tags:
12
- seek:env:prod: '{{values "isProduction"}}'
13
12
  seek:source:sha: '{{.CommitSHA}}'
14
13
  seek:source:url: 'https://github.com/SEEK-Jobs/<%- repoName %>'
15
14
  # seek:system:name: 'TODO: https://rfc.skinfra.xyz/RFC019-AWS-Tagging-Standard.html#required-tags'
@@ -2,8 +2,6 @@ environment: dev
2
2
  env:
3
3
  SOME_ENVIRONMENT_VARIABLE: dev-value
4
4
 
5
- isProduction: false
6
-
7
5
  maxInstanceCount: 1
8
6
  minInstanceCount: 1
9
7
 
@@ -2,7 +2,5 @@ environment: prod
2
2
  env:
3
3
  SOME_ENVIRONMENT_VARIABLE: prod-value
4
4
 
5
- isProduction: true
6
-
7
5
  maxInstanceCount: 10
8
6
  minInstanceCount: 3
@@ -24,7 +24,7 @@
24
24
  "skuba": "*",
25
25
  "supertest": "^6.1.6"
26
26
  },
27
- "packageManager": "pnpm@8.15.4",
27
+ "packageManager": "pnpm@8.15.5",
28
28
  "engines": {
29
29
  "node": ">=20"
30
30
  }
@@ -18,7 +18,7 @@
18
18
  "@types/node": "^20.9.0",
19
19
  "skuba": "*"
20
20
  },
21
- "packageManager": "pnpm@8.15.4",
21
+ "packageManager": "pnpm@8.15.5",
22
22
  "engines": {
23
23
  "node": ">=20"
24
24
  }
@@ -9,7 +9,6 @@ image: '{{values "prodAccountId"}}.dkr.ecr.<%- region %>.amazonaws.com/{{values
9
9
  # datadogSecretId: arn:aws:secretsmanager:<%- region %>:<aws-account-id>:secret:<secret-name>
10
10
 
11
11
  tags:
12
- seek:env:prod: '{{values "isProduction"}}'
13
12
  seek:source:sha: '{{.CommitSHA}}'
14
13
  seek:source:url: 'https://github.com/SEEK-Jobs/<%- repoName %>'
15
14
  # seek:system:name: 'TODO: https://rfc.skinfra.xyz/RFC019-AWS-Tagging-Standard.html#required-tags'
@@ -2,8 +2,6 @@ environment: dev
2
2
  env:
3
3
  SOME_ENVIRONMENT_VARIABLE: dev-value
4
4
 
5
- isProduction: false
6
-
7
5
  maxInstanceCount: 1
8
6
  minInstanceCount: 1
9
7
 
@@ -11,4 +9,5 @@ minInstanceCount: 1
11
9
  cloudwatchDashboardDisabled: true
12
10
 
13
11
  openTelemetry:
12
+ datadogEnvironmentName: development
14
13
  enabled: false
@@ -2,10 +2,9 @@ environment: prod
2
2
  env:
3
3
  SOME_ENVIRONMENT_VARIABLE: prod-value
4
4
 
5
- isProduction: true
6
-
7
5
  maxInstanceCount: 10
8
6
  minInstanceCount: 3
9
7
 
10
8
  openTelemetry:
9
+ datadogEnvironmentName: production
11
10
  enabled: false
@@ -29,12 +29,8 @@ datadogSecretId: '{{values "datadogSecretId"}}'
29
29
  {{end}}
30
30
 
31
31
  openTelemetry:
32
- enabled: {{.Values.openTelemetry.enabled | default false}}
33
- {{if .Values.isProduction}}
34
- datadogEnvironmentName: production
35
- {{else}}
36
- datadogEnvironmentName: development
37
- {{end}}
32
+ datadogEnvironmentName: '{{values "openTelemetry.datadogEnvironmentName"}}'
33
+ enabled: {{values "openTelemetry.enabled"}}
38
34
  {{if .Values.pagerDutyEndpoint}}
39
35
  pagerDutyEndpoint: '{{values "pagerDutyEndpoint"}}'
40
36
  {{end}}
@@ -43,7 +43,7 @@
43
43
  "skuba": "*",
44
44
  "supertest": "^6.1.6"
45
45
  },
46
- "packageManager": "pnpm@8.15.4",
46
+ "packageManager": "pnpm@8.15.5",
47
47
  "engines": {
48
48
  "node": ">=20"
49
49
  }
@@ -27,7 +27,7 @@
27
27
  "@types/aws-lambda": "^8.10.84",
28
28
  "@types/chance": "^1.1.3",
29
29
  "@types/node": "^20.9.0",
30
- "aws-sdk-client-mock": "^3.0.0",
30
+ "aws-sdk-client-mock": "^4.0.0",
31
31
  "aws-sdk-client-mock-jest": "^3.0.0",
32
32
  "chance": "^1.1.8",
33
33
  "pino-pretty": "^10.0.0",
@@ -37,7 +37,7 @@
37
37
  "serverless-prune-plugin": "^2.0.0",
38
38
  "skuba": "*"
39
39
  },
40
- "packageManager": "pnpm@8.15.4",
40
+ "packageManager": "pnpm@8.15.5",
41
41
  "engines": {
42
42
  "node": ">=20"
43
43
  }
@@ -20,11 +20,9 @@ params:
20
20
  description: <%- description %>
21
21
  dev:
22
22
  deploymentBucket: 'TODO: deployment-bucket-name'
23
- isProduction: false
24
23
  concurrency: 2
25
24
  prod:
26
25
  deploymentBucket: 'TODO: deployment-bucket-name'
27
- isProduction: true
28
26
  concurrency: 20
29
27
 
30
28
  custom:
@@ -83,14 +81,10 @@ provider:
83
81
  Resource: !Ref DestinationTopic
84
82
  stackTags:
85
83
  seek:env:label: ${env:ENVIRONMENT}
86
- seek:env:prod: ${param:isProduction}
87
- # seek:owner:cost-centre: 'TODO: https://rfc.skinfra.xyz/RFC019-AWS-Tagging-Standard.html#required-tags'
88
- seek:owner:technical: '<%- teamName %>'
89
84
  seek:source:sha: ${env:BUILDKITE_COMMIT, 'na'}
90
85
  seek:source:url: 'https://github.com/SEEK-Jobs/<%- repoName %>'
91
86
  seek:system:deployed-by: CFN
92
87
  # seek:system:name: 'TODO: https://rfc.skinfra.xyz/RFC019-AWS-Tagging-Standard.html#required-tags'
93
- # seek:system:org: 'TODO: https://rfc.skinfra.xyz/RFC019-AWS-Tagging-Standard.html#required-tags'
94
88
 
95
89
  package:
96
90
  patterns:
@@ -26,7 +26,7 @@
26
26
  "constructs": "^10.0.17",
27
27
  "skuba": "*"
28
28
  },
29
- "packageManager": "pnpm@8.15.4",
29
+ "packageManager": "pnpm@8.15.5",
30
30
  "engines": {
31
31
  "node": ">=20"
32
32
  }
@@ -15,6 +15,7 @@ jobs:
15
15
  contents: write
16
16
  id-token: write
17
17
  runs-on: ubuntu-latest
18
+ timeout-minutes: 20
18
19
  steps:
19
20
  - name: Check out repo
20
21
  uses: actions/checkout@v4
@@ -12,6 +12,7 @@ jobs:
12
12
  permissions:
13
13
  checks: write
14
14
  runs-on: ubuntu-latest
15
+ timeout-minutes: 20
15
16
  steps:
16
17
  - name: Check out repo
17
18
  uses: actions/checkout@v4