refactor: from @tiddlygit/tiddlywiki to tiddlywiki , because there is no prerelease feature that I need now

This commit is contained in:
lin onetwo 2024-11-24 16:58:42 +08:00
parent fe3a29eff1
commit 0bef181d59
12 changed files with 23 additions and 27 deletions

View file

@ -63,7 +63,7 @@ For example: `tiddlywiki`
1. `npm i tiddlywiki`
1. Add `ExternalsPlugin` in webpack.plugins.js (maybe optional for some deps, tiddlywiki needs this because its custom `require` can't require things that is bundled by webpack. `dugite` don't need this step)
1. Add a `await fs.copy(path.join(projectRoot, 'node_modules/@tiddlygit/tiddlywiki')` in `scripts/afterPack.js` , to copy things to resource folder, that is outside of asar, so it can be used by the worker_thread in electron
1. Add a `await fs.copy(path.join(projectRoot, 'node_modules/tiddlywiki')` in `scripts/afterPack.js` , to copy things to resource folder, that is outside of asar, so it can be used by the worker_thread in electron
## How to add plugin that only execute inside TidGi

View file

@ -7,7 +7,7 @@
"scripts": {
"start": "pnpm run clean && pnpm run init:git-submodule && pnpm run start:without-clean",
"start:without-clean": "pnpm run build:plugin && cross-env NODE_ENV=development electron-forge start",
"clean": "rimraf -- ./out ./userData-dev ./node_modules/@tiddlygit/tiddlywiki/plugins/linonetwo && cross-env NODE_ENV=development npx ts-node scripts/developmentMkdir.ts",
"clean": "rimraf -- ./out ./userData-dev ./node_modules/tiddlywiki/plugins/linonetwo && cross-env NODE_ENV=development npx ts-node scripts/developmentMkdir.ts",
"clean:cache": "rimraf -- ./.webpack ./node_modules/.cache",
"start:without-clean:debug-worker": "pnpm run build:plugin && cross-env NODE_ENV=development DEBUG_WORKER=true electron-forge start",
"start:without-clean:debug-main": "pnpm run build:plugin && cross-env NODE_ENV=development DEBUG_MAIN=true electron-forge start",
@ -31,7 +31,7 @@
"author": "Lin Onetwo <linonetwo012@gmail.com>, Quang Lam <quang.lam2807@gmail.com>",
"main": ".webpack/main",
"dependencies": {
"@tiddlygit/tiddlywiki": "5.3.5",
"tiddlywiki": "5.3.6",
"ansi-to-html": "^0.7.2",
"app-path": "^4.0.0",
"best-effort-json-parser": "1.1.2",

View file

@ -83,13 +83,14 @@ exports.default = async (
// shell,
// });
const packagePathsToCopyDereferenced = [
['@tiddlygit', 'tiddlywiki', 'package.json'],
['@tiddlygit', 'tiddlywiki', 'boot'],
['@tiddlygit', 'tiddlywiki', 'core'],
['@tiddlygit', 'tiddlywiki', 'plugins'],
['@tiddlygit', 'tiddlywiki', 'themes'],
['@tiddlygit', 'tiddlywiki', 'languages'],
['@tiddlygit', 'tiddlywiki', 'tiddlywiki.js'],
['tiddlywiki', 'package.json'],
['tiddlywiki', 'boot'],
['tiddlywiki', 'core'],
// only copy plugins that is used in src/services/wiki/wikiWorker/startNodeJSWiki.ts , other plugins can be installed via JSON from online plugin library
['tiddlywiki', 'plugins', 'linonetwo'],
['tiddlywiki', 'plugins', 'tiddlywiki', 'filesystem'],
['tiddlywiki', 'plugins', 'tiddlywiki', 'tiddlyweb'],
['tiddlywiki', 'tiddlywiki.js'],
// we only need its `main` binary, no need its dependency and code, because we already copy it to src/services/native/externalApp
['app-path', 'main'],
];

View file

@ -5,10 +5,10 @@
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
/* eslint-disable @typescript-eslint/no-unsafe-call */
import esbuild from 'esbuild';
import { rimraf } from 'rimraf'
import { rimraf } from 'rimraf';
// put it here, so it can be loaded via `'+plugins/linonetwo/tidgi'` in cli, and get copied in scripts/afterPack.js when copying tiddlywiki (no need to copy this plugin again)
const tidgiIpcSyncadaptorOutDir = path.join(__dirname, '../node_modules/@tiddlygit/tiddlywiki/plugins/linonetwo/tidgi-ipc-syncadaptor');
const tidgiIpcSyncadaptorOutDir = path.join(__dirname, '../node_modules/tiddlywiki/plugins/linonetwo/tidgi-ipc-syncadaptor');
// delete if exist
await rimraf(tidgiIpcSyncadaptorOutDir);
await fs.mkdirp(tidgiIpcSyncadaptorOutDir);
@ -44,7 +44,7 @@ const filterFunc = (src) => {
await fs.copy(path.join(__dirname, tidgiIpcSyncadaptorSourceFolder), tidgiIpcSyncadaptorOutDir, { filter: filterFunc });
const tidgiIpcSyncadaptorUISourceFolder = '../src/services/wiki/plugin/ipcSyncAdaptorUI';
const tidgiIpcSyncadaptorUIOutDir = path.join(__dirname, '../node_modules/@tiddlygit/tiddlywiki/plugins/linonetwo/tidgi-ipc-syncadaptor-ui');
const tidgiIpcSyncadaptorUIOutDir = path.join(__dirname, '../node_modules/tiddlywiki/plugins/linonetwo/tidgi-ipc-syncadaptor-ui');
// delete if exist
await rimraf(tidgiIpcSyncadaptorUIOutDir);
await fs.mkdirp(tidgiIpcSyncadaptorUIOutDir);

View file

@ -25,7 +25,7 @@ export const PACKAGE_PATH_BASE = isDevelopmentOrTest
? path.resolve(__dirname, '..', '..', 'node_modules')
: path.resolve(process.resourcesPath, 'node_modules');
export const ZX_FOLDER = path.resolve(PACKAGE_PATH_BASE, 'zx', 'build', 'cli.js');
export const TIDDLYWIKI_PACKAGE_FOLDER = path.resolve(PACKAGE_PATH_BASE, '@tiddlygit', 'tiddlywiki', 'boot');
export const TIDDLYWIKI_PACKAGE_FOLDER = path.resolve(PACKAGE_PATH_BASE, 'tiddlywiki', 'boot');
export const LOCALIZATION_FOLDER = isDevelopmentOrTest
? path.resolve(sourcePath, '..', localizationFolderName)

View file

@ -1,13 +1,13 @@
/**
* Can't use logger in this file, because it runs in the worker.
*/
import type { ITiddlyWiki } from '@tiddlygit/tiddlywiki';
import AnsiToHtml from 'ansi-to-html';
import { fork } from 'child_process';
import { writeFile } from 'fs-extra';
import _ from 'lodash';
import type { Subscriber } from 'rxjs';
import type { ITiddlyWiki } from 'tiddlywiki';
import vm, { Context } from 'vm';
import AnsiToHtml from 'ansi-to-html';
import { IZxWorkerMessage, ZxWorkerControlActions } from '../../interface';
import { fixZxPath } from './fixZxPath';
import {

View file

@ -1,6 +1,6 @@
import { isHtmlWiki } from '@/constants/fileNames';
import { TiddlyWiki } from '@tiddlygit/tiddlywiki';
import { remove } from 'fs-extra';
import { TiddlyWiki } from 'tiddlywiki';
export async function extractWikiHTML(htmlWikiPath: string, saveWikiFolderPath: string, constants: { TIDDLYWIKI_PACKAGE_FOLDER: string }): Promise<void> {
// tiddlywiki --load ./mywiki.html --savewikifolder ./mywikifolder

View file

@ -3,8 +3,6 @@
* Worker environment is not part of electron environment, so don't import "@/constants/paths" here, as its process.resourcesPath will become undefined and throw Errors.
*
* Don't use i18n and logger in worker thread. For example, 12b93020, will throw error "Electron failed to install correctly, please delete node_modules/electron and try installing again ...worker.js..."
*
* Import tw related things and typing from `@tiddlygit/tiddlywiki` instead of `tiddlywiki`, otherwise you will get `Unhandled Error ReferenceError: self is not defined at $:/boot/bootprefix.js:40749:36` because tiddlywiki
*/
import { uninstall } from '@/helpers/installV8Cache';
import './preload';

View file

@ -1,11 +1,11 @@
import { getTidGiAuthHeaderWithToken } from '@/constants/auth';
import { defaultServerIP } from '@/constants/urls';
import { TiddlyWiki } from '@tiddlygit/tiddlywiki';
import intercept from 'intercept-stdout';
import { nanoid } from 'nanoid';
import inspector from 'node:inspector';
import path from 'path';
import { Observable } from 'rxjs';
import { TiddlyWiki } from 'tiddlywiki';
import { IWikiMessage, WikiControlActions } from '../interface';
import { wikiOperationsInWikiWorker } from '../wikiOperations/executor/wikiOperationInServer';
import { IStartNodeJSWikiConfigs } from '.';

4
src/type.d.ts vendored
View file

@ -5,10 +5,6 @@ declare module 'errio' {
export function register(error: ErrorConstructor): void;
}
declare module '@tiddlygit/tiddlywiki' {
export * from 'tiddlywiki';
}
declare module 'espree' {
// https://github.com/eslint/espree#options
export interface Options {

View file

@ -50,10 +50,10 @@ module.exports = {
externals: [
// simply external all things will make require can't find things. Only exclude what we copied in scripts/afterPack.js
// nodeExternals({
// additionalModuleDirs: ['@tiddlygit/tiddlywiki'],
// additionalModuleDirs: ['tiddlywiki'],
// allowlist: [/(threads-plugin)/],
// }),
'@tiddlygit/tiddlywiki',
'tiddlywiki',
'dugite',
'zx',
...(process.platform === 'win32' ? [] : ['registry-js']),

View file

@ -39,7 +39,8 @@ exports.main = _.compact([
new ExternalsPlugin({
type: 'commonjs',
// use regex works.
include: /@tiddlygit\+tiddlywiki@(.+)|dugite(.+)/,
// include: /@tiddlygit\+tiddlywiki@(.+)|dugite(.+)/,
include: /tiddlywiki(.+)|dugite(.+)/,
// when using npm, we can use this. But with pnpm, this won't work ↓
// include: path.join(__dirname, 'node_modules', '.pnpm', '@tiddlygit', 'tiddlywiki'),
}),