@bobfrankston/npmglobalize 1.0.107 → 1.0.108

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/fix-claude.cmd ADDED
@@ -0,0 +1,236 @@
1
+ @echo off
2
+ REM Generated by scan-claude.ts on 2026-03-17
3
+ REM 115 directories with .claude/ found under Y:\dev
4
+
5
+ echo Fixing: Y:\dev\JPA\js\amazon
6
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\JPA\js\amazon"
7
+ echo Fixing: Y:\dev\email\MailApps\alerter
8
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\email\MailApps\alerter"
9
+ echo Fixing: Y:\dev\email\MailApps\iflow
10
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\email\MailApps\iflow"
11
+ echo Fixing: Y:\dev\email\MailApps\imail
12
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\email\MailApps\imail"
13
+ echo Fixing: Y:\dev\email\MailApps\puller
14
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\email\MailApps\puller"
15
+ echo Fixing: Y:\dev\email\MailApps\stage
16
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\email\MailApps\stage"
17
+ echo Fixing: Y:\dev\homecontrol
18
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\homecontrol"
19
+ echo Fixing: Y:\dev\homecontrol\Others\HomeAssistant\apps\haupdate
20
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\homecontrol\Others\HomeAssistant\apps\haupdate"
21
+ echo Fixing: Y:\dev\homecontrol\Others\LifX
22
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\homecontrol\Others\LifX"
23
+ echo Fixing: Y:\dev\homecontrol\Others\LifX\Apps\lxclient
24
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\homecontrol\Others\LifX\Apps\lxclient"
25
+ echo Fixing: Y:\dev\homecontrol\Others\LifX\Apps\lxlan
26
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\homecontrol\Others\LifX\Apps\lxlan"
27
+ echo Fixing: Y:\dev\homecontrol\Others\LifX\Apps\lxlan-node
28
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\homecontrol\Others\LifX\Apps\lxlan-node"
29
+ echo Fixing: Y:\dev\homecontrol\Others\LifX\Apps\lxtest
30
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\homecontrol\Others\LifX\Apps\lxtest"
31
+ echo Fixing: Y:\dev\homecontrol\Others\Shelly\apps\shellygen2
32
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\homecontrol\Others\Shelly\apps\shellygen2"
33
+ echo Fixing: Y:\dev\homecontrol\Others\Shelly\scripts\flood
34
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\homecontrol\Others\Shelly\scripts\flood"
35
+ echo Fixing: Y:\dev\homecontrol\Others\Wiz
36
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\homecontrol\Others\Wiz"
37
+ echo Fixing: Y:\dev\homecontrol\Others\Wiz\apps\wizlib
38
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\homecontrol\Others\Wiz\apps\wizlib"
39
+ echo Fixing: Y:\dev\homecontrol\Others\Wiz\apps\wzlan
40
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\homecontrol\Others\Wiz\apps\wzlan"
41
+ echo Fixing: Y:\dev\homecontrol\Others\Wiz\apps\wztest
42
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\homecontrol\Others\Wiz\apps\wztest"
43
+ echo Fixing: Y:\dev\homecontrol\apps
44
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\homecontrol\apps"
45
+ echo Fixing: Y:\dev\homecontrol\apps\grouper
46
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\homecontrol\apps\grouper"
47
+ echo Fixing: Y:\dev\homecontrol\cert\renewer
48
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\homecontrol\cert\renewer"
49
+ echo Fixing: Y:\dev\homecontrol\cert\rmfacme
50
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\homecontrol\cert\rmfacme"
51
+ echo Fixing: Y:\dev\homecontrol\houser
52
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\homecontrol\houser"
53
+ echo Fixing: Y:\dev\homecontrol\houser\Houser42
54
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\homecontrol\houser\Houser42"
55
+ echo Fixing: Y:\dev\homecontrol\houser\Houser42\Sw
56
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\homecontrol\houser\Houser42\Sw"
57
+ echo Fixing: Y:\dev\homecontrol\houser\Houser43
58
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\homecontrol\houser\Houser43"
59
+ echo Fixing: Y:\dev\homecontrol\houser\Houser43\Sw
60
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\homecontrol\houser\Houser43\Sw"
61
+ echo Fixing: Y:\dev\homecontrol\houser\Houser44
62
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\homecontrol\houser\Houser44"
63
+ echo Fixing: Y:\dev\homecontrol\houser\Houser44\Sw
64
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\homecontrol\houser\Houser44\Sw"
65
+ echo Fixing: Y:\dev\homecontrol\houser\Houser45
66
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\homecontrol\houser\Houser45"
67
+ echo Fixing: Y:\dev\homecontrol\houser\Houser45\Sw
68
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\homecontrol\houser\Houser45\Sw"
69
+ echo Fixing: Y:\dev\homecontrol\houser\Houser46
70
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\homecontrol\houser\Houser46"
71
+ echo Fixing: Y:\dev\homecontrol\houser\Houser46\Sw
72
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\homecontrol\houser\Houser46\Sw"
73
+ echo Fixing: Y:\dev\homecontrol\houser\Houser47
74
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\homecontrol\houser\Houser47"
75
+ echo Fixing: Y:\dev\homecontrol\houser\Houser47\Sw
76
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\homecontrol\houser\Houser47\Sw"
77
+ echo Fixing: Y:\dev\homecontrol\houser\Houser48
78
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\homecontrol\houser\Houser48"
79
+ echo Fixing: Y:\dev\homecontrol\houser\Houser48\Sw
80
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\homecontrol\houser\Houser48\Sw"
81
+ echo Fixing: Y:\dev\homecontrol\houser\Houser49
82
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\homecontrol\houser\Houser49"
83
+ echo Fixing: Y:\dev\homecontrol\houser\Houser49\Sw
84
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\homecontrol\houser\Houser49\Sw"
85
+ echo Fixing: Y:\dev\homecontrol\jv\vdevice
86
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\homecontrol\jv\vdevice"
87
+ echo Fixing: Y:\dev\homecontrol\utils\devreset
88
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\homecontrol\utils\devreset"
89
+ echo Fixing: Y:\dev\homecontrol\utils\hlib
90
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\homecontrol\utils\hlib"
91
+ echo Fixing: Y:\dev\homecontrol\utils\homerun
92
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\homecontrol\utils\homerun"
93
+ echo Fixing: Y:\dev\homecontrol\utils\iplabels
94
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\homecontrol\utils\iplabels"
95
+ echo Fixing: Y:\dev\homecontrol\utils\jserv
96
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\homecontrol\utils\jserv"
97
+ echo Fixing: Y:\dev\homecontrol\utils\jservdefs
98
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\homecontrol\utils\jservdefs"
99
+ echo Fixing: Y:\dev\homecontrol\utils\onboard
100
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\homecontrol\utils\onboard"
101
+ echo Fixing: Y:\dev\homecontrol\utils\udp
102
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\homecontrol\utils\udp"
103
+ echo Fixing: Y:\dev\homecontrol\utils\udp\httpudp-apk
104
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\homecontrol\utils\udp\httpudp-apk"
105
+ echo Fixing: Y:\dev\homecontrol\utils\udp\httpudp-client
106
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\homecontrol\utils\udp\httpudp-client"
107
+ echo Fixing: Y:\dev\projects\Brother\brother-label
108
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\projects\Brother\brother-label"
109
+ echo Fixing: Y:\dev\projects\Cards\cider
110
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\projects\Cards\cider"
111
+ echo Fixing: Y:\dev\projects\NodeJS\certsupport
112
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\projects\NodeJS\certsupport"
113
+ echo Fixing: Y:\dev\projects\NodeJS\cmsgbox
114
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\projects\NodeJS\cmsgbox"
115
+ echo Fixing: Y:\dev\projects\NodeJS\dirutil
116
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\projects\NodeJS\dirutil"
117
+ echo Fixing: Y:\dev\projects\NodeJS\dirutil\dmax
118
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\projects\NodeJS\dirutil\dmax"
119
+ echo Fixing: Y:\dev\projects\NodeJS\miscassists
120
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\projects\NodeJS\miscassists"
121
+ echo Fixing: Y:\dev\projects\NodeJS\polytest\certtest
122
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\projects\NodeJS\polytest\certtest"
123
+ echo Fixing: Y:\dev\projects\NodeJS\sql\sqlgen
124
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\projects\NodeJS\sql\sqlgen"
125
+ echo Fixing: Y:\dev\projects\NodeJS\sql\sqlms
126
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\projects\NodeJS\sql\sqlms"
127
+ echo Fixing: Y:\dev\projects\NodeJS\sql\sqlunified
128
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\projects\NodeJS\sql\sqlunified"
129
+ echo Fixing: Y:\dev\projects\NodeJS\utils
130
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\projects\NodeJS\utils"
131
+ echo Fixing: Y:\dev\projects\PostGres
132
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\projects\PostGres"
133
+ echo Fixing: Y:\dev\projects\Site
134
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\projects\Site"
135
+ echo Fixing: Y:\dev\projects\Site\utils\hosts
136
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\projects\Site\utils\hosts"
137
+ echo Fixing: Y:\dev\projects\Site\utils\nusite
138
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\projects\Site\utils\nusite"
139
+ echo Fixing: Y:\dev\projects\Site\xp3alpha
140
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\projects\Site\xp3alpha"
141
+ echo Fixing: Y:\dev\projects\Site\xp3alpha\clientv2
142
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\projects\Site\xp3alpha\clientv2"
143
+ echo Fixing: Y:\dev\projects\Site\xp3beta
144
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\projects\Site\xp3beta"
145
+ echo Fixing: Y:\dev\projects\Site\xp3beta\clientv2
146
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\projects\Site\xp3beta\clientv2"
147
+ echo Fixing: Y:\dev\projects\Site\xp3prod
148
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\projects\Site\xp3prod"
149
+ echo Fixing: Y:\dev\projects\Site\xp3prod\clientv2
150
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\projects\Site\xp3prod\clientv2"
151
+ echo Fixing: Y:\dev\projects\backup\backts
152
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\projects\backup\backts"
153
+ echo Fixing: Y:\dev\projects\backup\dirwalk
154
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\projects\backup\dirwalk"
155
+ echo Fixing: Y:\dev\projects\backup\dirwalkts
156
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\projects\backup\dirwalkts"
157
+ echo Fixing: Y:\dev\projects\dns
158
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\projects\dns"
159
+ echo Fixing: Y:\dev\projects\npm\rmfc
160
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\projects\npm\rmfc"
161
+ echo Fixing: Y:\dev\projects\pi
162
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\projects\pi"
163
+ echo Fixing: Y:\dev\projects\play\stm\ubasic
164
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\projects\play\stm\ubasic"
165
+ echo Fixing: Y:\dev\projects\typescript\extractids
166
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\projects\typescript\extractids"
167
+ echo Fixing: Y:\dev\projects\wsl\wslsupport
168
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\projects\wsl\wslsupport"
169
+ echo Fixing: Y:\dev\rmf\itemgen
170
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\rmf\itemgen"
171
+ echo Fixing: Y:\dev\rmf\itemw\client
172
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\rmf\itemw\client"
173
+ echo Fixing: Y:\dev\utils
174
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\utils"
175
+ echo Fixing: Y:\dev\utils\bizcards
176
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\utils\bizcards"
177
+ echo Fixing: Y:\dev\utils\cardx
178
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\utils\cardx"
179
+ echo Fixing: Y:\dev\utils\cardx\cardaid
180
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\utils\cardx\cardaid"
181
+ echo Fixing: Y:\dev\utils\cardx\carder
182
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\utils\cardx\carder"
183
+ echo Fixing: Y:\dev\utils\cardx\cardist
184
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\utils\cardx\cardist"
185
+ echo Fixing: Y:\dev\utils\cardx\gcal
186
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\utils\cardx\gcal"
187
+ echo Fixing: Y:\dev\utils\cardx\gcards
188
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\utils\cardx\gcards"
189
+ echo Fixing: Y:\dev\utils\dmap
190
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\utils\dmap"
191
+ echo Fixing: Y:\dev\utils\docsearch
192
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\utils\docsearch"
193
+ echo Fixing: Y:\dev\utils\essayer
194
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\utils\essayer"
195
+ echo Fixing: Y:\dev\utils\freezepak
196
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\utils\freezepak"
197
+ echo Fixing: Y:\dev\utils\importgen
198
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\utils\importgen"
199
+ echo Fixing: Y:\dev\utils\logit
200
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\utils\logit"
201
+ echo Fixing: Y:\dev\utils\msgx
202
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\utils\msgx"
203
+ echo Fixing: Y:\dev\utils\msgx\msga
204
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\utils\msgx\msga"
205
+ echo Fixing: Y:\dev\utils\msgx\msga\maclient
206
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\utils\msgx\msga\maclient"
207
+ echo Fixing: Y:\dev\utils\msgx\msgapidefs
208
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\utils\msgx\msgapidefs"
209
+ echo Fixing: Y:\dev\utils\msgx\msger
210
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\utils\msgx\msger"
211
+ echo Fixing: Y:\dev\utils\msgx\msgview
212
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\utils\msgx\msgview"
213
+ echo Fixing: Y:\dev\utils\neoping
214
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\utils\neoping"
215
+ echo Fixing: Y:\dev\utils\npmglobalize
216
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\utils\npmglobalize"
217
+ echo Fixing: Y:\dev\utils\npw
218
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\utils\npw"
219
+ echo Fixing: Y:\dev\utils\pings
220
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\utils\pings"
221
+ echo Fixing: Y:\dev\utils\platformapi
222
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\utils\platformapi"
223
+ echo Fixing: Y:\dev\utils\reloc
224
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\utils\reloc"
225
+ echo Fixing: Y:\dev\utils\symfix
226
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\utils\symfix"
227
+ echo Fixing: Y:\dev\utils\thumbview
228
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\utils\thumbview"
229
+ echo Fixing: Y:\dev\utils\tswalk
230
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\utils\tswalk"
231
+ echo Fixing: Y:\dev\utils\whts
232
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\utils\whts"
233
+ echo Fixing: Y:\dev\utils\winpos
234
+ node "Y:\dev\utils\npmglobalize\tools\fix-claude-ignore.ts" "Y:\dev\utils\winpos"
235
+
236
+ echo Done.
@@ -0,0 +1,66 @@
1
+ // ignorepatterns.json5 — Master list of .gitignore and .npmignore patterns
2
+ // Security patterns are auto-added without prompting when missing.
3
+ // Recommended patterns prompt the user (or auto-add with --conform).
4
+ {
5
+ gitignore: {
6
+ // Auto-added silently (security-sensitive — never publish these)
7
+ security: [
8
+ ".claude/",
9
+ ".env*",
10
+ "*cert*/",
11
+ "*.pem",
12
+ "*.key",
13
+ "*.p12",
14
+ "*.pfx",
15
+ "token",
16
+ "tokens",
17
+ "*.token"
18
+ ],
19
+ // Prompted or auto-added with --conform
20
+ recommended: [
21
+ "node_modules/",
22
+ ".globalize.json5",
23
+ ".globalize.jsonc",
24
+ "*.log",
25
+ ".DS_Store",
26
+ "Thumbs.db"
27
+ ],
28
+ // Only added when matching files exist in the project
29
+ presenceOnly: [
30
+ "*.mdf",
31
+ "*.ldf",
32
+ "*.ndf"
33
+ ]
34
+ },
35
+ npmignore: {
36
+ // Auto-added silently (security-sensitive)
37
+ security: [
38
+ ".claude/",
39
+ ".env*",
40
+ "token*",
41
+ "certs/",
42
+ "*cert*/"
43
+ ],
44
+ // Prompted or auto-added with --conform
45
+ recommended: [
46
+ ".git/",
47
+ ".gitignore",
48
+ ".gitattributes",
49
+ "cruft/",
50
+ "prev/",
51
+ "tests/",
52
+ "*.md",
53
+ "!README.md",
54
+ "*.log",
55
+ ".DS_Store",
56
+ "Thumbs.db",
57
+ "package-lock.json",
58
+ "*.ts",
59
+ "!*.d.ts",
60
+ "*.map",
61
+ "tsconfig.json",
62
+ ".vscode/",
63
+ ".globalize.json5"
64
+ ]
65
+ }
66
+ }
package/lib.d.ts CHANGED
@@ -9,7 +9,7 @@
9
9
  * Current approach uses synchronous child_process calls for stability and simplicity.
