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.
@@ -1,11 +1,11 @@
1
1
  /*!
2
2
  * name: screw-up
3
- * version: 0.16.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: c5c68d39d1ab116299338d31f0f208c0eb49be5c
8
+ * git.commit.hash: 4129fb42a594608860d2ac0d9d10871739f39091
9
9
  */
10
10
 
11
11
  import { Logger } from './internal.js';
@@ -1 +1 @@
1
- {"version":3,"file":"analyzer.d.ts","sourceRoot":"","sources":["../src/analyzer.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AA+jBvC;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,GAC9B,WAAW,MAAM,EAAE,6BAA6B,OAAO,EAAE,QAAQ,MAAM,uBASxE,CAAA"}
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"}
@@ -1,11 +1,11 @@
1
1
  /*!
2
2
  * name: screw-up
3
- * version: 0.16.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: c5c68d39d1ab116299338d31f0f208c0eb49be5c
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.16.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: c5c68d39d1ab116299338d31f0f208c0eb49be5c
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.16.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: c5c68d39d1ab116299338d31f0f208c0eb49be5c
8
+ * git.commit.hash: 4129fb42a594608860d2ac0d9d10871739f39091
9
9
  */
10
10
 
11
11
  export declare const name = "screw-up";
12
- export declare const version = "0.16.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 = "c5c68d39d1ab116299338d31f0f208c0eb49be5c";
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,WAAW,CAAC;AAChC,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"}
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.16.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: c5c68d39d1ab116299338d31f0f208c0eb49be5c
8
+ * git.commit.hash: 4129fb42a594608860d2ac0d9d10871739f39091
9
9
  */
10
10
  "use strict";
11
- const promises = require("fs/promises");
11
+ const fs = require("fs/promises");
12
12
  const path = require("path");
13
- const analyzer = require("./analyzer-2k5jeoJo.cjs");
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 promises.mkdir(path.dirname(metadataSourcePath), { recursive: true });
84
- await promises.writeFile(metadataSourcePath, metadataSourceContent);
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 promises.readdir(options2.dir, { recursive: true });
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 promises.readFile(filePath, "utf-8");
142
+ const content = await fs.readFile(filePath, "utf-8");
143
143
  if (!content.includes(banner)) {
144
- await promises.writeFile(filePath, insertBannerHeader(content, banner + "\n"));
144
+ await fs.writeFile(filePath, insertBannerHeader(content, banner + "\n"));
145
145
  }
146
146
  } catch (error) {
147
147
  }
@@ -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.16.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: c5c68d39d1ab116299338d31f0f208c0eb49be5c
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.16.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: c5c68d39d1ab116299338d31f0f208c0eb49be5c
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-CU8VuwpB.js";
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) {
@@ -1,11 +1,11 @@
1
1
  /*!
2
2
  * name: screw-up
3
- * version: 0.16.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: c5c68d39d1ab116299338d31f0f208c0eb49be5c
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.16.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: c5c68d39d1ab116299338d31f0f208c0eb49be5c
9
+ * git.commit.hash: 4129fb42a594608860d2ac0d9d10871739f39091
10
10
  */
11
11
  "use strict";
12
12
  const path = require("path");
13
- const fs = require("fs");
14
- const promises = require("fs/promises");
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$1 = require("stream/promises");
20
- const analyzer = require("./analyzer-2k5jeoJo.cjs");
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 promises.stat(options.directoryPath);
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 promises.stat(filePath);
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$1.pipeline(reader, writer, { signal });
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 promises.readdir(currentDir, { withFileTypes: true });
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 promises.stat(fsPath);
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 promises.mkdir(targetPath, { recursive: true, mode: entry.mode });
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 promises.mkdir(parentDir, { recursive: true });
216
+ await fs.mkdir(parentDir, { recursive: true });
217
217
  const fileEntry = entry;
218
218
  const content = await fileEntry.getContent("buffer");
219
- await promises.writeFile(targetPath, content, { mode: entry.mode, signal });
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 promises.mkdtemp(path.join(os.tmpdir(), "screw-up-npm-pack-"));
744
- await promises.mkdir(baseTempDir, { recursive: true });
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 promises.mkdir(stagingDir, { recursive: true });
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 promises.writeFile(packageJsonPath, JSON.stringify(resolvedPackageJson, null, 2));
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 promises.copyFile(readmeReplacementCandidatePath, readmeDestPath);
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 promises.mkdir(outputDir, { recursive: true });
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 promises.rm(baseTempDir, { recursive: true, force: true });
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 promises.mkdtemp(path.join(os.tmpdir(), "screw-up-publish-"));
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 promises.rm(outputDir, { recursive: true, force: true });
1069
+ await fs.rm(outputDir, { recursive: true, force: true });
1070
1070
  }
1071
- } else if (fs.existsSync(path$1)) {
1072
- const pathStat = await promises.stat(path$1);
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 promises.mkdtemp(path.join(os.tmpdir(), "screw-up-publish-"));
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 promises.rm(outputDir, { recursive: true, force: true });
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--R5DYhGa.cjs"));
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}