diff --git a/.github/workflows/ygg-registry-release.yml b/.github/workflows/ygg-registry-release.yml
new file mode 100644
index 0000000000..f21184733d
--- /dev/null
+++ b/.github/workflows/ygg-registry-release.yml
@@ -0,0 +1,21 @@
+name: Release on registry.ygg.tools
+on: [push]
+
+env:
+ NODE_AUTH_TOKEN: ${{ secrets.NODE_AUTH_TOKEN }}
+
+jobs:
+ Release-on-Registry:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Check out repository code
+ uses: actions/checkout@v3
+ - uses: actions/setup-node@v3
+ with:
+ node-version: "18.x"
+ - name: Install dependencies
+ run: npm install
+ - name: Release to the registry
+ run: |-
+ echo '//registry.ygg.tools/:_authToken="${NODE_AUTH_TOKEN}"' >> .npmrc
+ npm run release:ci
diff --git a/.npmrc b/.npmrc
new file mode 100644
index 0000000000..ecdb665e41
--- /dev/null
+++ b/.npmrc
@@ -0,0 +1,3 @@
+allow-same-version=true
+publish-branch=ygg
+registry=https://registry.ygg.tools/
diff --git a/README.md b/README.md
index bdb653434e..04ad34d959 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,7 @@
+This is the [Ygg](https://ygg.tools) soft-fork of BlockNote (means we're tracking [the upstream](https://github.com/TypeCellOS/BlockNote)), implementing a Markdown-like editor for inline blocks.
+
+---
+
diff --git a/examples/editor/package.json b/examples/editor/package.json
index 81c2054ab7..5a5bb2a70f 100644
--- a/examples/editor/package.json
+++ b/examples/editor/package.json
@@ -9,7 +9,7 @@
"lint": "eslint src --max-warnings 0"
},
"dependencies": {
- "@blocknote/core": "^0.9.4",
+ "@blocknote/core": "npm:@ygg.tools/blocknote-core@*",
"@blocknote/react": "^0.9.4",
"react": "^18.2.0",
"react-dom": "^18.2.0"
diff --git a/examples/editor/tsconfig.json b/examples/editor/tsconfig.json
index 4f17a5d5b9..9541b40bb4 100644
--- a/examples/editor/tsconfig.json
+++ b/examples/editor/tsconfig.json
@@ -15,7 +15,10 @@
"isolatedModules": true,
"noEmit": true,
"jsx": "react-jsx",
- "composite": true
+ "composite": true,
+ "paths": {
+ "@blocknote/core": ["../../packages/core/src"]
+ }
},
"include": ["src"],
"references": [
diff --git a/examples/editor/vite.config.ts b/examples/editor/vite.config.ts
index d135de28dc..8be370a9f8 100644
--- a/examples/editor/vite.config.ts
+++ b/examples/editor/vite.config.ts
@@ -12,20 +12,18 @@ export default defineConfig((conf) => ({
sourcemap: true,
},
resolve: {
- alias:
- conf.command === "build"
+ alias: {
+ "@blocknote/core": path.resolve(__dirname, "../../packages/core/src/"),
+ ...(conf.command === "build"
? {}
: {
// Comment out the lines below to load a built version of blocknote
// or, keep as is to load live from sources with live reload working
- "@blocknote/core": path.resolve(
- __dirname,
- "../../packages/core/src/"
- ),
"@blocknote/react": path.resolve(
__dirname,
"../../packages/react/src/"
),
- },
+ }),
+ },
},
}));
diff --git a/examples/vanilla/package.json b/examples/vanilla/package.json
index 270aeec1b3..ede07537c6 100644
--- a/examples/vanilla/package.json
+++ b/examples/vanilla/package.json
@@ -9,7 +9,7 @@
"lint": "eslint src --max-warnings 0"
},
"dependencies": {
- "@blocknote/core": "^0.9.4"
+ "@blocknote/core": "npm:@ygg.tools/blocknote-core@*"
},
"devDependencies": {
"eslint": "^8.10.0",
diff --git a/examples/vanilla/tsconfig.json b/examples/vanilla/tsconfig.json
index c221b93d22..9541b40bb4 100644
--- a/examples/vanilla/tsconfig.json
+++ b/examples/vanilla/tsconfig.json
@@ -15,10 +15,10 @@
"isolatedModules": true,
"noEmit": true,
"jsx": "react-jsx",
- "composite": true
- // "paths": {
- // "@blocknote/core": ["../../packages/core/src"]
- // }
+ "composite": true,
+ "paths": {
+ "@blocknote/core": ["../../packages/core/src"]
+ }
},
"include": ["src"],
"references": [
diff --git a/examples/vanilla/vite.config.ts b/examples/vanilla/vite.config.ts
index fc8bd4a83d..b8436217e0 100644
--- a/examples/vanilla/vite.config.ts
+++ b/examples/vanilla/vite.config.ts
@@ -11,16 +11,8 @@ export default defineConfig((conf) => ({
sourcemap: true,
},
resolve: {
- alias:
- conf.command === "build"
- ? {}
- : {
- // Comment out the lines below to load a built version of blocknote
- // or, keep as is to load live from sources with live reload working
- "@blocknote/core": path.resolve(
- __dirname,
- "../../packages/core/src/"
- ),
- },
+ alias: {
+ "@blocknote/core": path.resolve(__dirname, "../../packages/core/src/"),
+ },
},
}));
diff --git a/package-lock.json b/package-lock.json
index d3ca107398..280c69283b 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -19,6 +19,7 @@
"eslint-plugin-import": "^2.28.0",
"lerna": "^5.4.0",
"patch-package": "^6.4.7",
+ "semver": "^7.5.4",
"typescript": "^5.0.4"
}
},
@@ -26,7 +27,7 @@
"name": "@blocknote/example-editor",
"version": "0.9.4",
"dependencies": {
- "@blocknote/core": "^0.9.4",
+ "@blocknote/core": "npm:@ygg.tools/blocknote-core@*",
"@blocknote/react": "^0.9.4",
"react": "^18.2.0",
"react-dom": "^18.2.0"
@@ -40,6 +41,9 @@
"vite-plugin-eslint": "^1.8.1"
}
},
+ "examples/editor/@ygg.tools/blocknote-core": {
+ "extraneous": true
+ },
"examples/editor/node_modules/@babel/code-frame": {
"version": "7.22.5",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz",
@@ -548,6 +552,15 @@
"fsevents": "~2.3.2"
}
},
+ "examples/editor/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.ygg.tools/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
"examples/editor/node_modules/vite": {
"version": "4.4.8",
"resolved": "https://registry.npmjs.org/vite/-/vite-4.4.8.tgz",
@@ -607,7 +620,7 @@
"name": "@blocknote/example-vanilla",
"version": "0.9.4",
"dependencies": {
- "@blocknote/core": "^0.9.4"
+ "@blocknote/core": "npm:@ygg.tools/blocknote-core@*"
},
"devDependencies": {
"eslint": "^8.10.0",
@@ -964,6 +977,14 @@
"url": "https://opencollective.com/babel"
}
},
+ "node_modules/@babel/core/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.ygg.tools/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
"node_modules/@babel/eslint-parser": {
"version": "7.21.8",
"dev": true,
@@ -989,6 +1010,15 @@
"node": ">=10"
}
},
+ "node_modules/@babel/eslint-parser/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.ygg.tools/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
"node_modules/@babel/generator": {
"version": "7.22.3",
"license": "MIT",
@@ -1041,6 +1071,14 @@
"@babel/core": "^7.0.0"
}
},
+ "node_modules/@babel/helper-compilation-targets/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.ygg.tools/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
"node_modules/@babel/helper-create-class-features-plugin": {
"version": "7.22.1",
"dev": true,
@@ -1063,6 +1101,15 @@
"@babel/core": "^7.0.0"
}
},
+ "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.ygg.tools/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
"node_modules/@babel/helper-create-regexp-features-plugin": {
"version": "7.22.1",
"dev": true,
@@ -1079,6 +1126,15 @@
"@babel/core": "^7.0.0"
}
},
+ "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.ygg.tools/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
"node_modules/@babel/helper-define-polyfill-provider": {
"version": "0.4.0",
"dev": true,
@@ -1095,6 +1151,15 @@
"@babel/core": "^7.4.0-0"
}
},
+ "node_modules/@babel/helper-define-polyfill-provider/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.ygg.tools/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
"node_modules/@babel/helper-environment-visitor": {
"version": "7.22.1",
"license": "MIT",
@@ -2469,6 +2534,15 @@
"@babel/core": "^7.0.0-0"
}
},
+ "node_modules/@babel/plugin-transform-runtime/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.ygg.tools/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
"node_modules/@babel/plugin-transform-shorthand-properties": {
"version": "7.18.6",
"dev": true,
@@ -2709,6 +2783,15 @@
"@babel/core": "^7.0.0-0"
}
},
+ "node_modules/@babel/preset-env/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.ygg.tools/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
"node_modules/@babel/preset-modules": {
"version": "0.1.5",
"dev": true,
@@ -2820,7 +2903,7 @@
}
},
"node_modules/@blocknote/core": {
- "resolved": "packages/core",
+ "resolved": "packages/core-shim",
"link": true
},
"node_modules/@blocknote/example-editor": {
@@ -3674,36 +3757,6 @@
"node": "^14.15.0 || >=16.0.0"
}
},
- "node_modules/@lerna/add/node_modules/lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@lerna/add/node_modules/semver": {
- "version": "7.5.1",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@lerna/add/node_modules/yallist": {
- "version": "4.0.0",
- "dev": true,
- "license": "ISC"
- },
"node_modules/@lerna/bootstrap": {
"version": "5.6.2",
"dev": true,
@@ -3736,36 +3789,6 @@
"node": "^14.15.0 || >=16.0.0"
}
},
- "node_modules/@lerna/bootstrap/node_modules/lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@lerna/bootstrap/node_modules/semver": {
- "version": "7.5.1",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@lerna/bootstrap/node_modules/yallist": {
- "version": "4.0.0",
- "dev": true,
- "license": "ISC"
- },
"node_modules/@lerna/changed": {
"version": "5.6.2",
"dev": true,
@@ -4034,36 +4057,6 @@
"node": "^14.15.0 || >=16.0.0"
}
},
- "node_modules/@lerna/conventional-commits/node_modules/lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@lerna/conventional-commits/node_modules/semver": {
- "version": "7.5.1",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@lerna/conventional-commits/node_modules/yallist": {
- "version": "4.0.0",
- "dev": true,
- "license": "ISC"
- },
"node_modules/@lerna/create": {
"version": "5.6.2",
"dev": true,
@@ -4103,36 +4096,6 @@
"node": "^14.15.0 || >=16.0.0"
}
},
- "node_modules/@lerna/create/node_modules/lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@lerna/create/node_modules/semver": {
- "version": "7.5.1",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@lerna/create/node_modules/yallist": {
- "version": "4.0.0",
- "dev": true,
- "license": "ISC"
- },
"node_modules/@lerna/describe-ref": {
"version": "5.6.2",
"dev": true,
@@ -4274,36 +4237,6 @@
"node": "^14.15.0 || >=16.0.0"
}
},
- "node_modules/@lerna/has-npm-version/node_modules/lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@lerna/has-npm-version/node_modules/semver": {
- "version": "7.5.1",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@lerna/has-npm-version/node_modules/yallist": {
- "version": "4.0.0",
- "dev": true,
- "license": "ISC"
- },
"node_modules/@lerna/import": {
"version": "5.6.2",
"dev": true,
@@ -4613,36 +4546,6 @@
"node": "^14.15.0 || >=16.0.0"
}
},
- "node_modules/@lerna/package-graph/node_modules/lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@lerna/package-graph/node_modules/semver": {
- "version": "7.5.1",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@lerna/package-graph/node_modules/yallist": {
- "version": "4.0.0",
- "dev": true,
- "license": "ISC"
- },
"node_modules/@lerna/prerelease-id-from-version": {
"version": "5.6.2",
"dev": true,
@@ -4654,36 +4557,6 @@
"node": "^14.15.0 || >=16.0.0"
}
},
- "node_modules/@lerna/prerelease-id-from-version/node_modules/lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@lerna/prerelease-id-from-version/node_modules/semver": {
- "version": "7.5.1",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@lerna/prerelease-id-from-version/node_modules/yallist": {
- "version": "4.0.0",
- "dev": true,
- "license": "ISC"
- },
"node_modules/@lerna/profiler": {
"version": "5.6.2",
"dev": true,
@@ -4789,36 +4662,6 @@
"node": "^14.15.0 || >=16.0.0"
}
},
- "node_modules/@lerna/publish/node_modules/lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@lerna/publish/node_modules/semver": {
- "version": "7.5.1",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@lerna/publish/node_modules/yallist": {
- "version": "4.0.0",
- "dev": true,
- "license": "ISC"
- },
"node_modules/@lerna/pulse-till-done": {
"version": "5.6.2",
"dev": true,
@@ -5065,31 +4908,6 @@
"node": ">=8"
}
},
- "node_modules/@lerna/version/node_modules/lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@lerna/version/node_modules/semver": {
- "version": "7.5.1",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/@lerna/version/node_modules/supports-color": {
"version": "7.2.0",
"dev": true,
@@ -5101,11 +4919,6 @@
"node": ">=8"
}
},
- "node_modules/@lerna/version/node_modules/yallist": {
- "version": "4.0.0",
- "dev": true,
- "license": "ISC"
- },
"node_modules/@lerna/write-log-file": {
"version": "5.6.2",
"dev": true,
@@ -5413,36 +5226,6 @@
"node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/@npmcli/arborist/node_modules/semver": {
- "version": "7.5.1",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@npmcli/arborist/node_modules/semver/node_modules/lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@npmcli/arborist/node_modules/yallist": {
- "version": "4.0.0",
- "dev": true,
- "license": "ISC"
- },
"node_modules/@npmcli/fs": {
"version": "2.1.2",
"dev": true,
@@ -5455,36 +5238,6 @@
"node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/@npmcli/fs/node_modules/lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@npmcli/fs/node_modules/semver": {
- "version": "7.5.1",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@npmcli/fs/node_modules/yallist": {
- "version": "4.0.0",
- "dev": true,
- "license": "ISC"
- },
"node_modules/@npmcli/git": {
"version": "3.0.2",
"dev": true,
@@ -5508,39 +5261,9 @@
"version": "7.18.3",
"dev": true,
"license": "ISC",
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@npmcli/git/node_modules/semver": {
- "version": "7.5.1",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@npmcli/git/node_modules/semver/node_modules/lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@npmcli/git/node_modules/yallist": {
- "version": "4.0.0",
- "dev": true,
- "license": "ISC"
+ "engines": {
+ "node": ">=12"
+ }
},
"node_modules/@npmcli/installed-package-contents": {
"version": "1.0.7",
@@ -5604,36 +5327,6 @@
"node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/@npmcli/metavuln-calculator/node_modules/lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@npmcli/metavuln-calculator/node_modules/semver": {
- "version": "7.5.1",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@npmcli/metavuln-calculator/node_modules/yallist": {
- "version": "4.0.0",
- "dev": true,
- "license": "ISC"
- },
"node_modules/@npmcli/move-file": {
"version": "2.0.1",
"dev": true,
@@ -6694,36 +6387,6 @@
}
}
},
- "node_modules/@typescript-eslint/eslint-plugin/node_modules/lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": {
- "version": "7.5.1",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@typescript-eslint/eslint-plugin/node_modules/yallist": {
- "version": "4.0.0",
- "dev": true,
- "license": "ISC"
- },
"node_modules/@typescript-eslint/experimental-utils": {
"version": "5.59.8",
"dev": true,
@@ -6848,36 +6511,6 @@
}
}
},
- "node_modules/@typescript-eslint/typescript-estree/node_modules/lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": {
- "version": "7.5.1",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@typescript-eslint/typescript-estree/node_modules/yallist": {
- "version": "4.0.0",
- "dev": true,
- "license": "ISC"
- },
"node_modules/@typescript-eslint/utils": {
"version": "5.59.8",
"dev": true,
@@ -6923,36 +6556,6 @@
"node": ">=4.0"
}
},
- "node_modules/@typescript-eslint/utils/node_modules/lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@typescript-eslint/utils/node_modules/semver": {
- "version": "7.5.1",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@typescript-eslint/utils/node_modules/yallist": {
- "version": "4.0.0",
- "dev": true,
- "license": "ISC"
- },
"node_modules/@typescript-eslint/visitor-keys": {
"version": "5.59.8",
"dev": true,
@@ -7434,6 +7037,10 @@
"js-yaml": "bin/js-yaml.js"
}
},
+ "node_modules/@ygg.tools/blocknote-core": {
+ "resolved": "packages/core",
+ "link": true
+ },
"node_modules/@zkochan/js-yaml": {
"version": "0.0.6",
"dev": true,
@@ -7906,6 +7513,15 @@
"@babel/core": "^7.0.0-0"
}
},
+ "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.ygg.tools/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
"node_modules/babel-plugin-polyfill-corejs3": {
"version": "0.8.1",
"dev": true,
@@ -8142,36 +7758,6 @@
"semver": "^7.0.0"
}
},
- "node_modules/builtins/node_modules/lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/builtins/node_modules/semver": {
- "version": "7.5.1",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/builtins/node_modules/yallist": {
- "version": "4.0.0",
- "dev": true,
- "license": "ISC"
- },
"node_modules/byte-size": {
"version": "7.0.1",
"dev": true,
@@ -8749,6 +8335,15 @@
"node": ">=10"
}
},
+ "node_modules/conventional-changelog-writer/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.ygg.tools/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
"node_modules/conventional-commits-filter": {
"version": "2.0.7",
"dev": true,
@@ -10126,6 +9721,15 @@
"node": ">=0.10.0"
}
},
+ "node_modules/eslint-plugin-import/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.ygg.tools/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
"node_modules/eslint-plugin-jest": {
"version": "25.7.0",
"dev": true,
@@ -10178,6 +9782,15 @@
"eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8"
}
},
+ "node_modules/eslint-plugin-jsx-a11y/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.ygg.tools/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
"node_modules/eslint-plugin-react": {
"version": "7.32.2",
"dev": true,
@@ -10244,6 +9857,15 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/eslint-plugin-react/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.ygg.tools/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
"node_modules/eslint-plugin-testing-library": {
"version": "5.11.0",
"dev": true,
@@ -11002,6 +10624,15 @@
"node": ">=10"
}
},
+ "node_modules/git-semver-tags/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.ygg.tools/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
"node_modules/git-up": {
"version": "7.0.0",
"dev": true,
@@ -11785,36 +11416,6 @@
"node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/init-package-json/node_modules/semver": {
- "version": "7.5.1",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/init-package-json/node_modules/semver/node_modules/lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/init-package-json/node_modules/yallist": {
- "version": "4.0.0",
- "dev": true,
- "license": "ISC"
- },
"node_modules/inquirer": {
"version": "8.2.5",
"dev": true,
@@ -12861,36 +12462,6 @@
"node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/libnpmaccess/node_modules/semver": {
- "version": "7.5.1",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/libnpmaccess/node_modules/semver/node_modules/lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/libnpmaccess/node_modules/yallist": {
- "version": "4.0.0",
- "dev": true,
- "license": "ISC"
- },
"node_modules/libnpmpublish": {
"version": "6.0.5",
"dev": true,
@@ -12930,59 +12501,29 @@
"dev": true,
"license": "BSD-2-Clause",
"dependencies": {
- "hosted-git-info": "^5.0.0",
- "is-core-module": "^2.8.1",
- "semver": "^7.3.5",
- "validate-npm-package-license": "^3.0.4"
- },
- "engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
- }
- },
- "node_modules/libnpmpublish/node_modules/npm-package-arg": {
- "version": "9.1.2",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "hosted-git-info": "^5.0.0",
- "proc-log": "^2.0.1",
- "semver": "^7.3.5",
- "validate-npm-package-name": "^4.0.0"
- },
- "engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
- }
- },
- "node_modules/libnpmpublish/node_modules/semver": {
- "version": "7.5.1",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
+ "hosted-git-info": "^5.0.0",
+ "is-core-module": "^2.8.1",
+ "semver": "^7.3.5",
+ "validate-npm-package-license": "^3.0.4"
},
"engines": {
- "node": ">=10"
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/libnpmpublish/node_modules/semver/node_modules/lru-cache": {
- "version": "6.0.0",
+ "node_modules/libnpmpublish/node_modules/npm-package-arg": {
+ "version": "9.1.2",
"dev": true,
"license": "ISC",
"dependencies": {
- "yallist": "^4.0.0"
+ "hosted-git-info": "^5.0.0",
+ "proc-log": "^2.0.1",
+ "semver": "^7.3.5",
+ "validate-npm-package-name": "^4.0.0"
},
"engines": {
- "node": ">=10"
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/libnpmpublish/node_modules/yallist": {
- "version": "4.0.0",
- "dev": true,
- "license": "ISC"
- },
"node_modules/linebreak": {
"version": "1.1.0",
"license": "MIT",
@@ -13232,6 +12773,15 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/make-dir/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.ygg.tools/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
"node_modules/make-error": {
"version": "1.3.6",
"license": "ISC"
@@ -14583,17 +14133,6 @@
"url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/node-gyp/node_modules/lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/node-gyp/node_modules/nopt": {
"version": "6.0.0",
"dev": true,
@@ -14608,25 +14147,6 @@
"node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/node-gyp/node_modules/semver": {
- "version": "7.5.1",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/node-gyp/node_modules/yallist": {
- "version": "4.0.0",
- "dev": true,
- "license": "ISC"
- },
"node_modules/node-releases": {
"version": "2.0.12",
"license": "MIT"
@@ -14659,36 +14179,6 @@
"node": ">=10"
}
},
- "node_modules/normalize-package-data/node_modules/lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/normalize-package-data/node_modules/semver": {
- "version": "7.5.1",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/normalize-package-data/node_modules/yallist": {
- "version": "4.0.0",
- "dev": true,
- "license": "ISC"
- },
"node_modules/normalize-path": {
"version": "3.0.0",
"dev": true,
@@ -14716,36 +14206,6 @@
"node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/npm-install-checks/node_modules/lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/npm-install-checks/node_modules/semver": {
- "version": "7.5.1",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/npm-install-checks/node_modules/yallist": {
- "version": "4.0.0",
- "dev": true,
- "license": "ISC"
- },
"node_modules/npm-normalize-package-bin": {
"version": "1.0.1",
"dev": true,
@@ -14791,20 +14251,6 @@
"node": ">=10"
}
},
- "node_modules/npm-package-arg/node_modules/semver": {
- "version": "7.5.1",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/npm-package-arg/node_modules/validate-npm-package-name": {
"version": "3.0.0",
"dev": true,
@@ -14909,36 +14355,6 @@
"node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/npm-pick-manifest/node_modules/semver": {
- "version": "7.5.1",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/npm-pick-manifest/node_modules/semver/node_modules/lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/npm-pick-manifest/node_modules/yallist": {
- "version": "4.0.0",
- "dev": true,
- "license": "ISC"
- },
"node_modules/npm-registry-fetch": {
"version": "13.3.1",
"dev": true,
@@ -14989,36 +14405,6 @@
"node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/npm-registry-fetch/node_modules/semver": {
- "version": "7.5.1",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/npm-registry-fetch/node_modules/semver/node_modules/lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/npm-registry-fetch/node_modules/yallist": {
- "version": "4.0.0",
- "dev": true,
- "license": "ISC"
- },
"node_modules/npm-run-path": {
"version": "4.0.1",
"dev": true,
@@ -15826,36 +15212,6 @@
"node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/pacote/node_modules/semver": {
- "version": "7.5.1",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/pacote/node_modules/semver/node_modules/lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/pacote/node_modules/yallist": {
- "version": "4.0.0",
- "dev": true,
- "license": "ISC"
- },
"node_modules/pako": {
"version": "0.2.9",
"license": "MIT"
@@ -16906,36 +16262,6 @@
"node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/read-package-json/node_modules/semver": {
- "version": "7.5.1",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/read-package-json/node_modules/semver/node_modules/lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/read-package-json/node_modules/yallist": {
- "version": "4.0.0",
- "dev": true,
- "license": "ISC"
- },
"node_modules/read-pkg": {
"version": "3.0.0",
"dev": true,
@@ -17725,13 +17051,38 @@
}
},
"node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "version": "7.5.4",
+ "resolved": "https://registry.ygg.tools/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
"bin": {
"semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/semver/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.ygg.tools/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
}
},
+ "node_modules/semver/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.ygg.tools/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ },
"node_modules/set-blocking": {
"version": "2.0.0",
"dev": true,
@@ -19756,7 +19107,7 @@
}
},
"packages/core": {
- "name": "@blocknote/core",
+ "name": "@ygg.tools/blocknote-core",
"version": "0.9.4",
"license": "MPL-2.0",
"dependencies": {
@@ -19812,6 +19163,12 @@
"vitest": "^0.34.1"
}
},
+ "packages/core-shim": {
+ "name": "@blocknote/core-shim",
+ "dependencies": {
+ "@ygg.tools/blocknote-core": "*"
+ }
+ },
"packages/core/node_modules/@esbuild/darwin-arm64": {
"version": "0.18.17",
"resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.17.tgz",
@@ -19969,7 +19326,7 @@
"version": "0.9.4",
"license": "MPL-2.0",
"dependencies": {
- "@blocknote/core": "^0.9.4",
+ "@blocknote/core": "npm:@ygg.tools/blocknote-core@*",
"@emotion/react": "^11.10.5",
"@mantine/core": "^5.6.1",
"@mantine/hooks": "^5.6.1",
@@ -20507,6 +19864,15 @@
"fsevents": "~2.3.2"
}
},
+ "packages/react/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.ygg.tools/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
"packages/react/node_modules/vite": {
"version": "4.4.8",
"resolved": "https://registry.npmjs.org/vite/-/vite-4.4.8.tgz",
diff --git a/package.json b/package.json
index 74b0a5febe..c8039f2fef 100644
--- a/package.json
+++ b/package.json
@@ -6,6 +6,7 @@
"examples/*"
],
"devDependencies": {
+ "semver": "^7.5.4",
"@playwright/experimental-ct-react": "^1.38.1",
"@playwright/test": "^1.38.1",
"eslint": "^8.22.0",
@@ -18,10 +19,11 @@
"@typescript-eslint/eslint-plugin": "^5.5.0"
},
"scripts": {
+ "release:ci": "node ygg/release.mjs --type=ci",
"start": "lerna run --stream --scope @blocknote/example-editor dev",
"start:built": "npx serve examples/editor/dist",
"test:updateSnaps": "docker run --rm -e RUN_IN_DOCKER=true --network host -v $(pwd):/work/ -w /work/ -it mcr.microsoft.com/playwright:v1.38.1-focal npx playwright test -u",
- "build": "lerna run --stream build --concurrency 1",
+ "build": "npm run build --workspaces",
"build:site": "lerna run --stream docs:build --concurrency 1",
"lint": "lerna run --stream lint",
"bootstrap": "lerna bootstrap --ci -- --force && patch-package",
diff --git a/packages/core/package.json b/packages/core/package.json
index b436d4db5f..9c84b56adc 100644
--- a/packages/core/package.json
+++ b/packages/core/package.json
@@ -1,6 +1,6 @@
{
- "name": "@blocknote/core",
- "homepage": "https://github.com/TypeCellOS/BlockNote",
+ "name": "@ygg.tools/blocknote-core",
+ "homepage": "https://github.com/YggTools/BlockNote",
"private": false,
"license": "MPL-2.0",
"version": "0.9.4",
@@ -22,7 +22,7 @@
"block-based",
"tiptap"
],
- "description": "A \"Notion-style\" block-based extensible text editor built on top of Prosemirror and Tiptap.",
+ "description": "Ygg.tools soft-fork of @blocknote/core: A \"Notion-style\" block-based extensible text editor built on top of Prosemirror and Tiptap.",
"type": "module",
"source": "src/index.ts",
"types": "./types/src/index.d.ts",
@@ -107,7 +107,7 @@
},
"publishConfig": {
"access": "public",
- "registry": "https://registry.npmjs.org/"
+ "registry": "https://registry.ygg.tools/"
},
- "gitHead": "37614ab348dcc7faa830a9a88437b37197a2162d"
+ "gitHead": "57c86e896c2ff4ea252d6f4c2b0421360d69aa21"
}
diff --git a/packages/core/src/BlockNoteEditor.ts b/packages/core/src/BlockNoteEditor.ts
index 343c4d631a..a85d37f092 100644
--- a/packages/core/src/BlockNoteEditor.ts
+++ b/packages/core/src/BlockNoteEditor.ts
@@ -1,9 +1,12 @@
-import { Editor, EditorOptions, Extension } from "@tiptap/core";
+import { Extensions, Editor, EditorOptions } from "@tiptap/core";
import { Node } from "prosemirror-model";
// import "./blocknote.css";
import { Editor as TiptapEditor } from "@tiptap/core/dist/packages/core/src/Editor";
import * as Y from "yjs";
-import { getBlockNoteExtensions } from "./BlockNoteExtensions";
+import {
+ GetExtensionsOptions,
+ getBlockNoteExtensions,
+} from "./BlockNoteExtensions";
import {
insertBlocks,
removeBlocks,
@@ -54,7 +57,25 @@ import { mergeCSSClasses } from "./shared/utils";
export type BlockNoteEditorOptions = {
// TODO: Figure out if enableBlockNoteExtensions/disableHistoryExtension are needed and document them.
+ /**
+ * @deprecated Use `getExtensions()` that returns an empty array instead.
+ */
enableBlockNoteExtensions: boolean;
+
+ /**
+ * A callback function that is used to obtain the list of extensions to load.
+ *
+ * @default: `_tipTapOptions.extensions` + (if `enableBlockNoteExtensions` is set) all BlockNote extensions
+ *
+ * @param extensionOptions Parameters needed for initialization of some extensions. Can be passed directly to `getBlockNoteExtensions`.
+ * @param options The options object passed to the editor on construction.
+ * @returns An array of extensions to load. Note that `_tipTapOptions.extensions` must be manually returned!
+ */
+ getExtensions: (
+ extensionOptions: GetExtensionsOptions,
+ options: Partial>
+ ) => Extensions;
+
/**
*
* (couldn't fix any type, see https://github.com/TypeCellOS/BlockNote/pull/191#discussion_r1210708771)
@@ -191,27 +212,30 @@ export class BlockNoteEditor {
this.hyperlinkToolbar = new HyperlinkToolbarProsemirrorPlugin(this);
this.imageToolbar = new ImageToolbarProsemirrorPlugin(this);
- const extensions = getBlockNoteExtensions({
+ const extensionOptions: GetExtensionsOptions = {
editor: this,
domAttributes: newOptions.domAttributes || {},
blockSchema: newOptions.blockSchema,
collaboration: newOptions.collaboration,
- });
+ };
- const blockNoteUIExtension = Extension.create({
- name: "BlockNoteUIExtension",
-
- addProseMirrorPlugins: () => {
- return [
- this.sideMenu.plugin,
- this.formattingToolbar.plugin,
- this.slashMenu.plugin,
- this.hyperlinkToolbar.plugin,
- this.imageToolbar.plugin,
- ];
- },
- });
- extensions.push(blockNoteUIExtension);
+ let extensions: Extensions;
+ if (newOptions.getExtensions) {
+ if (newOptions.enableBlockNoteExtensions === false) {
+ throw new Error(
+ "enableBlockNoteExtensions must not be 'false' if getExtensions() is implemented"
+ );
+ }
+ extensions = newOptions.getExtensions(extensionOptions, options);
+ } else {
+ extensions = [];
+ if (newOptions._tiptapOptions?.extensions) {
+ extensions.push(...newOptions._tiptapOptions.extensions);
+ }
+ if (newOptions.enableBlockNoteExtensions !== false) {
+ extensions.push(...getBlockNoteExtensions(extensionOptions));
+ }
+ }
this.schema = newOptions.blockSchema;
@@ -280,10 +304,7 @@ export class BlockNoteEditor {
newOptions.onTextCursorPositionChange?.(this);
},
editable: options.editable === undefined ? true : options.editable,
- extensions:
- newOptions.enableBlockNoteExtensions === false
- ? newOptions._tiptapOptions?.extensions
- : [...(newOptions._tiptapOptions?.extensions || []), ...extensions],
+ extensions,
editorProps: {
attributes: {
...newOptions.domAttributes?.editor,
diff --git a/packages/core/src/BlockNoteExtensions.ts b/packages/core/src/BlockNoteExtensions.ts
index d328c329b7..3da33460f8 100644
--- a/packages/core/src/BlockNoteExtensions.ts
+++ b/packages/core/src/BlockNoteExtensions.ts
@@ -1,4 +1,4 @@
-import { Extensions, extensions } from "@tiptap/core";
+import { Extensions, extensions, Extension } from "@tiptap/core";
import { BlockNoteEditor } from "./BlockNoteEditor";
@@ -33,10 +33,7 @@ import { TextColorMark } from "./extensions/TextColor/TextColorMark";
import { TrailingNode } from "./extensions/TrailingNode/TrailingNodeExtension";
import UniqueID from "./extensions/UniqueID/UniqueID";
-/**
- * Get all the Tiptap extensions BlockNote is configured with by default
- */
-export const getBlockNoteExtensions = (opts: {
+export interface GetExtensionsOptions {
editor: BlockNoteEditor;
domAttributes: Partial;
blockSchema: BSchema;
@@ -49,71 +46,117 @@ export const getBlockNoteExtensions = (opts: {
provider: any;
renderCursor?: (user: any) => HTMLElement;
};
-}) => {
- const ret: Extensions = [
- extensions.ClipboardTextSerializer,
- extensions.Commands,
- extensions.Editable,
- extensions.FocusEvents,
- extensions.Tabindex,
-
- // DevTools,
- Gapcursor,
-
- // DropCursor,
- Placeholder.configure({
- emptyNodeClass: blockStyles.isEmpty,
- hasAnchorClass: blockStyles.hasAnchor,
- isFilterClass: blockStyles.isFilter,
- includeChildren: true,
- showOnlyCurrent: false,
- }),
- UniqueID.configure({
- types: ["blockContainer"],
- }),
- HardBreak,
- // Comments,
-
- // basics:
- Text,
-
- // marks:
- Bold,
- Code,
- Italic,
- Strike,
- Underline,
- Link,
- TextColorMark,
- TextColorExtension,
- BackgroundColorMark,
- BackgroundColorExtension,
- TextAlignmentExtension,
-
- // nodes
- Doc,
- BlockContainer.configure({
- domAttributes: opts.domAttributes,
- }),
- BlockGroup.configure({
- domAttributes: opts.domAttributes,
- }),
- ...Object.values(opts.blockSchema).map((blockSpec) =>
- blockSpec.node.configure({
- editor: opts.editor,
- domAttributes: opts.domAttributes,
- })
- ),
- CustomBlockSerializerExtension,
+}
+
+export interface BlockNoteExtensionGroup {
+ group: string; // not using `name` to avoid confusion with $extension.name
+ required: boolean;
+ extensions: Extensions;
+}
- Dropcursor.configure({ width: 5, color: "#ddeeff" }),
- // This needs to be at the bottom of this list, because Key events (such as enter, when selecting a /command),
- // should be handled before Enter handlers in other components like splitListItem
- TrailingNode,
+/**
+ * Get all the Tiptap extensions BlockNote is configured with by default, split into rough groups.
+ */
+export const getBlockNoteExtensionGroups = (
+ opts: GetExtensionsOptions
+) => {
+ const ret: BlockNoteExtensionGroup[] = [
+ {
+ group: "Core",
+ required: true,
+ extensions: [
+ extensions.ClipboardTextSerializer,
+ extensions.Commands,
+ extensions.Editable,
+ extensions.FocusEvents,
+ extensions.Tabindex,
+ ],
+ },
+ {
+ group: "DevTools",
+ required: true, // ?
+ extensions: [Gapcursor],
+ },
+ {
+ group: "DropCursor",
+ required: true,
+ extensions: [
+ Placeholder.configure({
+ emptyNodeClass: blockStyles.isEmpty,
+ hasAnchorClass: blockStyles.hasAnchor,
+ isFilterClass: blockStyles.isFilter,
+ includeChildren: true,
+ showOnlyCurrent: false,
+ }),
+ UniqueID.configure({
+ types: ["blockContainer"],
+ }),
+ HardBreak,
+ // Comments,
+ ],
+ },
+ {
+ group: "Basics",
+ required: true,
+ extensions: [Text],
+ },
+ {
+ group: "Marks",
+ required: false,
+ extensions: [
+ Bold,
+ Code,
+ Italic,
+ Strike,
+ Underline,
+ Link,
+ TextColorMark,
+ TextColorExtension,
+ BackgroundColorMark,
+ BackgroundColorExtension,
+ TextAlignmentExtension,
+ ],
+ },
+ {
+ group: "Nodes",
+ required: true,
+ extensions: [
+ Doc,
+ BlockContainer.configure({
+ domAttributes: opts.domAttributes,
+ }),
+ BlockGroup.configure({
+ domAttributes: opts.domAttributes,
+ }),
+ ...Object.values(opts.blockSchema).map((blockSpec) =>
+ blockSpec.node.configure({
+ editor: opts.editor,
+ domAttributes: opts.domAttributes,
+ })
+ ),
+ CustomBlockSerializerExtension,
+ ],
+ },
+ {
+ group: "Core", // note that we have *two* core groups!
+ required: true,
+ extensions: [
+ Dropcursor.configure({ width: 5, color: "#ddeeff" }),
+ // This needs to be at the bottom of this list, because Key events (such as enter, when selecting a /command),
+ // should be handled before Enter handlers in other components like splitListItem
+ TrailingNode,
+ ],
+ },
];
if (opts.collaboration) {
- ret.push(
+ const group: BlockNoteExtensionGroup = {
+ group: "Collaboration",
+ required: true,
+ extensions: [],
+ };
+
+ group.extensions.push(
Collaboration.configure({
fragment: opts.collaboration.fragment,
})
@@ -138,7 +181,7 @@ export const getBlockNoteExtensions = (opts: {
cursor.insertBefore(nonbreakingSpace2, null);
return cursor;
};
- ret.push(
+ group.extensions.push(
CollaborationCursor.configure({
user: opts.collaboration.user,
render: opts.collaboration.renderCursor || defaultRender,
@@ -146,10 +189,48 @@ export const getBlockNoteExtensions = (opts: {
})
);
}
+
+ ret.push(group);
} else {
// disable history extension when collaboration is enabled as Yjs takes care of undo / redo
- ret.push(History);
+ ret.push({
+ group: "History",
+ required: false,
+ extensions: [History],
+ });
}
+ // Editor extensions are always very last (for compatibility with old behaviour)
+ ret.push({
+ group: "Editor",
+ required: true,
+ extensions: [
+ Extension.create({
+ name: "BlockNoteUIExtension",
+
+ addProseMirrorPlugins: () => {
+ return [
+ opts.editor.sideMenu.plugin,
+ opts.editor.formattingToolbar.plugin,
+ opts.editor.slashMenu.plugin,
+ opts.editor.hyperlinkToolbar.plugin,
+ opts.editor.imageToolbar.plugin,
+ ];
+ },
+ }),
+ ],
+ });
+
return ret;
};
+
+/**
+ * Get all the Tiptap extensions BlockNote is configured with by default
+ */
+export const getBlockNoteExtensions = (
+ opts: GetExtensionsOptions
+) => {
+ return getBlockNoteExtensionGroups(opts).flatMap(
+ (group) => group.extensions
+ );
+};
diff --git a/packages/react/package.json b/packages/react/package.json
index be314c540a..88522427ed 100644
--- a/packages/react/package.json
+++ b/packages/react/package.json
@@ -47,7 +47,7 @@
"lint": "eslint src --max-warnings 0"
},
"dependencies": {
- "@blocknote/core": "^0.9.4",
+ "@blocknote/core": "npm:@ygg.tools/blocknote-core@*",
"@emotion/react": "^11.10.5",
"@mantine/core": "^5.6.1",
"@mantine/hooks": "^5.6.1",
diff --git a/packages/react/tsconfig.json b/packages/react/tsconfig.json
index 96e3112014..6336a55e07 100644
--- a/packages/react/tsconfig.json
+++ b/packages/react/tsconfig.json
@@ -18,7 +18,10 @@
"declaration": true,
"declarationDir": "types",
"composite": true,
- "skipLibCheck": true
+ "skipLibCheck": true,
+ "paths": {
+ "@blocknote/core": ["../core/src"]
+ }
},
"include": ["src"],
"references": [
diff --git a/ygg/release.mjs b/ygg/release.mjs
new file mode 100644
index 0000000000..1f32bc7d9f
--- /dev/null
+++ b/ygg/release.mjs
@@ -0,0 +1,237 @@
+import process from "node:process";
+import fsp from "node:fs/promises";
+import path from "node:path";
+import child_process from "node:child_process";
+import util from "node:util";
+
+import semver from "semver";
+
+/**
+ * @param {string} command Command to execute
+ * @param {string[]} args Command arguments
+ * @param {Pick&{stdout?: 'pipe', stderr?: 'pipe'}} [options] Additional options
+ * @returns {Promise<{ code: number, stdout: string, stderr: string }>} Program output
+ */
+function exec(command, args, options = undefined) {
+ const stdoutArr = [];
+ const stderrArr = [];
+
+ const {
+ cwd = undefined,
+ stdout = undefined,
+ stderr = undefined,
+ } = options ?? {};
+
+ const p = child_process.spawn(command, args, {
+ shell: true,
+ windowsVerbatimArguments: false,
+ cwd,
+ });
+ return new Promise((resolve, reject) => {
+ if (stdout === "pipe") p.stdout.pipe(process.stdout);
+ else p.stdout.on("data", (data) => stdoutArr.push(data));
+ if (stderr === "pipe") p.stderr.pipe(process.stderr);
+ else p.stderr.on("data", (data) => stderrArr.push(data));
+ p.on("close", (code) =>
+ resolve({
+ code: code ?? -1,
+ stdout: stdoutArr.join(""),
+ stderr: stderrArr.join(""),
+ })
+ );
+ });
+}
+
+/**
+ * Same as `exec`, but pipes stdout & stderr, and throws on error.
+ * @param {string} command Command to execute
+ * @param {string[]} args Command arguments
+ * @param {Pick} [options] Additional options
+ * @returns {void}
+ */
+async function execPipe(command, args, options = undefined) {
+ const { code } = await exec(command, args, {
+ stdout: "pipe",
+ stderr: "pipe",
+ ...(options ?? {}),
+ });
+ if (code !== 0) throw new Error(`${command} command failed`);
+}
+
+/**
+ * Same as above, but
+ *
+ * @param {string[]} args Npm arguments. `--json` will be added to the list.
+ * @param {Parameters[2]} options Options to pass to `exec`
+ * @returns {any} Resulting JSON
+ */
+async function npm(args, options) {
+ const { code, stdout, stderr } = await exec(
+ "npm",
+ [...args, "--json"],
+ options
+ );
+ if (code !== 0) throw new Error(`npm command failed:\n${stderr}`);
+ return JSON.parse(stdout);
+}
+
+const { values: args } = util.parseArgs({
+ allowPositionals: false,
+ strict: true,
+ options: {
+ type: {
+ type: "string",
+ },
+ },
+});
+
+const cwd = process.cwd();
+const packages = (await npm(["query", ".workspace"])).filter(
+ (pkg) =>
+ !pkg.private && pkg.path !== cwd && pkg.name.startsWith("@ygg.tools/")
+);
+
+// --dirty & --broken are intentionally omitted
+const gitDescribe = await exec("git", ["describe", "--always", "--tags"]);
+if (gitDescribe.code !== 0)
+ throw new Error(`git command failed:\n${gitDescribe.stderr}`);
+const gitVersion = gitDescribe.stdout.trim();
+
+const gitRevParse = await exec("git", ["rev-parse", "HEAD"]);
+if (gitRevParse.code !== 0)
+ throw new Error(`git command failed:\n${gitRevParse.stderr}`);
+const gitHead = gitRevParse.stdout.trim();
+
+//const dateStamp = new Date().toISOString().split("T", 1)[0].replaceAll("-", "");
+
+async function changePackageOptions(pkg, optionsNew) {
+ // this is a bit hacky, but alas `npm version` is broken because we've renamed the package
+ const packageFName = path.join(pkg.path, "package.json");
+ const packageJSON = JSON.parse(
+ await fsp.readFile(packageFName, { encoding: "utf-8" })
+ );
+ const optionsOld = Object.fromEntries(
+ [...Object.keys(optionsNew)].map((k) => [k, pkg[k]])
+ );
+
+ // we only write the file if there was a mismatch
+ if (
+ [...Object.keys(optionsNew)].findIndex(
+ (k) => packageJSON[k] !== optionsNew[k]
+ ) !== -1
+ ) {
+ Object.assign(packageJSON, optionsNew);
+ await fsp.writeFile(
+ packageFName,
+ JSON.stringify(packageJSON, null, 2) + "\n",
+ { encoding: "utf-8" }
+ );
+ return optionsOld;
+ }
+
+ return null;
+}
+
+/**
+ * @type {Map}
+ */
+const packagesToRelease = new Map();
+
+try {
+ switch (args.type) {
+ case "ci":
+ console.log("Updating package versions:");
+ // run version updates in parallel
+ await Promise.all(
+ packages.map(async (pkg) => {
+ const vold = pkg.version;
+ const vnew = semver.inc(
+ vold,
+ "prerelease",
+ `git.${gitVersion}`,
+ false
+ );
+ console.log(
+ `\t${pkg.name}: ${vold} ${vnew ? `-> ${vnew}` : "[no change]"}`
+ );
+ if (vnew) {
+ await changePackageOptions(pkg, {
+ version: vnew,
+ gitHead,
+ });
+
+ // check if package version exists online; if it doesn't, schedule submission
+ const pkgFullName = `${pkg.name}@${vnew}`;
+ // we don't (necessarily) want to error out on fail, hence manual `npm` call
+ const { code, stdout, stderr } = await exec("npm", [
+ "view",
+ pkgFullName,
+ "name",
+ "--json",
+ ]);
+ if (code !== 0) {
+ const json = JSON.parse(stdout);
+ if (json?.error?.code !== "E404")
+ // this is the only error we expect
+ throw new Error(`npm command failed:\n${stderr}`);
+ // E404 => no package@version found, so we'll release this one
+ packagesToRelease.set(pkgFullName, pkg);
+ }
+ }
+ })
+ );
+
+ console.log();
+ console.log("Submitting:");
+
+ // we need to run prepublishOnly/postpublish manually
+ await execPipe("npm", ["run", "prepublishOnly"]);
+ try {
+ await execPipe("npm", [
+ ...packages.flatMap((pkg) => ["--workspace", pkg.location]),
+ "publish",
+ "--no-git-checks",
+ "--tag",
+ "ci",
+ ]);
+ } finally {
+ await execPipe("npm", ["run", "postpublish"]);
+ }
+
+ break;
+ default:
+ throw new Error(`--type is required and must be one of: {ci}`);
+ }
+
+ // set `edge` tag, which is set unconditionally on all builds
+
+ // for consistency with above and consistency between runs, sort packageKeys
+ const packageKeys = [...packagesToRelease.keys()].sort();
+
+ console.log();
+ console.log("Updating dist-tags (`edge`):");
+ await Promise.all(
+ packageKeys.map(async (pkgFullName) => {
+ //console.log(`\t${pkgFullName}`);
+ await execPipe("npm", ["dist-tag", "add", pkgFullName, "edge"]);
+ })
+ );
+} finally {
+ console.log();
+ console.log("Restoring old package versions:");
+ await Promise.all(
+ packages.map(async (pkg) => {
+ const vold =
+ (
+ await changePackageOptions(pkg, {
+ version: pkg.version,
+ gitHead: pkg.gitHead,
+ })
+ )?.version ?? pkg.version;
+ const vnew = vold !== pkg.version ? pkg.version : null;
+ console.log(
+ `\t${pkg.name}: ${vold} ${vnew ? `-> ${vnew}` : "[no change]"}`
+ );
+ })
+ );
+}