screw-up 0.14.0 → 0.16.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.
- package/dist/{internal-BHSe5LIZ.cjs → analyzer-2k5jeoJo.cjs} +250 -229
- package/dist/analyzer-2k5jeoJo.cjs.map +1 -0
- package/dist/{internal-BgCvktPU.js → analyzer-CU8VuwpB.js} +250 -229
- package/dist/analyzer-CU8VuwpB.js.map +1 -0
- package/dist/analyzer.d.ts +8 -8
- package/dist/analyzer.d.ts.map +1 -1
- package/dist/cli-internal.d.ts +8 -5
- package/dist/cli-internal.d.ts.map +1 -1
- package/dist/cli.d.ts +3 -3
- package/dist/cli.d.ts.map +1 -1
- package/dist/generated/packageMetadata.d.ts +4 -4
- package/dist/index.cjs +22 -7
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +21 -6
- package/dist/index.js.map +1 -1
- package/dist/internal.d.ts +13 -11
- package/dist/internal.d.ts.map +1 -1
- package/dist/main.cjs +36 -21
- package/dist/main.cjs.map +1 -1
- package/dist/main.d.ts +2 -2
- package/dist/main.js +32 -17
- package/dist/main.js.map +1 -1
- package/dist/{packageMetadata-D9nXAoK9.cjs → packageMetadata--R5DYhGa.cjs} +4 -4
- package/dist/{packageMetadata-D9nXAoK9.cjs.map → packageMetadata--R5DYhGa.cjs.map} +1 -1
- package/dist/{packageMetadata-Dsxn2dKN.js → packageMetadata-BC5X00sF.js} +4 -4
- package/dist/{packageMetadata-Dsxn2dKN.js.map → packageMetadata-BC5X00sF.js.map} +1 -1
- package/dist/types.d.ts +2 -2
- package/dist/vite-plugin.d.ts +3 -3
- package/dist/vite-plugin.d.ts.map +1 -1
- package/package.json +6 -6
- package/dist/internal-BHSe5LIZ.cjs.map +0 -1
- package/dist/internal-BgCvktPU.js.map +0 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* name: screw-up
|
|
3
|
-
* version: 0.
|
|
3
|
+
* version: 0.16.0
|
|
4
4
|
* description: Simply package metadata inserter on Vite plugin
|
|
5
5
|
* author: Kouji Matsui (@kekyo@mi.kekyo.net)
|
|
6
6
|
* license: MIT
|
|
7
7
|
* repository.url: https://github.com/kekyo/screw-up.git
|
|
8
|
-
* git.commit.hash:
|
|
8
|
+
* git.commit.hash: c5c68d39d1ab116299338d31f0f208c0eb49be5c
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
-
import { screwUp } from './vite-plugin
|
|
12
|
-
export * from './types
|
|
11
|
+
import { screwUp } from './vite-plugin';
|
|
12
|
+
export * from './types';
|
|
13
13
|
export default screwUp;
|
|
14
14
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAIxC,cAAc,SAAS,CAAC;AACxB,eAAe,OAAO,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* name: screw-up
|
|
3
|
-
* version: 0.
|
|
3
|
+
* version: 0.16.0
|
|
4
4
|
* description: Simply package metadata inserter on Vite plugin
|
|
5
5
|
* author: Kouji Matsui (@kekyo@mi.kekyo.net)
|
|
6
6
|
* license: MIT
|
|
7
7
|
* repository.url: https://github.com/kekyo/screw-up.git
|
|
8
|
-
* git.commit.hash:
|
|
8
|
+
* git.commit.hash: c5c68d39d1ab116299338d31f0f208c0eb49be5c
|
|
9
9
|
*/
|
|
10
10
|
import { readdir, readFile, writeFile, mkdir } from "fs/promises";
|
|
11
11
|
import { join, dirname } from "path";
|
|
12
|
-
import { r as resolvePackageMetadata,
|
|
12
|
+
import { c as createConsoleLogger, r as resolvePackageMetadata, g as getFetchGitMetadata } from "./analyzer-CU8VuwpB.js";
|
|
13
13
|
const generateBanner = (metadata, outputKeys) => {
|
|
14
14
|
const parts = [];
|
|
15
15
|
for (const key of outputKeys) {
|
|
@@ -50,7 +50,6 @@ const generateMetadataFile = (metadata, outputKeys) => {
|
|
|
50
50
|
return lines.join("\n");
|
|
51
51
|
};
|
|
52
52
|
const screwUp = (options = {}) => {
|
|
53
|
-
const logger = createConsoleLogger();
|
|
54
53
|
const {
|
|
55
54
|
outputKeys = ["name", "version", "description", "author", "license", "repository.url", "git.commit.hash"],
|
|
56
55
|
assetFilters = ["\\.d\\.ts$"],
|
|
@@ -62,13 +61,15 @@ const screwUp = (options = {}) => {
|
|
|
62
61
|
insertMetadataBanner = true
|
|
63
62
|
} = options;
|
|
64
63
|
const assetFiltersRegex = assetFilters.map((filter) => new RegExp(filter));
|
|
64
|
+
let logger = createConsoleLogger();
|
|
65
65
|
let banner;
|
|
66
66
|
let metadata;
|
|
67
67
|
let projectRoot;
|
|
68
|
+
let fetchGitMetadata = () => Promise.resolve({});
|
|
68
69
|
const generateMetadataSourceFile = async () => {
|
|
69
70
|
const result = await resolvePackageMetadata(
|
|
70
71
|
projectRoot,
|
|
71
|
-
|
|
72
|
+
fetchGitMetadata,
|
|
72
73
|
alwaysOverrideVersionFromGit,
|
|
73
74
|
logger
|
|
74
75
|
);
|
|
@@ -88,11 +89,25 @@ const screwUp = (options = {}) => {
|
|
|
88
89
|
return {
|
|
89
90
|
name: "screw-up",
|
|
90
91
|
apply: "build",
|
|
91
|
-
// Ensure screw-up runs before other plugins
|
|
92
|
+
// Ensure screw-up runs before other plugins
|
|
93
|
+
// (especially vite-plugin-dts, avoid packageMetadata.ts is not found)
|
|
92
94
|
enforce: "pre",
|
|
93
95
|
// Configuration resolved phase
|
|
94
96
|
configResolved: async (config) => {
|
|
97
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p;
|
|
95
98
|
projectRoot = config.root;
|
|
99
|
+
const _logger = {
|
|
100
|
+
debug: (_d = (_c = (_a = config == null ? void 0 : config.logger) == null ? void 0 : _a.info) != null ? _c : (_b = config == null ? void 0 : config.customLogger) == null ? void 0 : _b.info) != null ? _d : logger.debug,
|
|
101
|
+
info: (_h = (_g = (_e = config == null ? void 0 : config.logger) == null ? void 0 : _e.info) != null ? _g : (_f = config == null ? void 0 : config.customLogger) == null ? void 0 : _f.info) != null ? _h : logger.info,
|
|
102
|
+
warn: (_l = (_k = (_i = config == null ? void 0 : config.logger) == null ? void 0 : _i.warn) != null ? _k : (_j = config == null ? void 0 : config.customLogger) == null ? void 0 : _j.warn) != null ? _l : logger.warn,
|
|
103
|
+
error: (_p = (_o = (_m = config == null ? void 0 : config.logger) == null ? void 0 : _m.error) != null ? _o : (_n = config == null ? void 0 : config.customLogger) == null ? void 0 : _n.error) != null ? _p : logger.error
|
|
104
|
+
};
|
|
105
|
+
logger = _logger;
|
|
106
|
+
fetchGitMetadata = getFetchGitMetadata(
|
|
107
|
+
projectRoot,
|
|
108
|
+
checkWorkingDirectoryStatus,
|
|
109
|
+
logger
|
|
110
|
+
);
|
|
96
111
|
await generateMetadataSourceFile();
|
|
97
112
|
},
|
|
98
113
|
// Build start phase
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/vite-plugin.ts"],"sourcesContent":["// screw-up - Easy package metadata inserter on Vite plugin\n// Copyright (c) Kouji Matsui (@kekyo@mi.kekyo.net)\n// Under MIT.\n// https://github.com/kekyo/screw-up/\n\nimport type { Plugin } from 'vite';\nimport { readFile, writeFile, readdir, mkdir } from 'fs/promises';\nimport { join, dirname } from 'path';\nimport { resolvePackageMetadata, createConsoleLogger } from './internal.js';\nimport { ScrewUpOptions, PackageMetadata } from './types.js';\n\n/**\n * Generate banner string from package.json metadata\n * @param metadata - Package metadata\n * @param outputKeys - Array of keys to output in specified order\n * @returns Banner string\n */\nexport const generateBanner = (metadata: PackageMetadata, outputKeys: string[]): string => {\n const parts: string[] = [];\n \n for (const key of outputKeys) {\n const value = metadata[key];\n if (value) {\n parts.push(`${key}: ${value}`);\n }\n }\n \n return parts.length > 0 ? `/*!\\n * ${parts.join('\\n * ')}\\n */` : '';\n};\n\n/**\n * Insert banner header at appropriate position considering shebang\n * @param content - The content to insert banner into\n * @param banner - The banner header to insert\n * @returns Content with banner header inserted\n */\nconst insertBannerHeader = (content: string, banner: string): string => {\n const lines = content.split('\\n');\n \n // Check if first line is shebang\n if (lines.length > 0 && lines[0].startsWith('#!')) {\n // Insert banner after shebang line\n return lines[0] + '\\n' + banner + '\\n' + lines.slice(1).join('\\n');\n } else {\n // Insert banner at the beginning\n return banner + '\\n' + content;\n }\n};\n\n/**\n * Convert string key to valid TypeScript identifier\n * @param key - The key to convert\n * @returns Valid TypeScript identifier\n */\nconst sanitizeKey = (key: string): string => {\n // Replace dots and other invalid characters with underscores\n return key.replace(/[^a-zA-Z0-9_]/g, '_').replace(/^(\\d)/, '_$1');\n};\n\n/**\n * Generate TypeScript metadata file content from package metadata\n * @param metadata - Package metadata\n * @param outputKeys - Array of keys to output\n * @returns TypeScript file content\n */\nconst generateMetadataFile = (metadata: PackageMetadata, outputKeys: string[]): string => {\n const lines: string[] = [];\n \n lines.push('// This file is auto-generated by screw-up plugin');\n lines.push('// Do not edit manually');\n lines.push('');\n \n for (const key of outputKeys) {\n const value = metadata[key];\n if (value) {\n const sanitizedKey = sanitizeKey(key);\n const escapedValue = JSON.stringify(value);\n lines.push(`export const ${sanitizedKey} = ${escapedValue};`);\n }\n }\n \n lines.push('');\n \n return lines.join('\\n');\n};\n\n/////////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Vite plugin that adds banner to the bundled code\n * @param options - Plugin options\n * @returns Vite plugin\n */\nexport const screwUp = (options: ScrewUpOptions = {}): Plugin => {\n const logger = createConsoleLogger();\n const {\n outputKeys = ['name', 'version', 'description', 'author', 'license', 'repository.url', 'git.commit.hash'],\n assetFilters = ['\\\\.d\\\\.ts$'],\n outputMetadataFile = false,\n outputMetadataFilePath = 'src/generated/packageMetadata.ts',\n outputMetadataKeys = ['name', 'version', 'description', 'author', 'license', 'repository.url', 'git.commit.hash'],\n checkWorkingDirectoryStatus = true,\n alwaysOverrideVersionFromGit = true,\n insertMetadataBanner = true} = options;\n\n const assetFiltersRegex = assetFilters.map(filter => new RegExp(filter));\n let banner: string;\n let metadata: any;\n let projectRoot: string;\n\n // Generate and write metadata TypeScript file\n const generateMetadataSourceFile = async () => {\n // Resolve package metadata\n const result = await resolvePackageMetadata(\n projectRoot, checkWorkingDirectoryStatus, alwaysOverrideVersionFromGit, logger);\n metadata = result.metadata;\n // Regenerate banner with updated metadata\n banner = generateBanner(metadata, outputKeys);\n if (outputMetadataFile) {\n const metadataSourceContent = generateMetadataFile(metadata, outputMetadataKeys);\n const metadataSourcePath = join(projectRoot, outputMetadataFilePath);\n \n try {\n // Ensure directory exists\n await mkdir(dirname(metadataSourcePath), { recursive: true });\n // Write metadata source file\n await writeFile(metadataSourcePath, metadataSourceContent);\n } catch (error) {\n logger.warn(`[screw-up]: Failed to write metadata source file: ${metadataSourcePath}: ${error}`);\n }\n }\n };\n\n return {\n name: 'screw-up',\n apply: 'build',\n // Ensure screw-up runs before other plugins (especially vite-plugin-dts)\n enforce: 'pre',\n // Configuration resolved phase\n configResolved: async config => {\n // Save project root\n projectRoot = config.root;\n // Generate metadata TypeScript file early to ensure it's available during TypeScript compilation\n await generateMetadataSourceFile();\n },\n // Build start phase\n buildStart: async () => {\n // Re-resolve package metadata to capture any changes since configResolved\n // Update metadata TypeScript file with latest data\n await generateMetadataSourceFile();\n },\n // Generate bundle phase\n generateBundle: (_options, bundle) => {\n // Add banner to each output file if enabled\n if (insertMetadataBanner) {\n for (const fileName in bundle) {\n const chunk = bundle[fileName];\n if (chunk.type === 'chunk') {\n chunk.code = insertBannerHeader(chunk.code, banner);\n } else if (chunk.type === 'asset' && assetFiltersRegex.some(filter => filter.test(fileName))) {\n if (typeof chunk.source === 'string') {\n chunk.source = insertBannerHeader(chunk.source, banner + '\\n'); // insert more blank line\n }\n }\n }\n }\n },\n // Write bundle phase\n writeBundle: async options => {\n // Handle files written by other plugins (like vite-plugin-dts) if banner insertion is enabled\n if (!insertMetadataBanner || !options.dir) return;\n\n try {\n // Read all files in the output directory\n const files = await readdir(options.dir, { recursive: true });\n\n // Iterate over all files\n for (const file of files) {\n const filePath = join(options.dir, file);\n\n // Check if the file is target asset file\n if (assetFiltersRegex.some(filter => filter.test(file))) {\n try {\n // Read the asset file\n const content = await readFile(filePath, 'utf-8');\n // Append banner to the asset file if it doesn't already contain it\n if (!content.includes(banner)) {\n await writeFile(filePath, insertBannerHeader(content, banner + '\\n'));\n }\n } catch (error) {\n // Skip files that can't be read/written\n }\n }\n }\n } catch (error) {\n // Skip files that can't be read/written\n }\n }\n };\n};\n"],"names":["options"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/vite-plugin.ts"],"sourcesContent":["// screw-up - Easy package metadata inserter on Vite plugin\n// Copyright (c) Kouji Matsui (@kekyo@mi.kekyo.net)\n// Under MIT.\n// https://github.com/kekyo/screw-up/\n\nimport type { Plugin } from 'vite';\nimport { readFile, writeFile, readdir, mkdir } from 'fs/promises';\nimport { join, dirname } from 'path';\nimport { resolvePackageMetadata, createConsoleLogger } from './internal';\nimport { ScrewUpOptions, PackageMetadata } from './types';\nimport { getFetchGitMetadata } from './analyzer';\n\n/**\n * Generate banner string from package.json metadata\n * @param metadata - Package metadata\n * @param outputKeys - Array of keys to output in specified order\n * @returns Banner string\n */\nexport const generateBanner = (metadata: PackageMetadata, outputKeys: string[]): string => {\n const parts: string[] = [];\n \n for (const key of outputKeys) {\n const value = metadata[key];\n if (value) {\n parts.push(`${key}: ${value}`);\n }\n }\n \n return parts.length > 0 ? `/*!\\n * ${parts.join('\\n * ')}\\n */` : '';\n};\n\n/**\n * Insert banner header at appropriate position considering shebang\n * @param content - The content to insert banner into\n * @param banner - The banner header to insert\n * @returns Content with banner header inserted\n */\nconst insertBannerHeader = (content: string, banner: string): string => {\n const lines = content.split('\\n');\n \n // Check if first line is shebang\n if (lines.length > 0 && lines[0].startsWith('#!')) {\n // Insert banner after shebang line\n return lines[0] + '\\n' + banner + '\\n' + lines.slice(1).join('\\n');\n } else {\n // Insert banner at the beginning\n return banner + '\\n' + content;\n }\n};\n\n/**\n * Convert string key to valid TypeScript identifier\n * @param key - The key to convert\n * @returns Valid TypeScript identifier\n */\nconst sanitizeKey = (key: string): string => {\n // Replace dots and other invalid characters with underscores\n return key.replace(/[^a-zA-Z0-9_]/g, '_').replace(/^(\\d)/, '_$1');\n};\n\n/**\n * Generate TypeScript metadata file content from package metadata\n * @param metadata - Package metadata\n * @param outputKeys - Array of keys to output\n * @returns TypeScript file content\n */\nconst generateMetadataFile = (metadata: PackageMetadata, outputKeys: string[]): string => {\n const lines: string[] = [];\n \n lines.push('// This file is auto-generated by screw-up plugin');\n lines.push('// Do not edit manually');\n lines.push('');\n \n for (const key of outputKeys) {\n const value = metadata[key];\n if (value) {\n const sanitizedKey = sanitizeKey(key);\n const escapedValue = JSON.stringify(value);\n lines.push(`export const ${sanitizedKey} = ${escapedValue};`);\n }\n }\n \n lines.push('');\n \n return lines.join('\\n');\n};\n\n/////////////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Vite plugin that adds banner to the bundled code\n * @param options - Plugin options\n * @returns Vite plugin\n */\nexport const screwUp = (options: ScrewUpOptions = {}): Plugin => {\n const {\n outputKeys = ['name', 'version', 'description', 'author', 'license', 'repository.url', 'git.commit.hash'],\n assetFilters = ['\\\\.d\\\\.ts$'],\n outputMetadataFile = false,\n outputMetadataFilePath = 'src/generated/packageMetadata.ts',\n outputMetadataKeys = ['name', 'version', 'description', 'author', 'license', 'repository.url', 'git.commit.hash'],\n checkWorkingDirectoryStatus = true,\n alwaysOverrideVersionFromGit = true,\n insertMetadataBanner = true} = options;\n\n const assetFiltersRegex = assetFilters.map(filter => new RegExp(filter));\n\n let logger = createConsoleLogger();\n let banner: string;\n let metadata: any;\n let projectRoot: string;\n let fetchGitMetadata = () => Promise.resolve<any>({});\n\n // Generate and write metadata TypeScript file\n const generateMetadataSourceFile = async () => {\n // Resolve package metadata\n const result = await resolvePackageMetadata(\n projectRoot, fetchGitMetadata, alwaysOverrideVersionFromGit, logger);\n metadata = result.metadata;\n // Regenerate banner with updated metadata\n banner = generateBanner(metadata, outputKeys);\n if (outputMetadataFile) {\n const metadataSourceContent = generateMetadataFile(metadata, outputMetadataKeys);\n const metadataSourcePath = join(projectRoot, outputMetadataFilePath);\n\n try {\n // Ensure directory exists\n await mkdir(dirname(metadataSourcePath), { recursive: true });\n // Write metadata source file\n await writeFile(metadataSourcePath, metadataSourceContent);\n } catch (error) {\n logger.warn(`[screw-up]: Failed to write metadata source file: ${metadataSourcePath}: ${error}`);\n }\n }\n };\n\n return {\n name: 'screw-up',\n apply: 'build',\n // Ensure screw-up runs before other plugins\n // (especially vite-plugin-dts, avoid packageMetadata.ts is not found)\n enforce: 'pre',\n // Configuration resolved phase\n configResolved: async config => {\n // Save project root\n projectRoot = config.root;\n const _logger = {\n debug: config?.logger?.info ?? config?.customLogger?.info ?? logger.debug,\n info: config?.logger?.info ?? config?.customLogger?.info ?? logger.info,\n warn: config?.logger?.warn ?? config?.customLogger?.warn ?? logger.warn,\n error: config?.logger?.error ?? config?.customLogger?.error ?? logger.error,\n };\n logger = _logger;\n // Get Git metadata fetcher function\n fetchGitMetadata = getFetchGitMetadata(\n projectRoot, checkWorkingDirectoryStatus, logger);\n // Generate metadata TypeScript file early to ensure it's available during TypeScript compilation\n await generateMetadataSourceFile();\n },\n // Build start phase\n buildStart: async () => {\n // Re-resolve package metadata to capture any changes since configResolved\n // Update metadata TypeScript file with latest data\n await generateMetadataSourceFile();\n },\n // Generate bundle phase\n generateBundle: (_options, bundle) => {\n // Add banner to each output file if enabled\n if (insertMetadataBanner) {\n for (const fileName in bundle) {\n const chunk = bundle[fileName];\n if (chunk.type === 'chunk') {\n chunk.code = insertBannerHeader(chunk.code, banner);\n } else if (chunk.type === 'asset' && assetFiltersRegex.some(filter => filter.test(fileName))) {\n if (typeof chunk.source === 'string') {\n chunk.source = insertBannerHeader(chunk.source, banner + '\\n'); // insert more blank line\n }\n }\n }\n }\n },\n // Write bundle phase\n writeBundle: async options => {\n // Handle files written by other plugins (like vite-plugin-dts) if banner insertion is enabled\n if (!insertMetadataBanner || !options.dir) return;\n\n try {\n // Read all files in the output directory\n const files = await readdir(options.dir, { recursive: true });\n\n // Iterate over all files\n for (const file of files) {\n const filePath = join(options.dir, file);\n\n // Check if the file is target asset file\n if (assetFiltersRegex.some(filter => filter.test(file))) {\n try {\n // Read the asset file\n const content = await readFile(filePath, 'utf-8');\n // Append banner to the asset file if it doesn't already contain it\n if (!content.includes(banner)) {\n await writeFile(filePath, insertBannerHeader(content, banner + '\\n'));\n }\n } catch (error) {\n // Skip files that can't be read/written\n }\n }\n }\n } catch (error) {\n // Skip files that can't be read/written\n }\n }\n };\n};\n"],"names":["options"],"mappings":"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"}
|
package/dist/internal.d.ts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* name: screw-up
|
|
3
|
-
* version: 0.
|
|
3
|
+
* version: 0.16.0
|
|
4
4
|
* description: Simply package metadata inserter on Vite plugin
|
|
5
5
|
* author: Kouji Matsui (@kekyo@mi.kekyo.net)
|
|
6
6
|
* license: MIT
|
|
7
7
|
* repository.url: https://github.com/kekyo/screw-up.git
|
|
8
|
-
* git.commit.hash:
|
|
8
|
+
* git.commit.hash: c5c68d39d1ab116299338d31f0f208c0eb49be5c
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
-
import { PackageMetadata } from './types
|
|
11
|
+
import { PackageMetadata } from './types';
|
|
12
12
|
/**
|
|
13
13
|
* Logger interface
|
|
14
14
|
*/
|
|
@@ -64,10 +64,13 @@ export declare const findWorkspaceRoot: (startPath: string, logger: Logger) => P
|
|
|
64
64
|
/**
|
|
65
65
|
* Collect workspace sibling projects
|
|
66
66
|
* @param workspaceRoot - Workspace root directory
|
|
67
|
+
* @param fetchGitMetadata - Git metadata fetcher
|
|
68
|
+
* @param alwaysOverrideVersionFromGit - Always override version from Git
|
|
69
|
+
* @param inheritableFields - Package metadata fields that should be inherited from parent
|
|
67
70
|
* @param logger - Logger instance
|
|
68
71
|
* @returns Promise resolving to map of sibling projects (name -> WorkspaceSibling)
|
|
69
72
|
*/
|
|
70
|
-
export declare const collectWorkspaceSiblings: (workspaceRoot: string, logger: Logger) => Promise<Map<string, WorkspaceSibling>>;
|
|
73
|
+
export declare const collectWorkspaceSiblings: (workspaceRoot: string, fetchGitMetadata: () => Promise<any>, alwaysOverrideVersionFromGit: boolean, inheritableFields: Set<string>, logger: Logger) => Promise<Map<string, WorkspaceSibling>>;
|
|
71
74
|
/**
|
|
72
75
|
* Replace "*" wildcards in peerDependencies with actual workspace sibling versions
|
|
73
76
|
* @param packageJson - Package.json object to modify
|
|
@@ -78,34 +81,33 @@ export declare const collectWorkspaceSiblings: (workspaceRoot: string, logger: L
|
|
|
78
81
|
export declare const replacePeerDependenciesWildcards: (packageJson: any, siblings: Map<string, WorkspaceSibling>, versionPrefix: string) => any;
|
|
79
82
|
/**
|
|
80
83
|
* Merge package metadata with inheritance (child overrides parent)
|
|
81
|
-
* @param
|
|
84
|
+
* @param fetchGitMetadata - Git metadata fetcher
|
|
82
85
|
* @param alwaysOverrideVersionFromGit - Always override version from Git
|
|
83
86
|
* @param sourceMap - Map to track field sources
|
|
84
87
|
* @param parentMetadata - Parent package metadata
|
|
85
88
|
* @param childMetadata - Child package metadata
|
|
86
89
|
* @param parentSourceDir - Parent package.json directory (for source tracking)
|
|
87
90
|
* @param childSourceDir - Child package.json directory (for source tracking)
|
|
88
|
-
* @param repositoryPath - Path to Git repository root
|
|
89
91
|
* @returns Merged package metadata
|
|
90
92
|
*/
|
|
91
|
-
export declare const mergePackageMetadata: (
|
|
93
|
+
export declare const mergePackageMetadata: (fetchGitMetadata: () => Promise<any>, alwaysOverrideVersionFromGit: boolean, sourceMap: Map<string, string>, parentMetadata: PackageMetadata, childMetadata: PackageMetadata, parentSourceDir: string, childSourceDir: string, _repositoryPath: string) => Promise<PackageMetadata>;
|
|
92
94
|
/**
|
|
93
95
|
* Resolve package metadata for current project with workspace inheritance
|
|
94
96
|
* @param projectRoot - Current project root
|
|
95
|
-
* @param
|
|
97
|
+
* @param fetchGitMetadata - Git metadata fetcher
|
|
96
98
|
* @param alwaysOverrideVersionFromGit - Always override version from Git
|
|
97
99
|
* @param logger - Logger instance
|
|
98
100
|
* @returns Promise resolving to resolved package metadata
|
|
99
101
|
*/
|
|
100
|
-
export declare const resolvePackageMetadata: (projectRoot: string,
|
|
102
|
+
export declare const resolvePackageMetadata: (projectRoot: string, fetchGitMetadata: () => Promise<any>, alwaysOverrideVersionFromGit: boolean, logger: Logger) => Promise<PackageResolutionResult<PackageMetadata>>;
|
|
101
103
|
/**
|
|
102
104
|
* Resolve raw package.json for current project with workspace inheritance
|
|
103
105
|
* @param projectRoot - Current project root
|
|
104
|
-
* @param
|
|
106
|
+
* @param fetchGitMetadata - Git metadata fetcher
|
|
105
107
|
* @param alwaysOverrideVersionFromGit - Always override version from Git
|
|
106
108
|
* @param inheritableFields - Package metadata fields that should be inherited from parent
|
|
107
109
|
* @param logger - Logger instance
|
|
108
110
|
* @returns Promise resolving to resolved raw package.json object with source tracking
|
|
109
111
|
*/
|
|
110
|
-
export declare const resolveRawPackageJsonObject: (projectRoot: string,
|
|
112
|
+
export declare const resolveRawPackageJsonObject: (projectRoot: string, fetchGitMetadata: () => Promise<any>, alwaysOverrideVersionFromGit: boolean, inheritableFields: Set<string>, logger: Logger) => Promise<PackageResolutionResult<any>>;
|
|
111
113
|
//# sourceMappingURL=internal.d.ts.map
|
package/dist/internal.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAM1C;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC;AAED;;EAEE;AACF,eAAO,MAAM,mBAAmB,QAAO,MAOtC,CAAC;AAIF;;;GAGG;AACH,MAAM,WAAW,uBAAuB,CAAC,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;IACrB,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AA2BD;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,GAAU,WAAW,MAAM,EAAE,QAAQ,MAAM,KAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CA0BrG,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,wBAAwB,GACnC,eAAe,MAAM,EACrB,kBAAkB,MAAM,OAAO,CAAC,GAAG,CAAC,EACpC,8BAA8B,OAAO,EACrC,mBAAmB,GAAG,CAAC,MAAM,CAAC,EAC9B,QAAQ,MAAM,KACb,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CA0DvC,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,gCAAgC,GAC3C,aAAa,GAAG,EAChB,UAAU,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,EACvC,eAAe,MAAM,KACpB,GAiBF,CAAC;AAIF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,oBAAoB,GAC/B,kBAAkB,MAAM,OAAO,CAAC,GAAG,CAAC,EACpC,8BAA8B,OAAO,EACrC,WAAW,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,gBAAgB,eAAe,EAC/B,eAAe,eAAe,EAC9B,iBAAiB,MAAM,EACvB,gBAAgB,MAAM,EACtB,iBAAiB,MAAM,KAAG,OAAO,CAAC,eAAe,CA+BlD,CAAC;AAuIF;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,GACjC,aAAa,MAAM,EACnB,kBAAkB,MAAM,OAAO,CAAC,GAAG,CAAC,EACpC,8BAA8B,OAAO,EACrC,QAAQ,MAAM,KAAG,OAAO,CAAC,uBAAuB,CAAC,eAAe,CAAC,CAYlE,CAAC;AAkBF;;;;;;;;GAQG;AACH,eAAO,MAAM,2BAA2B,GACtC,aAAa,MAAM,EACnB,kBAAkB,MAAM,OAAO,CAAC,GAAG,CAAC,EACpC,8BAA8B,OAAO,EACrC,mBAAmB,GAAG,CAAC,MAAM,CAAC,EAC9B,QAAQ,MAAM,KAAG,OAAO,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAYtD,CAAC"}
|
package/dist/main.cjs
CHANGED
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/*!
|
|
3
3
|
* name: screw-up
|
|
4
|
-
* version: 0.
|
|
4
|
+
* version: 0.16.0
|
|
5
5
|
* description: Simply package metadata inserter on Vite plugin
|
|
6
6
|
* author: Kouji Matsui (@kekyo@mi.kekyo.net)
|
|
7
7
|
* license: MIT
|
|
8
8
|
* repository.url: https://github.com/kekyo/screw-up.git
|
|
9
|
-
* git.commit.hash:
|
|
9
|
+
* git.commit.hash: c5c68d39d1ab116299338d31f0f208c0eb49be5c
|
|
10
10
|
*/
|
|
11
11
|
"use strict";
|
|
12
12
|
const path = require("path");
|
|
13
13
|
const fs = require("fs");
|
|
14
14
|
const promises = require("fs/promises");
|
|
15
15
|
const child_process = require("child_process");
|
|
16
|
+
const os = require("os");
|
|
16
17
|
const stream = require("stream");
|
|
17
18
|
const zlib = require("zlib");
|
|
18
19
|
const promises$1 = require("stream/promises");
|
|
19
|
-
const
|
|
20
|
-
const internal = require("./internal-BHSe5LIZ.cjs");
|
|
20
|
+
const analyzer = require("./analyzer-2k5jeoJo.cjs");
|
|
21
21
|
/*!
|
|
22
22
|
* name: tar-vern
|
|
23
23
|
* version: 1.2.0
|
|
@@ -693,9 +693,14 @@ const packAssets = async (targetDir, outputDir, checkWorkingDirectoryStatus, alw
|
|
|
693
693
|
if (readmeReplacementCandidatePath && !fs.existsSync(readmeReplacementCandidatePath)) {
|
|
694
694
|
throw new Error(`README replacement file is not found: ${readmeReplacementCandidatePath}`);
|
|
695
695
|
}
|
|
696
|
-
const
|
|
696
|
+
const fetchGitMetadata = analyzer.getFetchGitMetadata(
|
|
697
697
|
targetDir,
|
|
698
698
|
checkWorkingDirectoryStatus,
|
|
699
|
+
logger2
|
|
700
|
+
);
|
|
701
|
+
const result = await analyzer.resolveRawPackageJsonObject(
|
|
702
|
+
targetDir,
|
|
703
|
+
fetchGitMetadata,
|
|
699
704
|
alwaysOverrideVersionFromGit,
|
|
700
705
|
inheritableFields,
|
|
701
706
|
logger2
|
|
@@ -717,11 +722,17 @@ const packAssets = async (targetDir, outputDir, checkWorkingDirectoryStatus, alw
|
|
|
717
722
|
delete resolvedPackageJson.readme;
|
|
718
723
|
}
|
|
719
724
|
if (replacePeerDepsWildcards) {
|
|
720
|
-
const workspaceRoot = await
|
|
725
|
+
const workspaceRoot = await analyzer.findWorkspaceRoot(targetDir, logger2);
|
|
721
726
|
if (workspaceRoot) {
|
|
722
|
-
const siblings = await
|
|
727
|
+
const siblings = await analyzer.collectWorkspaceSiblings(
|
|
728
|
+
workspaceRoot,
|
|
729
|
+
fetchGitMetadata,
|
|
730
|
+
alwaysOverrideVersionFromGit,
|
|
731
|
+
inheritableFields,
|
|
732
|
+
logger2
|
|
733
|
+
);
|
|
723
734
|
if (siblings.size > 0) {
|
|
724
|
-
resolvedPackageJson =
|
|
735
|
+
resolvedPackageJson = analyzer.replacePeerDependenciesWildcards(
|
|
725
736
|
resolvedPackageJson,
|
|
726
737
|
siblings,
|
|
727
738
|
peerDepsVersionPrefix
|
|
@@ -759,13 +770,13 @@ const packAssets = async (targetDir, outputDir, checkWorkingDirectoryStatus, alw
|
|
|
759
770
|
await promises.rm(baseTempDir, { recursive: true, force: true });
|
|
760
771
|
}
|
|
761
772
|
};
|
|
762
|
-
const getComputedPackageJsonObject = async (targetDir,
|
|
773
|
+
const getComputedPackageJsonObject = async (targetDir, fetchGitMetadata, alwaysOverrideVersionFromGit, inheritableFields, logger2) => {
|
|
763
774
|
if (!fs.existsSync(targetDir)) {
|
|
764
775
|
return void 0;
|
|
765
776
|
}
|
|
766
|
-
const result = await
|
|
777
|
+
const result = await analyzer.resolveRawPackageJsonObject(
|
|
767
778
|
targetDir,
|
|
768
|
-
|
|
779
|
+
fetchGitMetadata,
|
|
769
780
|
alwaysOverrideVersionFromGit,
|
|
770
781
|
inheritableFields,
|
|
771
782
|
logger2
|
|
@@ -853,9 +864,14 @@ const dumpCommand = async (args, logger2) => {
|
|
|
853
864
|
const inheritableFields = parseInheritableFields(inheritableFieldsOption);
|
|
854
865
|
const targetDir = path.resolve(directory != null ? directory : process.cwd());
|
|
855
866
|
try {
|
|
856
|
-
const
|
|
867
|
+
const fetchGitMetadata = analyzer.getFetchGitMetadata(
|
|
857
868
|
targetDir,
|
|
858
869
|
checkWorkingDirectoryStatus,
|
|
870
|
+
logger2
|
|
871
|
+
);
|
|
872
|
+
const computedPackageJson = await getComputedPackageJsonObject(
|
|
873
|
+
targetDir,
|
|
874
|
+
fetchGitMetadata,
|
|
859
875
|
alwaysOverrideVersionFromGit,
|
|
860
876
|
inheritableFields,
|
|
861
877
|
logger2
|
|
@@ -1012,7 +1028,8 @@ const publishCommand = async (args, logger2) => {
|
|
|
1012
1028
|
const npmOptions = [];
|
|
1013
1029
|
for (let i = 0; i < args.argv.length; i++) {
|
|
1014
1030
|
const arg = args.argv[i];
|
|
1015
|
-
if (arg === "
|
|
1031
|
+
if (arg === "publish") ;
|
|
1032
|
+
else if (arg === "--help" || arg === "--verbose" || arg === "-h" || arg === "--no-wds" || arg === "--no-git-version-override" || arg === "--no-replace-peer-deps") ;
|
|
1016
1033
|
else if (arg === "--readme" || arg === "--inheritable-fields" || arg === "--peer-deps-prefix") {
|
|
1017
1034
|
i++;
|
|
1018
1035
|
} else {
|
|
@@ -1022,7 +1039,7 @@ const publishCommand = async (args, logger2) => {
|
|
|
1022
1039
|
try {
|
|
1023
1040
|
if (!path$1) {
|
|
1024
1041
|
const targetDir = process.cwd();
|
|
1025
|
-
const outputDir = await promises.mkdtemp("screw-up-publish-");
|
|
1042
|
+
const outputDir = await promises.mkdtemp(path.join(os.tmpdir(), "screw-up-publish-"));
|
|
1026
1043
|
if (verbose) {
|
|
1027
1044
|
logger2.info(`[screw-up:cli]: publish: Creating archive of ${targetDir}...`);
|
|
1028
1045
|
}
|
|
@@ -1042,8 +1059,7 @@ const publishCommand = async (args, logger2) => {
|
|
|
1042
1059
|
if (verbose) {
|
|
1043
1060
|
logger2.info(`[screw-up:cli]: publish: Archive created successfully: ${result.packageFileName}`);
|
|
1044
1061
|
}
|
|
1045
|
-
const
|
|
1046
|
-
const archivePath = path.join(outputDir, archiveName);
|
|
1062
|
+
const archivePath = path.join(outputDir, result.packageFileName);
|
|
1047
1063
|
return await runNpmPublish(archivePath, npmOptions, verbose, logger2);
|
|
1048
1064
|
} else {
|
|
1049
1065
|
logger2.error(`[screw-up:cli]: publish: Unable to find any files to pack: ${targetDir}`);
|
|
@@ -1058,7 +1074,7 @@ const publishCommand = async (args, logger2) => {
|
|
|
1058
1074
|
return await runNpmPublish(path.resolve(path$1), npmOptions, verbose, logger2);
|
|
1059
1075
|
} else if (pathStat.isDirectory()) {
|
|
1060
1076
|
const targetDir = path.resolve(path$1);
|
|
1061
|
-
const outputDir = await promises.mkdtemp("screw-up-publish-");
|
|
1077
|
+
const outputDir = await promises.mkdtemp(path.join(os.tmpdir(), "screw-up-publish-"));
|
|
1062
1078
|
if (verbose) {
|
|
1063
1079
|
logger2.info(`[screw-up:cli]: publish: Creating archive of ${targetDir}...`);
|
|
1064
1080
|
}
|
|
@@ -1078,8 +1094,7 @@ const publishCommand = async (args, logger2) => {
|
|
|
1078
1094
|
if (verbose) {
|
|
1079
1095
|
logger2.info(`[screw-up:cli]: publish: Archive created successfully: ${result.packageFileName}`);
|
|
1080
1096
|
}
|
|
1081
|
-
const
|
|
1082
|
-
const archivePath = path.join(outputDir, archiveName);
|
|
1097
|
+
const archivePath = path.join(outputDir, result.packageFileName);
|
|
1083
1098
|
return await runNpmPublish(archivePath, npmOptions, verbose, logger2);
|
|
1084
1099
|
} else {
|
|
1085
1100
|
logger2.error(`[screw-up:cli]: publish: Unable to find any files to pack: ${targetDir}`);
|
|
@@ -1102,7 +1117,7 @@ const publishCommand = async (args, logger2) => {
|
|
|
1102
1117
|
}
|
|
1103
1118
|
};
|
|
1104
1119
|
const showHelp = async (logger2) => {
|
|
1105
|
-
const { author, license, repository_url, version } = await Promise.resolve().then(() => require("./packageMetadata
|
|
1120
|
+
const { author, license, repository_url, version } = await Promise.resolve().then(() => require("./packageMetadata--R5DYhGa.cjs"));
|
|
1106
1121
|
logger2.info(`screw-up - Easy package metadata inserter CLI [${version}]
|
|
1107
1122
|
Copyright (c) ${author}
|
|
1108
1123
|
Repository: ${repository_url}
|
|
@@ -1154,7 +1169,7 @@ const cliMain = async (args, logger2) => {
|
|
|
1154
1169
|
return 1;
|
|
1155
1170
|
}
|
|
1156
1171
|
};
|
|
1157
|
-
const logger =
|
|
1172
|
+
const logger = analyzer.createConsoleLogger();
|
|
1158
1173
|
cliMain(
|
|
1159
1174
|
process.argv.slice(2),
|
|
1160
1175
|
// Remove 'node' and script path
|