Skip to content

Commit 202f408

Browse files
authored
v3.1.0 (#32)
* Chrome min version: 135.0 - support `Float16Array` in object clone
1 parent 05a56fe commit 202f408

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

59 files changed

+1731
-2949
lines changed

.github/ISSUE_TEMPLATE/bug_report.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ If applicable, add screenshots to help explain your problem.
2525
**Desktop (please complete the following information):**
2626

2727
- OS: [e.g. iOS]
28-
- Browser version [e.g. chrome 100]
28+
- Browser version [e.g. Chrome 100]
2929
- Version [e.g. 3.0.2]
3030

3131
**Additional context**

.gitignore

+5-12
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,11 @@
1-
2-
# Dependency directories
1+
# autogenerated
32
node_modules/
4-
5-
# ide
6-
.idea
7-
8-
# os
9-
.DS_Store
10-
11-
# application autogenerated files not for git
3+
public/build/
124
*.js.map
135
*.zip
146
*.crx
157
manifest.json
16-
bundle/js
17-
*.log
188

9+
# miscellaneous
10+
.DS_Store
11+
tmp/

.idea/.gitignore

+8
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/codeStyles/Project.xml

+59
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/codeStyles/codeStyleConfig.xml

+5
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/deno.xml

+6
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/jsLibraryMappings.xml

+6
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/jsdiff.iml

+14
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/modules.xml

+8
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/vcs.xml

+6
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.prettierignore

-3
This file was deleted.

.prettierrc.json

-6
This file was deleted.

.vscode/extensions.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
{
2-
"recommendations": ["esbenp.prettier-vscode", "jebbs.plantuml"]
2+
"recommendations": ["jebbs.plantuml", "denoland.vscode-deno"]
33
}

.vscode/settings.json

+12-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
{
2-
"json.schemaDownload.enable": true,
2+
"deno.enable": true,
3+
"editor.defaultFormatter": "denoland.vscode-deno",
34
"editor.formatOnSave": true,
5+
"editor.formatOnSaveMode": "file",
6+
"json.schemaDownload.enable": true,
47
"json.schemas": [
58
{
69
"fileMatch": ["manifest.json"],
@@ -9,5 +12,12 @@
912
],
1013
"typescript.tsdk": "node_modules/typescript/lib",
1114
"spellright.language": ["en-US-10-1."],
12-
"spellright.documentTypes": ["latex", "plaintext", "markdown"]
15+
"spellright.documentTypes": [
16+
"latex",
17+
"plaintext",
18+
"markdown"
19+
],
20+
"[typescript]": {
21+
"editor.defaultFormatter": "denoland.vscode-deno"
22+
}
1323
}

Makefile

+40-48
Original file line numberDiff line numberDiff line change
@@ -1,62 +1,54 @@
1-
ZIP_CHROME_FILE="extension.chrome.zip"
2-
ZIP_FIREFOX_FILE="extension.firefox.zip"
3-
HASH_ALG="sha384"
4-
51
.PHONY:
6-
install clean all lint test dev prod zip_chrome zip_firefox
2+
install clean install dev valid test prod all
73
tune2chrome tune2firefox
8-
9-
install:
10-
npm i -g pnpm
11-
pnpm i
4+
.DEFAULT_GOAL := dev
5+
6+
CHROME_ZIP = "extension.chrome.zip"
7+
CHROME_MANIFEST = ./manifest.chrome.json
8+
FIREFOX_ZIP = "extension.firefox.zip"
9+
FIREFOX_MANIFEST = ./manifest.firefox.json
10+
DENO_DEV = NODE_ENV=development deno run --watch
11+
DENO_PROD = NODE_ENV=production deno run
12+
DENO_OPTIONS = --allow-env --allow-read --allow-run
13+
BUILD_SCRIPT = ./build.ts
14+
OUTPUT_DIR = ./public/
15+
BUILD_DIR = ./public/build/
1216

1317
clean:
14-
rm -rf ./node_modules
15-
rm -rf $(ZIP_CHROME_FILE) $(ZIP_FIREFOX_FILE)
16-
rm -rf ./bundle/js/
17-
18-
all:
19-
make lint
20-
make test
21-
make prod
22-
make zip_firefox
23-
make zip_chrome
18+
rm -rf ./node_modules ./deno.lock $(BUILD_DIR) $(CHROME_ZIP) $(FIREFOX_ZIP)
2419

25-
lint:
26-
pnpm exec prettier . --write
27-
pnpm exec tsc -noEmit
28-
29-
test:
30-
pnpm exec tsx --test
20+
install:
21+
deno install --allow-scripts
3122

3223
dev:
33-
rm -rf ./bundle/js/
34-
NODE_OPTIONS="--import=tsx --trace-deprecation" \
35-
pnpm exec webpack --progress --watch --mode=development
24+
rm -rf $(BUILD_DIR)
25+
$(DENO_DEV) $(DENO_OPTIONS) $(BUILD_SCRIPT)
3626

37-
prod:
38-
rm -rf ./bundle/js/
39-
NODE_OPTIONS="--import=tsx" \
40-
NODE_ENV="production" \
41-
time pnpm exec webpack --mode=production
27+
valid:
28+
deno fmt --unstable-component
29+
deno lint
4230

43-
zip_chrome:
44-
make tune2chrome
45-
rm -rf $(ZIP_CHROME_FILE)
46-
zip -r $(ZIP_CHROME_FILE) ./bundle ./manifest.json > /dev/null
47-
zip --delete $(ZIP_CHROME_FILE) "bundle/js/firefox/*"
48-
FILE_HASH=$$(openssl dgst -$(HASH_ALG) -binary $(ZIP_CHROME_FILE) | openssl base64 -A); \
49-
echo "$(ZIP_CHROME_FILE) $(HASH_ALG):$$FILE_HASH"
31+
test: valid
32+
deno test --no-check --trace-leaks --reporter=dot
5033

51-
zip_firefox:
52-
make tune2firefox
53-
rm -rf $(ZIP_FIREFOX_FILE)
54-
zip -r $(ZIP_FIREFOX_FILE) ./bundle ./manifest.json > /dev/null
55-
FILE_HASH=$$(openssl dgst -$(HASH_ALG) -binary $(ZIP_FIREFOX_FILE) | openssl base64 -A); \
56-
echo "$(ZIP_FIREFOX_FILE) $(HASH_ALG):$$FILE_HASH"
34+
prod: test
35+
rm -rf $(BUILD_DIR)
36+
$(DENO_PROD) $(DENO_OPTIONS) $(BUILD_SCRIPT)
5737

5838
tune2chrome:
59-
cp manifest.chrome.json manifest.json
39+
cp $(CHROME_MANIFEST) manifest.json
6040

6141
tune2firefox:
62-
cp manifest.firefox.json manifest.json
42+
cp $(FIREFOX_MANIFEST) manifest.json
43+
44+
all: prod
45+
make tune2firefox
46+
rm -rf $(FIREFOX_ZIP)
47+
zip -r $(FIREFOX_ZIP) $(OUTPUT_DIR) ./manifest.json > /dev/null
48+
49+
make tune2chrome
50+
rm -rf $(CHROME_ZIP)
51+
zip -r $(CHROME_ZIP) $(OUTPUT_DIR) ./manifest.json > /dev/null
52+
zip --delete $(CHROME_ZIP) "$(BUILD_DIR)firefox/*" > /dev/null
53+
54+
tree -Dis $(BUILD_DIR) *.zip

README.md

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
### ![](./bundle/img/panel-icon28.png) JSDiff
1+
### ![](public/img/panel-icon28.png) JSDiff
22

33
An extension for developers that enhances the console API by incorporating the ability to compare objects and adds a `JSDiff` tab (parallel to Elements, Network panels) within your dev-tools for viewing the results.
44

@@ -101,7 +101,7 @@ declare global {
101101
### Serialization by types
102102

103103
| Input | Output |
104-
| ------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- |
104+
|---------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------|
105105
| XMLHttpRequest<sup>[1]</sup> | ƒ XMLHttpRequest⟪native⟫ |
106106
| function test(){}<sup>[1]</sup> | ƒ test⟪1374b28d22b674e53a044425556a9cd48b82fd5aba3bf19e3545d51704227b10⟫ |
107107
| document.body | {0001}<sup>[2,3]</sup> DOM⟪BODY⟫ |
@@ -110,7 +110,7 @@ declare global {
110110
| 98765432109876543210n | BigInt⟪98765432109876543210⟫ |
111111
| void 0 | ⟪undefined⟫ |
112112
| /example/i | RegExp⟪/example/i⟫ |
113-
| new URL('https:\//example.com/') | URL⟪https:\//example.com/⟫ |
113+
| new URL('https:\//example.com/') | URL⟪https:\//example.com\/ |
114114
| Symbol('example') | {0001}<sup>[3]</sup> Symbol(example) |
115115
| Symbol.for('global') | Symbol(global) |
116116
| (obj = {key: 1}, {first: obj, second: obj}) | {"first": {"key": 1}, "second": "[0002]<sup>[4]</sup> Object⟪♻️⟫"} |
@@ -150,7 +150,7 @@ declare global {
150150
### Build instructions
151151

152152
- Linux
153-
- node 22.14 (LTS)
153+
- deno 2.2.8
154154

155155
```sh
156156
make install # install dependencies

build.ts

+51
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
import { build, type BuildOptions, context, stop } from 'esbuild';
2+
import manifest from './manifest.json' with { type: 'json' };
3+
import { vue3Plugin } from 'esbuild-plugin-vue-iii';
4+
5+
const nodeEnv = Deno.env.get('NODE_ENV');
6+
const isProd = nodeEnv === 'production';
7+
const buildOptions: BuildOptions = {
8+
plugins: [
9+
vue3Plugin({
10+
isProduction: isProd,
11+
}),
12+
],
13+
entryPoints: [
14+
'./src/jsdiff-devtools.ts',
15+
'./src/jsdiff-panel.ts',
16+
'./src/jsdiff-proxy.ts',
17+
'./src/jsdiff-console.ts',
18+
'./src/firefox/jsdiff-background.ts',
19+
],
20+
outdir: './public/build/',
21+
publicPath: '/public/build/',
22+
define: {
23+
__VUE_OPTIONS_API__: 'false',
24+
__VUE_PROD_DEVTOOLS__: 'false',
25+
__VUE_PROD_HYDRATION_MISMATCH_DETAILS__: 'false',
26+
__development__: `${!isProd}`,
27+
__app_version__: `"${manifest.version}"`,
28+
__app_homepage__: `"${manifest.homepage_url}"`,
29+
},
30+
loader: {
31+
'.png': 'file',
32+
'.svg': 'file',
33+
},
34+
bundle: true,
35+
platform: 'browser',
36+
format: 'iife',
37+
target: 'esnext',
38+
conditions: [`${nodeEnv}`],
39+
minify: isProd,
40+
sourcemap: false,
41+
treeShaking: true,
42+
logLevel: 'warning',
43+
};
44+
45+
if (isProd) {
46+
await build(buildOptions);
47+
await stop();
48+
} else {
49+
const ctx = await context(buildOptions);
50+
await ctx.watch();
51+
}

bundle/jsdiff-devtools.html

-8
This file was deleted.

0 commit comments

Comments
 (0)