@moneko/core 3.0.0-beta.82 → 3.0.0-beta.84

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/lib/app.js CHANGED
@@ -1 +1,27 @@
1
- import o from"fs";import e from"path";import{CONFIG as r}from"./common.js";import i from"./html-plugin-option.js";import{APPTYPE as t,PACKAGENAME as s,PROGRAMPATH as m,programInfo as n}from"./process-env.js";import{toUpperCaseString as p}from"./utils.js";let a="library"===t?"site":"src",f={base:r.routeBaseName,designSize:r.designSize,routerMode:r.routerMode,mode:r.mode,name:n.name,description:n.description,version:n.version,author:n.author,repository:n.repository,locales:o.existsSync(e.join(m,`./${a}/locales`)),favicon:i.favicon,prefixCls:r.prefixCls,theme:r.theme,type:t,persist:o.existsSync(e.join(m,`./${a}/persist.ts`)),projectName:JSON.stringify(p(s)),iconfont:r.iconfont};export default f;
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+ import { CONFIG } from './common.js';
4
+ import htmlPluginOption from './html-plugin-option.js';
5
+ import { APPTYPE, PACKAGENAME, PROGRAMPATH, programInfo } from './process-env.js';
6
+ import { toUpperCaseString } from './utils.js';
7
+ const entryName = APPTYPE === 'library' ? 'site' : 'src';
8
+ const app = {
9
+ base: CONFIG.routeBaseName,
10
+ designSize: CONFIG.designSize,
11
+ routerMode: CONFIG.routerMode,
12
+ mode: CONFIG.mode,
13
+ name: programInfo.name,
14
+ description: programInfo.description,
15
+ version: programInfo.version,
16
+ author: programInfo.author,
17
+ repository: programInfo.repository,
18
+ locales: fs.existsSync(path.join(PROGRAMPATH, `./${entryName}/locales`)),
19
+ favicon: htmlPluginOption.favicon,
20
+ prefixCls: CONFIG.prefixCls,
21
+ theme: CONFIG.theme,
22
+ type: APPTYPE,
23
+ persist: fs.existsSync(path.join(PROGRAMPATH, `./${entryName}/persist.ts`)),
24
+ projectName: JSON.stringify(toUpperCaseString(PACKAGENAME)),
25
+ iconfont: CONFIG.iconfont
26
+ };
27
+ export default app;
package/lib/cleanup.js CHANGED
@@ -1 +1,19 @@
1
- import{existsSync as o,readdirSync as r,rmdirSync as t,statSync as f,unlinkSync as i}from"fs";import{join as s}from"path";import{cacheDir as c}from"./process-env.js";process.on("SIGINT",function(){!function c(m){o(m)&&(r(m).forEach(o=>{let r=s(m,o);f(r).isDirectory()?c(r):i(r)}),t(m))}(c)});
1
+ import { existsSync, readdirSync, rmdirSync, statSync, unlinkSync } from 'fs';
2
+ import { join } from 'path';
3
+ import { cacheDir } from './process-env.js';
4
+ function cleanDir(folderPath) {
5
+ if (existsSync(folderPath)) {
6
+ readdirSync(folderPath).forEach((file)=>{
7
+ const filePath = join(folderPath, file);
8
+ if (statSync(filePath).isDirectory()) {
9
+ cleanDir(filePath);
10
+ } else {
11
+ unlinkSync(filePath);
12
+ }
13
+ });
14
+ rmdirSync(folderPath);
15
+ }
16
+ }
17
+ process.on('SIGINT', function() {
18
+ cleanDir(cacheDir);
19
+ });
package/lib/common.js CHANGED
@@ -1,4 +1,208 @@
1
- import e from"fs";import t from"path";import o from"readline";import s from"chalk";import{merge as i}from"webpack-merge";import{APPTYPE as n,CUSTOMCONFIG as r,FRAMEWORK as l,PROGRAMPATH as a,jsxImportSource as c,pkgName as m}from"./process-env.js";import{isFunction as p,readConf as u}from"./utils.js";export const ENTRYPATH={mobile:"mobile",site:"site","back-stage":"back-stage","single-spa":"single-spa",library:"library","single-component":"single-component"};let d=[`@moneko/${l}`,"neko-ui","antd","@antv","katex","font-pingfang-sc","font-pingfang-tc","react-photo-view","react-markdown-editor-lite","schema-design","env-flags","@app"],h={chunks:"all",minSize:1024,minChunks:1,cacheGroups:{route:{test:/[\\/].git[\\/]router/,priority:-10,reuseExistingChunk:!0,name:"route"},example:{test:/[\\/].git[\\/]example/,priority:-10,reuseExistingChunk:!0,name:"example"}}};"single-component"===n&&(h=!1);let g={seo:!1,mode:"csr",compiler:"swc",bundleAnalyzer:{analyzerMode:"static",reportFilename:"report.html",openAnalyzer:!1},entry:{},minifier:{js:{},css:{}},sourceMap:{filename:"[file].map",publicPath:""},env:{},routeBaseName:"/",publicPath:"/",designSize:"mobile"===n?375:1680,fallbackCompPath:null,modifyVars:{},prefixCls:"n",alias:{},layoutSider:{},moduleRules:[],prefixJsLoader:[],cssModules:[],importOnDemand:{},proxy:[],cacheDirectory:`${a}/node_modules/.temp_cache`,devServer:{allowedHosts:[".baidu.com"],host:"localhost",port:3e3,https:!1,compress:!1},htmlPluginOption:{template:`./node_modules/${m}/template/index.html`,favicon:`./node_modules/${m}/template/favicon.ico`,tags:[]},assetHtml:[],routerMode:"browser",fixBrowserRouter:!1,plugins:[],splitChunk:h,runtimeChunk:"single-component"!==n&&"single",moduleFederation:[],rulesInclude:{less:d,css:d,js:d,media:d,fonts:d},mdx:{jsxImportSource:c,useDynamicImport:!0,remarkPlugins:[],rehypePlugins:[]},jsxDomExpressions:{moduleName:"solid-js/web",builtIns:["For","Show","Switch","Match","Suspense","SuspenseList","Portal","Index","Dynamic","ErrorBoundary"],contextToCustomElements:!0,wrapConditionals:!0,generate:"dom",hydratable:!1},bar:{name:"编译中",color:"#6f42c1"}};export const log=e=>{o.cursorTo(process.stdout,0),process.stdout.write(e)};let f=g,y=null,x={},b={};try{y=t.join(a,"./config/index.ts"),e.accessSync(y,e.constants.R_OK)}catch(e){y=null}if(y)try{let e=(await u(y,"index")).default;x=p(e)?e(process):e}catch(e){process.stdout.write(s.red(e))}if(r){let o=null;try{o=t.join(a,`./config/${r}.ts`),e.accessSync(o,e.constants.R_OK)}catch(e){o=null}if(null!==o)try{let e=(await u(o,r)).default;b=p(e)?e(process):e}catch(e){process.stdout.write(s.red(e))}}"tsc"===(f=i(f,x,b)).compiler&&f.minifier&&(f.minifier.js||Object.assign(f.minifier,{js:{type:"terser"}}),f.minifier.css||Object.assign(f.minifier,{css:{type:"cssnano"}})),!1===f.devtool&&(f.sourceMap=!1),!1===f.sourceMap&&(f.devtool=!1),f.fixBrowserRouter&&f.htmlPluginOption&&(f.htmlPluginOption.tags||(f.htmlPluginOption.tags=[]),f.htmlPluginOption.tags.push({textContent:`
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+ import readline from 'readline';
4
+ import chalk from 'chalk';
5
+ import { merge } from 'webpack-merge';
6
+ import { APPTYPE, CUSTOMCONFIG, FRAMEWORK, PROGRAMPATH, jsxImportSource, pkgName } from './process-env.js';
7
+ import { isFunction, readConf } from './utils.js';
8
+ export const ENTRYPATH = {
9
+ mobile: 'mobile',
10
+ site: 'site',
11
+ 'back-stage': 'back-stage',
12
+ 'single-spa': 'single-spa',
13
+ library: 'library',
14
+ 'single-component': 'single-component'
15
+ };
16
+ const includeModule = [
17
+ `@moneko/${FRAMEWORK}`,
18
+ 'neko-ui',
19
+ 'antd',
20
+ '@antv',
21
+ 'katex',
22
+ 'font-pingfang-sc',
23
+ 'font-pingfang-tc',
24
+ 'react-photo-view',
25
+ 'react-markdown-editor-lite',
26
+ 'schema-design',
27
+ '@app'
28
+ ];
29
+ let defaultSplitChunk = {
30
+ chunks: 'all',
31
+ minSize: 1024,
32
+ minChunks: 1,
33
+ cacheGroups: {
34
+ route: {
35
+ test: /[\\/].git[\\/]router/,
36
+ priority: -10,
37
+ reuseExistingChunk: true,
38
+ name: 'route'
39
+ },
40
+ example: {
41
+ test: /[\\/].git[\\/]example/,
42
+ priority: -10,
43
+ reuseExistingChunk: true,
44
+ name: 'example'
45
+ }
46
+ }
47
+ };
48
+ if (APPTYPE === 'single-component') {
49
+ defaultSplitChunk = false;
50
+ }
51
+ const defaultConfig = {
52
+ seo: false,
53
+ mode: 'csr',
54
+ compiler: 'swc',
55
+ bundleAnalyzer: {
56
+ analyzerMode: 'static',
57
+ reportFilename: 'report.html',
58
+ openAnalyzer: false
59
+ },
60
+ entry: {},
61
+ minifier: {
62
+ js: {},
63
+ css: {}
64
+ },
65
+ sourceMap: {
66
+ filename: '[file].map',
67
+ publicPath: ''
68
+ },
69
+ env: {},
70
+ routeBaseName: '/',
71
+ publicPath: '/',
72
+ designSize: APPTYPE === 'mobile' ? 375 : 1680,
73
+ fallbackCompPath: null,
74
+ modifyVars: {},
75
+ prefixCls: 'n',
76
+ alias: {},
77
+ layoutSider: {},
78
+ moduleRules: [],
79
+ prefixJsLoader: [],
80
+ cssModules: [],
81
+ importOnDemand: {},
82
+ proxy: [],
83
+ cacheDirectory: `${PROGRAMPATH}/node_modules/.temp_cache`,
84
+ devServer: {
85
+ allowedHosts: [
86
+ '.baidu.com'
87
+ ],
88
+ host: 'localhost',
89
+ port: 3000,
90
+ https: false,
91
+ compress: false
92
+ },
93
+ htmlPluginOption: {
94
+ template: `./node_modules/${pkgName}/template/index.html`,
95
+ favicon: `./node_modules/${pkgName}/template/favicon.ico`,
96
+ tags: []
97
+ },
98
+ assetHtml: [],
99
+ routerMode: 'browser',
100
+ fixBrowserRouter: false,
101
+ plugins: [],
102
+ splitChunk: defaultSplitChunk,
103
+ runtimeChunk: APPTYPE === 'single-component' ? false : 'single',
104
+ moduleFederation: [],
105
+ rulesInclude: {
106
+ less: includeModule,
107
+ css: includeModule,
108
+ js: includeModule,
109
+ media: includeModule,
110
+ fonts: includeModule
111
+ },
112
+ mdx: {
113
+ jsxImportSource: jsxImportSource,
114
+ useDynamicImport: true,
115
+ remarkPlugins: [],
116
+ rehypePlugins: []
117
+ },
118
+ jsxDomExpressions: {
119
+ moduleName: 'solid-js/web',
120
+ builtIns: [
121
+ 'For',
122
+ 'Show',
123
+ 'Switch',
124
+ 'Match',
125
+ 'Suspense',
126
+ 'SuspenseList',
127
+ 'Portal',
128
+ 'Index',
129
+ 'Dynamic',
130
+ 'ErrorBoundary'
131
+ ],
132
+ contextToCustomElements: true,
133
+ wrapConditionals: true,
134
+ generate: 'dom',
135
+ hydratable: false
136
+ },
137
+ bar: {
138
+ name: '编译中',
139
+ color: '#6f42c1'
140
+ }
141
+ };
142
+ export const log = (msg)=>{
143
+ readline.cursorTo(process.stdout, 0);
144
+ process.stdout.write(msg);
145
+ };
146
+ let customConf = defaultConfig;
147
+ let configPath = null;
148
+ let normalConf = {};
149
+ let envConf = {};
150
+ try {
151
+ configPath = path.join(PROGRAMPATH, './config/index.ts');
152
+ fs.accessSync(configPath, fs.constants.R_OK);
153
+ } catch (error) {
154
+ configPath = null;
155
+ }
156
+ if (configPath) {
157
+ try {
158
+ const conf = (await readConf(configPath, 'index')).default;
159
+ normalConf = isFunction(conf) ? conf(process) : conf;
160
+ } catch (error) {
161
+ process.stdout.write(chalk.red(error));
162
+ }
163
+ }
164
+ if (CUSTOMCONFIG) {
165
+ let customConfigPath = null;
166
+ try {
167
+ customConfigPath = path.join(PROGRAMPATH, `./config/${CUSTOMCONFIG}.ts`);
168
+ fs.accessSync(customConfigPath, fs.constants.R_OK);
169
+ } catch (error) {
170
+ customConfigPath = null;
171
+ }
172
+ if (customConfigPath !== null) {
173
+ try {
174
+ const conf = (await readConf(customConfigPath, CUSTOMCONFIG)).default;
175
+ envConf = isFunction(conf) ? conf(process) : conf;
176
+ } catch (error) {
177
+ process.stdout.write(chalk.red(error));
178
+ }
179
+ }
180
+ }
181
+ customConf = merge(customConf, normalConf, envConf);
182
+ if (customConf.compiler === 'tsc' && customConf.minifier) {
183
+ if (!customConf.minifier.js) {
184
+ Object.assign(customConf.minifier, {
185
+ js: {
186
+ type: 'terser'
187
+ }
188
+ });
189
+ }
190
+ if (!customConf.minifier.css) {
191
+ Object.assign(customConf.minifier, {
192
+ css: {
193
+ type: 'cssnano'
194
+ }
195
+ });
196
+ }
197
+ }
198
+ if (customConf.devtool === false) customConf.sourceMap = false;
199
+ if (customConf.sourceMap === false) customConf.devtool = false;
200
+ if (customConf.fixBrowserRouter && customConf.htmlPluginOption) {
201
+ if (!customConf.htmlPluginOption.tags) {
202
+ customConf.htmlPluginOption.tags = [];
203
+ }
204
+ customConf.htmlPluginOption.tags.push({
205
+ textContent: `
2
206
  (function(l) {
3
207
  if (l.search[1] === '/' ) {
4
208
  var decoded = l.search.slice(1).split('&').map(function(s) {
@@ -9,4 +213,12 @@ import e from"fs";import t from"path";import o from"readline";import s from"chal
9
213
  );
10
214
  }
11
215
  }(window.location))
12
- `}));export const CONFIG=f;export const PUBLICPATH=CONFIG.publicPath||"/";global.NEKOCLICONFIG={CONFIG,log};
216
+ `
217
+ });
218
+ }
219
+ export const CONFIG = customConf;
220
+ export const PUBLICPATH = CONFIG.publicPath || '/';
221
+ global.NEKOCLICONFIG = {
222
+ CONFIG,
223
+ log
224
+ };
package/lib/coverage.js CHANGED
@@ -1 +1,30 @@
1
- import{accessSync as e,constants as r,readFileSync as c}from"fs";import{join as o}from"path";import{Parser as t}from"xml2js";import{PACKAGENAME as a,PROGRAMPATH as s}from"./process-env.js";export const coverage={};try{let i=o(s,"./coverage/clover.xml");e(i,r.R_OK);let m=new t({explicitArray:!1,async:!1}),p=c(i,{encoding:"utf-8"});m.parseString(p,(e,r)=>{if(!e){let e=r.coverage.project.metrics.$,c=r.coverage.project.package;Object.assign(coverage,{[a]:e}),c.forEach(e=>{Object.assign(coverage,{[e.$.name]:e.metrics.$})})}})}catch(e){}
1
+ import { accessSync, constants, readFileSync } from 'fs';
2
+ import { join } from 'path';
3
+ import { Parser } from 'xml2js';
4
+ import { PACKAGENAME, PROGRAMPATH } from './process-env.js';
5
+ export const coverage = {};
6
+ try {
7
+ const coveragePath = join(PROGRAMPATH, './coverage/clover.xml');
8
+ accessSync(coveragePath, constants.R_OK);
9
+ const parser = new Parser({
10
+ explicitArray: false,
11
+ async: false
12
+ });
13
+ const cover = readFileSync(coveragePath, {
14
+ encoding: 'utf-8'
15
+ });
16
+ parser.parseString(cover, (error, result)=>{
17
+ if (!error) {
18
+ const projectMetrics = result.coverage.project.metrics.$;
19
+ const components = result.coverage.project.package;
20
+ Object.assign(coverage, {
21
+ [PACKAGENAME]: projectMetrics
22
+ });
23
+ components.forEach((pkg)=>{
24
+ Object.assign(coverage, {
25
+ [pkg.$.name]: pkg.metrics.$
26
+ });
27
+ });
28
+ }
29
+ });
30
+ } catch (error) {}
package/lib/define.d.ts CHANGED
@@ -1,6 +1,4 @@
1
1
  declare const define: {
2
- 'process.env': {
3
- NODE_ENV: string | undefined;
4
- };
2
+ 'process.env': string;
5
3
  };
6
4
  export default define;
package/lib/define.js CHANGED
@@ -1 +1,9 @@
1
- import{CONFIG as o}from"./common.js";import{NODE_ENV as e}from"./process-env.js";let r={"process.env":{NODE_ENV:e,...o.env}};export default r;
1
+ import { CONFIG } from './common.js';
2
+ import { NODE_ENV } from './process-env.js';
3
+ const define = {
4
+ 'process.env': JSON.stringify({
5
+ NODE_ENV: NODE_ENV,
6
+ ...CONFIG.env
7
+ })
8
+ };
9
+ export default define;
package/lib/docs.js CHANGED
@@ -1 +1,118 @@
1
- import{statSync as e}from"fs";import{dirname as t,join as o}from"path";import{watch as r}from"chokidar";import n from"./generate-api.js";import{APPTYPE as p,FRAMEWORK as i}from"./process-env.js";import{resolveNodeModulesPath as s,resolveProgramPath as l}from"./utils.js";import{vm as m}from"./virtual-module-plugin.js";import{alias as a}from"./webpack.common.js";let c="@app/md";export const envApi={};let d={[c]:{}},f={react:"createElement","solid-js":"createComponent"}[i],u=`() => ${f}(SuspenseComp, { comp: $1 })`,$=`import { ${f} } from "${i}";import { SuspenseComp } from "@moneko/${i}";`;function j(e,r){let p=e.replace(RegExp(`^${a["@pkg"]}`),""),i=t(p).replace(/^\//,""),l=[c,i].join("/"),j=p.split("/").pop()?.replace(/\.tsx?/,".md");if(!j)return;d[c][i]||(d[c][i]={});let g=o(l,j);if("deleted"===r)d[c][i][j]&&delete d[c][i][j];else{let t=n(e);d[g]=t,t?d[c][i][j]=`rr(() => import(/* webpackChunkName: '${g}' */'${g}?raw').then((res) => ({default: ${f}(Dynamic, {text: res.default, component: 'n-md'})})))rr`:d[c][i][j]&&delete d[c][i][j]}let h={};for(let e in d[c])Object.prototype.hasOwnProperty.call(d[c],e)&&(h[e]=Object.values(d[c][e]));let y={...d};for(let e in delete y[c],Object.assign(envApi,{...y,"@app/docs":`${$}export default ${JSON.stringify(h).replace(/"rr\((.+?)\)rr"/g,u)}`}),envApi)Object.prototype.hasOwnProperty.call(envApi,e)&&m?.writeModule(s(e),envApi[e])}["react","solid-js"].includes(i)||(u="$1",$=""),"solid-js"===i&&($=`import { Dynamic } from "${i}/web";${$}`),"library"===p&&function(){let t=[],o=r(l("components"),{ignored:[/(^|[\\/\\])\../,/(^|[\\/\\])__tests__([\\/\\]|$)/],persistent:!0,ignoreInitial:!1});function n(t){return/\.tsx?$/.test(t)&&e(t).isFile()}o.on("add",e=>{n(e)&&(j(e,"added"),t.push(e))}),o.on("change",e=>{n(e)&&j(e,"change")}),o.on("unlink",e=>{n(e)&&(j(e,"deleted"),t.splice(t.indexOf(e),1))}),o.on("ready",()=>{t.forEach(e=>{j(e,"change")})}),process.on("SIGINT",function(){o.close()})}();
1
+ import { statSync } from 'fs';
2
+ import { dirname, join } from 'path';
3
+ import { watch } from 'chokidar';
4
+ import generateApi from './generate-api.js';
5
+ import { APPTYPE, FRAMEWORK } from './process-env.js';
6
+ import { resolveNodeModulesPath, resolveProgramPath } from './utils.js';
7
+ import { vm } from './virtual-module-plugin.js';
8
+ import { alias } from './webpack.common.js';
9
+ const base = '@app/comment';
10
+ const apiEntry = '@app/docs';
11
+ export const envApi = {};
12
+ const cacheEnvApi = {
13
+ [base]: {}
14
+ };
15
+ const createElement = {
16
+ react: 'createElement',
17
+ 'solid-js': 'createComponent'
18
+ }[FRAMEWORK];
19
+ let replaceStr = `() => ${createElement}(SuspenseComp, { comp: $1 })`;
20
+ let prefixStr = `import { ${createElement} } from "${FRAMEWORK}";import { SuspenseComp } from "@moneko/${FRAMEWORK}";`;
21
+ if (![
22
+ 'react',
23
+ 'solid-js'
24
+ ].includes(FRAMEWORK)) {
25
+ replaceStr = '$1';
26
+ prefixStr = '';
27
+ }
28
+ if (FRAMEWORK === 'solid-js') {
29
+ prefixStr = `import { Dynamic } from "${FRAMEWORK}/web";${prefixStr}`;
30
+ }
31
+ function handleFileChange(filePath, changeType) {
32
+ const fil = filePath.replace(new RegExp(`^${alias['@pkg']}`), '');
33
+ const __dir = dirname(fil).replace(/^\//, '');
34
+ const apiDir = [
35
+ base,
36
+ __dir
37
+ ].join('/');
38
+ const name = fil.split('/').pop()?.replace(/\.tsx?/, '.md');
39
+ if (!name) return;
40
+ if (!cacheEnvApi[base][__dir]) {
41
+ cacheEnvApi[base][__dir] = {};
42
+ }
43
+ const target = join(apiDir, name);
44
+ if (changeType === 'deleted') {
45
+ if (cacheEnvApi[base][__dir][name]) {
46
+ delete cacheEnvApi[base][__dir][name];
47
+ }
48
+ } else {
49
+ const api = generateApi(filePath);
50
+ cacheEnvApi[target] = api;
51
+ if (api) {
52
+ cacheEnvApi[base][__dir][name] = `rr(() => import(/* webpackChunkName: '${target}' */'${target}?raw').then((res) => ({default: ${createElement}(Dynamic, {text: res.default, component: 'n-md'})})))rr`;
53
+ } else if (cacheEnvApi[base][__dir][name]) {
54
+ delete cacheEnvApi[base][__dir][name];
55
+ }
56
+ }
57
+ const basestr = {};
58
+ for(const k in cacheEnvApi[base]){
59
+ if (Object.prototype.hasOwnProperty.call(cacheEnvApi[base], k)) {
60
+ basestr[k] = Object.values(cacheEnvApi[base][k]);
61
+ }
62
+ }
63
+ const env = {
64
+ ...cacheEnvApi
65
+ };
66
+ delete env[base];
67
+ Object.assign(envApi, {
68
+ ...env,
69
+ [apiEntry]: `${prefixStr}export default ${JSON.stringify(basestr).replace(/"rr\((.+?)\)rr"/g, replaceStr)}`
70
+ });
71
+ for(const key in envApi){
72
+ if (Object.prototype.hasOwnProperty.call(envApi, key)) {
73
+ vm?.writeModule(resolveNodeModulesPath(key), envApi[key]);
74
+ }
75
+ }
76
+ }
77
+ function watchDirectory() {
78
+ const files = [];
79
+ const watcher = watch(resolveProgramPath('components'), {
80
+ ignored: [
81
+ /(^|[\\/\\])\../,
82
+ /(^|[\\/\\])__tests__([\\/\\]|$)/
83
+ ],
84
+ persistent: true,
85
+ ignoreInitial: false
86
+ });
87
+ function isTs(path) {
88
+ return /\.tsx?$/.test(path) && statSync(path).isFile();
89
+ }
90
+ watcher.on('add', (path)=>{
91
+ if (isTs(path)) {
92
+ handleFileChange(path, 'added');
93
+ files.push(path);
94
+ }
95
+ });
96
+ watcher.on('change', (path)=>{
97
+ if (isTs(path)) {
98
+ handleFileChange(path, 'change');
99
+ }
100
+ });
101
+ watcher.on('unlink', (path)=>{
102
+ if (isTs(path)) {
103
+ handleFileChange(path, 'deleted');
104
+ files.splice(files.indexOf(path), 1);
105
+ }
106
+ });
107
+ watcher.on('ready', ()=>{
108
+ files.forEach((f)=>{
109
+ handleFileChange(f, 'change');
110
+ });
111
+ });
112
+ process.on('SIGINT', function() {
113
+ watcher.close();
114
+ });
115
+ }
116
+ if (APPTYPE === 'library') {
117
+ watchDirectory();
118
+ }
package/lib/done.js CHANGED
@@ -1 +1,12 @@
1
- export default class{constructor(o){this.options=Object.assign({},o)}apply(o){o.hooks.done.tap("DoneWebpackPlugin",()=>{this.options.done?.()})}};
1
+ class DoneWebpackPlugin {
2
+ options;
3
+ constructor(options){
4
+ this.options = Object.assign({}, options);
5
+ }
6
+ apply(compiler) {
7
+ compiler.hooks.done.tap('DoneWebpackPlugin', ()=>{
8
+ this.options.done?.();
9
+ });
10
+ }
11
+ }
12
+ export default DoneWebpackPlugin;
package/lib/esm.js CHANGED
@@ -1 +1,7 @@
1
- export default function t(t,...e){let r=t.raw[0];for(let a=0;a<e.length;a++)r+=e[a]+t.raw[a+1];return`data:text/javascript;base64,${Buffer.from(r).toString("base64")}`}
1
+ export default function esm(templateStrings, ...substitutions) {
2
+ let js = templateStrings.raw[0];
3
+ for(let i = 0; i < substitutions.length; i++){
4
+ js += substitutions[i] + templateStrings.raw[i + 1];
5
+ }
6
+ return `data:text/javascript;base64,${Buffer.from(js).toString('base64')}`;
7
+ }