globlin 1.0.0-beta.1

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/js/stream.d.ts ADDED
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Stream utilities for globlin
3
+ *
4
+ * This module provides stream wrappers around the native Rust implementation
5
+ * to ensure compatibility with glob v13's streaming API.
6
+ */
7
+ import { Minipass } from 'minipass';
8
+ import type { GlobOptions } from './index';
9
+ /**
10
+ * Options for configuring the glob stream
11
+ */
12
+ export interface GlobStreamOptions extends GlobOptions {
13
+ /**
14
+ * Buffer size for streaming results
15
+ * @default 16
16
+ */
17
+ bufferSize?: number;
18
+ }
19
+ /**
20
+ * Create a readable stream from glob results
21
+ *
22
+ * This wraps the native Rust iterator in a Minipass stream
23
+ * with proper backpressure handling.
24
+ */
25
+ export declare function createGlobStream(pattern: string | string[], options?: GlobStreamOptions): Minipass<string, string>;
26
+ /**
27
+ * Collect stream results into an array
28
+ *
29
+ * Utility function for testing and cases where
30
+ * array output is preferred over streaming.
31
+ */
32
+ export declare function streamToArray<T>(stream: Minipass<T, T>): Promise<T[]>;
33
+ /**
34
+ * Pipe glob results to another stream with transformation
35
+ */
36
+ export declare function pipeGlobResults<T>(source: Minipass<string, string>, transform: (path: string) => T): Minipass<T, T>;
37
+ /**
38
+ * Merge multiple glob streams into one
39
+ */
40
+ export declare function mergeGlobStreams(streams: Minipass<string, string>[]): Minipass<string, string>;
41
+ //# sourceMappingURL=stream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["stream.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AACnC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAE1C;;GAEG;AACH,MAAM,WAAW,iBAAkB,SAAQ,WAAW;IACpD;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAC1B,OAAO,CAAC,EAAE,iBAAiB,GAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAc1B;AAED;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAgB3E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAC/B,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,EAChC,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,CAAC,GAC7B,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAgBhB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CA2B9F"}
package/js/stream.js ADDED
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+ /**
3
+ * Stream utilities for globlin
4
+ *
5
+ * This module provides stream wrappers around the native Rust implementation
6
+ * to ensure compatibility with glob v13's streaming API.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.createGlobStream = createGlobStream;
10
+ exports.streamToArray = streamToArray;
11
+ exports.pipeGlobResults = pipeGlobResults;
12
+ exports.mergeGlobStreams = mergeGlobStreams;
13
+ /// <reference types="node" />
14
+ const minipass_1 = require("minipass");
15
+ /**
16
+ * Create a readable stream from glob results
17
+ *
18
+ * This wraps the native Rust iterator in a Minipass stream
19
+ * with proper backpressure handling.
20
+ */
21
+ function createGlobStream(pattern, options) {
22
+ const stream = new minipass_1.Minipass({
23
+ objectMode: true,
24
+ });
25
+ // TODO: Once native streaming is implemented, use it here
26
+ // For now, we batch results
27
+ void (options?.bufferSize ?? 16); // _bufferSize reserved for future native streaming
28
+ // Placeholder for native stream integration
29
+ // The actual implementation will call into Rust
30
+ // and stream results with proper backpressure
31
+ return stream;
32
+ }
33
+ /**
34
+ * Collect stream results into an array
35
+ *
36
+ * Utility function for testing and cases where
37
+ * array output is preferred over streaming.
38
+ */
39
+ async function streamToArray(stream) {
40
+ const results = [];
41
+ return new Promise((resolve, reject) => {
42
+ stream.on('data', (chunk) => {
43
+ results.push(chunk);
44
+ });
45
+ stream.on('end', () => {
46
+ resolve(results);
47
+ });
48
+ stream.on('error', (err) => {
49
+ reject(err);
50
+ });
51
+ });
52
+ }
53
+ /**
54
+ * Pipe glob results to another stream with transformation
55
+ */
56
+ function pipeGlobResults(source, transform) {
57
+ const output = new minipass_1.Minipass({ objectMode: true });
58
+ source.on('data', (path) => {
59
+ output.write(transform(path));
60
+ });
61
+ source.on('end', () => {
62
+ output.end();
63
+ });
64
+ source.on('error', (err) => {
65
+ output.emit('error', err);
66
+ });
67
+ return output;
68
+ }
69
+ /**
70
+ * Merge multiple glob streams into one
71
+ */
72
+ function mergeGlobStreams(streams) {
73
+ const output = new minipass_1.Minipass({ objectMode: true });
74
+ let remaining = streams.length;
75
+ if (remaining === 0) {
76
+ setImmediate(() => output.end());
77
+ return output;
78
+ }
79
+ for (const stream of streams) {
80
+ stream.on('data', (path) => {
81
+ output.write(path);
82
+ });
83
+ stream.on('end', () => {
84
+ remaining--;
85
+ if (remaining === 0) {
86
+ output.end();
87
+ }
88
+ });
89
+ stream.on('error', (err) => {
90
+ output.emit('error', err);
91
+ });
92
+ }
93
+ return output;
94
+ }
package/js/types.d.ts ADDED
@@ -0,0 +1,141 @@
1
+ /**
2
+ * TypeScript type definitions for globlin
3
+ *
4
+ * These types are designed to be 100% compatible with glob v13.
5
+ * This file provides additional type utilities and type aliases.
6
+ */
7
+ import type { Path as PathScurryPath } from 'path-scurry';
8
+ import type { GlobOptions, GlobOptionsWithFileTypesTrue, GlobOptionsWithFileTypesFalse, IgnorePattern } from './index';
9
+ export type { GlobOptions, GlobOptionsWithFileTypesTrue, GlobOptionsWithFileTypesFalse, IgnorePattern, };
10
+ /**
11
+ * Pattern type - can be a single string or array of strings
12
+ */
13
+ export type Pattern = string | string[];
14
+ /**
15
+ * Platform type - valid values for the platform option
16
+ */
17
+ export type Platform = NodeJS.Platform;
18
+ /**
19
+ * PathLike interface - matches the path-scurry Path object
20
+ */
21
+ export interface PathLike {
22
+ /** The name of the file or directory (basename) */
23
+ name: string;
24
+ /** Get the full absolute path */
25
+ fullpath(): string;
26
+ /** Get the path relative to cwd */
27
+ relative(): string;
28
+ /** Check if this is a regular file */
29
+ isFile(): boolean;
30
+ /** Check if this is a directory */
31
+ isDirectory(): boolean;
32
+ /** Check if this is a symbolic link */
33
+ isSymbolicLink(): boolean;
34
+ /** The parent directory (or undefined for root) */
35
+ parent?: PathLike;
36
+ /** Resolve a path relative to this path */
37
+ resolve(path: string): PathLike;
38
+ }
39
+ /**
40
+ * Result type for glob operations based on options
41
+ *
42
+ * @example
43
+ * ```ts
44
+ * type StringResult = GlobResult<{ withFileTypes: false }> // string[]
45
+ * type PathResult = GlobResult<{ withFileTypes: true }> // Path[]
46
+ * ```
47
+ */
48
+ export type GlobResult<O extends {
49
+ withFileTypes?: boolean;
50
+ }> = O extends {
51
+ withFileTypes: true;
52
+ } ? PathScurryPath[] : string[];
53
+ /**
54
+ * Async result type for glob operations
55
+ */
56
+ export type GlobAsyncResult<O extends {
57
+ withFileTypes?: boolean;
58
+ }> = Promise<GlobResult<O>>;
59
+ /**
60
+ * Options for pattern matching (subset of GlobOptions)
61
+ */
62
+ export interface PatternOptions {
63
+ /** Case-insensitive matching */
64
+ nocase?: boolean;
65
+ /** Disable brace expansion */
66
+ nobrace?: boolean;
67
+ /** Disable extglob patterns */
68
+ noext?: boolean;
69
+ /** Disable globstar matching */
70
+ noglobstar?: boolean;
71
+ /** Match dot files */
72
+ dot?: boolean;
73
+ /** Treat brace expansion as magic */
74
+ magicalBraces?: boolean;
75
+ /** Use backslash as path separator only */
76
+ windowsPathsNoEscape?: boolean;
77
+ }
78
+ /**
79
+ * Options for filesystem walking (subset of GlobOptions)
80
+ */
81
+ export interface WalkOptions {
82
+ /** Current working directory */
83
+ cwd?: string;
84
+ /** Follow symbolic links */
85
+ follow?: boolean;
86
+ /** Maximum directory depth */
87
+ maxDepth?: number;
88
+ /** Match dot files and directories */
89
+ dot?: boolean;
90
+ /** Exclude directories from results */
91
+ nodir?: boolean;
92
+ /** Use parallel walking */
93
+ parallel?: boolean;
94
+ /** Enable directory caching */
95
+ cache?: boolean;
96
+ }
97
+ /**
98
+ * Options for output formatting (subset of GlobOptions)
99
+ */
100
+ export interface OutputOptions {
101
+ /** Return absolute paths */
102
+ absolute?: boolean;
103
+ /** Prepend ./ to relative paths */
104
+ dotRelative?: boolean;
105
+ /** Append / to directory paths */
106
+ mark?: boolean;
107
+ /** Use POSIX separators */
108
+ posix?: boolean;
109
+ /** Return Path objects instead of strings */
110
+ withFileTypes?: boolean;
111
+ }
112
+ /**
113
+ * Options for filtering (subset of GlobOptions)
114
+ */
115
+ export interface FilterOptions {
116
+ /** Patterns or object to ignore */
117
+ ignore?: string | string[];
118
+ /** Include children of matches */
119
+ includeChildMatches?: boolean;
120
+ }
121
+ /**
122
+ * Signature for glob function
123
+ */
124
+ export interface GlobFunction {
125
+ (pattern: Pattern, options?: GlobOptionsWithFileTypesFalse): Promise<string[]>;
126
+ (pattern: Pattern, options: GlobOptionsWithFileTypesTrue): Promise<PathScurryPath[]>;
127
+ }
128
+ /**
129
+ * Signature for globSync function
130
+ */
131
+ export interface GlobSyncFunction {
132
+ (pattern: Pattern, options?: GlobOptionsWithFileTypesFalse): string[];
133
+ (pattern: Pattern, options: GlobOptionsWithFileTypesTrue): PathScurryPath[];
134
+ }
135
+ /**
136
+ * Options for glob where withFileTypes is not specified
137
+ */
138
+ export interface GlobOptionsWithFileTypesUnset extends GlobOptions {
139
+ withFileTypes?: undefined;
140
+ }
141
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["types.ts"],"names":[],"mappings":"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"}
package/js/types.js ADDED
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ /**
3
+ * TypeScript type definitions for globlin
4
+ *
5
+ * These types are designed to be 100% compatible with glob v13.
6
+ * This file provides additional type utilities and type aliases.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
package/package.json ADDED
@@ -0,0 +1,189 @@
1
+ {
2
+ "name": "globlin",
3
+ "version": "1.0.0-beta.1",
4
+ "description": "2-3x faster drop-in replacement for glob v13, built with Rust",
5
+ "main": "./js/index.js",
6
+ "types": "./js/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./js/index.d.ts",
10
+ "import": "./js/index.js",
11
+ "require": "./js/index.js"
12
+ },
13
+ "./package.json": "./package.json"
14
+ },
15
+ "repository": {
16
+ "type": "git",
17
+ "url": "git+https://github.com/CapSoftware/globlin.git"
18
+ },
19
+ "homepage": "https://github.com/CapSoftware/globlin#readme",
20
+ "bugs": {
21
+ "url": "https://github.com/CapSoftware/globlin/issues"
22
+ },
23
+ "author": "Anomaly",
24
+ "license": "MIT",
25
+ "keywords": [
26
+ "glob",
27
+ "globbing",
28
+ "pattern",
29
+ "match",
30
+ "file",
31
+ "directory",
32
+ "fast",
33
+ "rust",
34
+ "napi",
35
+ "native",
36
+ "performance",
37
+ "drop-in",
38
+ "replacement",
39
+ "minimatch",
40
+ "wildcard"
41
+ ],
42
+ "files": [
43
+ "index.js",
44
+ "index.d.ts",
45
+ "js/**/*.js",
46
+ "js/**/*.d.ts",
47
+ "js/**/*.d.ts.map",
48
+ "README.md",
49
+ "LICENSE",
50
+ "CHANGELOG.md"
51
+ ],
52
+ "napi": {
53
+ "name": "globlin",
54
+ "package": {
55
+ "name": "@capsoftware/globlin"
56
+ },
57
+ "triples": {
58
+ "defaults": true,
59
+ "additional": [
60
+ "aarch64-apple-darwin",
61
+ "aarch64-unknown-linux-gnu",
62
+ "aarch64-unknown-linux-musl",
63
+ "aarch64-pc-windows-msvc",
64
+ "x86_64-unknown-linux-musl",
65
+ "i686-pc-windows-msvc"
66
+ ]
67
+ }
68
+ },
69
+ "engines": {
70
+ "node": ">=20.0.0"
71
+ },
72
+ "os": [
73
+ "darwin",
74
+ "linux",
75
+ "win32"
76
+ ],
77
+ "cpu": [
78
+ "x64",
79
+ "arm64",
80
+ "ia32"
81
+ ],
82
+ "scripts": {
83
+ "artifacts": "napi artifacts",
84
+ "build": "napi build --platform --release && npm run build:ts",
85
+ "build:debug": "napi build --platform && npm run build:ts",
86
+ "build:ts": "tsc -p tsconfig.build.json",
87
+ "build:native": "napi build --platform --release",
88
+ "clean": "rm -rf js/*.js js/*.mjs js/*.d.ts js/*.map",
89
+ "prepublishOnly": "npm run clean && npm run build",
90
+ "lint": "npm run lint:ts && npm run lint:rust",
91
+ "lint:ts": "eslint 'js/**/*.ts' 'tests/**/*.ts' 'benches/**/*.ts'",
92
+ "lint:rust": "cargo clippy -- -D warnings",
93
+ "lint:fix": "npm run lint:ts -- --fix",
94
+ "format": "npm run format:ts && npm run format:rust",
95
+ "format:ts": "prettier --write 'js/**/*.ts' 'tests/**/*.ts' 'benches/**/*.ts' 'benches/**/*.js'",
96
+ "format:rust": "cargo fmt",
97
+ "format:check": "prettier --check 'js/**/*.ts' 'tests/**/*.ts' 'benches/**/*.ts' && cargo fmt -- --check",
98
+ "test": "vitest run",
99
+ "test:watch": "vitest",
100
+ "test:coverage": "vitest run --coverage",
101
+ "test:types": "tsd",
102
+ "typecheck": "tsc --noEmit",
103
+ "coverage": "npm run coverage:js && npm run coverage:rust",
104
+ "coverage:js": "vitest run --coverage",
105
+ "coverage:rust": "cargo tarpaulin --out Xml --out Html --output-dir coverage/rust --skip-clean --ignore-tests",
106
+ "coverage:ci": "npm run coverage:js && cargo tarpaulin --out Xml --output-dir coverage --skip-clean --ignore-tests",
107
+ "bench": "bash benches/benchmark.sh",
108
+ "bench:small": "bash benches/benchmark.sh small",
109
+ "bench:medium": "bash benches/benchmark.sh medium",
110
+ "bench:large": "bash benches/benchmark.sh large",
111
+ "bench:poc": "npx tsx benches/poc_bench.ts",
112
+ "bench:poc:medium": "npx tsx benches/poc_bench.ts --medium",
113
+ "bench:poc:all": "npx tsx benches/poc_bench.ts --all",
114
+ "bench:phase2": "npx tsx benches/phase2_bench.ts medium",
115
+ "bench:phase2:all": "npx tsx benches/phase2_bench.ts all",
116
+ "bench:node": "npx tsx benches/node_bench.ts",
117
+ "bench:node:small": "npx tsx benches/node_bench.ts --small",
118
+ "bench:node:all": "npx tsx benches/node_bench.ts --all",
119
+ "bench:rust": "cargo bench",
120
+ "bench:ci": "npx tsx benches/bench-ci.ts --output bench-results.json",
121
+ "bench:profile": "npx tsx benches/profile_node.ts",
122
+ "bench:boundary": "npx tsx benches/profile_boundary.ts",
123
+ "bench:parallel": "npx tsx benches/parallel_bench.ts",
124
+ "bench:parallel:all": "npx tsx benches/parallel_bench.ts --all",
125
+ "bench:parallel:large": "npx tsx benches/parallel_bench.ts --large",
126
+ "bench:cache": "npx tsx benches/cache_reuse_bench.ts",
127
+ "bench:cache:perf": "npx tsx benches/cache_performance_bench.ts",
128
+ "bench:vs-fg": "npx tsx benches/vs_fast_glob_bench.ts",
129
+ "bench:vs-fg:all": "npx tsx benches/vs_fast_glob_bench.ts --all",
130
+ "bench:vs-fg:large": "npx tsx benches/vs_fast_glob_bench.ts --large",
131
+ "bench:api:sync": "npx tsx benches/api/sync_bench.ts",
132
+ "bench:api:async": "npx tsx benches/api/async_bench.ts",
133
+ "bench:api:async:bottleneck": "npx tsx benches/api/async_bottleneck_analysis.ts",
134
+ "bench:api:stream": "npx tsx benches/api/stream_bench.ts",
135
+ "bench:api:stream:bottleneck": "npx tsx benches/api/stream_bottleneck_analysis.ts",
136
+ "bench:api:iterator": "npx tsx benches/api/iterator_bench.ts",
137
+ "bench:api:iterator:bottleneck": "npx tsx benches/api/iterator_bottleneck_analysis.ts",
138
+ "bench:api:glob-class": "npx tsx benches/api/glob_class_bench.ts",
139
+ "bench:api:glob-class:bottleneck": "npx tsx benches/api/glob_class_bottleneck_analysis.ts",
140
+ "bench:api:utility": "npx tsx benches/api/utility_bench.ts",
141
+ "bench:api:utility:bottleneck": "npx tsx benches/api/utility_bottleneck_analysis.ts",
142
+ "bench:api:with-file-types": "npx tsx benches/api/with_file_types_bench.ts",
143
+ "bench:setup": "node benches/setup-fixtures.js",
144
+ "bench:setup:huge": "node benches/setup-huge-fixture.js",
145
+ "universal": "napi universal",
146
+ "version": "napi version"
147
+ },
148
+ "devDependencies": {
149
+ "@eslint/js": "^9.39.2",
150
+ "@napi-rs/cli": "^2.18.0",
151
+ "@types/node": "^20.0.0",
152
+ "@vitest/coverage-v8": "^1.0.0",
153
+ "eslint": "^9.39.2",
154
+ "fast-check": "^4.5.3",
155
+ "fast-glob": "^3.3.3",
156
+ "glob": "^10.3.0",
157
+ "prettier": "^3.7.4",
158
+ "tsd": "^0.33.0",
159
+ "tsx": "^4.7.0",
160
+ "typescript": "^5.0.0",
161
+ "typescript-eslint": "^8.52.0",
162
+ "vitest": "^1.0.0"
163
+ },
164
+ "dependencies": {
165
+ "minimatch": "^10.1.1",
166
+ "minipass": "^7.1.2",
167
+ "path-scurry": "^2.0.0"
168
+ },
169
+ "optionalDependencies": {
170
+ "@capsoftware/globlin-win32-x64-msvc": "1.0.0-beta.1",
171
+ "@capsoftware/globlin-darwin-x64": "1.0.0-beta.1",
172
+ "@capsoftware/globlin-linux-x64-gnu": "1.0.0-beta.1",
173
+ "@capsoftware/globlin-darwin-arm64": "1.0.0-beta.1",
174
+ "@capsoftware/globlin-linux-arm64-gnu": "1.0.0-beta.1",
175
+ "@capsoftware/globlin-linux-arm64-musl": "1.0.0-beta.1",
176
+ "@capsoftware/globlin-win32-arm64-msvc": "1.0.0-beta.1",
177
+ "@capsoftware/globlin-linux-x64-musl": "1.0.0-beta.1",
178
+ "@capsoftware/globlin-win32-ia32-msvc": "1.0.0-beta.1"
179
+ },
180
+ "tsd": {
181
+ "directory": "tests",
182
+ "testFilePattern": "types.test-d.ts",
183
+ "compilerOptions": {
184
+ "esModuleInterop": true,
185
+ "moduleResolution": "NodeNext",
186
+ "module": "NodeNext"
187
+ }
188
+ }
189
+ }