npmdata 0.1.6-beta.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 ADDED
@@ -0,0 +1,46 @@
1
+ # npmdata — Developer Notes
2
+
3
+ This document covers the internal architecture for contributors working on this library.
4
+
5
+ ## Module overview
6
+
7
+ | Module | Purpose |
8
+ |---|---|
9
+ | `publisher.ts` | `initPublisher()` — scaffolds a publishable package (updates `package.json`, generates bin script) |
10
+ | `consumer.ts` | `extract()` and `check()` — installs a package from the registry, copies files, manages marker files |
11
+ | `runner.ts` | Entry point injected into the generated bin script; delegates to the CLI |
12
+ | `cli.ts` / `main.ts` | CLI parsing and top-level entry point |
13
+ | `utils.ts` | File I/O helpers: glob matching via `minimatch`, SHA-256 hashing, CSV marker read/write, package manager detection |
14
+ | `types.ts` | Shared TypeScript types and constants (e.g. `DEFAULT_FILENAME_PATTERNS`) |
15
+
16
+ ## Publish side (`publisher.ts`)
17
+
18
+ `initPublisher()` modifies the target `package.json` to include `files`, `bin`, and `dependencies` fields, then writes a thin `bin/npmdata.js` that calls `runner.run(__dirname)`. The generated script is kept minimal on purpose — all logic lives in this library.
19
+
20
+ ## Consumer side (`consumer.ts`)
21
+
22
+ `extract()` flow:
23
+ 1. Detects the package manager (`pnpm` / `yarn` / `npm`) via lock-file presence.
24
+ 2. Runs `<pm> add <package>@<version>` in a temp location to resolve the package.
25
+ 3. Iterates matching files (glob + optional content regex) from the installed package.
26
+ 4. Copies files into `outputDir`, tracking state in a `.publisher` CSV marker file per output directory.
27
+ 5. Optionally writes a `.gitignore` section around the managed files.
28
+
29
+ `check()` performs the same resolution but compares SHA-256 hashes without writing any files.
30
+
31
+ ## Marker file (`.publisher`)
32
+
33
+ Each output directory that contains managed files gets a `.publisher` CSV file. Columns: `path`, `packageName`, `packageVersion`, `sha256`. This is the source of truth for drift detection and clean removal.
34
+
35
+ ## Key design decisions
36
+
37
+ - No runtime dependencies beyond `semver` and `minimatch` to keep the consumer install footprint small.
38
+ - File identity is tracked by path + hash, not by timestamp, to be deterministic across machines.
39
+ - The bin script generated by `initPublisher` contains no logic; all behaviour is versioned inside this library.
40
+
41
+ ## Dev workflow
42
+
43
+ ```
44
+ make build lint-fix test
45
+ ```
46
+
package/dist/cli.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * CLI for npmdata
4
+ */
5
+ export declare function cli(processArgs: string[]): Promise<number>;
6
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAcA;;GAEG;AAEH,wBAAsB,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA6KhE"}
package/dist/cli.js ADDED
@@ -0,0 +1,207 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ /* eslint-disable no-restricted-syntax */
4
+ /* eslint-disable no-plusplus */
5
+ /* eslint-disable functional/no-let */
6
+ /* eslint-disable no-console */
7
+ var __importDefault = (this && this.__importDefault) || function (mod) {
8
+ return (mod && mod.__esModule) ? mod : { "default": mod };
9
+ };
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.cli = cli;
12
+ const node_fs_1 = __importDefault(require("node:fs"));
13
+ const node_path_1 = __importDefault(require("node:path"));
14
+ const consumer_1 = require("./consumer");
15
+ const publisher_1 = require("./publisher");
16
+ const utils_1 = require("./utils");
17
+ /**
18
+ * CLI for npmdata
19
+ */
20
+ // eslint-disable-next-line complexity
21
+ async function cli(processArgs) {
22
+ const args = processArgs.slice(2);
23
+ if (args.length === 0) {
24
+ printUsage();
25
+ return 1;
26
+ }
27
+ const command = args[0];
28
+ // Handle global help and version flags
29
+ if (command === '--help' || command === '-h') {
30
+ printUsage();
31
+ return 0;
32
+ }
33
+ if (command === '--version' || command === '-v') {
34
+ const pkg = JSON.parse(node_fs_1.default.readFileSync(node_path_1.default.join(__dirname, '../package.json')).toString());
35
+ console.log(pkg.version);
36
+ return 0;
37
+ }
38
+ // Handle init command
39
+ if (command === 'init') {
40
+ // eslint-disable-next-line functional/no-let
41
+ let sourceFoldersFlag;
42
+ // Parse args for --folders flag
43
+ // eslint-disable-next-line functional/no-let
44
+ for (let i = 1; i < args.length; i += 1) {
45
+ if (args[i] === '--folders') {
46
+ // eslint-disable-next-line no-plusplus
47
+ sourceFoldersFlag = args[++i];
48
+ }
49
+ }
50
+ // --folders is required
51
+ if (!sourceFoldersFlag) {
52
+ console.error('Error: --folders option is required for init command');
53
+ printUsage();
54
+ return 1;
55
+ }
56
+ const folders = sourceFoldersFlag.split(',').map((f) => f.trim());
57
+ const result = await (0, publisher_1.initPublisher)(folders);
58
+ if (!result.success) {
59
+ console.error(`\n✗ Error: ${result.message}`);
60
+ return 1;
61
+ }
62
+ console.log(`\n✓ ${result.message}`);
63
+ if (result.publishedFolders) {
64
+ console.log(`\nThe following folders will be published: ${result.publishedFolders.join(', ')}`);
65
+ }
66
+ return 0;
67
+ }
68
+ // Consumer commands (extract, check)
69
+ if (!['extract', 'check'].includes(command)) {
70
+ console.error(`Error: unknown command '${command}'. Use 'init', 'extract', or 'check'`);
71
+ printUsage();
72
+ return 1;
73
+ }
74
+ // Parse options
75
+ let packageName;
76
+ let version;
77
+ let force = false;
78
+ let gitignore = false;
79
+ let filenamePatterns;
80
+ let contentRegexes;
81
+ let outDir = process.cwd();
82
+ for (let i = 1; i < args.length; i++) {
83
+ if (args[i] === '--package' || args[i] === '-p') {
84
+ packageName = args[++i];
85
+ }
86
+ else if (args[i] === '--version') {
87
+ version = args[++i];
88
+ }
89
+ else if (args[i] === '--force') {
90
+ force = true;
91
+ }
92
+ else if (args[i] === '--gitignore') {
93
+ gitignore = true;
94
+ }
95
+ else if (args[i] === '--files') {
96
+ filenamePatterns = args[++i];
97
+ }
98
+ else if (args[i] === '--content-regex') {
99
+ contentRegexes = args[++i];
100
+ }
101
+ else if (args[i] === '--output' || args[i] === '-o') {
102
+ outDir = args[++i];
103
+ }
104
+ else if (!args[i].startsWith('-')) {
105
+ outDir = args[i];
106
+ }
107
+ }
108
+ if (!packageName) {
109
+ console.error(`Error: --package option is required for '${command}' command`);
110
+ printUsage();
111
+ return 1;
112
+ }
113
+ const config = {
114
+ packageName,
115
+ version,
116
+ outputDir: node_path_1.default.resolve(outDir),
117
+ force,
118
+ gitignore,
119
+ filenamePatterns: filenamePatterns
120
+ ? filenamePatterns.split(',')
121
+ : // eslint-disable-next-line no-undefined
122
+ undefined,
123
+ contentRegexes: contentRegexes
124
+ ? contentRegexes.split(',').map((r) => new RegExp(r))
125
+ : // eslint-disable-next-line no-undefined
126
+ undefined,
127
+ };
128
+ if (command === 'extract') {
129
+ const installedVersion = (0, utils_1.getInstalledPackageVersion)(config.packageName, config.cwd);
130
+ const relDir = node_path_1.default.relative(process.cwd(), config.outputDir) || '.';
131
+ console.info(`Extracting files from ${config.packageName}${installedVersion ? `@${installedVersion}` : ''} to '${relDir}'...`);
132
+ const result = await (0, consumer_1.extract)(config);
133
+ const allChanged = [
134
+ ...result.added.map((f) => `A\t${f}`),
135
+ ...result.modified.map((f) => `M\t${f}`),
136
+ ...result.deleted.map((f) => `D\t${f}`),
137
+ ];
138
+ if (allChanged.length > 0) {
139
+ console.log('');
140
+ for (const line of allChanged)
141
+ console.log(line);
142
+ }
143
+ console.log(`\nExtraction complete: ${result.added.length} added, ${result.modified.length} modified, ${result.deleted.length} deleted, ${result.skipped.length} skipped`);
144
+ return 0;
145
+ }
146
+ if (command === 'check') {
147
+ const installedVersion = (0, utils_1.getInstalledPackageVersion)(config.packageName, config.cwd);
148
+ const relDir = node_path_1.default.relative(process.cwd(), config.outputDir) || '.';
149
+ console.log(`\nChecking data from ${config.packageName}${installedVersion ? `@${installedVersion}` : ''} against ${relDir}...`);
150
+ const result = await (0, consumer_1.check)(config);
151
+ if (result.ok) {
152
+ console.log('✓ All files are in sync');
153
+ return 0;
154
+ }
155
+ console.log('✗ Files are out of sync:');
156
+ if (result.differences.missing.length > 0) {
157
+ console.log('\nMissing files:');
158
+ for (const f of result.differences.missing)
159
+ console.log(` - ${f}`);
160
+ }
161
+ if (result.differences.modified.length > 0) {
162
+ console.log('\nModified files:');
163
+ for (const f of result.differences.modified)
164
+ console.log(` ~ ${f}`);
165
+ }
166
+ return 2;
167
+ }
168
+ // unreachable, but satisfies TypeScript
169
+ return 1;
170
+ }
171
+ function printUsage() {
172
+ console.log(`
173
+ npmdata
174
+
175
+ Usage:
176
+ npx npmdata [init|extract|check] [options]
177
+
178
+ Commands:
179
+ init Initialize publishing configuration
180
+ extract Extract files from a published package
181
+ check Verify if local files are in sync with a package
182
+
183
+ Global Options:
184
+ --help, -h Show this help message
185
+ --version, -v Show version
186
+
187
+ Init Options:
188
+ --folders <folders> Comma-separated list of source folders to publish (required)
189
+
190
+ Extract / Check Options:
191
+ --package, -p <name> Package name to extract from (required)
192
+ --version <version> Version constraint (e.g., "1.0.0", "^1.0.0")
193
+ --force Allow overwriting existing files
194
+ --gitignore Create/update .gitignore files to ignore managed files and .publisher
195
+ --files <pattern> Comma-separated shell glob patterns
196
+ --content-regex <regex> Regex pattern to match file contents
197
+ --output, -o <dir> Output directory (default: current directory)
198
+
199
+ Examples:
200
+ npx npmdata init --folders "data,docs,config"
201
+ npx npmdata extract --package mydataset --output ./data
202
+ npx npmdata extract --package mydataset --version "^2.0.0" --output ./data
203
+ npx npmdata extract --package mydataset --files "*.md,docs/**" --output ./docs
204
+ npx npmdata check --package mydataset --output ./data
205
+ `);
206
+ }
207
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { ConsumerConfig, ConsumerResult, CheckResult } from './types';
2
+ /**
3
+ * Extract files from published package to output directory
4
+ */
5
+ export declare function extract(config: ConsumerConfig): Promise<ConsumerResult>;
6
+ /**
7
+ * Check if managed files are in sync with the published package.
8
+ *
9
+ * Uses the .publisher marker as the source of truth: reads entries for the
10
+ * specific package, applies the --files filter, then compares each entry
11
+ * against the installed package contents and the output directory.
12
+ */
13
+ export declare function check(config: ConsumerConfig): Promise<CheckResult>;
14
+ //# sourceMappingURL=consumer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consumer.d.ts","sourceRoot":"","sources":["../src/consumer.ts"],"names":[],"mappings":"AAWA,OAAO,EACL,cAAc,EACd,cAAc,EACd,WAAW,EAGZ,MAAM,SAAS,CAAC;AA8djB;;GAEG;AACH,wBAAsB,OAAO,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CA4B7E;AAED;;;;;;GAMG;AACH,wBAAsB,KAAK,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC,CAsDxE"}