screw-up 0.15.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-DoM-p19R.cjs → analyzer-2k5jeoJo.cjs} +250 -236
- package/dist/analyzer-2k5jeoJo.cjs.map +1 -0
- package/dist/{internal-Dy8K0duL.js → analyzer-CU8VuwpB.js} +250 -236
- 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 +11 -12
- package/dist/internal.d.ts.map +1 -1
- package/dist/main.cjs +31 -22
- package/dist/main.cjs.map +1 -1
- package/dist/main.d.ts +2 -2
- package/dist/main.js +26 -17
- package/dist/main.js.map +1 -1
- package/dist/{packageMetadata-B4rW4ext.cjs → packageMetadata--R5DYhGa.cjs} +4 -4
- package/dist/{packageMetadata-B4rW4ext.cjs.map → packageMetadata--R5DYhGa.cjs.map} +1 -1
- package/dist/{packageMetadata-svUXyND1.js → packageMetadata-BC5X00sF.js} +4 -4
- package/dist/{packageMetadata-svUXyND1.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-DoM-p19R.cjs.map +0 -1
- package/dist/internal-Dy8K0duL.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,13 +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
|
|
67
|
+
* @param fetchGitMetadata - Git metadata fetcher
|
|
68
68
|
* @param alwaysOverrideVersionFromGit - Always override version from Git
|
|
69
69
|
* @param inheritableFields - Package metadata fields that should be inherited from parent
|
|
70
70
|
* @param logger - Logger instance
|
|
71
71
|
* @returns Promise resolving to map of sibling projects (name -> WorkspaceSibling)
|
|
72
72
|
*/
|
|
73
|
-
export declare const collectWorkspaceSiblings: (workspaceRoot: string,
|
|
73
|
+
export declare const collectWorkspaceSiblings: (workspaceRoot: string, fetchGitMetadata: () => Promise<any>, alwaysOverrideVersionFromGit: boolean, inheritableFields: Set<string>, logger: Logger) => Promise<Map<string, WorkspaceSibling>>;
|
|
74
74
|
/**
|
|
75
75
|
* Replace "*" wildcards in peerDependencies with actual workspace sibling versions
|
|
76
76
|
* @param packageJson - Package.json object to modify
|
|
@@ -81,34 +81,33 @@ export declare const collectWorkspaceSiblings: (workspaceRoot: string, checkWork
|
|
|
81
81
|
export declare const replacePeerDependenciesWildcards: (packageJson: any, siblings: Map<string, WorkspaceSibling>, versionPrefix: string) => any;
|
|
82
82
|
/**
|
|
83
83
|
* Merge package metadata with inheritance (child overrides parent)
|
|
84
|
-
* @param
|
|
84
|
+
* @param fetchGitMetadata - Git metadata fetcher
|
|
85
85
|
* @param alwaysOverrideVersionFromGit - Always override version from Git
|
|
86
86
|
* @param sourceMap - Map to track field sources
|
|
87
87
|
* @param parentMetadata - Parent package metadata
|
|
88
88
|
* @param childMetadata - Child package metadata
|
|
89
89
|
* @param parentSourceDir - Parent package.json directory (for source tracking)
|
|
90
90
|
* @param childSourceDir - Child package.json directory (for source tracking)
|
|
91
|
-
* @param repositoryPath - Path to Git repository root
|
|
92
91
|
* @returns Merged package metadata
|
|
93
92
|
*/
|
|
94
|
-
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>;
|
|
95
94
|
/**
|
|
96
95
|
* Resolve package metadata for current project with workspace inheritance
|
|
97
96
|
* @param projectRoot - Current project root
|
|
98
|
-
* @param
|
|
97
|
+
* @param fetchGitMetadata - Git metadata fetcher
|
|
99
98
|
* @param alwaysOverrideVersionFromGit - Always override version from Git
|
|
100
99
|
* @param logger - Logger instance
|
|
101
100
|
* @returns Promise resolving to resolved package metadata
|
|
102
101
|
*/
|
|
103
|
-
export declare const resolvePackageMetadata: (projectRoot: string,
|
|
102
|
+
export declare const resolvePackageMetadata: (projectRoot: string, fetchGitMetadata: () => Promise<any>, alwaysOverrideVersionFromGit: boolean, logger: Logger) => Promise<PackageResolutionResult<PackageMetadata>>;
|
|
104
103
|
/**
|
|
105
104
|
* Resolve raw package.json for current project with workspace inheritance
|
|
106
105
|
* @param projectRoot - Current project root
|
|
107
|
-
* @param
|
|
106
|
+
* @param fetchGitMetadata - Git metadata fetcher
|
|
108
107
|
* @param alwaysOverrideVersionFromGit - Always override version from Git
|
|
109
108
|
* @param inheritableFields - Package metadata fields that should be inherited from parent
|
|
110
109
|
* @param logger - Logger instance
|
|
111
110
|
* @returns Promise resolving to resolved raw package.json object with source tracking
|
|
112
111
|
*/
|
|
113
|
-
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>>;
|
|
114
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-DoM-p19R.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,17 +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(
|
|
723
728
|
workspaceRoot,
|
|
724
|
-
|
|
729
|
+
fetchGitMetadata,
|
|
725
730
|
alwaysOverrideVersionFromGit,
|
|
726
731
|
inheritableFields,
|
|
727
732
|
logger2
|
|
728
733
|
);
|
|
729
734
|
if (siblings.size > 0) {
|
|
730
|
-
resolvedPackageJson =
|
|
735
|
+
resolvedPackageJson = analyzer.replacePeerDependenciesWildcards(
|
|
731
736
|
resolvedPackageJson,
|
|
732
737
|
siblings,
|
|
733
738
|
peerDepsVersionPrefix
|
|
@@ -765,13 +770,13 @@ const packAssets = async (targetDir, outputDir, checkWorkingDirectoryStatus, alw
|
|
|
765
770
|
await promises.rm(baseTempDir, { recursive: true, force: true });
|
|
766
771
|
}
|
|
767
772
|
};
|
|
768
|
-
const getComputedPackageJsonObject = async (targetDir,
|
|
773
|
+
const getComputedPackageJsonObject = async (targetDir, fetchGitMetadata, alwaysOverrideVersionFromGit, inheritableFields, logger2) => {
|
|
769
774
|
if (!fs.existsSync(targetDir)) {
|
|
770
775
|
return void 0;
|
|
771
776
|
}
|
|
772
|
-
const result = await
|
|
777
|
+
const result = await analyzer.resolveRawPackageJsonObject(
|
|
773
778
|
targetDir,
|
|
774
|
-
|
|
779
|
+
fetchGitMetadata,
|
|
775
780
|
alwaysOverrideVersionFromGit,
|
|
776
781
|
inheritableFields,
|
|
777
782
|
logger2
|
|
@@ -859,9 +864,14 @@ const dumpCommand = async (args, logger2) => {
|
|
|
859
864
|
const inheritableFields = parseInheritableFields(inheritableFieldsOption);
|
|
860
865
|
const targetDir = path.resolve(directory != null ? directory : process.cwd());
|
|
861
866
|
try {
|
|
862
|
-
const
|
|
867
|
+
const fetchGitMetadata = analyzer.getFetchGitMetadata(
|
|
863
868
|
targetDir,
|
|
864
869
|
checkWorkingDirectoryStatus,
|
|
870
|
+
logger2
|
|
871
|
+
);
|
|
872
|
+
const computedPackageJson = await getComputedPackageJsonObject(
|
|
873
|
+
targetDir,
|
|
874
|
+
fetchGitMetadata,
|
|
865
875
|
alwaysOverrideVersionFromGit,
|
|
866
876
|
inheritableFields,
|
|
867
877
|
logger2
|
|
@@ -1018,7 +1028,8 @@ const publishCommand = async (args, logger2) => {
|
|
|
1018
1028
|
const npmOptions = [];
|
|
1019
1029
|
for (let i = 0; i < args.argv.length; i++) {
|
|
1020
1030
|
const arg = args.argv[i];
|
|
1021
|
-
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") ;
|
|
1022
1033
|
else if (arg === "--readme" || arg === "--inheritable-fields" || arg === "--peer-deps-prefix") {
|
|
1023
1034
|
i++;
|
|
1024
1035
|
} else {
|
|
@@ -1028,7 +1039,7 @@ const publishCommand = async (args, logger2) => {
|
|
|
1028
1039
|
try {
|
|
1029
1040
|
if (!path$1) {
|
|
1030
1041
|
const targetDir = process.cwd();
|
|
1031
|
-
const outputDir = await promises.mkdtemp("screw-up-publish-");
|
|
1042
|
+
const outputDir = await promises.mkdtemp(path.join(os.tmpdir(), "screw-up-publish-"));
|
|
1032
1043
|
if (verbose) {
|
|
1033
1044
|
logger2.info(`[screw-up:cli]: publish: Creating archive of ${targetDir}...`);
|
|
1034
1045
|
}
|
|
@@ -1048,8 +1059,7 @@ const publishCommand = async (args, logger2) => {
|
|
|
1048
1059
|
if (verbose) {
|
|
1049
1060
|
logger2.info(`[screw-up:cli]: publish: Archive created successfully: ${result.packageFileName}`);
|
|
1050
1061
|
}
|
|
1051
|
-
const
|
|
1052
|
-
const archivePath = path.join(outputDir, archiveName);
|
|
1062
|
+
const archivePath = path.join(outputDir, result.packageFileName);
|
|
1053
1063
|
return await runNpmPublish(archivePath, npmOptions, verbose, logger2);
|
|
1054
1064
|
} else {
|
|
1055
1065
|
logger2.error(`[screw-up:cli]: publish: Unable to find any files to pack: ${targetDir}`);
|
|
@@ -1064,7 +1074,7 @@ const publishCommand = async (args, logger2) => {
|
|
|
1064
1074
|
return await runNpmPublish(path.resolve(path$1), npmOptions, verbose, logger2);
|
|
1065
1075
|
} else if (pathStat.isDirectory()) {
|
|
1066
1076
|
const targetDir = path.resolve(path$1);
|
|
1067
|
-
const outputDir = await promises.mkdtemp("screw-up-publish-");
|
|
1077
|
+
const outputDir = await promises.mkdtemp(path.join(os.tmpdir(), "screw-up-publish-"));
|
|
1068
1078
|
if (verbose) {
|
|
1069
1079
|
logger2.info(`[screw-up:cli]: publish: Creating archive of ${targetDir}...`);
|
|
1070
1080
|
}
|
|
@@ -1084,8 +1094,7 @@ const publishCommand = async (args, logger2) => {
|
|
|
1084
1094
|
if (verbose) {
|
|
1085
1095
|
logger2.info(`[screw-up:cli]: publish: Archive created successfully: ${result.packageFileName}`);
|
|
1086
1096
|
}
|
|
1087
|
-
const
|
|
1088
|
-
const archivePath = path.join(outputDir, archiveName);
|
|
1097
|
+
const archivePath = path.join(outputDir, result.packageFileName);
|
|
1089
1098
|
return await runNpmPublish(archivePath, npmOptions, verbose, logger2);
|
|
1090
1099
|
} else {
|
|
1091
1100
|
logger2.error(`[screw-up:cli]: publish: Unable to find any files to pack: ${targetDir}`);
|
|
@@ -1108,7 +1117,7 @@ const publishCommand = async (args, logger2) => {
|
|
|
1108
1117
|
}
|
|
1109
1118
|
};
|
|
1110
1119
|
const showHelp = async (logger2) => {
|
|
1111
|
-
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"));
|
|
1112
1121
|
logger2.info(`screw-up - Easy package metadata inserter CLI [${version}]
|
|
1113
1122
|
Copyright (c) ${author}
|
|
1114
1123
|
Repository: ${repository_url}
|
|
@@ -1160,7 +1169,7 @@ const cliMain = async (args, logger2) => {
|
|
|
1160
1169
|
return 1;
|
|
1161
1170
|
}
|
|
1162
1171
|
};
|
|
1163
|
-
const logger =
|
|
1172
|
+
const logger = analyzer.createConsoleLogger();
|
|
1164
1173
|
cliMain(
|
|
1165
1174
|
process.argv.slice(2),
|
|
1166
1175
|
// Remove 'node' and script path
|