npmdata 0.2.1 → 0.4.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/publisher.js CHANGED
@@ -31,19 +31,6 @@ function parsePublisherPackageSpec(spec) {
31
31
  const { name, version } = (0, utils_1.parsePackageSpec)(spec);
32
32
  return { name, version: version ?? 'latest' };
33
33
  }
34
- function validateFolders(folders, workingDir) {
35
- const errors = [];
36
- for (const folder of folders) {
37
- const folderPath = node_path_1.default.join(workingDir, folder);
38
- if (!node_fs_1.default.existsSync(folderPath)) {
39
- errors.push(`Folder not found: ${folder}`);
40
- }
41
- else if (!node_fs_1.default.statSync(folderPath).isDirectory()) {
42
- errors.push(`Not a directory: ${folder}`);
43
- }
44
- }
45
- return { valid: errors.length === 0, errors };
46
- }
47
34
  function generateCliScript() {
48
35
  return `#!/usr/bin/env node
49
36
 
@@ -51,7 +38,8 @@ function generateCliScript() {
51
38
  require('npmdata/dist/runner.js').run(__dirname);
52
39
  `;
53
40
  }
54
- function preparePackageJson(folders, workingDir, additionalPackages = []) {
41
+ // eslint-disable-next-line complexity
42
+ function preparePackageJson(fileGlobs, workingDir, additionalPackages = [], gitignore = false, unmanaged = false) {
55
43
  const packageJsonPath = node_path_1.default.join(workingDir, 'package.json');
56
44
  // eslint-disable-next-line functional/no-let
57
45
  let packageJson;
@@ -68,75 +56,101 @@ function preparePackageJson(folders, workingDir, additionalPackages = []) {
68
56
  packageJson.name = node_path_1.default.basename(workingDir);
69
57
  if (!packageJson.version)
70
58
  packageJson.version = '1.0.0';
71
- // eslint-disable-next-line unicorn/no-keyword-prefix
72
- const newFolderPatterns = folders.map((folder) => `${folder}/**`);
73
59
  const existingPatterns = packageJson.files ?? [];
74
- const existingFolderPatterns = existingPatterns.filter((p) => p.endsWith('/**'));
75
- const existingNonFolderPatterns = existingPatterns.filter((p) => !p.endsWith('/**'));
76
- packageJson.files = Array.from(new Set([
77
- // eslint-disable-next-line unicorn/no-keyword-prefix
78
- ...newFolderPatterns,
79
- ...existingFolderPatterns,
80
- ...existingNonFolderPatterns,
81
- 'package.json',
82
- 'bin/npmdata.js',
83
- ]));
60
+ packageJson.files = Array.from(new Set([...fileGlobs, ...existingPatterns, 'package.json', 'bin/npmdata.js']));
84
61
  if (!packageJson.dependencies) {
85
62
  packageJson.dependencies = {};
86
63
  }
87
64
  packageJson.dependencies.npmdata = getOwnVersion();
88
- // Merge additional packages: preserve existing entries, add new ones without duplicates
89
- const existingAdditional = packageJson.npmdata?.additionalPackages ?? [];
90
- const mergedAdditional = Array.from(new Set([...existingAdditional, ...additionalPackages]));
91
- // Store additional packages config and add them to dependencies
92
- if (mergedAdditional.length > 0) {
93
- packageJson.npmdata = { ...packageJson.npmdata, additionalPackages: mergedAdditional };
94
- for (const pkgSpec of mergedAdditional) {
95
- const { name: pkgName, version: pkgVersion } = parsePublisherPackageSpec(pkgSpec);
96
- if (!packageJson.dependencies[pkgName]) {
97
- packageJson.dependencies[pkgName] = pkgVersion;
98
- }
65
+ // Build npmdata entries array: one entry per package (main + additional)
66
+ const existingEntries = Array.isArray(packageJson.npmdata)
67
+ ? packageJson.npmdata
68
+ : [];
69
+ // Ensure the main package has an entry
70
+ const mainName = packageJson.name;
71
+ const hasMainEntry = existingEntries.some((e) => {
72
+ const { name } = (0, utils_1.parsePackageSpec)(e.package);
73
+ return name === mainName;
74
+ });
75
+ if (!hasMainEntry) {
76
+ existingEntries.push({ package: mainName, outputDir: '.' });
77
+ }
78
+ // Set file glob patterns and gitignore on all npmdata entries
79
+ for (const entry of existingEntries) {
80
+ entry.files = fileGlobs;
81
+ if (!gitignore) {
82
+ entry.gitignore = false;
83
+ }
84
+ else {
85
+ delete entry.gitignore;
86
+ }
87
+ if (unmanaged) {
88
+ entry.unmanaged = true;
99
89
  }
100
90
  }
91
+ // Add additional packages as separate entries (dedup by package name)
92
+ for (const pkgSpec of additionalPackages) {
93
+ const { name: pkgName, version: pkgVersion } = parsePublisherPackageSpec(pkgSpec);
94
+ const alreadyPresent = existingEntries.some((e) => {
95
+ const { name } = (0, utils_1.parsePackageSpec)(e.package);
96
+ return name === pkgName;
97
+ });
98
+ if (!alreadyPresent) {
99
+ existingEntries.push({
100
+ package: pkgSpec,
101
+ outputDir: '.',
102
+ files: fileGlobs,
103
+ ...(!gitignore ? { gitignore: false } : {}),
104
+ ...(unmanaged ? { unmanaged: true } : {}),
105
+ });
106
+ }
107
+ if (!packageJson.dependencies[pkgName]) {
108
+ packageJson.dependencies[pkgName] = pkgVersion;
109
+ }
110
+ }
111
+ packageJson.npmdata = existingEntries;
101
112
  if (!packageJson.bin) {
102
113
  packageJson.bin = 'bin/npmdata.js';
103
114
  }
104
115
  return packageJson;
105
116
  }
106
117
  /**
107
- * Initialize publisher configuration with specified folders
118
+ * Initialize publisher configuration with specified file glob patterns
108
119
  */
109
- async function initPublisher(folders, options = {}) {
120
+ async function initPublisher(fileGlobs, options = {}) {
110
121
  const workingDir = options.workingDir ?? process.cwd();
111
122
  const additionalPackages = options.additionalPackages ?? [];
123
+ const gitignore = options.gitignore ?? true;
124
+ const unmanaged = options.unmanaged ?? false;
112
125
  // eslint-disable-next-line functional/no-try-statements
113
126
  try {
114
- if (!folders || folders.length === 0) {
115
- return {
116
- success: false,
117
- message: 'npmdata: no folders specified. Usage: npmdata init <folder1> <folder2> ...',
118
- };
119
- }
120
- const validation = validateFolders(folders, workingDir);
121
- if (!validation.valid) {
127
+ if (!fileGlobs || fileGlobs.length === 0) {
122
128
  return {
123
129
  success: false,
124
- message: `npmdata: folder validation failed:\n${validation.errors.join('\n')}`,
130
+ message: 'npmdata: no file patterns specified. Usage: npmdata init --files "docs/**,data/**"',
125
131
  };
126
132
  }
127
- const packageJson = preparePackageJson(folders, workingDir, additionalPackages);
133
+ const packageJson = preparePackageJson(fileGlobs, workingDir, additionalPackages, gitignore, unmanaged);
128
134
  const packageJsonPath = node_path_1.default.join(workingDir, 'package.json');
129
135
  (0, utils_1.writeJsonFile)(packageJsonPath, packageJson);
130
136
  const cliScriptPath = node_path_1.default.join(workingDir, 'bin', 'npmdata.js');
131
137
  node_fs_1.default.mkdirSync(node_path_1.default.dirname(cliScriptPath), { recursive: true });
132
138
  node_fs_1.default.writeFileSync(cliScriptPath, generateCliScript(), 'utf8');
133
139
  node_fs_1.default.chmodSync(cliScriptPath, 0o755);
134
- const finalAdditionalPackages = packageJson.npmdata?.additionalPackages;
140
+ const allEntries = packageJson.npmdata;
141
+ const finalAdditionalPackages = allEntries
142
+ .filter((e) => {
143
+ const { name } = (0, utils_1.parsePackageSpec)(e.package);
144
+ return name !== packageJson.name;
145
+ })
146
+ .map((e) => e.package);
135
147
  return {
136
148
  success: true,
137
149
  message: 'npmdata: project initialization completed successfully',
138
- publishedFolders: folders,
139
- additionalPackages: finalAdditionalPackages,
150
+ publishedFiles: fileGlobs,
151
+ additionalPackages:
152
+ // eslint-disable-next-line no-undefined
153
+ finalAdditionalPackages.length > 0 ? finalAdditionalPackages : undefined,
140
154
  packageJsonPath,
141
155
  };
142
156
  }
@@ -1 +1 @@
1
- {"version":3,"file":"publisher.js","sourceRoot":"","sources":["../src/publisher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"publisher.js","sourceRoot":"","sources":["../src/publisher.ts"],"names":[],"mappings":"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"}
package/dist/runner.d.ts CHANGED
@@ -1,6 +1,34 @@
1
+ import { NpmdataExtractEntry } from './types';
1
2
  /**
2
- * Runs the npmdata CLI (extract or check) on behalf of a publishable package.
3
+ * Build a CLI command string that purges (removes) all managed files for the entry's package
4
+ * from its output directory. No package installation is required.
5
+ */
6
+ export declare function buildPurgeCommand(cliPath: string, entry: NpmdataExtractEntry): string;
7
+ /**
8
+ * Collects all unique tags that appear across the given npmdata entries, sorted alphabetically.
9
+ */
10
+ export declare function collectAllTags(entries: NpmdataExtractEntry[]): string[];
11
+ /**
12
+ * Prints a help message to stdout, listing the extract action, all options, and available tags.
13
+ */
14
+ export declare function printHelp(packageName: string, availableTags: string[]): void;
15
+ /**
16
+ * Parses --tags from an argv array and returns the list of requested tags (split by comma).
17
+ * Returns an empty array when --tags is not present.
18
+ */
19
+ export declare function parseTagsFromArgv(argv: string[]): string[];
20
+ /**
21
+ * Filter entries by requested tags. When no tags are requested all entries pass through.
22
+ * When tags are requested only entries that share at least one tag with the requested list
23
+ * are included.
24
+ */
25
+ export declare function filterEntriesByTags(entries: NpmdataExtractEntry[], requestedTags: string[]): NpmdataExtractEntry[];
26
+ /**
27
+ * Runs extraction for each entry defined in the publishable package's package.json "npmdata" array.
28
+ * Invokes the npmdata CLI once per entry so that all CLI output and error handling is preserved.
3
29
  * Called from the minimal generated bin script with its own __dirname as binDir.
30
+ *
31
+ * Pass --tags <tag1,tag2> to limit extraction to entries whose tags overlap with the given list.
4
32
  */
5
- export declare function run(binDir: string): void;
33
+ export declare function run(binDir: string, argv?: string[]): void;
6
34
  //# sourceMappingURL=runner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAiEA;;;GAGG;AACH,wBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAwCxC"}
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAkC9C;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,GAAG,MAAM,CAOrF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,mBAAmB,EAAE,GAAG,MAAM,EAAE,CAUvE;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,IAAI,CA0B5E;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAS1D;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,mBAAmB,EAAE,EAC9B,aAAa,EAAE,MAAM,EAAE,GACtB,mBAAmB,EAAE,CAKvB;AAED;;;;;;GAMG;AACH,wBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,EAAiB,GAAG,IAAI,CAwCvE"}
package/dist/runner.js CHANGED
@@ -3,95 +3,152 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.buildPurgeCommand = buildPurgeCommand;
7
+ exports.collectAllTags = collectAllTags;
8
+ exports.printHelp = printHelp;
9
+ exports.parseTagsFromArgv = parseTagsFromArgv;
10
+ exports.filterEntriesByTags = filterEntriesByTags;
6
11
  exports.run = run;
7
- /* eslint-disable functional/no-let */
12
+ /* eslint-disable no-restricted-syntax */
8
13
  const node_child_process_1 = require("node:child_process");
9
14
  const node_fs_1 = __importDefault(require("node:fs"));
10
15
  const node_path_1 = __importDefault(require("node:path"));
16
+ const utils_1 = require("./utils");
11
17
  /**
12
- * Returns the owning package name plus any additional packages listed in
13
- * `npmdata.additionalPackages` of the package.json at the given path.
18
+ * Extract just the package name (without version specifier) from a package spec string.
19
+ * Delegates to the shared parsePackageSpec utility.
14
20
  */
15
- function collectPackages(pkgJsonPath) {
16
- const pkg = JSON.parse(node_fs_1.default.readFileSync(pkgJsonPath).toString());
17
- const additional = pkg.npmdata?.additionalPackages ?? [];
18
- return [pkg.name, ...additional];
21
+ function parseEntryPackageName(spec) {
22
+ const { name } = (0, utils_1.parsePackageSpec)(spec);
23
+ return { name };
19
24
  }
20
- function parseArgs(extraArgs) {
21
- let outputDir;
22
- let force = false;
23
- let gitignore = false;
24
- let silent = false;
25
- let dryRun = false;
26
- let upgrade = false;
27
- let files;
28
- let contentRegex;
29
- for (let i = 0; i < extraArgs.length; i += 1) {
30
- if (extraArgs[i] === '--output' || extraArgs[i] === '-o') {
31
- outputDir = extraArgs[i + 1];
32
- i += 1;
33
- }
34
- else if (extraArgs[i] === '--force') {
35
- force = true;
36
- }
37
- else if (extraArgs[i] === '--gitignore') {
38
- gitignore = true;
39
- }
40
- else if (extraArgs[i] === '--silent') {
41
- silent = true;
42
- }
43
- else if (extraArgs[i] === '--dry-run') {
44
- dryRun = true;
45
- }
46
- else if (extraArgs[i] === '--upgrade') {
47
- upgrade = true;
48
- }
49
- else if (extraArgs[i] === '--files') {
50
- files = extraArgs[i + 1];
51
- i += 1;
52
- }
53
- else if (extraArgs[i] === '--content-regex') {
54
- contentRegex = extraArgs[i + 1];
55
- i += 1;
25
+ function buildExtractCommand(cliPath, entry) {
26
+ const outputFlag = ` --output "${entry.outputDir}"`;
27
+ const forceFlag = entry.force ? ' --force' : '';
28
+ const gitignoreFlag = entry.gitignore === false ? ' --no-gitignore' : '';
29
+ const unmanagedFlag = entry.unmanaged ? ' --unmanaged' : '';
30
+ const silentFlag = entry.silent ? ' --silent' : '';
31
+ const dryRunFlag = entry.dryRun ? ' --dry-run' : '';
32
+ const upgradeFlag = entry.upgrade ? ' --upgrade' : '';
33
+ const filesFlag = entry.files && entry.files.length > 0 ? ` --files "${entry.files.join(',')}"` : '';
34
+ const contentRegexFlag = entry.contentRegexes && entry.contentRegexes.length > 0
35
+ ? ` --content-regex "${entry.contentRegexes.join(',')}"`
36
+ : '';
37
+ return `node "${cliPath}" extract --packages "${entry.package}"${outputFlag}${forceFlag}${gitignoreFlag}${unmanagedFlag}${silentFlag}${dryRunFlag}${upgradeFlag}${filesFlag}${contentRegexFlag}`;
38
+ }
39
+ /**
40
+ * Build a CLI command string that purges (removes) all managed files for the entry's package
41
+ * from its output directory. No package installation is required.
42
+ */
43
+ function buildPurgeCommand(cliPath, entry) {
44
+ const { name } = parseEntryPackageName(entry.package);
45
+ const outputFlag = ` --output "${entry.outputDir}"`;
46
+ // Propagate silent/dry-run settings from the entry if present.
47
+ const silentFlag = entry.silent ? ' --silent' : '';
48
+ const dryRunFlag = entry.dryRun ? ' --dry-run' : '';
49
+ return `node "${cliPath}" purge --packages "${name}"${outputFlag}${silentFlag}${dryRunFlag}`;
50
+ }
51
+ /**
52
+ * Collects all unique tags that appear across the given npmdata entries, sorted alphabetically.
53
+ */
54
+ function collectAllTags(entries) {
55
+ const tagSet = new Set();
56
+ for (const entry of entries) {
57
+ if (entry.tags) {
58
+ for (const tag of entry.tags) {
59
+ tagSet.add(tag);
60
+ }
56
61
  }
57
62
  }
58
- return { outputDir, force, gitignore, silent, dryRun, upgrade, files, contentRegex };
63
+ return Array.from(tagSet).sort();
59
64
  }
60
65
  /**
61
- * Runs the npmdata CLI (extract or check) on behalf of a publishable package.
66
+ * Prints a help message to stdout, listing the extract action, all options, and available tags.
67
+ */
68
+ function printHelp(packageName, availableTags) {
69
+ const tagsLine = availableTags.length > 0 ? availableTags.join(', ') : '(none defined in package.json)';
70
+ const exampleTag = availableTags.length > 0 ? availableTags[0] : 'my-tag';
71
+ process.stdout.write([
72
+ `Usage: ${packageName} <action> [options]`,
73
+ '',
74
+ 'Actions:',
75
+ ' extract Extract files from the source package(s) defined in package.json',
76
+ '',
77
+ 'Options:',
78
+ ' --help Show this help message',
79
+ ' --tags <tag1,tag2> Limit extraction to entries whose tags overlap (comma-separated)',
80
+ '',
81
+ `Available tags: ${tagsLine}`,
82
+ '',
83
+ 'Examples:',
84
+ ` ${packageName} extract`,
85
+ ' Extract files for all entries defined in package.json',
86
+ '',
87
+ ` ${packageName} extract --tags ${exampleTag}`,
88
+ ` Extract files only for entries tagged "${exampleTag}"`,
89
+ '',
90
+ ].join('\n'));
91
+ }
92
+ /**
93
+ * Parses --tags from an argv array and returns the list of requested tags (split by comma).
94
+ * Returns an empty array when --tags is not present.
95
+ */
96
+ function parseTagsFromArgv(argv) {
97
+ const idx = argv.indexOf('--tags');
98
+ if (idx === -1 || idx + 1 >= argv.length) {
99
+ return [];
100
+ }
101
+ return argv[idx + 1]
102
+ .split(',')
103
+ .map((t) => t.trim())
104
+ .filter(Boolean);
105
+ }
106
+ /**
107
+ * Filter entries by requested tags. When no tags are requested all entries pass through.
108
+ * When tags are requested only entries that share at least one tag with the requested list
109
+ * are included.
110
+ */
111
+ function filterEntriesByTags(entries, requestedTags) {
112
+ if (requestedTags.length === 0) {
113
+ return entries;
114
+ }
115
+ return entries.filter((entry) => entry.tags && entry.tags.some((t) => requestedTags.includes(t)));
116
+ }
117
+ /**
118
+ * Runs extraction for each entry defined in the publishable package's package.json "npmdata" array.
119
+ * Invokes the npmdata CLI once per entry so that all CLI output and error handling is preserved.
62
120
  * Called from the minimal generated bin script with its own __dirname as binDir.
121
+ *
122
+ * Pass --tags <tag1,tag2> to limit extraction to entries whose tags overlap with the given list.
63
123
  */
64
- function run(binDir) {
124
+ function run(binDir, argv = process.argv) {
65
125
  const pkgJsonPath = node_path_1.default.join(binDir, '../package.json');
66
- const allPackages = collectPackages(pkgJsonPath);
67
- const fpCliPath = require.resolve('npmdata/dist/main.js', {
68
- paths: [binDir],
69
- });
70
- const action = process.argv[2] ?? 'extract';
71
- if (action !== 'extract' && action !== 'check' && action !== 'list') {
72
- process.stderr.write(`Invalid action: "${action}". Must be "extract", "check", or "list".\n`);
73
- // eslint-disable-next-line unicorn/no-process-exit
74
- process.exit(1);
126
+ const pkg = JSON.parse(node_fs_1.default.readFileSync(pkgJsonPath).toString());
127
+ const allEntries = pkg.npmdata && pkg.npmdata.length > 0 ? pkg.npmdata : [{ package: pkg.name, outputDir: '.' }];
128
+ const userArgs = argv.slice(2);
129
+ if (userArgs.length === 0 || userArgs.includes('--help')) {
130
+ printHelp(pkg.name, collectAllTags(allEntries));
131
+ return;
132
+ }
133
+ const action = userArgs[0];
134
+ if (action !== 'extract') {
135
+ process.stderr.write(`Error: unknown action '${action}'. Use 'extract'.\n\n`);
136
+ printHelp(pkg.name, collectAllTags(allEntries));
137
+ return;
75
138
  }
76
- const { outputDir, force, gitignore, silent, dryRun, upgrade, files, contentRegex } = parseArgs(process.argv.slice(3));
77
- const outputFlag = outputDir ? ` --output "${outputDir}"` : '';
78
- let command;
79
- if (action === 'list') {
80
- command = `node "${fpCliPath}" list${outputFlag}`;
139
+ const requestedTags = parseTagsFromArgv(argv);
140
+ const entries = filterEntriesByTags(allEntries, requestedTags);
141
+ const excludedEntries = requestedTags.length > 0 ? allEntries.filter((e) => !entries.includes(e)) : [];
142
+ const cliPath = require.resolve('npmdata/dist/main.js', { paths: [binDir] });
143
+ for (const entry of entries) {
144
+ const command = buildExtractCommand(cliPath, entry);
145
+ (0, node_child_process_1.execSync)(command, { stdio: 'inherit' });
81
146
  }
82
- else {
83
- const forceFlag = force ? ' --force' : '';
84
- const gitignoreFlag = gitignore ? ' --gitignore' : '';
85
- const silentFlag = silent ? ' --silent' : '';
86
- const dryRunFlag = dryRun ? ' --dry-run' : '';
87
- const upgradeFlag = upgrade ? ' --upgrade' : '';
88
- const filesFlag = files ? ` --files "${files}"` : '';
89
- const contentRegexFlag = contentRegex ? ` --content-regex "${contentRegex}"` : '';
90
- command = `node "${fpCliPath}" ${action} --packages "${allPackages.join(',')}"${outputFlag}${forceFlag}${gitignoreFlag}${silentFlag}${dryRunFlag}${upgradeFlag}${filesFlag}${contentRegexFlag}`;
147
+ // When a tag filter is active, purge managed files from excluded entries so that
148
+ // the output directory contains only files from the currently active tag group.
149
+ for (const entry of excludedEntries) {
150
+ const command = buildPurgeCommand(cliPath, entry);
151
+ (0, node_child_process_1.execSync)(command, { stdio: 'inherit' });
91
152
  }
92
- process.on('uncaughtException', () => {
93
- process.exit(3);
94
- });
95
- (0, node_child_process_1.execSync)(command, { stdio: 'inherit' });
96
153
  }
97
154
  //# sourceMappingURL=runner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -72,10 +72,19 @@ export type ConsumerConfig = FileFilterConfig & {
72
72
  */
73
73
  cwd?: string;
74
74
  /**
75
- * Automatically create/update a .gitignore file alongside each .publisher marker file,
76
- * adding the managed files and the .publisher file itself to be ignored by git.
75
+ * Automatically create/update a .gitignore file alongside each .npmdata marker file,
76
+ * adding the managed files and the .npmdata file itself to be ignored by git.
77
+ * Defaults to true. Set to false to disable.
77
78
  */
78
79
  gitignore?: boolean;
80
+ /**
81
+ * When true, write files to disk without creating a .npmdata marker, without
82
+ * updating .gitignore, and without making files read-only. Files written with
83
+ * this flag are not tracked by npmdata and can be freely edited by the user.
84
+ * When a destination file already exists it is left untouched and reported as
85
+ * skipped. Takes precedence over force.
86
+ */
87
+ unmanaged?: boolean;
79
88
  /**
80
89
  * When true, simulate extraction without writing anything to disk.
81
90
  * The returned ConsumerResult reflects what would have changed.
@@ -145,7 +154,7 @@ export type CheckResult = {
145
154
  */
146
155
  differences: {
147
156
  /**
148
- * Files that are in the .publisher marker but missing from the output directory
157
+ * Files that are in the .npmdata marker but missing from the output directory
149
158
  */
150
159
  missing: string[];
151
160
  /**
@@ -172,15 +181,62 @@ export type CheckResult = {
172
181
  }>;
173
182
  };
174
183
  /**
175
- * npmdata-specific configuration stored inside the publishable package.json
184
+ * A single extraction entry defined in the publishable package.json "npmdata" array.
185
+ * The runner iterates over these entries and calls extract() for each one.
176
186
  */
177
- export type NpmdataConfig = {
187
+ export type NpmdataExtractEntry = {
188
+ /**
189
+ * Package spec to install and extract from. Either a bare name ("my-pkg") or a
190
+ * name with a semver constraint ("my-pkg@^1.2.3").
191
+ */
192
+ package: string;
193
+ /**
194
+ * Output directory where files will be extracted, relative to where the consumer
195
+ * runs the command (e.g. "./data" or "src/generated").
196
+ */
197
+ outputDir: string;
198
+ /**
199
+ * Glob patterns to filter which files are extracted (e.g. ["data/**", "*.json"]).
200
+ * Defaults to all files when not set.
201
+ */
202
+ files?: string[];
203
+ /**
204
+ * Allow overwriting existing unmanaged files (default: false).
205
+ */
206
+ force?: boolean;
207
+ /**
208
+ * Create/update a .gitignore file alongside each .npmdata marker file (default: false).
209
+ */
210
+ gitignore?: boolean;
211
+ /**
212
+ * Write files without creating a .npmdata marker, updating .gitignore, or making
213
+ * files read-only. Existing files are skipped rather than overwritten (default: false).
214
+ */
215
+ unmanaged?: boolean;
216
+ /**
217
+ * Simulate extraction without writing anything to disk (default: false).
218
+ */
219
+ dryRun?: boolean;
220
+ /**
221
+ * Force a fresh install of the package even when a satisfying version is already
222
+ * installed (default: false).
223
+ */
224
+ upgrade?: boolean;
225
+ /**
226
+ * Suppress per-file output, printing only the final result line (default: false).
227
+ */
228
+ silent?: boolean;
229
+ /**
230
+ * Regex patterns (as strings) to filter files by content. Only files whose content
231
+ * matches at least one pattern are extracted.
232
+ */
233
+ contentRegexes?: string[];
178
234
  /**
179
- * Additional package specs to include as data sources when the CLI script runs.
180
- * Each entry is a bare package name ("my-pkg") or a name with a semver constraint
181
- * ("my-pkg@^1.2.3"). These are merged with the package's own name when extracting.
235
+ * Tags used to group and selectively run entries. When the data package is invoked with
236
+ * --tags, only entries whose tags list includes at least one of the requested tags are
237
+ * processed. Entries with no tags are always skipped when a tag filter is active.
182
238
  */
183
- additionalPackages?: string[];
239
+ tags?: string[];
184
240
  };
185
241
  /**
186
242
  * Package.json for a publishable project
@@ -193,7 +249,7 @@ export type PublishablePackageJson = {
193
249
  bin?: string;
194
250
  files?: string[];
195
251
  dependencies?: Record<string, string>;
196
- npmdata?: NpmdataConfig;
252
+ npmdata?: NpmdataExtractEntry[];
197
253
  [key: string]: unknown;
198
254
  };
199
255
  //# sourceMappingURL=types.d.ts.map