screw-up 0.16.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/{analyzer-2k5jeoJo.cjs → analyzer-BxxtJjNH.cjs} +22 -15
- package/dist/{analyzer-2k5jeoJo.cjs.map → analyzer-BxxtJjNH.cjs.map} +1 -1
- package/dist/{analyzer-CU8VuwpB.js → analyzer-DxAKRQPj.js} +17 -10
- package/dist/{analyzer-CU8VuwpB.js.map → analyzer-DxAKRQPj.js.map} +1 -1
- package/dist/analyzer.d.ts +2 -2
- package/dist/analyzer.d.ts.map +1 -1
- package/dist/cli-internal.d.ts +2 -2
- package/dist/cli.d.ts +2 -2
- package/dist/generated/packageMetadata.d.ts +4 -4
- package/dist/generated/packageMetadata.d.ts.map +1 -1
- package/dist/index.cjs +9 -9
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +3 -3
- package/dist/internal.d.ts +2 -2
- package/dist/main.cjs +36 -36
- package/dist/main.cjs.map +1 -1
- package/dist/main.d.ts +2 -2
- package/dist/main.js +4 -4
- package/dist/{packageMetadata-BC5X00sF.js → packageMetadata-CwQxZ4Fj.js} +4 -4
- package/dist/packageMetadata-CwQxZ4Fj.js.map +1 -0
- package/dist/{packageMetadata--R5DYhGa.cjs → packageMetadata-CxY3Y3Qr.cjs} +4 -4
- package/dist/packageMetadata-CxY3Y3Qr.cjs.map +1 -0
- package/dist/types.d.ts +2 -2
- package/dist/vite-plugin.d.ts +2 -2
- package/package.json +6 -6
- package/dist/packageMetadata--R5DYhGa.cjs.map +0 -1
- package/dist/packageMetadata-BC5X00sF.js.map +0 -1
package/dist/analyzer.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* name: screw-up
|
|
3
|
-
* version: 0.
|
|
3
|
+
* version: 1.0.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: 4129fb42a594608860d2ac0d9d10871739f39091
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
11
|
import { Logger } from './internal.js';
|
package/dist/analyzer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyzer.d.ts","sourceRoot":"","sources":["../src/analyzer.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"analyzer.d.ts","sourceRoot":"","sources":["../src/analyzer.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAyiBvC;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,GAC9B,WAAW,MAAM,EAAE,6BAA6B,OAAO,EAAE,QAAQ,MAAM,uBASxE,CAAA"}
|
package/dist/cli-internal.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* name: screw-up
|
|
3
|
-
* version: 0.
|
|
3
|
+
* version: 1.0.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: 4129fb42a594608860d2ac0d9d10871739f39091
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
11
|
import { Logger } from './internal';
|
package/dist/cli.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* name: screw-up
|
|
3
|
-
* version: 0.
|
|
3
|
+
* version: 1.0.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: 4129fb42a594608860d2ac0d9d10871739f39091
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
11
|
import { Logger } from './internal';
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* name: screw-up
|
|
3
|
-
* version: 0.
|
|
3
|
+
* version: 1.0.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: 4129fb42a594608860d2ac0d9d10871739f39091
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
11
|
export declare const name = "screw-up";
|
|
12
|
-
export declare const version = "0.
|
|
12
|
+
export declare const version = "1.0.0";
|
|
13
13
|
export declare const description = "Simply package metadata inserter on Vite plugin";
|
|
14
14
|
export declare const author = "Kouji Matsui (@kekyo@mi.kekyo.net)";
|
|
15
15
|
export declare const license = "MIT";
|
|
16
16
|
export declare const repository_url = "https://github.com/kekyo/screw-up.git";
|
|
17
|
-
export declare const git_commit_hash = "
|
|
17
|
+
export declare const git_commit_hash = "4129fb42a594608860d2ac0d9d10871739f39091";
|
|
18
18
|
//# sourceMappingURL=packageMetadata.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packageMetadata.d.ts","sourceRoot":"","sources":["../../src/generated/packageMetadata.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,IAAI,aAAa,CAAC;AAC/B,eAAO,MAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"packageMetadata.d.ts","sourceRoot":"","sources":["../../src/generated/packageMetadata.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,IAAI,aAAa,CAAC;AAC/B,eAAO,MAAM,OAAO,UAAU,CAAC;AAC/B,eAAO,MAAM,WAAW,oDAAoD,CAAC;AAC7E,eAAO,MAAM,MAAM,uCAAuC,CAAC;AAC3D,eAAO,MAAM,OAAO,QAAQ,CAAC;AAC7B,eAAO,MAAM,cAAc,0CAA0C,CAAC;AACtE,eAAO,MAAM,eAAe,6CAA6C,CAAC"}
|
package/dist/index.cjs
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* name: screw-up
|
|
3
|
-
* version: 0.
|
|
3
|
+
* version: 1.0.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: 4129fb42a594608860d2ac0d9d10871739f39091
|
|
9
9
|
*/
|
|
10
10
|
"use strict";
|
|
11
|
-
const
|
|
11
|
+
const fs = require("fs/promises");
|
|
12
12
|
const path = require("path");
|
|
13
|
-
const analyzer = require("./analyzer-
|
|
13
|
+
const analyzer = require("./analyzer-BxxtJjNH.cjs");
|
|
14
14
|
const generateBanner = (metadata, outputKeys) => {
|
|
15
15
|
const parts = [];
|
|
16
16
|
for (const key of outputKeys) {
|
|
@@ -80,8 +80,8 @@ const screwUp = (options = {}) => {
|
|
|
80
80
|
const metadataSourceContent = generateMetadataFile(metadata, outputMetadataKeys);
|
|
81
81
|
const metadataSourcePath = path.join(projectRoot, outputMetadataFilePath);
|
|
82
82
|
try {
|
|
83
|
-
await
|
|
84
|
-
await
|
|
83
|
+
await fs.mkdir(path.dirname(metadataSourcePath), { recursive: true });
|
|
84
|
+
await fs.writeFile(metadataSourcePath, metadataSourceContent);
|
|
85
85
|
} catch (error) {
|
|
86
86
|
logger.warn(`[screw-up]: Failed to write metadata source file: ${metadataSourcePath}: ${error}`);
|
|
87
87
|
}
|
|
@@ -134,14 +134,14 @@ const screwUp = (options = {}) => {
|
|
|
134
134
|
writeBundle: async (options2) => {
|
|
135
135
|
if (!insertMetadataBanner || !options2.dir) return;
|
|
136
136
|
try {
|
|
137
|
-
const files = await
|
|
137
|
+
const files = await fs.readdir(options2.dir, { recursive: true });
|
|
138
138
|
for (const file of files) {
|
|
139
139
|
const filePath = path.join(options2.dir, file);
|
|
140
140
|
if (assetFiltersRegex.some((filter) => filter.test(file))) {
|
|
141
141
|
try {
|
|
142
|
-
const content = await
|
|
142
|
+
const content = await fs.readFile(filePath, "utf-8");
|
|
143
143
|
if (!content.includes(banner)) {
|
|
144
|
-
await
|
|
144
|
+
await fs.writeFile(filePath, insertBannerHeader(content, banner + "\n"));
|
|
145
145
|
}
|
|
146
146
|
} catch (error) {
|
|
147
147
|
}
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","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":["createConsoleLogger","resolvePackageMetadata","join","mkdir","dirname","writeFile","getFetchGitMetadata","options","readdir","readFile"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","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":["createConsoleLogger","resolvePackageMetadata","join","mkdir","dirname","writeFile","getFetchGitMetadata","options","readdir","readFile"],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* name: screw-up
|
|
3
|
-
* version: 0.
|
|
3
|
+
* version: 1.0.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: 4129fb42a594608860d2ac0d9d10871739f39091
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
11
|
import { screwUp } from './vite-plugin';
|
package/dist/index.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* name: screw-up
|
|
3
|
-
* version: 0.
|
|
3
|
+
* version: 1.0.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: 4129fb42a594608860d2ac0d9d10871739f39091
|
|
9
9
|
*/
|
|
10
10
|
import { readdir, readFile, writeFile, mkdir } from "fs/promises";
|
|
11
11
|
import { join, dirname } from "path";
|
|
12
|
-
import { c as createConsoleLogger, r as resolvePackageMetadata, g as getFetchGitMetadata } from "./analyzer-
|
|
12
|
+
import { c as createConsoleLogger, r as resolvePackageMetadata, g as getFetchGitMetadata } from "./analyzer-DxAKRQPj.js";
|
|
13
13
|
const generateBanner = (metadata, outputKeys) => {
|
|
14
14
|
const parts = [];
|
|
15
15
|
for (const key of outputKeys) {
|
package/dist/internal.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* name: screw-up
|
|
3
|
-
* version: 0.
|
|
3
|
+
* version: 1.0.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: 4129fb42a594608860d2ac0d9d10871739f39091
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
11
|
import { PackageMetadata } from './types';
|
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: 1.0.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: 4129fb42a594608860d2ac0d9d10871739f39091
|
|
10
10
|
*/
|
|
11
11
|
"use strict";
|
|
12
12
|
const path = require("path");
|
|
13
|
-
const fs = require("fs");
|
|
14
|
-
const
|
|
13
|
+
const fs$1 = require("fs");
|
|
14
|
+
const fs = require("fs/promises");
|
|
15
15
|
const child_process = require("child_process");
|
|
16
16
|
const os = require("os");
|
|
17
17
|
const stream = require("stream");
|
|
18
18
|
const zlib = require("zlib");
|
|
19
|
-
const promises
|
|
20
|
-
const analyzer = require("./analyzer-
|
|
19
|
+
const promises = require("stream/promises");
|
|
20
|
+
const analyzer = require("./analyzer-BxxtJjNH.cjs");
|
|
21
21
|
/*!
|
|
22
22
|
* name: tar-vern
|
|
23
23
|
* version: 1.2.0
|
|
@@ -39,7 +39,7 @@ const createDirectoryItem = async (path2, reflectStat, options, signal) => {
|
|
|
39
39
|
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
40
40
|
const rs = reflectStat;
|
|
41
41
|
if (options == null ? void 0 : options.directoryPath) {
|
|
42
|
-
const stats = await
|
|
42
|
+
const stats = await fs.stat(options.directoryPath);
|
|
43
43
|
const mode = (_a = options == null ? void 0 : options.mode) != null ? _a : stats.mode;
|
|
44
44
|
const uid = (_b = options == null ? void 0 : options.uid) != null ? _b : stats.uid;
|
|
45
45
|
const gid = (_c = options == null ? void 0 : options.gid) != null ? _c : stats.gid;
|
|
@@ -127,8 +127,8 @@ const createReadableFileItem = async (path2, readable, options, signal) => {
|
|
|
127
127
|
};
|
|
128
128
|
const createReadFileItem = async (path2, filePath, reflectStat, options, signal) => {
|
|
129
129
|
const rs = reflectStat;
|
|
130
|
-
const stats = await
|
|
131
|
-
const reader = fs.createReadStream(filePath, { signal });
|
|
130
|
+
const stats = await fs.stat(filePath);
|
|
131
|
+
const reader = fs$1.createReadStream(filePath, { signal });
|
|
132
132
|
const mode = stats.mode;
|
|
133
133
|
const uid = stats.uid;
|
|
134
134
|
const gid = stats.gid;
|
|
@@ -146,13 +146,13 @@ const createReadFileItem = async (path2, filePath, reflectStat, options, signal)
|
|
|
146
146
|
}, signal);
|
|
147
147
|
};
|
|
148
148
|
const storeReaderToFile = async (reader, path2, signal) => {
|
|
149
|
-
const writer = fs.createWriteStream(path2, { signal });
|
|
150
|
-
await promises
|
|
149
|
+
const writer = fs$1.createWriteStream(path2, { signal });
|
|
150
|
+
await promises.pipeline(reader, writer, { signal });
|
|
151
151
|
};
|
|
152
152
|
const getAllFilesInDirectory = async (baseDir, signal) => {
|
|
153
153
|
const collectFiles = async (currentDir, relativePath) => {
|
|
154
154
|
try {
|
|
155
|
-
const entries = await
|
|
155
|
+
const entries = await fs.readdir(currentDir, { withFileTypes: true });
|
|
156
156
|
const result = [];
|
|
157
157
|
const tasks = entries.map(async (entry) => {
|
|
158
158
|
signal == null ? void 0 : signal.throwIfAborted();
|
|
@@ -185,7 +185,7 @@ const createEntryItemGenerator = async function* (baseDir, relativePaths, includ
|
|
|
185
185
|
const fsPath = path.join(baseDir, relativePath);
|
|
186
186
|
try {
|
|
187
187
|
signal == null ? void 0 : signal.throwIfAborted();
|
|
188
|
-
const stats = await
|
|
188
|
+
const stats = await fs.stat(fsPath);
|
|
189
189
|
if (includeDir && stats.isDirectory()) {
|
|
190
190
|
yield await createDirectoryItem(relativePath, rs, {
|
|
191
191
|
directoryPath: fsPath
|
|
@@ -205,7 +205,7 @@ const extractTo = async (iterator, basePath, signal) => {
|
|
|
205
205
|
if (entry.kind === "directory") {
|
|
206
206
|
try {
|
|
207
207
|
signal == null ? void 0 : signal.throwIfAborted();
|
|
208
|
-
await
|
|
208
|
+
await fs.mkdir(targetPath, { recursive: true, mode: entry.mode });
|
|
209
209
|
} catch (error) {
|
|
210
210
|
if (error.code !== "EEXIST") {
|
|
211
211
|
throw error;
|
|
@@ -213,10 +213,10 @@ const extractTo = async (iterator, basePath, signal) => {
|
|
|
213
213
|
}
|
|
214
214
|
} else if (entry.kind === "file") {
|
|
215
215
|
const parentDir = path.dirname(targetPath);
|
|
216
|
-
await
|
|
216
|
+
await fs.mkdir(parentDir, { recursive: true });
|
|
217
217
|
const fileEntry = entry;
|
|
218
218
|
const content = await fileEntry.getContent("buffer");
|
|
219
|
-
await
|
|
219
|
+
await fs.writeFile(targetPath, content, { mode: entry.mode, signal });
|
|
220
220
|
}
|
|
221
221
|
}
|
|
222
222
|
};
|
|
@@ -686,11 +686,11 @@ stdout: ${stdout}`));
|
|
|
686
686
|
};
|
|
687
687
|
const packAssets = async (targetDir, outputDir, checkWorkingDirectoryStatus, alwaysOverrideVersionFromGit, inheritableFields, readmeReplacementPath, replacePeerDepsWildcards, peerDepsVersionPrefix, logger2) => {
|
|
688
688
|
var _a, _b, _c;
|
|
689
|
-
if (!fs.existsSync(targetDir)) {
|
|
689
|
+
if (!fs$1.existsSync(targetDir)) {
|
|
690
690
|
throw new Error(`Target directory is not found: ${targetDir}`);
|
|
691
691
|
}
|
|
692
692
|
let readmeReplacementCandidatePath = readmeReplacementPath;
|
|
693
|
-
if (readmeReplacementCandidatePath && !fs.existsSync(readmeReplacementCandidatePath)) {
|
|
693
|
+
if (readmeReplacementCandidatePath && !fs$1.existsSync(readmeReplacementCandidatePath)) {
|
|
694
694
|
throw new Error(`README replacement file is not found: ${readmeReplacementCandidatePath}`);
|
|
695
695
|
}
|
|
696
696
|
const fetchGitMetadata = analyzer.getFetchGitMetadata(
|
|
@@ -714,7 +714,7 @@ const packAssets = async (targetDir, outputDir, checkWorkingDirectoryStatus, alw
|
|
|
714
714
|
if (!readmeReplacementCandidatePath) {
|
|
715
715
|
const packageJsonReadmeDir = result.sourceMap.get("readme");
|
|
716
716
|
const packageJsonReadmePath = path.join(packageJsonReadmeDir, packageJsonReadme);
|
|
717
|
-
if (!fs.existsSync(packageJsonReadmePath)) {
|
|
717
|
+
if (!fs$1.existsSync(packageJsonReadmePath)) {
|
|
718
718
|
throw new Error(`README replacement file is not found: ${packageJsonReadmePath}`);
|
|
719
719
|
}
|
|
720
720
|
readmeReplacementCandidatePath = packageJsonReadmePath;
|
|
@@ -740,24 +740,24 @@ const packAssets = async (targetDir, outputDir, checkWorkingDirectoryStatus, alw
|
|
|
740
740
|
}
|
|
741
741
|
}
|
|
742
742
|
}
|
|
743
|
-
const baseTempDir = await
|
|
744
|
-
await
|
|
743
|
+
const baseTempDir = await fs.mkdtemp(path.join(os.tmpdir(), "screw-up-npm-pack-"));
|
|
744
|
+
await fs.mkdir(baseTempDir, { recursive: true });
|
|
745
745
|
try {
|
|
746
746
|
const npmTarballPath = await runNpmPack(targetDir, baseTempDir);
|
|
747
747
|
const stagingDir = path.join(baseTempDir, "staging");
|
|
748
|
-
await
|
|
749
|
-
const stream2 = fs.createReadStream(npmTarballPath);
|
|
748
|
+
await fs.mkdir(stagingDir, { recursive: true });
|
|
749
|
+
const stream2 = fs$1.createReadStream(npmTarballPath);
|
|
750
750
|
await extractTo(createTarExtractor(stream2, "gzip"), stagingDir);
|
|
751
751
|
const packageJsonPath = path.join(stagingDir, "package", "package.json");
|
|
752
|
-
if (fs.existsSync(packageJsonPath)) {
|
|
753
|
-
await
|
|
752
|
+
if (fs$1.existsSync(packageJsonPath)) {
|
|
753
|
+
await fs.writeFile(packageJsonPath, JSON.stringify(resolvedPackageJson, null, 2));
|
|
754
754
|
}
|
|
755
755
|
if (readmeReplacementCandidatePath) {
|
|
756
756
|
const readmeDestPath = path.join(stagingDir, "package", "README.md");
|
|
757
|
-
await
|
|
757
|
+
await fs.copyFile(readmeReplacementCandidatePath, readmeDestPath);
|
|
758
758
|
}
|
|
759
759
|
const outputFileName = `${(_b = (_a = resolvedPackageJson == null ? void 0 : resolvedPackageJson.name) == null ? void 0 : _a.replace("/", "-")) != null ? _b : "package"}-${(_c = resolvedPackageJson == null ? void 0 : resolvedPackageJson.version) != null ? _c : "0.0.0"}.tgz`;
|
|
760
|
-
await
|
|
760
|
+
await fs.mkdir(outputDir, { recursive: true });
|
|
761
761
|
const outputFile = path.join(outputDir, outputFileName);
|
|
762
762
|
const itemGenerator = createEntryItemGenerator(stagingDir);
|
|
763
763
|
const packer = createTarPacker(itemGenerator, "gzip");
|
|
@@ -767,11 +767,11 @@ const packAssets = async (targetDir, outputDir, checkWorkingDirectoryStatus, alw
|
|
|
767
767
|
metadata: resolvedPackageJson
|
|
768
768
|
};
|
|
769
769
|
} finally {
|
|
770
|
-
await
|
|
770
|
+
await fs.rm(baseTempDir, { recursive: true, force: true });
|
|
771
771
|
}
|
|
772
772
|
};
|
|
773
773
|
const getComputedPackageJsonObject = async (targetDir, fetchGitMetadata, alwaysOverrideVersionFromGit, inheritableFields, logger2) => {
|
|
774
|
-
if (!fs.existsSync(targetDir)) {
|
|
774
|
+
if (!fs$1.existsSync(targetDir)) {
|
|
775
775
|
return void 0;
|
|
776
776
|
}
|
|
777
777
|
const result = await analyzer.resolveRawPackageJsonObject(
|
|
@@ -1039,7 +1039,7 @@ const publishCommand = async (args, logger2) => {
|
|
|
1039
1039
|
try {
|
|
1040
1040
|
if (!path$1) {
|
|
1041
1041
|
const targetDir = process.cwd();
|
|
1042
|
-
const outputDir = await
|
|
1042
|
+
const outputDir = await fs.mkdtemp(path.join(os.tmpdir(), "screw-up-publish-"));
|
|
1043
1043
|
if (verbose) {
|
|
1044
1044
|
logger2.info(`[screw-up:cli]: publish: Creating archive of ${targetDir}...`);
|
|
1045
1045
|
}
|
|
@@ -1066,15 +1066,15 @@ const publishCommand = async (args, logger2) => {
|
|
|
1066
1066
|
return 1;
|
|
1067
1067
|
}
|
|
1068
1068
|
} finally {
|
|
1069
|
-
await
|
|
1069
|
+
await fs.rm(outputDir, { recursive: true, force: true });
|
|
1070
1070
|
}
|
|
1071
|
-
} else if (fs.existsSync(path$1)) {
|
|
1072
|
-
const pathStat = await
|
|
1071
|
+
} else if (fs$1.existsSync(path$1)) {
|
|
1072
|
+
const pathStat = await fs.stat(path$1);
|
|
1073
1073
|
if (pathStat.isFile() && (path$1.endsWith(".tgz") || path$1.endsWith(".tar.gz"))) {
|
|
1074
1074
|
return await runNpmPublish(path.resolve(path$1), npmOptions, verbose, logger2);
|
|
1075
1075
|
} else if (pathStat.isDirectory()) {
|
|
1076
1076
|
const targetDir = path.resolve(path$1);
|
|
1077
|
-
const outputDir = await
|
|
1077
|
+
const outputDir = await fs.mkdtemp(path.join(os.tmpdir(), "screw-up-publish-"));
|
|
1078
1078
|
if (verbose) {
|
|
1079
1079
|
logger2.info(`[screw-up:cli]: publish: Creating archive of ${targetDir}...`);
|
|
1080
1080
|
}
|
|
@@ -1101,7 +1101,7 @@ const publishCommand = async (args, logger2) => {
|
|
|
1101
1101
|
return 1;
|
|
1102
1102
|
}
|
|
1103
1103
|
} finally {
|
|
1104
|
-
await
|
|
1104
|
+
await fs.rm(outputDir, { recursive: true, force: true });
|
|
1105
1105
|
}
|
|
1106
1106
|
} else {
|
|
1107
1107
|
logger2.error(`[screw-up:cli]: publish: Invalid path - must be a directory or .tgz/.tar.gz file: ${path$1}`);
|
|
@@ -1117,7 +1117,7 @@ const publishCommand = async (args, logger2) => {
|
|
|
1117
1117
|
}
|
|
1118
1118
|
};
|
|
1119
1119
|
const showHelp = async (logger2) => {
|
|
1120
|
-
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-CxY3Y3Qr.cjs"));
|
|
1121
1121
|
logger2.info(`screw-up - Easy package metadata inserter CLI [${version}]
|
|
1122
1122
|
Copyright (c) ${author}
|
|
1123
1123
|
Repository: ${repository_url}
|