Skip to content

Commit 4f8b980

Browse files
committed
chore: add SubscriptionUrl customization for debugging
1 parent 3b37419 commit 4f8b980

File tree

4 files changed

+27
-19
lines changed

4 files changed

+27
-19
lines changed

builder/source/build.ts

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,16 @@ import { CreateBanner } from './banner/index.js'
1212
export type BuildOptions = {
1313
Minify: boolean
1414
UseCache: boolean
15-
BuildType: 'production' | 'development'
15+
BuildType: 'production' | 'development',
16+
SubscriptionUrl: string
1617
}
1718

1819
export async function Build(OptionsParam?: BuildOptions): Promise<void> {
1920
const Options = await Zod.strictObject({
2021
Minify: Zod.boolean(),
2122
UseCache: Zod.boolean(),
22-
BuildType: Zod.enum(['production', 'development'])
23+
BuildType: Zod.enum(['production', 'development']),
24+
SubscriptionUrl: Zod.string().transform(Value => new URL(Value)).default(new URL('https://cdn.jsdelivr.net/npm/@filteringdev/tinyshield@latest/dist/tinyShield.user.js'))
2325
}).parseAsync(OptionsParam)
2426

2527
let MatchingDomains: Set<string> = new Set<string>()
@@ -37,15 +39,20 @@ export async function Build(OptionsParam?: BuildOptions): Promise<void> {
3739
ConvertWildcardSuffixToRegexPattern(Domain).forEach(GeneratedPattern => MatchingDomains.add(GeneratedPattern))
3840
}
3941
}
42+
43+
let ProjectRoot = Process.cwd()
44+
if (Process.cwd().endsWith('/builder')) {
45+
ProjectRoot = Process.cwd() + '/..'
46+
}
4047

4148
const Banner = CreateBanner({
42-
Version: (await PackageJson.load(Process.cwd())).content.version ?? '0.0.0',
49+
Version: (await PackageJson.load(ProjectRoot)).content.version ?? '0.0.0',
4350
BuildType: Options.BuildType ?? 'production',
4451
Domains: MatchingDomains,
4552
Name: 'tinyShield',
4653
Namespace: 'https://github.com/FilteringDev/tinyShield',
47-
DownloadURL: new URL('https://cdn.jsdelivr.net/npm/@filteringdev/tinyshield@latest/dist/tinyShield.user.js'),
48-
UpdateURL: new URL('https://cdn.jsdelivr.net/npm/@filteringdev/tinyshield@latest/dist/tinyShield.user.js'),
54+
DownloadURL: Options.SubscriptionUrl,
55+
UpdateURL: Options.SubscriptionUrl,
4956
HomepageURL: new URL('https://github.com/FilteringDev/tinyShield'),
5057
SupportURL: new URL('https://github.com/FilteringDev/tinyShield/issues'),
5158
License: 'MPL-2.0',
@@ -57,10 +64,6 @@ export async function Build(OptionsParam?: BuildOptions): Promise<void> {
5764
}
5865
})
5966

60-
let ProjectRoot = Process.cwd()
61-
if (Process.cwd().endsWith('/builder')) {
62-
ProjectRoot = Process.cwd() + '/..'
63-
}
6467
await ESBuild.build({
6568
entryPoints: [ProjectRoot + '/userscript/source/index.ts'],
6669
bundle: true,

builder/source/buildci.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ let ParsedArgv = (await PostProcessing<BuildOptions>(PreProcessing(Process.argv)
77
let Options = await Zod.strictObject({
88
Minify: Zod.string().pipe(Zod.enum(['true', 'false'])).transform(Value => Value === 'true').default(true),
99
UseCache: Zod.string().pipe(Zod.enum(['true', 'false'])).transform(Value => Value === 'true').default(true),
10-
BuildType: Zod.enum(['production', 'development'])
10+
BuildType: Zod.enum(['production', 'development']),
11+
SubscriptionUrl: Zod.string()
1112
}).parseAsync(ParsedArgv)
1213

1314
await Build(Options)

builder/source/debug.ts

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,21 @@ import * as Crypto from 'node:crypto'
55
import { RunDebugServer } from './utils/http-server.js'
66
import { Build } from './build.js'
77

8-
const ProcessCwd = Process.cwd()
8+
let ProjectRoot = Process.cwd()
9+
if (Process.cwd().endsWith('/builder')) {
10+
ProjectRoot = Process.cwd().replaceAll(/\/builder$/g, '')
11+
}
912
const WatchingGlob = [];
1013
['builder/', 'userscript/', ''].forEach(Dir => {
11-
WatchingGlob.push(`${ProcessCwd}/${Dir}sources/**/*.ts`)
12-
WatchingGlob.push(`${ProcessCwd}/${Dir}sources/**/*.json`)
13-
WatchingGlob.push(`${ProcessCwd}/${Dir}sources/**/*.txt`)
14+
WatchingGlob.push(`${ProjectRoot}/${Dir}sources/**/*.ts`)
15+
WatchingGlob.push(`${ProjectRoot}/${Dir}sources/**/*.json`)
16+
WatchingGlob.push(`${ProjectRoot}/${Dir}sources/**/*.txt`)
1417
})
1518
const Watcher = Chokidar.watch([
16-
`${ProcessCwd}/sources/**/*.ts`,
17-
`${ProcessCwd}/sources/**/*.json`
19+
`${ProjectRoot}/sources/**/*.ts`,
20+
`${ProjectRoot}/sources/**/*.json`
1821
], {
19-
cwd: ProcessCwd,
22+
cwd: ProjectRoot,
2023
ignored: '**/node_modules/**',
2124
})
2225

@@ -27,11 +30,12 @@ Watcher.on('all', (WatcherEvent, WatcherPath) => {
2730
BuildCooldownTimer = setTimeout(async () => {
2831
console.log(`Detected file change (${WatcherEvent}):`, WatcherPath)
2932
ShouldPreventHTTPResponse = true
30-
await Build({ Minify: false, UseCache: true, BuildType: 'development' })
33+
await Build({ Minify: false, UseCache: true, BuildType: 'development', SubscriptionUrl: `http://localhost:${RandomPort}/tinyShield.dev.user.js` })
3134
ShouldPreventHTTPResponse = false
3235
}, 1500)
3336
})
3437

3538
let RandomPort = Crypto.randomInt(8000, 8999)
39+
await Build({ Minify: false, UseCache: true, BuildType: 'development', SubscriptionUrl: `http://localhost:${RandomPort}/tinyShield.dev.user.js` })
3640
RunDebugServer(RandomPort, ['tinyShield.dev.user.js'], ShouldPreventHTTPResponse)
3741
console.log(`Debug HTTP server running on http://localhost:${RandomPort}/tinyShield.dev.user.js`)

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"type": "module",
66
"scripts": {
77
"build:interface": "esbuild userscript/source/interface.ts --bundle --format=esm --splitting --sourcemap --target=es2024 --external:/node_modules --outdir=dist && tsc userscript/source/interface.ts --outDir dist/types --declaration --emitDeclarationOnly --skipLibCheck",
8-
"build:userscript": "npm run build -w builder -- --minify true --use-cache false --build-type production",
8+
"build:userscript": "npm run build -w builder -- --minify true --use-cache false --build-type production --SubscriptionUrl https://cdn.jsdelivr.net/npm/@filteringdev/tinyshield@latest/dist/tinyShield.user.js",
99
"build": "npm run build:interface && npm run build:userscript",
1010
"debug": "npm run debug -w builder",
1111
"lint": "npm run lint -w builder && npm run lint -w userscript"

0 commit comments

Comments
 (0)