10
10
  * Consider library-based approach if async operations or cross-platform issues arise.
11
11
  */
12
- import { NpmCommonConfig } from '@bobfrankston/userconfig';
12
+ import { type NpmCommonConfig } from '@bobfrankston/userconfig';
13
13
  /** Options for the globalize operation */
14
14
  export interface GlobalizeOptions {
15
15
  /** Bump type: patch (default), minor, major */
package/lib.js CHANGED
@@ -1323,28 +1323,20 @@ ${colors.italic(' problems, but no promises.')}
1323
1323
  Note: npm now requires either 2FA or a granular token with bypass enabled.
1324
1324
  `;
1325
1325
  }
1326
- /** Recommended .gitignore patterns */
1327
- const RECOMMENDED_GITIGNORE = [
1328
- 'node_modules/',
1329
- '.env*',
1330
- '*cert*/',
1331
- '*.pem',
1332
- '*.key',
1333
- '*.p12',
1334
- '*.pfx',
1335
- 'token',
1336
- 'tokens',
1337
- '*.token',
1338
- '.globalize.json5',
1339
- '*.log',
1340
- '.DS_Store',
1341
- 'Thumbs.db',
1342
- '*.mdf',
1343
- '*.ldf',
1344
- '*.ndf'
1345
- ];
1346
- /** Extensions only recommended for .gitignore when matching files exist in the project */
1347
- const PRESENCE_ONLY_EXTENSIONS = new Set(['.mdf', '.ldf', '.ndf']);
1326
+ function loadIgnorePatterns() {
1327
+ const patternsPath = path.join(path.dirname(import.meta.filename), 'ignorepatterns.json5');
1328
+ const content = fs.readFileSync(patternsPath, 'utf-8');
1329
+ return JSON5.parse(content);
1330
+ }
1331
+ const IGNORE_PATTERNS = loadIgnorePatterns();
1332
+ /** All .gitignore patterns (security + recommended + presenceOnly) */
1333
+ const ALL_GITIGNORE = [...IGNORE_PATTERNS.gitignore.security, ...IGNORE_PATTERNS.gitignore.recommended, ...(IGNORE_PATTERNS.gitignore.presenceOnly ?? [])];
1334
+ /** All .npmignore patterns (security + recommended) */
1335
+ const ALL_NPMIGNORE = [...IGNORE_PATTERNS.npmignore.security, ...IGNORE_PATTERNS.npmignore.recommended];
1336
+ /** Presence-only extensions derived from data file */
1337
+ const PRESENCE_ONLY_EXTENSIONS = new Set((IGNORE_PATTERNS.gitignore.presenceOnly ?? [])
1338
+ .map(p => p.match(/^\*(\.\w+)$/)?.[1])
1339
+ .filter((e) => !!e));
1348
1340
  /** Check if any files with the given extension exist in dir (skips node_modules, .git, prev) */
1349
1341
  function hasFilesWithExtension(dir, ext) {
1350
1342
  const skip = new Set(['node_modules', '.git', 'prev']);
@@ -1364,9 +1356,9 @@ function hasFilesWithExtension(dir, ext) {
1364
1356
  }
1365
1357
  return check(dir);
1366
1358
  }
1367
- /** Filter RECOMMENDED_GITIGNORE to skip presence-only patterns when no matching files exist */
1359
+ /** Filter gitignore patterns to skip presence-only patterns when no matching files exist */
1368
1360
  function getApplicableGitignorePatterns(cwd) {
1369
- return RECOMMENDED_GITIGNORE.filter(pattern => {
1361
+ return ALL_GITIGNORE.filter(pattern => {
1370
1362
  const extMatch = pattern.match(/^\*(\.\w+)$/);
1371
1363
  if (extMatch && PRESENCE_ONLY_EXTENSIONS.has(extMatch[1])) {
1372
1364
  return hasFilesWithExtension(cwd, extMatch[1]);
@@ -1374,49 +1366,44 @@ function getApplicableGitignorePatterns(cwd) {
1374
1366
  return true;
1375
1367
  });
1376
1368
  }
1377
- /** Recommended .npmignore patterns */
1378
- const RECOMMENDED_NPMIGNORE = [
1379
- '.git/',
1380
- '.gitignore',
1381
- '.gitattributes',
1382
- 'certs/',
1383
- '*cert*/',
1384
- '.env*',
1385
- 'token*',
1386
- 'cruft/',
1387
- 'prev/',
1388
- 'tests/',
1389
- '*.md',
1390
- '!README.md',
1391
- '*.log',
1392
- '.DS_Store',
1393
- 'Thumbs.db',
1394
- 'package-lock.json',
1395
- '*.ts',
1396
- '!*.d.ts',
1397
- '*.map',
1398
- 'tsconfig.json',
1399
- '.vscode/',
1400
- '.globalize.json5'
1401
- ];
1402
- /** Check if ignore files need updates */
1369
+ /** Security-only gitignore patterns (always applicable) */
1370
+ function getSecurityGitignorePatterns() {
1371
+ return IGNORE_PATTERNS.gitignore.security;
1372
+ }
1373
+ /** Security-only npmignore patterns */
1374
+ function getSecurityNpmignorePatterns() {
1375
+ return IGNORE_PATTERNS.npmignore.security;
1376
+ }
1377
+ /** Check if a pattern is present in a list of lines (with or without trailing slash) */
1378
+ function lineHasPattern(lines, pattern) {
1379
+ return lines.some(line => line === pattern || line === pattern.replace('/', ''));
1380
+ }
1381
+ /** Check if ignore files need updates; separates security (auto-fix) from recommended (prompt) */
1403
1382
  function checkIgnoreFiles(cwd, options) {
1404
1383
  const changes = [];
1384
+ const securityChanges = [];
1405
1385
  // Check if asis is set in config or passed as option
1406
1386
  if (options.asis) {
1407
1387
  if (options.verbose) {
1408
1388
  console.log(colors.yellow(' Skipping ignore file checks (--asis or asis in config)'));
1409
1389
  }
1410
- return { needsUpdate: false, changes: [] };
1390
+ return { needsUpdate: false, changes: [], securityChanges: [] };
1411
1391
  }
1392
+ const securityGit = new Set(getSecurityGitignorePatterns());
1393
+ const securityNpm = new Set(getSecurityNpmignorePatterns());
1412
1394
  // Check .gitignore
1413
1395
  const gitignorePath = path.join(cwd, '.gitignore');
1414
1396
  if (fs.existsSync(gitignorePath)) {
1415
1397
  const content = fs.readFileSync(gitignorePath, 'utf-8');
1416
1398
  const lines = content.split('\n').map(l => l.trim());
1417
1399
  for (const pattern of getApplicableGitignorePatterns(cwd)) {
1418
- if (!lines.some(line => line === pattern || line === pattern.replace('/', ''))) {
1419
- changes.push(` .gitignore missing: ${pattern}`);
1400
+ if (!lineHasPattern(lines, pattern)) {
1401
+ if (securityGit.has(pattern)) {
1402
+ securityChanges.push(` .gitignore missing: ${pattern}`);
1403
+ }
1404
+ else {
1405
+ changes.push(` .gitignore missing: ${pattern}`);
1406
+ }
1420
1407
  }
1421
1408
  }
1422
1409
  }
@@ -1425,50 +1412,49 @@ function checkIgnoreFiles(cwd, options) {
1425
1412
  if (fs.existsSync(npmignorePath)) {
1426
1413
  const content = fs.readFileSync(npmignorePath, 'utf-8');
1427
1414
  const lines = content.split('\n').map(l => l.trim());
1428
- // Check for missing TypeScript exclusions
1429
- const hasMapExclusion = lines.some(line => line === '*.map');
1430
- const hasTsExclusion = lines.some(line => line === '*.ts');
1431
- const hasDtsInclude = lines.some(line => line === '!*.d.ts');
1432
- if (!hasMapExclusion) {
1433
- changes.push(' .npmignore missing: *.map');
1434
- }
1435
- if (!hasTsExclusion) {
1436
- changes.push(' .npmignore missing: *.ts');
1437
- }
1438
- if (!hasDtsInclude && hasTsExclusion) {
1439
- changes.push(' .npmignore missing: !*.d.ts (to keep type definitions)');
1440
- }
1441
- // Check for token files
1442
- if (!lines.some(line => line.includes('token'))) {
1443
- changes.push(' .npmignore missing: token* (security)');
1415
+ for (const pattern of ALL_NPMIGNORE) {
1416
+ if (!lineHasPattern(lines, pattern)) {
1417
+ if (securityNpm.has(pattern)) {
1418
+ securityChanges.push(` .npmignore missing: ${pattern}`);
1419
+ }
1420
+ else {
1421
+ changes.push(` .npmignore missing: ${pattern}`);
1422
+ }
1423
+ }
1444
1424
  }
1445
1425
  }
1446
- return { needsUpdate: changes.length > 0, changes };
1426
+ const needsUpdate = changes.length > 0 || securityChanges.length > 0;
1427
+ return { needsUpdate, changes, securityChanges };
1447
1428
  }
1448
- /** Update ignore files to conform to best practices */
1449
- function conformIgnoreFiles(cwd) {
1450
- // Ensure .gitattributes for LF line endings (use proper helper)
1451
- ensureGitattributes(cwd);
1452
- // Configure git for LF line endings if in a git repo
1453
- if (fs.existsSync(path.join(cwd, '.git'))) {
1454
- try {
1455
- const result1 = runCommand('git', ['config', 'core.autocrlf', 'false'], { cwd, silent: true });
1456
- const result2 = runCommand('git', ['config', 'core.eol', 'lf'], { cwd, silent: true });
1457
- if (result1.success && result2.success) {
1458
- console.log(colors.green(' Configured git for LF line endings'));
1429
+ /** Update ignore files to conform to best practices.
1430
+ * securityOnly: if true, only add security patterns (auto-fix without prompting). */
1431
+ function conformIgnoreFiles(cwd, securityOnly = false) {
1432
+ if (!securityOnly) {
1433
+ // Ensure .gitattributes for LF line endings (use proper helper)
1434
+ ensureGitattributes(cwd);
1435
+ // Configure git for LF line endings if in a git repo
1436
+ if (fs.existsSync(path.join(cwd, '.git'))) {
1437
+ try {
1438
+ const result1 = runCommand('git', ['config', 'core.autocrlf', 'false'], { cwd, silent: true });
1439
+ const result2 = runCommand('git', ['config', 'core.eol', 'lf'], { cwd, silent: true });
1440
+ if (result1.success && result2.success) {
1441
+ console.log(colors.green(' ✓ Configured git for LF line endings'));
1442
+ }
1443
+ }
1444
+ catch (error) {
1445
+ // Silently ignore git config errors
1459
1446
  }
1460
- }
1461
- catch (error) {
1462
- // Silently ignore git config errors
1463
1447
  }
1464
1448
  }
1449
+ const patternsGit = securityOnly ? getSecurityGitignorePatterns() : getApplicableGitignorePatterns(cwd);
1450
+ const patternsNpm = securityOnly ? getSecurityNpmignorePatterns() : ALL_NPMIGNORE;
1465
1451
  // Update .gitignore
1466
1452
  const gitignorePath = path.join(cwd, '.gitignore');
1467
1453
  if (fs.existsSync(gitignorePath)) {
1468
1454
  const content = fs.readFileSync(gitignorePath, 'utf-8');
1469
1455
  const lines = new Set(content.split('\n').map(l => l.trim()).filter(l => l && !l.startsWith('#')));
1470
1456
  let updated = false;
1471
- for (const pattern of getApplicableGitignorePatterns(cwd)) {
1457
+ for (const pattern of patternsGit) {
1472
1458
  const normalized = pattern.replace('/', '');
1473
1459
  if (!lines.has(pattern) && !lines.has(normalized)) {
1474
1460
  lines.add(pattern);
@@ -1478,7 +1464,7 @@ function conformIgnoreFiles(cwd) {
1478
1464
  if (updated) {
1479
1465
  const newContent = Array.from(lines).sort().join('\n') + '\n';
1480
1466
  fs.writeFileSync(gitignorePath, newContent);
1481
- console.log(colors.green(' ✓ Updated .gitignore'));
1467
+ console.log(colors.cyan(' ✓ Auto-added security patterns to .gitignore'));
1482
1468
  }
1483
1469
  }
1484
1470
  // Update .npmignore
@@ -1488,21 +1474,16 @@ function conformIgnoreFiles(cwd) {
1488
1474
  const lines = content.split('\n').map(l => l.trim());
1489
1475
  const newLines = new Set(lines.filter(l => l));
1490
1476
  let updated = false;
1491
- // Add TypeScript exclusions
1492
- if (!newLines.has('*.ts')) {
1493
- newLines.add('*.ts');
1494
- updated = true;
1495
- }
1496
- if (!newLines.has('!*.d.ts')) {
1497
- newLines.add('!*.d.ts');
1498
- updated = true;
1499
- }
1500
- if (!newLines.has('*.map')) {
1501
- newLines.add('*.map');
1502
- updated = true;
1477
+ if (!securityOnly) {
1478
+ // Add TypeScript exclusions (only in full conform)
1479
+ for (const ts of ['*.ts', '!*.d.ts', '*.map']) {
1480
+ if (!newLines.has(ts)) {
1481
+ newLines.add(ts);
1482
+ updated = true;
1483
+ }
1484
+ }
1503
1485
  }
1504
- // Add other missing patterns
1505
- for (const pattern of RECOMMENDED_NPMIGNORE) {
1486
+ for (const pattern of patternsNpm) {
1506
1487
  if (!newLines.has(pattern)) {
1507
1488
  newLines.add(pattern);
1508
1489
  updated = true;
@@ -1511,7 +1492,7 @@ function conformIgnoreFiles(cwd) {
1511
1492
  if (updated) {
1512
1493
  const newContent = Array.from(newLines).join('\n') + '\n';
1513
1494
  fs.writeFileSync(npmignorePath, newContent);
1514
- console.log(colors.green(' ✓ Updated .npmignore'));
1495
+ console.log(colors.cyan(' ✓ Auto-added security patterns to .npmignore'));
1515
1496
  }
1516
1497
  }
1517
1498
  }
@@ -1561,7 +1542,7 @@ function ensureNpmignore(cwd) {
1561
1542
  const npmignorePath = path.join(cwd, '.npmignore');
1562
1543
  if (!fs.existsSync(npmignorePath)) {
1563
1544
  console.log(' Creating .npmignore...');
1564
- const content = RECOMMENDED_NPMIGNORE.join('\n') + '\n';
1545
+ const content = ALL_NPMIGNORE.join('\n') + '\n';
1565
1546
  fs.writeFileSync(npmignorePath, content);
1566
1547
  console.log(colors.green(' ✓ .npmignore created'));
1567
1548
  }
@@ -1996,7 +1977,28 @@ export async function globalize(cwd, options = {}, configOptions = {}) {
1996
1977
  // Check ignore files first (unless cleanup mode)
1997
1978
  if (!cleanup && !asis) {
1998
1979
  const checkResult = checkIgnoreFiles(cwd, { conform, asis, verbose });
1999
- if (checkResult.needsUpdate) {
1980
+ // Auto-add security patterns without prompting
1981
+ if (checkResult.securityChanges.length > 0) {
1982
+ const secGit = [];
1983
+ const secNpm = [];
1984
+ for (const change of checkResult.securityChanges) {
1985
+ if (change.includes('.gitignore')) {
1986
+ secGit.push(change.replace(' .gitignore missing: ', '').trim());
1987
+ }
1988
+ else if (change.includes('.npmignore')) {
1989
+ secNpm.push(change.replace(' .npmignore missing: ', '').trim());
1990
+ }
1991
+ }
1992
+ conformIgnoreFiles(cwd, true);
1993
+ if (secGit.length > 0) {
1994
+ console.log(colors.cyan(' .gitignore: auto-added ') + secGit.join(', '));
1995
+ }
1996
+ if (secNpm.length > 0) {
1997
+ console.log(colors.cyan(' .npmignore: auto-added ') + secNpm.join(', '));
1998
+ }
1999
+ }
2000
+ // Prompt for remaining recommended patterns (or auto-apply with --conform)
2001
+ if (checkResult.changes.length > 0) {
2000
2002
  console.log(colors.yellow('\nRecommended additions to ignore files:'));
2001
2003
  // Group changes by file for more compact display
2002
2004
  const gitignoreChanges = [];
@@ -2044,7 +2046,7 @@ export async function globalize(cwd, options = {}, configOptions = {}) {
2044
2046
  }
2045
2047
  }
2046
2048
  }
2047
- else if (verbose) {
2049
+ else if (checkResult.securityChanges.length === 0 && verbose) {
2048
2050
  console.log(colors.green('✓ Ignore files look good'));
2049
2051
  console.log('');
2050
2052
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bobfrankston/npmglobalize",
3
- "version": "1.0.107",
3
+ "version": "1.0.108",
4
4
  "description": "Transform file: dependencies to npm versions for publishing",
5
5
  "main": "index.js",
6
6
  "type": "module",
@@ -31,7 +31,7 @@
31
31
  "url": "https://github.com/BobFrankston/npmglobalize.git"
32
32
  },
33
33
  "dependencies": {
34
- "@bobfrankston/userconfig": "^1.0.3",
34
+ "@bobfrankston/userconfig": "^1.0.4",
35
35
  "@npmcli/package-json": "^7.0.4",
36
36
  "json5": "^2.2.3",
37
37
  "libnpmversion": "^8.0.3",
@@ -0,0 +1,8 @@
1
+ /**
2
+ * fix-claude-ignore.ts — Add .claude/ to .gitignore and .npmignore in a given directory.
3
+ * Only modifies files that exist and are missing the entry.
4
+ *
5
+ * Usage: node fix-claude-ignore.ts <directory>
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=fix-claude-ignore.d.ts.map
@@ -0,0 +1,51 @@
1
+ /**
2
+ * fix-claude-ignore.ts — Add .claude/ to .gitignore and .npmignore in a given directory.
3
+ * Only modifies files that exist and are missing the entry.
4
+ *
5
+ * Usage: node fix-claude-ignore.ts <directory>
6
+ */
7
+ import fs from "fs";
8
+ import path from "path";
9
+ const PATTERN = ".claude/";
10
+ function addPattern(filePath) {
11
+ if (!fs.existsSync(filePath))
12
+ return;
13
+ const content = fs.readFileSync(filePath, "utf-8");
14
+ const lines = content.split("\n").map(l => l.trim());
15
+ // Already present?
16
+ if (lines.some(l => l === ".claude/" || l === ".claude")) {
17
+ console.log(` ${path.basename(filePath)}: already has .claude/`);
18
+ return;
19
+ }
20
+ // Insert after other dot-entries for readability, or at end
21
+ let insertIdx = -1;
22
+ for (let i = 0; i < lines.length; i++) {
23
+ if (lines[i].startsWith(".") && !lines[i].startsWith("!")) {
24
+ insertIdx = i + 1; // after last dot-pattern
25
+ }
26
+ }
27
+ const rawLines = content.split("\n");
28
+ if (insertIdx < 0)
29
+ insertIdx = rawLines.length;
30
+ rawLines.splice(insertIdx, 0, PATTERN);
31
+ // Ensure trailing newline
32
+ let result = rawLines.join("\n");
33
+ if (!result.endsWith("\n"))
34
+ result += "\n";
35
+ fs.writeFileSync(filePath, result);
36
+ console.log(` \x1b[36m${path.basename(filePath)}: added .claude/\x1b[0m`);
37
+ }
38
+ // --- CLI ---
39
+ const dir = process.argv[2];
40
+ if (!dir) {
41
+ console.error("Usage: node fix-claude-ignore.ts <directory>");
42
+ process.exit(1);
43
+ }
44
+ const resolved = path.resolve(dir);
45
+ if (!fs.existsSync(resolved) || !fs.statSync(resolved).isDirectory()) {
46
+ console.error(`Not a directory: ${resolved}`);
47
+ process.exit(1);
48
+ }
49
+ addPattern(path.join(resolved, ".gitignore"));
50
+ addPattern(path.join(resolved, ".npmignore"));
51
+ //# sourceMappingURL=fix-claude-ignore.js.map
@@ -0,0 +1,11 @@
1
+ /**
2
+ * scan-claude.ts — Find all directories under y:\dev that contain a .claude/ subdirectory.
3
+ * Skips prev/, node_modules/, .git/, and does not follow symlinks.
4
+ *
5
+ * Usage:
6
+ * node scan-claude.ts # writes fix-claude.cmd (dry-run list)
7
+ * node scan-claude.ts --run # writes AND executes fixes directly
8
+ * node scan-claude.ts --out FILE # custom output filename
9
+ */
10
+ export {};
11
+ //# sourceMappingURL=scan-claude.d.ts.map
@@ -0,0 +1,88 @@
1
+ /**
2
+ * scan-claude.ts — Find all directories under y:\dev that contain a .claude/ subdirectory.
3
+ * Skips prev/, node_modules/, .git/, and does not follow symlinks.
4
+ *
5
+ * Usage:
6
+ * node scan-claude.ts # writes fix-claude.cmd (dry-run list)
7
+ * node scan-claude.ts --run # writes AND executes fixes directly
8
+ * node scan-claude.ts --out FILE # custom output filename
9
+ */
10
+ import fs from "fs";
11
+ import path from "path";
12
+ import { execSync } from "child_process";
13
+ const SKIP_LOWER = new Set(["prev", "node_modules", ".git", "recover", "cruft"]);
14
+ const ROOT = "Y:\\dev";
15
+ function scan(dir, results) {
16
+ let entries;
17
+ try {
18
+ entries = fs.readdirSync(dir, { withFileTypes: true });
19
+ }
20
+ catch {
21
+ return; // permission denied, etc.
22
+ }
23
+ for (const entry of entries) {
24
+ if (SKIP_LOWER.has(entry.name.toLowerCase()))
25
+ continue;
26
+ if (entry.isSymbolicLink())
27
+ continue;
28
+ if (!entry.isDirectory())
29
+ continue;
30
+ const full = path.join(dir, entry.name);
31
+ if (entry.name === ".claude") {
32
+ results.push(dir); // parent has a .claude dir
33
+ continue; // don't descend into .claude itself
34
+ }
35
+ scan(full, results);
36
+ }
37
+ }
38
+ // --- CLI ---
39
+ const args = process.argv.slice(2);
40
+ const run = args.includes("--run");
41
+ const outIdx = args.indexOf("--out");
42
+ const defaultOut = path.join(path.dirname(import.meta.filename), "fix-claude.cmd");
43
+ const outFile = outIdx >= 0 && args[outIdx + 1] ? args[outIdx + 1] : defaultOut;
44
+ console.log(`Scanning ${ROOT} ...`);
45
+ const dirs = [];
46
+ scan(ROOT, dirs);
47
+ dirs.sort();
48
+ if (dirs.length === 0) {
49
+ console.log("No directories with .claude/ found.");
50
+ process.exit(0);
51
+ }
52
+ console.log(`Found ${dirs.length} director${dirs.length === 1 ? "y" : "ies"} with .claude/:\n`);
53
+ for (const d of dirs) {
54
+ console.log(` ${d}`);
55
+ }
56
+ // Build .cmd content
57
+ const fixerPath = path.resolve(path.dirname(import.meta.filename), "fix-claude-ignore.ts");
58
+ const lines = [
59
+ "@echo off",
60
+ `REM Generated by scan-claude.ts on ${new Date().toISOString().slice(0, 10)}`,
61
+ `REM ${dirs.length} directories with .claude/ found under ${ROOT}`,
62
+ "",
63
+ ];
64
+ for (const d of dirs) {
65
+ lines.push(`echo Fixing: ${d}`);
66
+ lines.push(`node "${fixerPath}" "${d}"`);
67
+ }
68
+ lines.push("");
69
+ lines.push("echo Done.");
70
+ const cmdContent = lines.join("\r\n") + "\r\n";
71
+ const outPath = path.resolve(outFile);
72
+ fs.writeFileSync(outPath, cmdContent);
73
+ console.log(`\nWrote ${outPath}`);
74
+ if (run) {
75
+ console.log("\n--run specified, executing fixes...\n");
76
+ for (const d of dirs) {
77
+ console.log(`Fixing: ${d}`);
78
+ try {
79
+ const out = execSync(`node "${fixerPath}" "${d}"`, { encoding: "utf-8" });
80
+ if (out.trim())
81
+ console.log(out.trimEnd());
82
+ }
83
+ catch (e) {
84
+ console.error(` ERROR: ${e.message}`);
85
+ }
86
+ }
87
+ }
88
+ //# sourceMappingURL=scan-claude.js.map
@@ -1,45 +0,0 @@
1
- {
2
- "permissions": {
3
- "allow": [
4
- "Bash(npx tsc:*)",
5
- "Bash(npm run build:*)",
6
- "Bash(node cli.js:*)",
7
- "Bash(npm view:*)",
8
- "Bash(node:*)",
9
- "Bash(git add:*)",
10
- "Bash(git commit:*)",
11
- "Bash(cmd /c \"del \\\\?\\\\Y:\\\\dev\\\\utils\\\\npmglobalize\\\\nul\")",
12
- "Bash(dir /T:W \"y:\\\\dev\\\\utils\\\\npmglobalize\\\\lib.*\")",
13
- "Bash(ls:*)",
14
- "Bash(dir:*)",
15
- "Bash(findstr:*)",
16
- "Bash(npm access:*)",
17
- "Bash(gh repo view:*)",
18
- "Bash(npmglobalize)",
19
- "Bash(kill:*)",
20
- "Bash(test:*)",
21
- "Bash(cmd.exe /c \"dir y:\\\\dev\\\\homecontrol\\\\utils\\\\addone /a\")",
22
- "Bash(cmd.exe /c \"dir y:\\\\dev\\\\homecontrol\\\\utils\\\\addone\\\\*.* /a\")",
23
- "Bash(wsl ls:*)",
24
- "Bash(cmd.exe /c \"dir y:\\\\dev\\\\homecontrol\\\\utils\\\\addone /a /b\")",
25
- "Bash(cmd.exe /c \"dir /a /b y:\\\\dev\\\\homecontrol\\\\utils\\\\addone\")",
26
- "Bash(icacls:*)",
27
- "Bash(npm install:*)",
28
- "Bash(echo:*)",
29
- "Bash(onboard --version:*)",
30
- "Bash(onboard --help:*)",
31
- "Bash(npmglobalize:*)",
32
- "Bash(npm whoami:*)",
33
- "Bash(where npmglobalize:*)",
34
- "Bash(npm audit:*)",
35
- "Bash(wsl npm:*)",
36
- "Bash(find:*)",
37
- "Bash(npx globalize:*)",
38
- "Bash(globalize:*)",
39
- "Bash(wztest:*)",
40
- "Bash(xargs grep:*)",
41
- "Bash(cmd.exe:*)",
42
- "Bash(cd y:/dev/utils/npmglobalize && npx npmglobalize)"
43
- ]
44
- }
45
- }