@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 +236 -0
- package/ignorepatterns.json5 +66 -0
- package/lib.d.ts +1 -1
- package/lib.js +106 -104
- package/package.json +2 -2
- package/tools/fix-claude-ignore.d.ts +8 -0
- package/tools/fix-claude-ignore.js +51 -0
- package/tools/scan-claude.d.ts +11 -0
- package/tools/scan-claude.js +88 -0
- package/.claude/settings.local.json +0 -45
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
|
-
|
|
1327
|
-
const
|
|
1328
|
-
'
|
|
1329
|
-
|
|
1330
|
-
|
|
1331
|
-
|
|
1332
|
-
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
|
|
1339
|
-
|
|
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
|
|
1359
|
+
/** Filter gitignore patterns to skip presence-only patterns when no matching files exist */
|
|
1368
1360
|
function getApplicableGitignorePatterns(cwd) {
|
|
1369
|
-
return
|
|
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
|
-
/**
|
|
1378
|
-
|
|
1379
|
-
|
|
1380
|
-
|
|
1381
|
-
|
|
1382
|
-
|
|
1383
|
-
|
|
1384
|
-
|
|
1385
|
-
|
|
1386
|
-
|
|
1387
|
-
'
|
|
1388
|
-
|
|
1389
|
-
|
|
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
|
|
1419
|
-
|
|
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
|
-
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
|
|
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
|
-
|
|
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
|
-
|
|
1450
|
-
|
|
1451
|
-
|
|
1452
|
-
|
|
1453
|
-
|
|
1454
|
-
|
|
1455
|
-
|
|
1456
|
-
|
|
1457
|
-
|
|
1458
|
-
|
|
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
|
|
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.
|
|
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
|
-
|
|
1492
|
-
|
|
1493
|
-
|
|
1494
|
-
|
|
1495
|
-
|
|
1496
|
-
|
|
1497
|
-
|
|
1498
|
-
|
|
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
|
-
|
|
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.
|
|
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 =
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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
|
-
}
|