@qlover/create-app 0.0.4 → 0.1.1
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/CHANGELOG.md +7 -0
- package/README.md +5 -0
- package/bin/create-app.js +7 -9
- package/dist/cjs/index.d.ts +39 -15
- package/dist/cjs/index.js +1 -1
- package/dist/es/index.d.ts +39 -15
- package/dist/es/index.js +1 -1
- package/package.json +4 -2
- package/templates/{pack-app/packages/node → node-lib}/package.json +1 -1
- package/templates/pack-app/package.json +5 -7
- package/templates/{fe-react → react-app}/config/i18n.ts +1 -1
- package/templates/{fe-react → react-app}/lib/fe-react-theme/index.ts +1 -1
- package/templates/{fe-react → react-app}/lib/fe-react-theme/tw-generator.js +0 -1
- package/templates/{fe-react → react-app}/lib/openAiApi/index.ts +1 -1
- package/templates/{fe-react → react-app}/postcss.config.js +3 -3
- package/templates/{fe-react → react-app}/src/containers/globals.ts +1 -1
- package/templates/{fe-react → react-app}/src/containers/index.ts +1 -1
- package/templates/{fe-react → react-app}/src/hooks/useStrictEffect.ts +7 -4
- package/templates/{fe-react → react-app}/src/services/controllers/UserController.ts +1 -1
- package/templates/{fe-react → react-app}/src/services/feApi/FeApi.ts +1 -1
- package/templates/{fe-react → react-app}/src/services/feApi/FeApiMockPlugin.ts +3 -1
- package/templates/{fe-react → react-app}/src/services/feApi/FeApiType.ts +0 -1
- package/templates/{fe-react → react-app}/src/services/pageProcesser/PageProcesser.ts +1 -1
- package/templates/{fe-react → react-app}/src/utils/datetime.ts +10 -5
- package/templates/react-app/src/vite-env.d.ts +1 -0
- package/templates/react-vite-lib/.gitignore.template +27 -0
- package/templates/{pack-app/packages/react-vite-lib → react-vite-lib}/__tests__/Sum.test.ts +1 -1
- package/templates/{pack-app/packages/react-vite-lib → react-vite-lib}/eslint.config.js +12 -12
- package/templates/react-vite-lib/src/vite-env.d.ts +1 -0
- package/templates/fe-react/src/vite-env.d.ts +0 -1
- package/templates/pack-app/packages/browser/__tests__/calc.test.ts +0 -9
- package/templates/pack-app/packages/browser/package.json +0 -11
- package/templates/pack-app/packages/browser/rollup.config.js +0 -70
- package/templates/pack-app/packages/browser/src/calc.ts +0 -3
- package/templates/pack-app/packages/browser/src/index.ts +0 -1
- package/templates/pack-app/packages/browser/tsconfig.json +0 -15
- package/templates/pack-app/packages/react-vite-lib/src/vite-env.d.ts +0 -1
- /package/templates/{pack-app/packages/node → node-lib}/__tests__/readJson.test.ts +0 -0
- /package/templates/{pack-app/packages/node → node-lib}/rollup.config.js +0 -0
- /package/templates/{pack-app/packages/node → node-lib}/src/index.ts +0 -0
- /package/templates/{pack-app/packages/node → node-lib}/src/readJson.ts +0 -0
- /package/templates/{pack-app/packages/node → node-lib}/tsconfig.json +0 -0
- /package/templates/{fe-react → react-app}/.env +0 -0
- /package/templates/{fe-react → react-app}/.gitignore.template +0 -0
- /package/templates/{fe-react → react-app}/README.md +0 -0
- /package/templates/{fe-react → react-app}/config/app.common.ts +0 -0
- /package/templates/{fe-react → react-app}/config/app.router.json +0 -0
- /package/templates/{fe-react → react-app}/config/feapi.mock.json +0 -0
- /package/templates/{fe-react → react-app}/config/theme.json +0 -0
- /package/templates/{fe-react → react-app}/eslint.config.js +0 -0
- /package/templates/{fe-react → react-app}/index.html +0 -0
- /package/templates/{fe-react → react-app}/lib/fe-react-controller/FeController.ts +0 -0
- /package/templates/{fe-react → react-app}/lib/fe-react-controller/index.ts +0 -0
- /package/templates/{fe-react → react-app}/lib/fe-react-controller/useController.ts +0 -0
- /package/templates/{fe-react → react-app}/lib/fe-react-theme/ThemeController.ts +0 -0
- /package/templates/{fe-react → react-app}/lib/fe-react-theme/ThemeStateGetter.ts +0 -0
- /package/templates/{fe-react → react-app}/lib/fe-react-theme/type.ts +0 -0
- /package/templates/{fe-react → react-app}/lib/openAiApi/OpenAIAuthPlugin.ts +0 -0
- /package/templates/{fe-react → react-app}/lib/openAiApi/OpenAIClient.ts +0 -0
- /package/templates/{fe-react → react-app}/lib/openAiApi/StreamProcessor.ts +0 -0
- /package/templates/{fe-react → react-app}/lib/request-common-plugin/index.ts +0 -0
- /package/templates/{fe-react → react-app}/lib/tw-root10px/index.css +0 -0
- /package/templates/{fe-react → react-app}/lib/tw-root10px/index.js +0 -0
- /package/templates/{fe-react → react-app}/package.json +0 -0
- /package/templates/{fe-react → react-app}/public/locales/en/about.json +0 -0
- /package/templates/{fe-react → react-app}/public/locales/en/common.json +0 -0
- /package/templates/{fe-react → react-app}/public/locales/en/executor.json +0 -0
- /package/templates/{fe-react → react-app}/public/locales/en/home.json +0 -0
- /package/templates/{fe-react → react-app}/public/locales/en/jsonStorage.json +0 -0
- /package/templates/{fe-react → react-app}/public/locales/en/login.json +0 -0
- /package/templates/{fe-react → react-app}/public/locales/en/request.json +0 -0
- /package/templates/{fe-react → react-app}/public/locales/zh/about.json +0 -0
- /package/templates/{fe-react → react-app}/public/locales/zh/common.json +0 -0
- /package/templates/{fe-react → react-app}/public/locales/zh/executor.json +0 -0
- /package/templates/{fe-react → react-app}/public/locales/zh/home.json +0 -0
- /package/templates/{fe-react → react-app}/public/locales/zh/jsonStorage.json +0 -0
- /package/templates/{fe-react → react-app}/public/locales/zh/login.json +0 -0
- /package/templates/{fe-react → react-app}/public/locales/zh/request.json +0 -0
- /package/templates/{fe-react → react-app}/public/logo.svg +0 -0
- /package/templates/{fe-react → react-app}/src/App.tsx +0 -0
- /package/templates/{fe-react → react-app}/src/assets/react.svg +0 -0
- /package/templates/{fe-react → react-app}/src/components/Loading.tsx +0 -0
- /package/templates/{fe-react → react-app}/src/components/LocaleLink.tsx +0 -0
- /package/templates/{fe-react → react-app}/src/components/ProcessProvider.tsx +0 -0
- /package/templates/{fe-react → react-app}/src/components/ThemeSwitcher.tsx +0 -0
- /package/templates/{fe-react → react-app}/src/containers/context/BaseRouteContext.ts +0 -0
- /package/templates/{fe-react → react-app}/src/containers/context/BaseRouteProvider.tsx +0 -0
- /package/templates/{fe-react → react-app}/src/hooks/useLanguageGuard.ts +0 -0
- /package/templates/{fe-react → react-app}/src/main.tsx +0 -0
- /package/templates/{fe-react → react-app}/src/pages/404.tsx +0 -0
- /package/templates/{fe-react → react-app}/src/pages/500.tsx +0 -0
- /package/templates/{fe-react → react-app}/src/pages/auth/Layout.tsx +0 -0
- /package/templates/{fe-react → react-app}/src/pages/auth/Login.tsx +0 -0
- /package/templates/{fe-react → react-app}/src/pages/auth/Register.tsx +0 -0
- /package/templates/{fe-react → react-app}/src/pages/base/About.tsx +0 -0
- /package/templates/{fe-react → react-app}/src/pages/base/Executor.tsx +0 -0
- /package/templates/{fe-react → react-app}/src/pages/base/Home.tsx +0 -0
- /package/templates/{fe-react → react-app}/src/pages/base/JSONStorage.tsx +0 -0
- /package/templates/{fe-react → react-app}/src/pages/base/Layout.tsx +0 -0
- /package/templates/{fe-react → react-app}/src/pages/base/RedirectPathname.tsx +0 -0
- /package/templates/{fe-react → react-app}/src/pages/base/Request.tsx +0 -0
- /package/templates/{fe-react → react-app}/src/pages/base/components/BaseHeader.tsx +0 -0
- /package/templates/{fe-react → react-app}/src/pages/index.tsx +0 -0
- /package/templates/{fe-react → react-app}/src/services/controllers/ExecutorController.ts +0 -0
- /package/templates/{fe-react → react-app}/src/services/controllers/JSONStorageController.ts +0 -0
- /package/templates/{fe-react → react-app}/src/services/controllers/RequestController.ts +0 -0
- /package/templates/{fe-react → react-app}/src/services/controllers/RouterController.ts +0 -0
- /package/templates/{fe-react → react-app}/src/services/feApi/index.ts +0 -0
- /package/templates/{fe-react → react-app}/src/services/i18n/index.ts +0 -0
- /package/templates/{fe-react → react-app}/src/services/pageProcesser/index.ts +0 -0
- /package/templates/{fe-react → react-app}/src/styles/css/index.css +0 -0
- /package/templates/{fe-react → react-app}/src/styles/css/page.css +0 -0
- /package/templates/{fe-react → react-app}/src/styles/css/tailwind.css +0 -0
- /package/templates/{fe-react → react-app}/src/types/Page.ts +0 -0
- /package/templates/{fe-react → react-app}/src/types/UIDependenciesInterface.ts +0 -0
- /package/templates/{fe-react → react-app}/src/types/global.d.ts +0 -0
- /package/templates/{fe-react → react-app}/src/utils/RequestLogger.ts +0 -0
- /package/templates/{fe-react → react-app}/src/utils/thread.ts +0 -0
- /package/templates/{fe-react → react-app}/tailwind.config.js +0 -0
- /package/templates/{fe-react → react-app}/tsconfig.app.json +0 -0
- /package/templates/{fe-react → react-app}/tsconfig.json +0 -0
- /package/templates/{fe-react → react-app}/tsconfig.node.json +0 -0
- /package/templates/{fe-react → react-app}/vite.config.ts +0 -0
- /package/templates/{pack-app/packages/react-vite-lib → react-vite-lib}/README.md +0 -0
- /package/templates/{pack-app/packages/react-vite-lib → react-vite-lib}/__tests__/Text.test.tsx +0 -0
- /package/templates/{pack-app/packages/react-vite-lib → react-vite-lib}/index.html +0 -0
- /package/templates/{pack-app/packages/react-vite-lib → react-vite-lib}/package.json +0 -0
- /package/templates/{pack-app/packages/react-vite-lib → react-vite-lib}/public/vite.svg +0 -0
- /package/templates/{pack-app/packages/react-vite-lib → react-vite-lib}/src/calc.ts +0 -0
- /package/templates/{pack-app/packages/react-vite-lib → react-vite-lib}/src/commponents/Text.tsx +0 -0
- /package/templates/{pack-app/packages/react-vite-lib → react-vite-lib}/src/index.ts +0 -0
- /package/templates/{pack-app/packages/react-vite-lib → react-vite-lib}/tsconfig.json +0 -0
- /package/templates/{pack-app/packages/react-vite-lib → react-vite-lib}/vite.config.ts +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
|
|
2
2
|
|
|
3
|
+
## [0.1.1](https://github.com/qlover/fe-base/compare/create-app-v0.0.4...create-app-v0.1.1) (2025-01-15)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* create app v0.1 ([#209](https://github.com/qlover/fe-base/issues/209)) ([b730d76](https://github.com/qlover/fe-base/commit/b730d76512a9e1ce765ec77145abfe179b585178))
|
|
9
|
+
|
|
3
10
|
## [0.0.4](https://github.com/qlover/fe-base/compare/create-app-v0.0.3...create-app-v0.0.4) (2025-01-15)
|
|
4
11
|
|
|
5
12
|
|
package/README.md
ADDED
package/bin/create-app.js
CHANGED
|
@@ -7,20 +7,18 @@ import { existsSync } from 'fs';
|
|
|
7
7
|
|
|
8
8
|
async function main() {
|
|
9
9
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
10
|
-
const
|
|
10
|
+
const templateRootPath = join(__dirname, '../templates');
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
options: {
|
|
14
|
-
templatePath
|
|
15
|
-
}
|
|
16
|
-
};
|
|
17
|
-
|
|
18
|
-
if (!existsSync(templatePath)) {
|
|
12
|
+
if (!existsSync(templateRootPath)) {
|
|
19
13
|
console.error('Template is empty!');
|
|
20
14
|
process.exit(1);
|
|
21
15
|
}
|
|
22
16
|
|
|
23
|
-
const generator = new Generator(
|
|
17
|
+
const generator = new Generator({
|
|
18
|
+
options: {
|
|
19
|
+
templateRootPath
|
|
20
|
+
}
|
|
21
|
+
});
|
|
24
22
|
|
|
25
23
|
await generator.generate();
|
|
26
24
|
}
|
package/dist/cjs/index.d.ts
CHANGED
|
@@ -3,13 +3,20 @@ import { Logger } from '@qlover/fe-utils';
|
|
|
3
3
|
import { DistinctQuestion } from 'inquirer';
|
|
4
4
|
import ignore from 'ignore';
|
|
5
5
|
|
|
6
|
+
type GeneratorPrompt = DistinctQuestion;
|
|
6
7
|
type GeneratorOptions = {
|
|
7
|
-
prompts?:
|
|
8
|
-
|
|
8
|
+
prompts?: GeneratorPrompt[];
|
|
9
|
+
templateRootPath: string;
|
|
9
10
|
};
|
|
10
|
-
interface GeneratorResult {
|
|
11
|
+
interface GeneratorResult extends GeneratorOptions {
|
|
11
12
|
name: string;
|
|
12
|
-
|
|
13
|
+
template: string;
|
|
14
|
+
subPackages?: string[];
|
|
15
|
+
/**
|
|
16
|
+
* @default `packages`
|
|
17
|
+
*/
|
|
18
|
+
packagesNames?: string;
|
|
19
|
+
targetPath?: string;
|
|
13
20
|
}
|
|
14
21
|
type TaskOptions = {
|
|
15
22
|
templateFiles: TemplateFile[];
|
|
@@ -19,17 +26,16 @@ type TemplateFile = {
|
|
|
19
26
|
path: string;
|
|
20
27
|
content: string;
|
|
21
28
|
};
|
|
29
|
+
|
|
22
30
|
declare class Generator {
|
|
23
|
-
private prompts;
|
|
24
31
|
private ora;
|
|
25
32
|
protected context: FeScriptContext<GeneratorOptions>;
|
|
26
33
|
constructor(context: Partial<FeScriptContext<GeneratorOptions>>);
|
|
27
34
|
get logger(): Logger;
|
|
28
|
-
steps(prompts:
|
|
29
|
-
getTemplateFiles(path: string): Promise<TemplateFile[]>;
|
|
35
|
+
steps(prompts: GeneratorPrompt[]): Promise<GeneratorResult>;
|
|
30
36
|
action({ label, task }: {
|
|
31
37
|
label: string;
|
|
32
|
-
task: () => Promise<unknown
|
|
38
|
+
task: (() => Promise<unknown>) | (() => unknown);
|
|
33
39
|
}): Promise<unknown>;
|
|
34
40
|
/**
|
|
35
41
|
* Creates files and directories based on the provided template files.
|
|
@@ -38,31 +44,49 @@ declare class Generator {
|
|
|
38
44
|
* to the file system. It handles both files and directories, ensuring that
|
|
39
45
|
* the directory structure is preserved.
|
|
40
46
|
*
|
|
41
|
-
* @param templateFiles - An array of template files to be created.
|
|
42
47
|
* @param result - The result object containing the name and template name.
|
|
43
48
|
*
|
|
44
49
|
* @returns A promise that resolves when all files have been created.
|
|
45
50
|
*
|
|
46
51
|
* @example
|
|
47
|
-
* const
|
|
48
|
-
* await
|
|
52
|
+
* const result = { name: 'my-app', template: 'react-app' };
|
|
53
|
+
* await this.create(result);
|
|
49
54
|
*/
|
|
50
|
-
create(
|
|
55
|
+
create(result: GeneratorResult): Promise<void>;
|
|
56
|
+
private isPackageTemplate;
|
|
57
|
+
getGeneratorResult(): Promise<GeneratorResult>;
|
|
51
58
|
generate(): Promise<void>;
|
|
52
59
|
}
|
|
53
60
|
|
|
54
61
|
declare const validRequiredString: (value: string, key: string) => string | true;
|
|
62
|
+
declare const defaultPrompts: GeneratorPrompt[];
|
|
63
|
+
declare const packagePrompts: GeneratorPrompt[];
|
|
55
64
|
|
|
56
65
|
declare class Copyer {
|
|
57
66
|
static IGNORE_FILE: string;
|
|
58
67
|
getIg(targetDir: string): ignore.Ignore | undefined;
|
|
68
|
+
ensureDir(dir: string): void;
|
|
69
|
+
/**
|
|
70
|
+
* Asynchronously copy files from source to target directory.
|
|
71
|
+
* @param {string} sourcePath - Source directory.
|
|
72
|
+
* @param {string} targetDir - Target directory.
|
|
73
|
+
* @param {ignore.Ignore} ig - Ignore rules.
|
|
74
|
+
* @returns {Promise<void>} - A promise that resolves when the copy is complete.
|
|
75
|
+
* @example
|
|
76
|
+
* await copyer.copyFilesPromise('src', 'dest', ignoreInstance);
|
|
77
|
+
*/
|
|
78
|
+
copyFilesPromise(sourcePath: string, targetDir: string, ig?: ignore.Ignore): Promise<void>;
|
|
59
79
|
/**
|
|
60
80
|
* copy templates recursively
|
|
61
|
-
* @param {string}
|
|
81
|
+
* @param {string} sourePath - source directory
|
|
62
82
|
* @param {string} targetDir - target directory
|
|
63
83
|
* @param {ignore.Ignore} ig - ignore rules
|
|
64
84
|
*/
|
|
65
|
-
|
|
85
|
+
copyFilesSync(sourePath: string, targetDir: string, ig?: ignore.Ignore): void;
|
|
86
|
+
create(result: GeneratorResult): void;
|
|
87
|
+
createPromise(result: GeneratorResult): Promise<void>;
|
|
88
|
+
createPath(result: GeneratorResult): void;
|
|
89
|
+
createPathPromise(result: GeneratorResult): Promise<void>;
|
|
66
90
|
}
|
|
67
91
|
|
|
68
|
-
export { Copyer, Generator, type GeneratorOptions, type GeneratorResult, type TaskOptions, type TemplateFile, validRequiredString };
|
|
92
|
+
export { Copyer, Generator, type GeneratorOptions, type GeneratorPrompt, type GeneratorResult, type TaskOptions, type TemplateFile, defaultPrompts, packagePrompts, validRequiredString };
|
package/dist/cjs/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var t=require("@qlover/fe-scripts"),e=require("inquirer"),r=require("path"),
|
|
1
|
+
"use strict";var t=require("@qlover/fe-scripts"),e=require("inquirer"),r=require("path"),i=require("ora"),s=require("fs"),o=require("ignore");function a(t,e,r,i){return new(r||(r=Promise))((function(s,o){function a(t){try{c(i.next(t))}catch(t){o(t)}}function n(t){try{c(i.throw(t))}catch(t){o(t)}}function c(t){var e;t.done?s(t.value):(e=t.value,e instanceof r?e:new r((function(t){t(e)}))).then(a,n)}c((i=i.apply(t,e||[])).next())}))}"function"==typeof SuppressedError&&SuppressedError;const n=(t,e)=>"string"==typeof t&&""!==t.trim()||`${e} is required`,c=["node-lib","react-app","react-vite-lib"],p=[{type:"input",name:"name",message:"Project name",validate:t=>n(t,"Project name")},{type:"list",name:"template",message:"Template name",choices:[...c,"pack-app"]}],h=[{type:"checkbox",name:"subPackages",message:"Sub package names",choices:c}],{copyFile:l,stat:u}=s.promises;class m{getIg(t){const e=r.join(t,m.IGNORE_FILE);if(!s.existsSync(e))return;const i=s.readFileSync(e,"utf8").split("\n").map((t=>t.trim())).filter((t=>t&&!t.startsWith("#")));return o().add(i)}ensureDir(t){s.existsSync(t)||s.mkdirSync(t,{recursive:!0})}copyFilesPromise(t,e,i){return a(this,void 0,void 0,(function*(){const o=yield s.promises.readdir(t);yield Promise.all(o.map((s=>a(this,void 0,void 0,(function*(){const o=r.join(t,s),a=r.join(e,s);if(i&&i.ignores(s))return;this.ensureDir(r.dirname(a));(yield u(o)).isDirectory()?yield this.copyFilesPromise(o,a,i):yield l(o,a)})))))}))}copyFilesSync(t,e,i){const o=s.readdirSync(t);for(const a of o){const o=r.join(t,a),n=r.join(e,a);i&&i.ignores(a)||(this.ensureDir(r.dirname(n)),s.statSync(o).isDirectory()?this.copyFilesSync(o,n,i):s.copyFileSync(o,n))}}create(t){const{targetPath:e,templateRootPath:i,subPackages:s,packagesNames:o="packages"}=t;if(!e||!i)throw new Error("targetPath and templatePath are required");if(this.createPath(t),s)for(const i of s){const s=r.join(e,o,i);this.createPath(Object.assign(Object.assign({},t),{targetPath:s,template:i}))}}createPromise(t){return a(this,void 0,void 0,(function*(){const{targetPath:e,templateRootPath:i,subPackages:s,packagesNames:o="packages"}=t;if(!e||!i)throw new Error("targetPath and templatePath are required");if(yield this.createPathPromise(t),s)for(const i of s){const s=r.join(e,o,i);yield this.createPathPromise(Object.assign(Object.assign({},t),{targetPath:s,template:i}))}}))}createPath(t){const{targetPath:e="",templateRootPath:i,template:s}=t;this.ensureDir(e);const o=r.join(i,s),a=this.getIg(e);this.copyFilesSync(o,e,a)}createPathPromise(t){const{targetPath:e="",templateRootPath:i,template:s}=t;this.ensureDir(e);const o=r.join(i,s),a=this.getIg(e);return this.copyFilesPromise(o,e,a)}}m.IGNORE_FILE=".gitignore.template";exports.Copyer=m,exports.Generator=class{constructor(e){var r;const o=null===(r=e.options)||void 0===r?void 0:r.templateRootPath;if(!o)throw new Error("template path not exit");if(!s.existsSync(o))throw new Error("template path not exit");this.ora=i.oraPromise,this.context=new t.FeScriptContext(e)}get logger(){return this.context.logger}steps(t){return a(this,void 0,void 0,(function*(){try{return yield e.prompt(t)}catch(t){throw this.logger.error(t),t}}))}action(t){return a(this,arguments,void 0,(function*({label:t,task:e}){let r=e();r instanceof Promise||(r=Promise.resolve(r));const i=t;return this.ora(r,i),r}))}create(t){return a(this,void 0,void 0,(function*(){const e=r.join(process.cwd(),t.name),i=new m,s=Object.assign(Object.assign({},t),{targetPath:e,templateRootPath:this.context.options.templateRootPath});return this.logger.debug(s),i.createPromise(s)}))}isPackageTemplate(t){return"pack-app"===t}getGeneratorResult(){return a(this,void 0,void 0,(function*(){const t=yield this.steps(p);if(this.isPackageTemplate(t.template)){const e=yield this.steps(h);Object.assign(t,e)}return t}))}generate(){return a(this,void 0,void 0,(function*(){const t=yield this.getGeneratorResult();yield this.action({label:"Creating project",task:()=>this.create(t)})}))}},exports.defaultPrompts=p,exports.packagePrompts=h,exports.validRequiredString=n;
|
package/dist/es/index.d.ts
CHANGED
|
@@ -3,13 +3,20 @@ import { Logger } from '@qlover/fe-utils';
|
|
|
3
3
|
import { DistinctQuestion } from 'inquirer';
|
|
4
4
|
import ignore from 'ignore';
|
|
5
5
|
|
|
6
|
+
type GeneratorPrompt = DistinctQuestion;
|
|
6
7
|
type GeneratorOptions = {
|
|
7
|
-
prompts?:
|
|
8
|
-
|
|
8
|
+
prompts?: GeneratorPrompt[];
|
|
9
|
+
templateRootPath: string;
|
|
9
10
|
};
|
|
10
|
-
interface GeneratorResult {
|
|
11
|
+
interface GeneratorResult extends GeneratorOptions {
|
|
11
12
|
name: string;
|
|
12
|
-
|
|
13
|
+
template: string;
|
|
14
|
+
subPackages?: string[];
|
|
15
|
+
/**
|
|
16
|
+
* @default `packages`
|
|
17
|
+
*/
|
|
18
|
+
packagesNames?: string;
|
|
19
|
+
targetPath?: string;
|
|
13
20
|
}
|
|
14
21
|
type TaskOptions = {
|
|
15
22
|
templateFiles: TemplateFile[];
|
|
@@ -19,17 +26,16 @@ type TemplateFile = {
|
|
|
19
26
|
path: string;
|
|
20
27
|
content: string;
|
|
21
28
|
};
|
|
29
|
+
|
|
22
30
|
declare class Generator {
|
|
23
|
-
private prompts;
|
|
24
31
|
private ora;
|
|
25
32
|
protected context: FeScriptContext<GeneratorOptions>;
|
|
26
33
|
constructor(context: Partial<FeScriptContext<GeneratorOptions>>);
|
|
27
34
|
get logger(): Logger;
|
|
28
|
-
steps(prompts:
|
|
29
|
-
getTemplateFiles(path: string): Promise<TemplateFile[]>;
|
|
35
|
+
steps(prompts: GeneratorPrompt[]): Promise<GeneratorResult>;
|
|
30
36
|
action({ label, task }: {
|
|
31
37
|
label: string;
|
|
32
|
-
task: () => Promise<unknown
|
|
38
|
+
task: (() => Promise<unknown>) | (() => unknown);
|
|
33
39
|
}): Promise<unknown>;
|
|
34
40
|
/**
|
|
35
41
|
* Creates files and directories based on the provided template files.
|
|
@@ -38,31 +44,49 @@ declare class Generator {
|
|
|
38
44
|
* to the file system. It handles both files and directories, ensuring that
|
|
39
45
|
* the directory structure is preserved.
|
|
40
46
|
*
|
|
41
|
-
* @param templateFiles - An array of template files to be created.
|
|
42
47
|
* @param result - The result object containing the name and template name.
|
|
43
48
|
*
|
|
44
49
|
* @returns A promise that resolves when all files have been created.
|
|
45
50
|
*
|
|
46
51
|
* @example
|
|
47
|
-
* const
|
|
48
|
-
* await
|
|
52
|
+
* const result = { name: 'my-app', template: 'react-app' };
|
|
53
|
+
* await this.create(result);
|
|
49
54
|
*/
|
|
50
|
-
create(
|
|
55
|
+
create(result: GeneratorResult): Promise<void>;
|
|
56
|
+
private isPackageTemplate;
|
|
57
|
+
getGeneratorResult(): Promise<GeneratorResult>;
|
|
51
58
|
generate(): Promise<void>;
|
|
52
59
|
}
|
|
53
60
|
|
|
54
61
|
declare const validRequiredString: (value: string, key: string) => string | true;
|
|
62
|
+
declare const defaultPrompts: GeneratorPrompt[];
|
|
63
|
+
declare const packagePrompts: GeneratorPrompt[];
|
|
55
64
|
|
|
56
65
|
declare class Copyer {
|
|
57
66
|
static IGNORE_FILE: string;
|
|
58
67
|
getIg(targetDir: string): ignore.Ignore | undefined;
|
|
68
|
+
ensureDir(dir: string): void;
|
|
69
|
+
/**
|
|
70
|
+
* Asynchronously copy files from source to target directory.
|
|
71
|
+
* @param {string} sourcePath - Source directory.
|
|
72
|
+
* @param {string} targetDir - Target directory.
|
|
73
|
+
* @param {ignore.Ignore} ig - Ignore rules.
|
|
74
|
+
* @returns {Promise<void>} - A promise that resolves when the copy is complete.
|
|
75
|
+
* @example
|
|
76
|
+
* await copyer.copyFilesPromise('src', 'dest', ignoreInstance);
|
|
77
|
+
*/
|
|
78
|
+
copyFilesPromise(sourcePath: string, targetDir: string, ig?: ignore.Ignore): Promise<void>;
|
|
59
79
|
/**
|
|
60
80
|
* copy templates recursively
|
|
61
|
-
* @param {string}
|
|
81
|
+
* @param {string} sourePath - source directory
|
|
62
82
|
* @param {string} targetDir - target directory
|
|
63
83
|
* @param {ignore.Ignore} ig - ignore rules
|
|
64
84
|
*/
|
|
65
|
-
|
|
85
|
+
copyFilesSync(sourePath: string, targetDir: string, ig?: ignore.Ignore): void;
|
|
86
|
+
create(result: GeneratorResult): void;
|
|
87
|
+
createPromise(result: GeneratorResult): Promise<void>;
|
|
88
|
+
createPath(result: GeneratorResult): void;
|
|
89
|
+
createPathPromise(result: GeneratorResult): Promise<void>;
|
|
66
90
|
}
|
|
67
91
|
|
|
68
|
-
export { Copyer, Generator, type GeneratorOptions, type GeneratorResult, type TaskOptions, type TemplateFile, validRequiredString };
|
|
92
|
+
export { Copyer, Generator, type GeneratorOptions, type GeneratorPrompt, type GeneratorResult, type TaskOptions, type TemplateFile, defaultPrompts, packagePrompts, validRequiredString };
|
package/dist/es/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{FeScriptContext as t}from"@qlover/fe-scripts";import e from"inquirer";import{join as
|
|
1
|
+
import{FeScriptContext as t}from"@qlover/fe-scripts";import e from"inquirer";import{join as r,dirname as i}from"path";import{oraPromise as o}from"ora";import{existsSync as s,readFileSync as a,mkdirSync as n,readdirSync as c,statSync as h,copyFileSync as p,promises as l}from"fs";import m from"ignore";function u(t,e,r,i){return new(r||(r=Promise))((function(o,s){function a(t){try{c(i.next(t))}catch(t){s(t)}}function n(t){try{c(i.throw(t))}catch(t){s(t)}}function c(t){var e;t.done?o(t.value):(e=t.value,e instanceof r?e:new r((function(t){t(e)}))).then(a,n)}c((i=i.apply(t,e||[])).next())}))}"function"==typeof SuppressedError&&SuppressedError;const g=(t,e)=>"string"==typeof t&&""!==t.trim()||`${e} is required`,d=["node-lib","react-app","react-vite-lib"],f=[{type:"input",name:"name",message:"Project name",validate:t=>g(t,"Project name")},{type:"list",name:"template",message:"Template name",choices:[...d,"pack-app"]}],P=[{type:"checkbox",name:"subPackages",message:"Sub package names",choices:d}],{copyFile:y,stat:v}=l;class b{getIg(t){const e=r(t,b.IGNORE_FILE);if(!s(e))return;const i=a(e,"utf8").split("\n").map((t=>t.trim())).filter((t=>t&&!t.startsWith("#")));return m().add(i)}ensureDir(t){s(t)||n(t,{recursive:!0})}copyFilesPromise(t,e,o){return u(this,void 0,void 0,(function*(){const s=yield l.readdir(t);yield Promise.all(s.map((s=>u(this,void 0,void 0,(function*(){const a=r(t,s),n=r(e,s);if(o&&o.ignores(s))return;this.ensureDir(i(n));(yield v(a)).isDirectory()?yield this.copyFilesPromise(a,n,o):yield y(a,n)})))))}))}copyFilesSync(t,e,o){const s=c(t);for(const a of s){const s=r(t,a),n=r(e,a);o&&o.ignores(a)||(this.ensureDir(i(n)),h(s).isDirectory()?this.copyFilesSync(s,n,o):p(s,n))}}create(t){const{targetPath:e,templateRootPath:i,subPackages:o,packagesNames:s="packages"}=t;if(!e||!i)throw new Error("targetPath and templatePath are required");if(this.createPath(t),o)for(const i of o){const o=r(e,s,i);this.createPath(Object.assign(Object.assign({},t),{targetPath:o,template:i}))}}createPromise(t){return u(this,void 0,void 0,(function*(){const{targetPath:e,templateRootPath:i,subPackages:o,packagesNames:s="packages"}=t;if(!e||!i)throw new Error("targetPath and templatePath are required");if(yield this.createPathPromise(t),o)for(const i of o){const o=r(e,s,i);yield this.createPathPromise(Object.assign(Object.assign({},t),{targetPath:o,template:i}))}}))}createPath(t){const{targetPath:e="",templateRootPath:i,template:o}=t;this.ensureDir(e);const s=r(i,o),a=this.getIg(e);this.copyFilesSync(s,e,a)}createPathPromise(t){const{targetPath:e="",templateRootPath:i,template:o}=t;this.ensureDir(e);const s=r(i,o),a=this.getIg(e);return this.copyFilesPromise(s,e,a)}}b.IGNORE_FILE=".gitignore.template";class k{constructor(e){var r;const i=null===(r=e.options)||void 0===r?void 0:r.templateRootPath;if(!i)throw new Error("template path not exit");if(!s(i))throw new Error("template path not exit");this.ora=o,this.context=new t(e)}get logger(){return this.context.logger}steps(t){return u(this,void 0,void 0,(function*(){try{return yield e.prompt(t)}catch(t){throw this.logger.error(t),t}}))}action(t){return u(this,arguments,void 0,(function*({label:t,task:e}){let r=e();r instanceof Promise||(r=Promise.resolve(r));const i=t;return this.ora(r,i),r}))}create(t){return u(this,void 0,void 0,(function*(){const e=r(process.cwd(),t.name),i=new b,o=Object.assign(Object.assign({},t),{targetPath:e,templateRootPath:this.context.options.templateRootPath});return this.logger.debug(o),i.createPromise(o)}))}isPackageTemplate(t){return"pack-app"===t}getGeneratorResult(){return u(this,void 0,void 0,(function*(){const t=yield this.steps(f);if(this.isPackageTemplate(t.template)){const e=yield this.steps(P);Object.assign(t,e)}return t}))}generate(){return u(this,void 0,void 0,(function*(){const t=yield this.getGeneratorResult();yield this.action({label:"Creating project",task:()=>this.create(t)})}))}}export{b as Copyer,k as Generator,f as defaultPrompts,P as packagePrompts,g as validRequiredString};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@qlover/create-app",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"private": false,
|
|
6
6
|
"main": "./dist/es/index.js",
|
|
@@ -28,7 +28,9 @@
|
|
|
28
28
|
"create-app": "./bin/create-app.js"
|
|
29
29
|
},
|
|
30
30
|
"scripts": {
|
|
31
|
-
"build": "
|
|
31
|
+
"build": "rollup -c",
|
|
32
|
+
"create:app:build": "npm run build && npm run create:app",
|
|
33
|
+
"create:app": "node ./bin/create-app.js"
|
|
32
34
|
},
|
|
33
35
|
"repository": {
|
|
34
36
|
"type": "git",
|
|
@@ -10,10 +10,8 @@
|
|
|
10
10
|
},
|
|
11
11
|
"homepage": "https://github.com/qlover/fe-base#readme",
|
|
12
12
|
"scripts": {
|
|
13
|
-
"build": "pnpm run build:
|
|
14
|
-
"build:
|
|
15
|
-
"build:browser": "pnpm run build --filter=@qlover/pack-app-browser",
|
|
16
|
-
"build:react": "pnpm run build --filter=@qlover/pack-app-react",
|
|
13
|
+
"build": "pnpm run build:[PKG_NAME]",
|
|
14
|
+
"build:[PKG_NAME]": "pnpm run build --filter=@qlover/${PKG_NAME}",
|
|
17
15
|
"prettier": "prettier --ignore-path .prettierignore **/*.{js,ts,json,cjs,mjs} --write",
|
|
18
16
|
"lint": "eslint . --fix",
|
|
19
17
|
"test": "jest",
|
|
@@ -33,9 +31,9 @@
|
|
|
33
31
|
"node": ">=18.19.0"
|
|
34
32
|
},
|
|
35
33
|
"devDependencies": {
|
|
36
|
-
"@qlover/fe-scripts": "
|
|
37
|
-
"@qlover/fe-standard": "
|
|
38
|
-
"@qlover/fe-utils": "
|
|
34
|
+
"@qlover/fe-scripts": "latest",
|
|
35
|
+
"@qlover/fe-standard": "latest",
|
|
36
|
+
"@qlover/fe-utils": "latest",
|
|
39
37
|
"@rollup/plugin-commonjs": "^28.0.1",
|
|
40
38
|
"@rollup/plugin-json": "^6.1.0",
|
|
41
39
|
"@rollup/plugin-node-resolve": "^15.3.0",
|
|
@@ -14,8 +14,11 @@ export const useStrictEffect = (
|
|
|
14
14
|
|
|
15
15
|
useEffect(() => {
|
|
16
16
|
// Check if the dependencies have changed
|
|
17
|
-
const depsChanged =
|
|
18
|
-
|
|
17
|
+
const depsChanged =
|
|
18
|
+
!deps ||
|
|
19
|
+
!depsRef.current ||
|
|
20
|
+
deps.some((dep, i) => dep !== depsRef.current![i]);
|
|
21
|
+
|
|
19
22
|
// Update the dependency reference
|
|
20
23
|
depsRef.current = deps;
|
|
21
24
|
|
|
@@ -24,6 +27,6 @@ export const useStrictEffect = (
|
|
|
24
27
|
mountedRef.current = true;
|
|
25
28
|
return effect();
|
|
26
29
|
}
|
|
27
|
-
|
|
30
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
28
31
|
}, deps);
|
|
29
|
-
};
|
|
32
|
+
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ExecutorPlugin, JSONStorage } from '@qlover/fe-utils';
|
|
2
2
|
import { sleep } from '@/utils/thread';
|
|
3
3
|
import { FeController } from '@lib/fe-react-controller';
|
|
4
|
-
import { FeApi
|
|
4
|
+
import { FeApi } from '@/services/feApi';
|
|
5
5
|
import { FeApiGetUserInfo, FeApiLogin } from '@/services/feApi/FeApiType';
|
|
6
6
|
import { adjustExpirationTime } from '@/utils/datetime';
|
|
7
7
|
import { RouterController } from './RouterController';
|
|
@@ -9,7 +9,9 @@ import { sleep } from '@/utils/thread';
|
|
|
9
9
|
export class FeApiMockPlugin implements ExecutorPlugin {
|
|
10
10
|
readonly pluginName = 'FeApiMockPlugin';
|
|
11
11
|
|
|
12
|
-
constructor(
|
|
12
|
+
constructor(
|
|
13
|
+
private readonly mockDataJson: typeof import('@config/feapi.mock.json')
|
|
14
|
+
) {}
|
|
13
15
|
|
|
14
16
|
async onExec({
|
|
15
17
|
parameters
|
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Adjusts the expiration time based on the provided `expiresIn` value.
|
|
3
|
-
*
|
|
3
|
+
*
|
|
4
4
|
* @param {number} baseTime - The base time in milliseconds to adjust.
|
|
5
5
|
* @returns {number} - The adjusted time in milliseconds.
|
|
6
|
-
*
|
|
6
|
+
*
|
|
7
7
|
* @example
|
|
8
8
|
* const adjustedTime = userController.adjustExpirationTime(Date.now());
|
|
9
9
|
*/
|
|
10
|
-
export function adjustExpirationTime(
|
|
10
|
+
export function adjustExpirationTime(
|
|
11
|
+
baseTime: number,
|
|
12
|
+
expiresIn: number | 'day' | 'week' | 'month' | 'year'
|
|
13
|
+
): number {
|
|
11
14
|
const dayInMs = 24 * 60 * 60 * 1000;
|
|
12
15
|
|
|
13
16
|
switch (expiresIn) {
|
|
@@ -20,6 +23,8 @@ export function adjustExpirationTime(baseTime: number, expiresIn: number | 'day'
|
|
|
20
23
|
case 'year':
|
|
21
24
|
return baseTime + 365 * dayInMs; // Approximation
|
|
22
25
|
default:
|
|
23
|
-
return
|
|
26
|
+
return (
|
|
27
|
+
baseTime + (typeof expiresIn === 'number' ? expiresIn : 30 * dayInMs)
|
|
28
|
+
);
|
|
24
29
|
}
|
|
25
|
-
}
|
|
30
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
// / <reference types="vite/client" />
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Logs
|
|
2
|
+
logs
|
|
3
|
+
*.log
|
|
4
|
+
npm-debug.log*
|
|
5
|
+
yarn-debug.log*
|
|
6
|
+
yarn-error.log*
|
|
7
|
+
pnpm-debug.log*
|
|
8
|
+
lerna-debug.log*
|
|
9
|
+
|
|
10
|
+
node_modules
|
|
11
|
+
dist
|
|
12
|
+
dist-ssr
|
|
13
|
+
*.local
|
|
14
|
+
|
|
15
|
+
# Editor directories and files
|
|
16
|
+
.vscode/*
|
|
17
|
+
!.vscode/extensions.json
|
|
18
|
+
.idea
|
|
19
|
+
.DS_Store
|
|
20
|
+
*.suo
|
|
21
|
+
*.ntvs*
|
|
22
|
+
*.njsproj
|
|
23
|
+
*.sln
|
|
24
|
+
*.sw?
|
|
25
|
+
|
|
26
|
+
tsconfig.app.json
|
|
27
|
+
tsconfig.node.json
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import js from '@eslint/js'
|
|
2
|
-
import globals from 'globals'
|
|
3
|
-
import reactHooks from 'eslint-plugin-react-hooks'
|
|
4
|
-
import reactRefresh from 'eslint-plugin-react-refresh'
|
|
5
|
-
import tseslint from 'typescript-eslint'
|
|
1
|
+
import js from '@eslint/js';
|
|
2
|
+
import globals from 'globals';
|
|
3
|
+
import reactHooks from 'eslint-plugin-react-hooks';
|
|
4
|
+
import reactRefresh from 'eslint-plugin-react-refresh';
|
|
5
|
+
import tseslint from 'typescript-eslint';
|
|
6
6
|
|
|
7
7
|
export default tseslint.config(
|
|
8
8
|
{ ignores: ['dist'] },
|
|
@@ -11,18 +11,18 @@ export default tseslint.config(
|
|
|
11
11
|
files: ['**/*.{ts,tsx}'],
|
|
12
12
|
languageOptions: {
|
|
13
13
|
ecmaVersion: 2020,
|
|
14
|
-
globals: globals.browser
|
|
14
|
+
globals: globals.browser
|
|
15
15
|
},
|
|
16
16
|
plugins: {
|
|
17
17
|
'react-hooks': reactHooks,
|
|
18
|
-
'react-refresh': reactRefresh
|
|
18
|
+
'react-refresh': reactRefresh
|
|
19
19
|
},
|
|
20
20
|
rules: {
|
|
21
21
|
...reactHooks.configs.recommended.rules,
|
|
22
22
|
'react-refresh/only-export-components': [
|
|
23
23
|
'warn',
|
|
24
|
-
{ allowConstantExport: true }
|
|
25
|
-
]
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
)
|
|
24
|
+
{ allowConstantExport: true }
|
|
25
|
+
]
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
// / <reference types="vite/client" />
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
/// <reference types="vite/client" />
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import resolve from '@rollup/plugin-node-resolve';
|
|
2
|
-
import commonjs from '@rollup/plugin-commonjs';
|
|
3
|
-
import typescript from 'rollup-plugin-typescript2';
|
|
4
|
-
import dts from 'rollup-plugin-dts';
|
|
5
|
-
import terser from '@rollup/plugin-terser';
|
|
6
|
-
import { searchEnv } from '@qlover/fe-scripts';
|
|
7
|
-
import del from 'rollup-plugin-delete';
|
|
8
|
-
import { readFileSync } from 'fs';
|
|
9
|
-
|
|
10
|
-
const tsConfig = JSON.parse(readFileSync('./tsconfig.json', 'utf-8'));
|
|
11
|
-
const env = searchEnv({ logger: console });
|
|
12
|
-
const NODE_ENV = env.get('NODE_ENV');
|
|
13
|
-
const isProduction = NODE_ENV === 'production';
|
|
14
|
-
console.log('Enveronment is', NODE_ENV);
|
|
15
|
-
|
|
16
|
-
const buildDir = tsConfig.compilerOptions.outDir;
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* @param {{ entry: string, formats: string[], external: string[], target: string, clean: boolean }} options
|
|
20
|
-
* @returns {import('rollup').RollupOptions[]}
|
|
21
|
-
*/
|
|
22
|
-
function createBuilder({ target, entry, formats, external, clean, umdName }) {
|
|
23
|
-
target = target || `${buildDir}/${entry}`;
|
|
24
|
-
|
|
25
|
-
/** @type {import('rollup').OutputOptions[]} */
|
|
26
|
-
const outputs = formats.map((format) => ({
|
|
27
|
-
file: `${target}/index.${format}.js`,
|
|
28
|
-
format,
|
|
29
|
-
name: umdName,
|
|
30
|
-
sourcemap: !isProduction
|
|
31
|
-
}));
|
|
32
|
-
|
|
33
|
-
return [
|
|
34
|
-
{
|
|
35
|
-
input: `./${entry}/index.ts`,
|
|
36
|
-
output: outputs,
|
|
37
|
-
plugins: [
|
|
38
|
-
clean && del({ targets: `${buildDir}/*` }),
|
|
39
|
-
resolve({
|
|
40
|
-
preferBuiltins: false
|
|
41
|
-
}),
|
|
42
|
-
commonjs(),
|
|
43
|
-
typescript({ tsconfig: './tsconfig.json' }),
|
|
44
|
-
isProduction && terser()
|
|
45
|
-
],
|
|
46
|
-
external: external
|
|
47
|
-
},
|
|
48
|
-
{
|
|
49
|
-
input: `./${entry}/index.ts`,
|
|
50
|
-
output: {
|
|
51
|
-
file: `${target}/index.d.ts`,
|
|
52
|
-
format: 'es'
|
|
53
|
-
},
|
|
54
|
-
plugins: [dts()]
|
|
55
|
-
}
|
|
56
|
-
];
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
/**
|
|
60
|
-
* @type {import('rollup').RollupOptions[]}
|
|
61
|
-
*/
|
|
62
|
-
export default [
|
|
63
|
-
...createBuilder({
|
|
64
|
-
entry: 'src',
|
|
65
|
-
formats: ['es', 'umd'],
|
|
66
|
-
target: buildDir,
|
|
67
|
-
umdName: 'PackAppBrowser',
|
|
68
|
-
clean: true
|
|
69
|
-
})
|
|
70
|
-
];
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './calc';
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"target": "ES5",
|
|
4
|
-
"module": "ESNext",
|
|
5
|
-
"declaration": false,
|
|
6
|
-
"outDir": "dist",
|
|
7
|
-
"strict": true,
|
|
8
|
-
"esModuleInterop": true,
|
|
9
|
-
"moduleResolution": "Node",
|
|
10
|
-
"skipLibCheck": true,
|
|
11
|
-
"forceConsistentCasingInFileNames": true,
|
|
12
|
-
"baseUrl": "./"
|
|
13
|
-
},
|
|
14
|
-
"include": ["src/**/*"]
|
|
15
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
/// <reference types="vite/client" />
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/templates/{pack-app/packages/react-vite-lib → react-vite-lib}/__tests__/Text.test.tsx
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/templates/{pack-app/packages/react-vite-lib → react-vite-lib}/src/commponents/Text.tsx
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|