pickety 0.1.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/.vscodeignore ADDED
@@ -0,0 +1,22 @@
1
+ .vscode/**
2
+ .vscode-test/**
3
+ .claude/**
4
+ src/**
5
+ .gitignore
6
+ .yarnrc
7
+ vsc-extension-quickstart.md
8
+ GEMINI.md
9
+ pickety.json
10
+ node_modules/**
11
+ out/**
12
+ !out/extension.js
13
+ !out/cli.js
14
+ scripts/**
15
+ .github/**
16
+ fix-paths.js
17
+ **/tsconfig.json
18
+ **/eslint.config.mjs
19
+ **/*.map
20
+ **/*.ts
21
+ **/.vscode-test.*
22
+ picket-boundaries.mermaid
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Dan Serio
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,406 @@
1
+ # Pickety
2
+
3
+ **Architectural guardrails for TypeScript projects.**
4
+
5
+ <p align="left">
6
+ <a href="https://github.com/DanielSerio/pickety/blob/main/LICENSE">
7
+ <img src="https://img.shields.io/github/license/DanielSerio/pickety?style=for-the-badge" alt="License">
8
+ </a>
9
+ </p>
10
+
11
+ ---
12
+
13
+ Pickety is a VS Code extension that stops architecture erosion before it starts. Define your module boundaries once in a simple JSON file, and every illegal import lights up instantly -- right in your editor, as you type. No more "we don't import that here" comments in code review. No more accidental coupling that quietly rots your codebase over months.
14
+
15
+ Zero runtime dependencies. Zero build steps. Just drop in a config and your entire team — and your AI coding agents — get a **real-time Senior Architect** sitting on their shoulder, enforcing the rules that actually matter.
16
+
17
+ ![Pickety in action](https://raw.githubusercontent.com/DanielSerio/pickety/main/resources/illegal-route-import.gif)
18
+
19
+ ---
20
+
21
+ ## Why Pickety?
22
+
23
+ Every growing TypeScript codebase develops architectural rules:
24
+
25
+ - Features shouldn't import other features
26
+ - Shared components can't reach into the app layer
27
+ - Utilities must remain dependency-free
28
+ - Routes should only access their own feature's pages
29
+
30
+ These rules live in developers' heads and break silently. Pickety makes them **explicit, enforceable, and visible**.
31
+
32
+ ### Built for the AI Era
33
+
34
+ AI coding agents are incredibly fast, but they don't have "Senior Engineer intuition" — they haven't lived through your project's history and don't know your unwritten architectural rules. Pickety bridges this gap by turning tribal knowledge into hard, machine-readable constraints.
35
+
36
+ - **Tribal Knowledge &rarr; Hard Constraints:** Don't hope an agent "figures out" your architecture. A single `pickety.json` tells every agent exactly which boundaries are sacred.
37
+ - **Zero-Latency Feedback Loops:** In-editor diagnostics (squiggles) provide instant course-correction. Agents see violations as they write code, fixing architectural errors before you even open a PR.
38
+ - **Machine-Readable Health:** The CLI provides ASCII-formatted health reports (stability, coupling, depth) that agents can ingest to make informed refactoring decisions.
39
+ - **Impact Analysis for Reasoning:** "Show Impact" gives agents a transitive dependency chain, preventing them from making a "simple" change that breaks a dozen distant modules.
40
+
41
+ Whether you're using **Claude Code**, **Cursor**, **GitHub Copilot**, or **Windsurf**, Pickety acts as an automated Senior Architect sitting on the agent's shoulder, keeping it on the rails.
42
+
43
+ ---
44
+
45
+ ## Why not just use ESLint?
46
+
47
+ ESLint is great at code-level rules -- naming conventions, unused variables, consistent syntax. Pickety solves a different problem: **architecture-level rules** that ESLint was never designed for.
48
+
49
+ | | ESLint | Pickety |
50
+ | ---------------------------- | ------------------------------------------------------ | ------------------------------------------------------------ |
51
+ | **Scope** | Single-file lint rules | Cross-module boundary enforcement |
52
+ | **Setup** | Plugin ecosystem, parser config, flat config migration | One `pickety.json` file |
53
+ | **Boundary logic** | `no-restricted-imports` with manual regex per path | Declarative module map + glob-based rules |
54
+ | **Interpolation** | Not supported | `$name` variables enforce scoped relationships automatically |
55
+ | **Strict containment** | Not supported | `only` and `containedTo` whitelist who can import a target |
56
+ | **Architectural visibility** | None | Auto-generated Mermaid boundary diagrams |
57
+ | **Health metrics** | None | Coupling, instability, and dependency depth per module |
58
+ | **Impact analysis** | None | Transitive dependent graph before you refactor |
59
+ | **Gradual adoption** | All-or-nothing per rule | `maxViolations` lets you ratchet down tech debt over time |
60
+ | **Dependencies** | Dozens of transitive deps | Zero (Self-contained) |
61
+
62
+ ESLint's `no-restricted-imports` can block a handful of hard-coded paths. But the moment you need "features can't cross-import each other" or "route X can only touch feature X's pages", you're writing fragile regex that nobody maintains. Pickety expresses those constraints in a few readable lines and enforces them in real time.
63
+
64
+ **Use both.** Let ESLint handle code style and correctness. Let Pickety handle the architectural rules that keep your codebase from quietly rotting.
65
+
66
+ ---
67
+
68
+ ## Features
69
+
70
+ - **Real-time enforcement** -- violations appear as you type, not just on save
71
+ - **Glob patterns** -- flexible module definitions using [minimatch](https://github.com/isaacs/minimatch) syntax
72
+ - **Interpolation variables** -- enforce scoped relationships like "route X can only import from feature X"
73
+ - **Strict enforcement** -- use `only` and `containedTo` to restrict modules to specific consumers
74
+ - **Per-rule severity** -- mark some boundaries as hard errors and others as soft warnings
75
+ - **Debt tracking** -- set a `maxViolations` threshold per rule to adopt boundaries gradually in legacy codebases
76
+ - **Named rules** -- identify exactly which rule triggered a violation
77
+ - **tsconfig.json alias support** -- automatically resolves `@/*` and other path aliases
78
+ - **Boundary diagrams** -- auto-generate Mermaid diagrams of your architecture
79
+ - **Impact Analysis** -- see exactly who depends on a file (transitively) before refactoring
80
+ - **Module Health** -- track coupling, instability, and dependency depth across your project
81
+ - **Circular dependencies** -- auto-detect feedback loops between your modules
82
+ - **Quick fixes** -- jump directly to the rule in `pickety.json` from any violation
83
+ - **Status bar** -- always know whether Pickety is active and how many violations exist
84
+ - **CLI** -- `pickety check` for CI/CD pipelines, matching IDE behavior exactly
85
+ - **JSON Schema** -- autocomplete and inline validation for `pickety.json`
86
+ - **No external dependencies** -- self-contained bundle requires zero `npm install` at runtime
87
+ - **Zero config beyond `pickety.json`** -- no build plugins, no complex environment to set up
88
+
89
+ ---
90
+
91
+ ## Quick Start
92
+
93
+ **1. Install** the Pickety extension from the VS Code Marketplace.
94
+
95
+ **2. Create `pickety.json`** in your workspace root:
96
+
97
+ ```json
98
+ {
99
+ "modules": {
100
+ "features": "src/features/*",
101
+ "components": "src/components/**/*",
102
+ "utils": "src/utils/**/*"
103
+ },
104
+ "rules": {
105
+ "module-boundaries": {
106
+ "severity": "error",
107
+ "rules": [
108
+ {
109
+ "importer": "features",
110
+ "imports": "features",
111
+ "name": "no-cross-feature",
112
+ "message": "Features should not import other features directly"
113
+ }
114
+ ]
115
+ }
116
+ }
117
+ }
118
+ ```
119
+
120
+ **3. Done.** Pickety activates automatically. Violations appear as red/yellow squiggles in the editor, in the Problems panel, and in the status bar.
121
+
122
+ ---
123
+
124
+ ## Configuration
125
+
126
+ ### Modules
127
+
128
+ Map logical module names to file glob patterns. Each file belongs to the **first** module whose pattern matches.
129
+
130
+ ```json
131
+ {
132
+ "modules": {
133
+ "features": "src/features/*",
134
+ "components": "src/components/**/*",
135
+ "hooks": "src/hooks/**/*",
136
+ "utils": "src/utils/**/*"
137
+ }
138
+ }
139
+ ```
140
+
141
+ > Patterns ending with `/*` are automatically expanded to `/**/*` for deep matching.
142
+
143
+ ### Rules
144
+
145
+ Each rule defines an import boundary between modules.
146
+
147
+ | Field | Type | Required | Description |
148
+ | ------------- | --------- | ----------- | ------------------------------------------------------------------------ |
149
+ | `imports` | `string` | Yes | Target module name, glob, or file path pattern |
150
+ | `importer` | `string` | Conditional | Source module name or glob pattern. Required unless using `containedTo`. |
151
+ | `allow` | `boolean` | No | `true` = permit, `false` = forbid. Default: `false` |
152
+ | `only` | `boolean` | No | `true` = the `imports` target can ONLY be used by this `importer`. |
153
+ | `containedTo` | `string` | No | Shortcut for `only: true`. Restricts `imports` to this path pattern. |
154
+ | `message` | `string` | No | Custom diagnostic message shown in the editor |
155
+ | `severity` | `string` | No | `"error"` or `"warn"`. Overrides the global severity |
156
+ | `name` | `string` | No | Rule identifier. Shown in diagnostics and quick fix labels |
157
+
158
+ ### Glob Patterns
159
+
160
+ Both `importer` and `imports` support glob syntax. Use `*` to match all modules:
161
+
162
+ ```json
163
+ {
164
+ "importer": "utils",
165
+ "imports": "*",
166
+ "message": "Utils must remain dependency-free"
167
+ }
168
+ ```
169
+
170
+ When `imports` contains a `/`, it matches against the resolved file's relative path, letting you target subdirectories:
171
+
172
+ ```json
173
+ {
174
+ "importer": "routes",
175
+ "imports": "features/**/components",
176
+ "message": "Routes cannot import feature components"
177
+ }
178
+ ```
179
+
180
+ ### Strict Enforcement (`only` & `containedTo`)
181
+
182
+ Standard rules are "blacklist" style: they forbid specific connections. `only` and `containedTo` are "whitelist" style: they forbid **everyone else** from importing a target.
183
+
184
+ #### `only`
185
+
186
+ Use `only` to ensure a module is only consumed by a specific layer:
187
+
188
+ ```json
189
+ {
190
+ "importer": "services",
191
+ "imports": "repositories",
192
+ "only": true,
193
+ "message": "Repositories can only be used by the Service layer"
194
+ }
195
+ ```
196
+
197
+ #### `containedTo`
198
+
199
+ Use `containedTo` for "private" file patterns that should never leak outside their owner. It is a shortcut for `only: true` where the `importer` is the allowed scope.
200
+
201
+ ```json
202
+ {
203
+ "imports": "src/features/$name/internal/*",
204
+ "containedTo": "src/features/$name/**/*",
205
+ "message": "Internal files cannot be imported outside their feature"
206
+ }
207
+ ```
208
+
209
+ ### Interpolation Variables
210
+
211
+ Use `$variable` placeholders to enforce that path segments match between the importer and the target:
212
+
213
+ ```json
214
+ {
215
+ "importer": "routes/$name/*",
216
+ "imports": "features/$name/pages/*",
217
+ "allow": true,
218
+ "message": "Routes must import pages from their matching feature"
219
+ }
220
+ ```
221
+
222
+ With this rule, `routes/auth/index.ts` can import from `features/auth/pages/` but **not** from `features/billing/pages/`.
223
+
224
+ ---
225
+
226
+ ## Boundary Diagrams
227
+
228
+ Pickety can auto-generate a [Mermaid](https://mermaid.js.org/) diagram of your module boundaries. Each rule appears as its own section with clear ALLOW/DENY labeling.
229
+
230
+ Add this to your `pickety.json`:
231
+
232
+ ```json
233
+ {
234
+ "boundary-diagrams": true
235
+ }
236
+ ```
237
+
238
+ Or specify a custom output path:
239
+
240
+ ```json
241
+ {
242
+ "boundary-diagrams": "docs/architecture.mermaid"
243
+ }
244
+ ```
245
+
246
+ You can also generate diagrams on demand via the command palette: **Pickety: Generate Boundary Diagram**.
247
+
248
+ ---
249
+
250
+ ## Impact Analysis
251
+
252
+ Before refactoring a file, you need to know who depends on it. Pickety's Impact Analysis shows you the transitive dependency chain — every file that might be affected by your change, grouped by the module they belong to.
253
+
254
+ Run **Pickety: Show Impact** from the command palette to see a searchable list of all files that import the current file (directly or indirectly).
255
+
256
+ ---
257
+
258
+ ## Module Health Metrics
259
+
260
+ Quantify the quality of your architecture with industry-standard coupling metrics. Pickety analyzes your entire project to compute stability and complexity scores for every module.
261
+
262
+ - **Afferent Coupling (Ca)**: How many modules depend on this one? (Responsibility)
263
+ - **Efferent Coupling (Ce)**: How many modules does this one depend on? (Dependency)
264
+ - **Instability (I)**: The ratio `Ce / (Ca + Ce)`. Measures how resilient a module is to external changes.
265
+ - **Dependency Depth**: The length of the longest dependency chain starting from this module.
266
+
267
+ View these metrics anytime using **Pickety: Show Module Health**, or enforce project-wide quality standards in `pickety.json`:
268
+
269
+ ![Module Health Report Placeholder](https://raw.githubusercontent.com/DanielSerio/pickety/main/resources/module-health.png)
270
+
271
+ ### Built for Humans and Agents
272
+
273
+ The Module Health feature provides two interfaces depending on who is using it:
274
+
275
+ - **For Humans:** Running the VS Code command opens a clean, color-coded HTML Webview panel. The table highlights healthy modules in green and unstable or problematic modules in red, making it easy to spot architectural issues at a glance.
276
+ - **For AI Agents:** Running the `pickety check` CLI with the `health` argument outputs a clean, ASCII-formatted table directly to stdout. This allows agents to ingest the current state of your architecture and make informed decisions about where to place new code or when refactoring is needed.
277
+
278
+ ```json
279
+ {
280
+ "health": {
281
+ "maxInstability": 0.8,
282
+ "maxDepth": 5,
283
+ "maxAfferentCoupling": 20
284
+ }
285
+ }
286
+ ```
287
+
288
+ Threshold violations appear as diagnostics directly on your `pickety.json` file.
289
+
290
+ ---
291
+
292
+ ## Commands
293
+
294
+ | Command | Description |
295
+ | ------------------------------------ | ----------------------------------------------- |
296
+ | `Pickety: Refresh Configuration` | Reload `pickety.json`, aliases, and file index |
297
+ | `Pickety: Generate Boundary Diagram` | Generate a Mermaid diagram of your boundaries |
298
+ | `Pickety: Show Impact` | See transitive dependents of the active file |
299
+ | `Pickety: Show Module Health` | View coupling and stability metrics for modules |
300
+
301
+ ---
302
+
303
+ ## Example
304
+
305
+ A complete configuration enforcing feature isolation, dependency direction, utility purity, and scoped routing:
306
+
307
+ ```json
308
+ {
309
+ "modules": {
310
+ "app": "src/app/**/*",
311
+ "features": "src/features/*",
312
+ "components": "src/components/**/*",
313
+ "hooks": "src/hooks/**/*",
314
+ "utils": "src/utils/**/*"
315
+ },
316
+ "rules": {
317
+ "module-boundaries": {
318
+ "severity": "error",
319
+ "rules": [
320
+ {
321
+ "importer": "features",
322
+ "imports": "features",
323
+ "name": "no-cross-feature",
324
+ "message": "Features should not import other features directly"
325
+ },
326
+ {
327
+ "importer": "components",
328
+ "imports": "features",
329
+ "name": "no-component-to-feature",
330
+ "message": "Shared components should not depend on features"
331
+ },
332
+ {
333
+ "importer": "utils",
334
+ "imports": "*",
335
+ "name": "utility-purity",
336
+ "message": "Utils must remain dependency-free"
337
+ },
338
+ {
339
+ "importer": "routes/$name/*",
340
+ "imports": "features/$name/pages/*",
341
+ "allow": true,
342
+ "name": "scoped-routing",
343
+ "message": "Routes must use pages from their matching feature"
344
+ },
345
+ {
346
+ "imports": "src/features/$name/internal/*",
347
+ "containedTo": "src/features/$name/**/*",
348
+ "name": "internal-isolation",
349
+ "message": "Internal feature logic cannot leak outside its feature"
350
+ }
351
+ ]
352
+ }
353
+ },
354
+ "boundary-diagrams": true,
355
+ "health": {
356
+ "maxInstability": 0.7,
357
+ "maxDepth": 4
358
+ }
359
+ }
360
+ ```
361
+
362
+ For more patterns -- Feature-Sliced Design, Onion Architecture, scoped utilities -- see the [Rule Recipes](https://github.com/DanielSerio/pickety/blob/main/docs/recipes.md).
363
+
364
+ ---
365
+
366
+ ## Performance & Limits
367
+
368
+ Pickety is designed for speed, using optimized regex for import extraction and caching dependency graphs in memory. For most projects, analysis is near-instant.
369
+
370
+ ### Large Workspaces
371
+
372
+ To prevent IDE hangs on massive codebases, Pickety applies certain limits in the VS Code extension:
373
+
374
+ - **File Limit:** If your workspace contains more than **5,000** TypeScript/JavaScript source files, Pickety will disable background features (Circular Dependency Detection and Module Health Metrics) for performance.
375
+ - **Real-time Boundary Checks:** Standard boundary enforcement on the active file always remains active, regardless of project size.
376
+
377
+ If these limits are reached, a warning will appear in the **Pickety** output channel. You can still run full project analysis via the CLI: `pickety check`.
378
+
379
+ ### Benchmarks
380
+
381
+ In a synthetic project with 500 files and 10 modules, a full project analysis (`pickety check`) completes in under **600ms** on a standard developer machine.
382
+
383
+ ---
384
+
385
+ ## Documentation
386
+
387
+ | Resource | Description |
388
+ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------ |
389
+ | [Setup Guide](https://github.com/DanielSerio/pickety/blob/main/docs/setup.md) | Get running in under 3 minutes |
390
+ | [Configuration Reference](https://github.com/DanielSerio/pickety/blob/main/docs/pickety-json.md) | Full `pickety.json` specification |
391
+ | [Rule Recipes](https://github.com/DanielSerio/pickety/blob/main/docs/recipes.md) | Common architectural patterns (FSD, Onion, etc.) |
392
+ | [Wishlist](https://github.com/DanielSerio/pickety/blob/main/docs/WISHLIST.md) | Proposed features and future roadmap |
393
+
394
+ ---
395
+
396
+ ## Contributing
397
+
398
+ We welcome contributions! See [CONTRIBUTING.md](https://github.com/DanielSerio/pickety/blob/main/CONTRIBUTING.md) for development setup, workflow, and guidelines.
399
+
400
+ ---
401
+
402
+ ## License
403
+
404
+ [MIT](https://github.com/DanielSerio/pickety/blob/main/LICENSE)
405
+
406
+ This project bundles and distributes code from open-source projects. See [ThirdPartyNotices.txt](https://github.com/DanielSerio/pickety/blob/main/ThirdPartyNotices.txt) for a complete list of licenses and attributions.
@@ -0,0 +1,154 @@
1
+ THIRD-PARTY SOFTWARE NOTICES AND INFORMATION
2
+
3
+ This project uses the following third-party software:
4
+
5
+ ========================================================================
6
+ balanced-match@4.0.3
7
+ License: MIT
8
+ Repository: https://github.com/juliangruber/balanced-match
9
+
10
+ (MIT)
11
+
12
+ Original code Copyright Julian Gruber <julian@juliangruber.com>
13
+
14
+ Port to TypeScript Copyright Isaac Z. Schlueter <i@izs.me>
15
+
16
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
17
+ this software and associated documentation files (the "Software"), to deal in
18
+ the Software without restriction, including without limitation the rights to
19
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
20
+ of the Software, and to permit persons to whom the Software is furnished to do
21
+ so, subject to the following conditions:
22
+
23
+ The above copyright notice and this permission notice shall be included in all
24
+ copies or substantial portions of the Software.
25
+
26
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
27
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
28
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
29
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
30
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
31
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
32
+ SOFTWARE.
33
+ ========================================================================
34
+
35
+ ========================================================================
36
+ brace-expansion@5.0.2
37
+ License: MIT
38
+ Repository: https://github.com/juliangruber/brace-expansion
39
+
40
+ MIT License
41
+
42
+ Copyright Julian Gruber <julian@juliangruber.com>
43
+
44
+ TypeScript port Copyright Isaac Z. Schlueter <i@izs.me>
45
+
46
+ Permission is hereby granted, free of charge, to any person obtaining a copy
47
+ of this software and associated documentation files (the "Software"), to deal
48
+ in the Software without restriction, including without limitation the rights
49
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
50
+ copies of the Software, and to permit persons to whom the Software is
51
+ furnished to do so, subject to the following conditions:
52
+
53
+ The above copyright notice and this permission notice shall be included in all
54
+ copies or substantial portions of the Software.
55
+
56
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
57
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
58
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
59
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
60
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
61
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
62
+ SOFTWARE.
63
+ ========================================================================
64
+
65
+ ========================================================================
66
+ jsonc-parser@3.3.1
67
+ License: MIT
68
+ Repository: https://github.com/microsoft/node-jsonc-parser
69
+
70
+ The MIT License (MIT)
71
+
72
+ Copyright (c) Microsoft
73
+
74
+ Permission is hereby granted, free of charge, to any person obtaining a copy
75
+ of this software and associated documentation files (the "Software"), to deal
76
+ in the Software without restriction, including without limitation the rights
77
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
78
+ copies of the Software, and to permit persons to whom the Software is
79
+ furnished to do so, subject to the following conditions:
80
+
81
+ The above copyright notice and this permission notice shall be included in all
82
+ copies or substantial portions of the Software.
83
+
84
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
85
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
86
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
87
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
88
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
89
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
90
+ SOFTWARE.
91
+ ========================================================================
92
+
93
+ ========================================================================
94
+ minimatch@10.2.2
95
+ License: BlueOak-1.0.0
96
+ Repository: https://github.com/isaacs/minimatch
97
+
98
+ # Blue Oak Model License
99
+
100
+ Version 1.0.0
101
+
102
+ ## Purpose
103
+
104
+ This license gives everyone as much permission to work with
105
+ this software as possible, while protecting contributors
106
+ from liability.
107
+
108
+ ## Acceptance
109
+
110
+ In order to receive this license, you must agree to its
111
+ rules. The rules of this license are both obligations
112
+ under that agreement and conditions to your license.
113
+ You must not do anything with this software that triggers
114
+ a rule that you cannot or will not follow.
115
+
116
+ ## Copyright
117
+
118
+ Each contributor licenses you to do everything with this
119
+ software that would otherwise infringe that contributor's
120
+ copyright in it.
121
+
122
+ ## Notices
123
+
124
+ You must ensure that everyone who gets a copy of
125
+ any part of this software from you, with or without
126
+ changes, also gets the text of this license or a link to
127
+ <https://blueoakcouncil.org/license/1.0.0>.
128
+
129
+ ## Excuse
130
+
131
+ If anyone notifies you in writing that you have not
132
+ complied with [Notices](#notices), you can keep your
133
+ license by taking all practical steps to comply within 30
134
+ days after the notice. If you do not do so, your license
135
+ ends immediately.
136
+
137
+ ## Patent
138
+
139
+ Each contributor licenses you to do everything with this
140
+ software that would otherwise infringe any patent claims
141
+ they can license or become able to license.
142
+
143
+ ## Reliability
144
+
145
+ No contributor can revoke this license.
146
+
147
+ ## No Liability
148
+
149
+ **_As far as the law allows, this software comes as is,
150
+ without any warranty or condition, and no contributor
151
+ will be liable to anyone for any damages related to this
152
+ software or this license, under any kind of legal claim._**
153
+ ========================================================================
154
+