lucy-cli 1.2.5 → 2.0.0-alpha.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/dist/args.d.ts +7 -0
- package/dist/args.js +23 -0
- package/dist/commands.d.ts +3 -0
- package/dist/commands.js +18 -0
- package/dist/config.d.ts +20 -0
- package/dist/config.js +39 -0
- package/dist/error.d.ts +17 -0
- package/dist/error.js +5 -0
- package/dist/helpers.d.ts +1 -32
- package/dist/helpers.js +6 -261
- package/dist/index.d.ts +2 -59
- package/dist/index.js +25 -282
- package/dist/init.d.ts +4 -8
- package/dist/init.js +245 -160
- package/dist/params.d.ts +7 -0
- package/dist/params.js +23 -0
- package/dist/policy.d.ts +3 -0
- package/dist/policy.js +5 -0
- package/dist/prepare.d.ts +0 -8
- package/dist/prepare.js +20 -19
- package/dist/runtime.d.ts +5 -0
- package/dist/runtime.js +11 -0
- package/dist/schemas/index.d.ts +2 -0
- package/dist/schemas/index.js +2 -0
- package/dist/schemas/types.js +1 -0
- package/dist/states.d.ts +10 -0
- package/dist/states.js +7 -0
- package/files/expo/.env +1 -0
- package/files/expo/.nvmrc +1 -0
- package/files/expo/.prettierignore +23 -0
- package/files/expo/.prettierrc.json +16 -0
- package/files/expo/.yarnrc +1 -0
- package/files/expo/.yarnrc.yml +3 -0
- package/files/expo/app/(tabs)/_layout.tsx +45 -0
- package/files/expo/app/_layout.tsx +45 -0
- package/files/expo/babel.config.js +9 -0
- package/files/expo/constants/Colors.ts +27 -0
- package/files/expo/constants/theme.ts +18 -0
- package/files/expo/eas.json +26 -0
- package/files/expo/eslint.config.js +185 -0
- package/files/expo/global.css +47 -0
- package/files/expo/hooks/useColorScheme.ts +11 -0
- package/files/expo/hooks/useColorScheme.web.ts +21 -0
- package/files/expo/hooks/useColorSchemeRN.ts +1 -0
- package/files/expo/hooks/useThemeColor.ts +21 -0
- package/files/expo/lib/data.ts +45 -0
- package/files/expo/lib/utils/index.ts +6 -0
- package/files/expo/lib/utils/polyfills.ts +29 -0
- package/files/expo/lib/wix/client.ts +14 -0
- package/files/expo/lib/wix/index.ts +1 -0
- package/files/expo/lucy.json +8 -0
- package/files/expo/readme.md +45 -0
- package/files/expo/tailwind.config.js +198 -0
- package/files/expo/tsconfig.json +40 -0
- package/files/expo/types/nativewind-env.d.ts +1 -0
- package/files/expo/types/reset.d.ts +1 -0
- package/files/velo/typescript/styles/global.scss +0 -0
- package/package.json +14 -11
- package/src/args.ts +36 -0
- package/src/commands.ts +21 -0
- package/src/config.ts +61 -0
- package/src/error.ts +4 -0
- package/src/helpers.ts +7 -305
- package/src/index.ts +29 -369
- package/src/init.ts +345 -177
- package/src/policy.ts +6 -0
- package/src/prepare.ts +19 -19
- package/src/runtime.ts +20 -0
- package/src/schemas/index.ts +3 -0
- package/src/schemas/types.ts +0 -0
- package/src/states.ts +15 -0
- package/src copy/helpers.ts +307 -0
- package/src copy/index.ts +379 -0
- package/src copy/init.ts +183 -0
- package/src copy/models.ts +35 -0
- package/src copy/prepare.ts +24 -0
- package/src copy/schemas/index.ts +0 -0
- package/src copy/schemas/types.ts +0 -0
- package/src copy/settings.json +67 -0
- package/src copy/types.d.ts +8 -0
- package/dist/Gulpfile.d.ts +0 -34
- package/dist/Gulpfile.js +0 -115
- package/dist/cli.d.ts +0 -2
- package/dist/cli.js +0 -44
- package/dist/dev.d.ts +0 -2
- package/dist/dev.js +0 -14
- package/dist/gulp/backend copy.d.ts +0 -4
- package/dist/gulp/backend copy.js +0 -50
- package/dist/gulp/backend.d.ts +0 -3
- package/dist/gulp/backend.js +0 -91
- package/dist/gulp/checks.d.ts +0 -3
- package/dist/gulp/checks.js +0 -204
- package/dist/gulp/clean copy.d.ts +0 -2
- package/dist/gulp/clean copy.js +0 -19
- package/dist/gulp/clean.d.ts +0 -3
- package/dist/gulp/clean.js +0 -28
- package/dist/gulp/copy.d.ts +0 -2
- package/dist/gulp/copy.js +0 -33
- package/dist/gulp/docs.d.ts +0 -2
- package/dist/gulp/docs.js +0 -27
- package/dist/gulp/helpers.d.ts +0 -2
- package/dist/gulp/helpers.js +0 -24
- package/dist/gulp/pages copy.d.ts +0 -3
- package/dist/gulp/pages copy.js +0 -22
- package/dist/gulp/pages.d.ts +0 -2
- package/dist/gulp/pages.js +0 -36
- package/dist/gulp/pipeline.d.ts +0 -1
- package/dist/gulp/pipeline.js +0 -28
- package/dist/gulp/public.d.ts +0 -2
- package/dist/gulp/public.js +0 -49
- package/dist/gulp/styles.d.ts +0 -2
- package/dist/gulp/styles.js +0 -39
- package/dist/gulp/templates.d.ts +0 -2
- package/dist/gulp/templates.js +0 -32
- package/dist/gulp/test.d.ts +0 -2
- package/dist/gulp/test.js +0 -26
- package/dist/gulp/types.d.ts +0 -4
- package/dist/gulp/types.js +0 -288
- package/dist/gulp/watchers.d.ts +0 -9
- package/dist/gulp/watchers.js +0 -58
- package/dist/init copy.d.ts +0 -8
- package/dist/init copy.js +0 -167
- package/dist/install.d.ts +0 -2
- package/dist/install.js +0 -53
- package/dist/settings.json +0 -67
- package/dist/start_gulp.d.ts +0 -2
- package/dist/start_gulp.js +0 -14
- package/dist/sync.d.ts +0 -2
- package/dist/sync.js +0 -87
- /package/{files/.gitmodules → dist/schemas/types.d.ts} +0 -0
- /package/files/{typescript/__mocks__/.gitkeep → velo/.gitmodules} +0 -0
- /package/files/{.madgerc → velo/.madgerc} +0 -0
- /package/files/{.nvmrc → velo/.nvmrc} +0 -0
- /package/files/{.stylelintrc.js → velo/.stylelintrc.js} +0 -0
- /package/files/{.yarnrc.yml → velo/.yarnrc.yml} +0 -0
- /package/files/{currents.config.js → velo/currents.config.js} +0 -0
- /package/files/{cypress → velo/cypress}/e2e/base/base.cy.ts +0 -0
- /package/files/{cypress → velo/cypress}/fixtures/example.json +0 -0
- /package/files/{cypress → velo/cypress}/support/commands.ts +0 -0
- /package/files/{cypress → velo/cypress}/support/e2e.ts +0 -0
- /package/files/{cypress → velo/cypress}/tsconfig.json +0 -0
- /package/files/{cypress.config.mjs → velo/cypress.config.mjs} +0 -0
- /package/files/{eslint.config.mjs → velo/eslint.config.mjs} +0 -0
- /package/files/{local.tsconfig.json → velo/local.tsconfig.json} +0 -0
- /package/files/{typedoc.json → velo/typedoc.json} +0 -0
- /package/files/{typescript/pages → velo/typescript/__mocks__}/.gitkeep +0 -0
- /package/files/{typescript → velo/typescript}/backend/data.ts +0 -0
- /package/files/{typescript → velo/typescript}/backend/events.ts +0 -0
- /package/files/{typescript → velo/typescript}/backend/http-functions.ts +0 -0
- /package/files/{typescript → velo/typescript}/backend/lib/http-functions/sync.ts +0 -0
- /package/files/{typescript → velo/typescript}/backend/permissions.json +0 -0
- /package/files/{typescript/public → velo/typescript/pages}/.gitkeep +0 -0
- /package/files/{typescript/styles → velo/typescript/public}/.gitkeep +0 -0
- /package/files/{typescript → velo/typescript}/public/scss/app.scss +0 -0
- /package/files/{typescript/styles/global.scss → velo/typescript/styles/.gitkeep} +0 -0
- /package/files/{typescript → velo/typescript}/tsconfig.json +0 -0
- /package/files/{vitest.config.ts → velo/vitest.config.ts} +0 -0
- /package/{src → src copy}/Gulpfile.ts +0 -0
- /package/{src → src copy}/gulp/backend.ts +0 -0
- /package/{src → src copy}/gulp/checks.ts +0 -0
- /package/{src → src copy}/gulp/clean.ts +0 -0
- /package/{src → src copy}/gulp/copy.ts +0 -0
- /package/{src → src copy}/gulp/helpers.ts +0 -0
- /package/{src → src copy}/gulp/pages.ts +0 -0
- /package/{src → src copy}/gulp/pipeline.ts +0 -0
- /package/{src → src copy}/gulp/public.ts +0 -0
- /package/{src → src copy}/gulp/styles.ts +0 -0
- /package/{src → src copy}/gulp/templates.ts +0 -0
- /package/{src → src copy}/gulp/types.ts +0 -0
- /package/{src → src copy}/gulp/watchers.ts +0 -0
- /package/{src → src copy}/sync.ts +0 -0
package/src copy/init.ts
ADDED
@@ -0,0 +1,183 @@
|
|
1
|
+
import chalk from 'chalk';
|
2
|
+
import { existsSync, mkdirSync, promises as fsPromises } from 'fs';
|
3
|
+
import fse from 'fs-extra';
|
4
|
+
import { join } from 'path';
|
5
|
+
import fs from 'fs/promises';
|
6
|
+
import path from 'path';
|
7
|
+
import os from 'os';
|
8
|
+
import enquirer from 'enquirer';
|
9
|
+
import { ModuleSettings, ProjectSettings, blue, green, orange, red } from './index.js';
|
10
|
+
import { createTemplateFolder, gitInit, installPackages } from './helpers.js';
|
11
|
+
|
12
|
+
const { Select } = enquirer as any;
|
13
|
+
/**
|
14
|
+
* Init Lucy project
|
15
|
+
* @param {string} cwd Current working directory
|
16
|
+
* @param {string} packageRoot Package root directory
|
17
|
+
* @returns {void}
|
18
|
+
*/
|
19
|
+
export async function init(moduleSettings: ModuleSettings, projectSettings: ProjectSettings) {
|
20
|
+
|
21
|
+
if(projectSettings.packageJSON && projectSettings.packageJSON.wixLucy?.initialized && !moduleSettings.args.includes('-f')) {
|
22
|
+
console.log((`💩 ${red.underline.bold("=> This project is already initialized =>")} ${orange(moduleSettings.targetFolder)}`));
|
23
|
+
return;
|
24
|
+
}
|
25
|
+
|
26
|
+
const templatesPath = join(os.homedir(), '.lucy-cli');
|
27
|
+
if (!existsSync(templatesPath)) {
|
28
|
+
console.log(chalk.yellow(`Templates folder not found at ${orange(templatesPath)}. Creating it with a default template...`));
|
29
|
+
await createTemplateFolder(moduleSettings);
|
30
|
+
}
|
31
|
+
|
32
|
+
const templateChoices = (await fs.readdir(templatesPath, { withFileTypes: true }))
|
33
|
+
.filter(dirent => dirent.isDirectory())
|
34
|
+
.map(dirent => dirent.name);
|
35
|
+
|
36
|
+
if (templateChoices.length === 0) {
|
37
|
+
console.log((`💩 ${red.underline.bold("=> No templates found in =>")} ${orange(templatesPath)}`));
|
38
|
+
return;
|
39
|
+
}
|
40
|
+
|
41
|
+
const prompt = new Select({
|
42
|
+
name: 'template',
|
43
|
+
message: 'Select a project template',
|
44
|
+
choices: templateChoices
|
45
|
+
});
|
46
|
+
|
47
|
+
const selectedTemplate = await prompt.run();
|
48
|
+
const templateDir = join(templatesPath, selectedTemplate);
|
49
|
+
const templateFilesDir = join(templateDir, 'files');
|
50
|
+
const templateSettingsPath = join(templateDir, 'settings.json');
|
51
|
+
|
52
|
+
if (!existsSync(templateSettingsPath)) {
|
53
|
+
console.log((`💩 ${red.underline.bold("=> Template is missing settings.json at =>")} ${orange(templateSettingsPath)}`));
|
54
|
+
return;
|
55
|
+
}
|
56
|
+
|
57
|
+
try {
|
58
|
+
const templateSettingsRaw = await fs.readFile(templateSettingsPath, 'utf8');
|
59
|
+
moduleSettings.settings = JSON.parse(templateSettingsRaw);
|
60
|
+
} catch (e) {
|
61
|
+
console.log((`💩 ${red.underline.bold("=> Error reading or parsing template settings =>")} ${orange(e)}`));
|
62
|
+
return;
|
63
|
+
}
|
64
|
+
|
65
|
+
await copyFolder(templateFilesDir, moduleSettings.targetFolder);
|
66
|
+
|
67
|
+
await editJson(moduleSettings.packageJsonPath, ['type', 'scripts'], ['module', moduleSettings.settings.scripts ]);
|
68
|
+
await stringReplace(join(moduleSettings.targetFolder, 'currents.config.js'), ['__ProjectName__'], [path.basename(moduleSettings.targetFolder)]);
|
69
|
+
|
70
|
+
await installPackages(moduleSettings.settings.wixPackages, moduleSettings.settings.devPackages, moduleSettings.targetFolder, moduleSettings.lockVersion);
|
71
|
+
|
72
|
+
await editJson(join(moduleSettings.targetFolder, 'jsconfig.json'), ['compilerOptions', 'exclude'], [moduleSettings.settings.wixSettings.compilerOptions, moduleSettings.settings.wixSettings.exclude]);
|
73
|
+
await editJson(join(moduleSettings.targetFolder, 'typedoc.json'), ['name'], [path.basename(moduleSettings.targetFolder)]);
|
74
|
+
|
75
|
+
await gitInit(moduleSettings.targetFolder, moduleSettings.settings.modules, moduleSettings.force);
|
76
|
+
|
77
|
+
moduleSettings.settings.initialized = true;
|
78
|
+
|
79
|
+
const eslintrcPath = join(moduleSettings.targetFolder, '.eslintrc.json');
|
80
|
+
if(existsSync(eslintrcPath)) {
|
81
|
+
console.log((`🐕 ${blue.underline.bold("=> Deleting .eslintrc.json")}`));
|
82
|
+
await fs.rm(join(eslintrcPath), { recursive: false }).catch(e => {
|
83
|
+
console.log((`💩 ${red.underline.bold("=> Could not delete .eslintrc.json ")} ${red.bold("=> ", e)}`));
|
84
|
+
});
|
85
|
+
}
|
86
|
+
|
87
|
+
console.log((`🐕 ${blue.underline.bold("=> Writing settings to lucy.json")}`));
|
88
|
+
await fs.writeFile(join(moduleSettings.targetFolder, 'lucy.json'), JSON.stringify(moduleSettings.settings, null, 2));
|
89
|
+
|
90
|
+
console.log(chalk.greenBright.underline('🐶 => Initialization done!'));
|
91
|
+
}
|
92
|
+
|
93
|
+
/**
|
94
|
+
* Copy files from source to target
|
95
|
+
* @param {string} source Source folder
|
96
|
+
* @param {string} target Target folder
|
97
|
+
* @returns {Promise<void>}
|
98
|
+
*/
|
99
|
+
async function copyFolder(source: string, target: string): Promise<void> {
|
100
|
+
if (!existsSync(target)){
|
101
|
+
console.log((`💩 ${red.underline.bold("=> Target folder doesn't exist =>")} ${orange(target)}`));
|
102
|
+
return;
|
103
|
+
}
|
104
|
+
|
105
|
+
try {
|
106
|
+
const files = await fsPromises.readdir(source);
|
107
|
+
for (const file of files){
|
108
|
+
const sourcePath = join(source, file);
|
109
|
+
const targetPath = join(target, file);
|
110
|
+
|
111
|
+
if (file === 'lucy.json' && existsSync(targetPath)){
|
112
|
+
continue;
|
113
|
+
}
|
114
|
+
const stats = await fsPromises.stat(sourcePath);
|
115
|
+
if (stats.isDirectory()){
|
116
|
+
if (!existsSync(file)){
|
117
|
+
mkdirSync(file);
|
118
|
+
}
|
119
|
+
await fse.copySync(sourcePath, targetPath, { overwrite: true });
|
120
|
+
} else {
|
121
|
+
fse.copySync(sourcePath, targetPath, { overwrite: true });
|
122
|
+
}
|
123
|
+
}
|
124
|
+
} catch (err){
|
125
|
+
console.log((`💩 ${red.underline.bold("=> There was an error while copying files =>")} ${orange(err)}`));
|
126
|
+
} finally {
|
127
|
+
console.log("🐕" + blue.underline.bold(' => Copy files completed!'));
|
128
|
+
}
|
129
|
+
}
|
130
|
+
|
131
|
+
/**
|
132
|
+
* Edit Json files
|
133
|
+
* @param {string} filePath File path
|
134
|
+
* @param {string[]} keys Keys to edit
|
135
|
+
* @param {string[]} values Values to edit
|
136
|
+
* @returns {void}
|
137
|
+
*/
|
138
|
+
async function editJson(filePath: string, keys: string[], values: string[] | Object[] ) {
|
139
|
+
try {
|
140
|
+
const data = await fs.readFile(filePath, 'utf8');
|
141
|
+
|
142
|
+
let jsonData;
|
143
|
+
try {
|
144
|
+
jsonData = JSON.parse(data);
|
145
|
+
} catch (parseError) {
|
146
|
+
console.log((`💩 ${red.underline.bold("=> Error parsing JSON =>")} ${orange(parseError)}`));
|
147
|
+
return;
|
148
|
+
}
|
149
|
+
|
150
|
+
for (const key of keys){
|
151
|
+
const index = keys.indexOf(key);
|
152
|
+
const value = values[index];
|
153
|
+
jsonData[key] = value;
|
154
|
+
}
|
155
|
+
|
156
|
+
const updatedJsonData = JSON.stringify(jsonData, null, 2);
|
157
|
+
await fs.writeFile(filePath, updatedJsonData, 'utf8');
|
158
|
+
} catch (err) {
|
159
|
+
console.log((`💩 ${red.underline.bold("=> Error editing JSON Data =>")} ${orange(err)}`));
|
160
|
+
} finally {
|
161
|
+
console.log("🐕" + blue.underline(` => Updated file ${orange(filePath)}`));
|
162
|
+
}
|
163
|
+
}
|
164
|
+
|
165
|
+
async function stringReplace(filePath: string, keys: string[], values: string[]) {
|
166
|
+
try {
|
167
|
+
let modifiedContent: string = '';
|
168
|
+
const data = await fs.readFile(filePath, 'utf8');
|
169
|
+
|
170
|
+
for (const key of keys){
|
171
|
+
const index = keys.indexOf(key);
|
172
|
+
const value = values[index];
|
173
|
+
const regex = new RegExp(`${key}`, 'g');
|
174
|
+
modifiedContent = data.replace(regex, `${value}`);
|
175
|
+
}
|
176
|
+
|
177
|
+
await fs.writeFile(filePath, modifiedContent, 'utf8');
|
178
|
+
} catch (err) {
|
179
|
+
console.log((`💩 ${red.underline.bold("=> During string replace =>")} ${orange(err)}`));
|
180
|
+
} finally {
|
181
|
+
console.log(blue.underline(`🐕 => Updated file ${orange(filePath)}`));
|
182
|
+
}
|
183
|
+
}
|
@@ -0,0 +1,35 @@
|
|
1
|
+
export type TSConfig = {
|
2
|
+
compilerOptions?: {
|
3
|
+
target?: string; // e.g., "ES5", "ES6", "ES2015", "ESNext"
|
4
|
+
module?: string; // e.g., "CommonJS", "ES6", "ESNext"
|
5
|
+
lib?: string[]; // e.g., ["ES2015", "DOM"]
|
6
|
+
outDir?: string;
|
7
|
+
rootDir?: string;
|
8
|
+
strict?: boolean;
|
9
|
+
esModuleInterop?: boolean;
|
10
|
+
allowJs?: boolean;
|
11
|
+
checkJs?: boolean;
|
12
|
+
declaration?: boolean;
|
13
|
+
declarationMap?: boolean;
|
14
|
+
sourceMap?: boolean;
|
15
|
+
removeComments?: boolean;
|
16
|
+
noImplicitAny?: boolean;
|
17
|
+
moduleResolution?: "node" | "classic";
|
18
|
+
resolveJsonModule?: boolean;
|
19
|
+
skipLibCheck?: boolean;
|
20
|
+
types?: string[]; // e.g., ["node", "jest"]
|
21
|
+
typeRoots?: string[]; // e.g., ["./types"]
|
22
|
+
jsx?: "preserve" | "react" | "react-jsx" | "react-jsxdev" | "react-native";
|
23
|
+
incremental?: boolean;
|
24
|
+
noEmit?: boolean;
|
25
|
+
paths?: Record<string, string[]>; // Aliases for module paths
|
26
|
+
[key: string]: any; // Allow additional compiler options
|
27
|
+
};
|
28
|
+
include?: string[]; // Glob patterns to include
|
29
|
+
exclude?: string[]; // Glob patterns to exclude
|
30
|
+
files?: string[]; // Specific files to include
|
31
|
+
extends?: string; // Path to a base tsconfig.json
|
32
|
+
references?: { path: string }[]; // Project references
|
33
|
+
compileOnSave?: boolean;
|
34
|
+
[key: string]: any; // Allow additional top-level options
|
35
|
+
};
|
@@ -0,0 +1,24 @@
|
|
1
|
+
import chalk from 'chalk';
|
2
|
+
import { ModuleSettings, ProjectSettings, blue, green, orange, red, magenta } from './index.js';
|
3
|
+
import { gitInit, installPackages } from './helpers.js';
|
4
|
+
|
5
|
+
/**
|
6
|
+
* Init Lucy project
|
7
|
+
* @param {string} cwd Current working directory
|
8
|
+
* @param {string} packageRoot Package root directory
|
9
|
+
* @returns {void}
|
10
|
+
*/
|
11
|
+
export async function prepare(moduleSettings: ModuleSettings, projectSettings: ProjectSettings) {
|
12
|
+
|
13
|
+
if(!projectSettings.lucySettings?.initialized) {
|
14
|
+
console.log((`💩 ${red.underline.bold("=> This project is not initialized =>")} ${orange(moduleSettings.targetFolder)}`));
|
15
|
+
console.log("🐕" + magenta.underline(' => Use init to initialize'));
|
16
|
+
return;
|
17
|
+
}
|
18
|
+
|
19
|
+
await installPackages(projectSettings.lucySettings.wixPackages, projectSettings.lucySettings.devPackages, moduleSettings.targetFolder, moduleSettings.lockVersion);
|
20
|
+
|
21
|
+
await gitInit(moduleSettings.targetFolder, projectSettings?.lucySettings?.modules, moduleSettings.force);
|
22
|
+
|
23
|
+
console.log(chalk.greenBright.underline('🐶 => Prepare done!'));
|
24
|
+
}
|
File without changes
|
File without changes
|
@@ -0,0 +1,67 @@
|
|
1
|
+
{
|
2
|
+
"modules": {},
|
3
|
+
"wixSettings": {
|
4
|
+
"compilerOptions": {
|
5
|
+
"composite": true,
|
6
|
+
"noEmit": false,
|
7
|
+
"lib": [],
|
8
|
+
"jsx": "react-jsx"
|
9
|
+
},
|
10
|
+
"exclude": ["**/*.js"]
|
11
|
+
},
|
12
|
+
"initialized": false,
|
13
|
+
"wixPackages": {},
|
14
|
+
"devPackages": {
|
15
|
+
"@eslint/js": "^9.30.1",
|
16
|
+
"@styled/typescript-styled-plugin": "^1.0.1",
|
17
|
+
"@total-typescript/ts-reset": "^0.6.1",
|
18
|
+
"@types/node": "^24.0.10",
|
19
|
+
"@types/nodemailer": "^6.4.17",
|
20
|
+
"@types/react": "^19.1.8",
|
21
|
+
"madge": "^8.0.0",
|
22
|
+
"@typescript-eslint/eslint-plugin": "^8.35.1",
|
23
|
+
"@typescript-eslint/parser": "^8.35.1",
|
24
|
+
"@typescript-eslint/utils": "^8.35.1",
|
25
|
+
"@vitest/coverage-v8": "^3.2.4",
|
26
|
+
"@vitest/ui": "^3.2.4",
|
27
|
+
"@wix/cli": "^1.1.101",
|
28
|
+
"@wix/eslint-plugin-cli": "^1.0.2",
|
29
|
+
"cypress": "^14.5.1",
|
30
|
+
"cypress-cloud": "^1.13.1",
|
31
|
+
"esbuild": "^0.25.5",
|
32
|
+
"eslint": "^9.30.1",
|
33
|
+
"eslint-plugin-exception-handling": "^1.5.4",
|
34
|
+
"eslint-plugin-import": "^2.32.0",
|
35
|
+
"eslint-plugin-jsdoc": "^51.3.3",
|
36
|
+
"eslint-plugin-named-import-spacing": "^1.0.3",
|
37
|
+
"eslint-plugin-promise": "^7.2.1",
|
38
|
+
"eslint-plugin-simple-import-sort": "^12.1.1",
|
39
|
+
"prettier": "^3.6.2",
|
40
|
+
"sass": "^1.89.2",
|
41
|
+
"ts-node": "^10.9.2",
|
42
|
+
"tsx": "^4.20.3",
|
43
|
+
"typedoc": "^0.28.7",
|
44
|
+
"typedoc-github-theme": "^0.3.0",
|
45
|
+
"typescript": "^5.8.3",
|
46
|
+
"typescript-eslint": "^8.35.1",
|
47
|
+
"typescript-eslint-language-service": "^5.0.5",
|
48
|
+
"vite-tsconfig-paths": "^5.1.4",
|
49
|
+
"vitest": "^3.2.4",
|
50
|
+
"vitest-tsconfig-paths": "^3.4.1"
|
51
|
+
},
|
52
|
+
"scripts": {
|
53
|
+
"postinstall": "wix sync-types",
|
54
|
+
"wix:dev": "wix dev",
|
55
|
+
"dev": "lucy-cli dev",
|
56
|
+
"lint": "NODE_OPTIONS=\"--max-old-space-size=32768\" eslint .",
|
57
|
+
"docs": "typedoc --tsconfig typescript/tsconfig.json --skipErrorChecking",
|
58
|
+
"build": "lucy-cli build-prod",
|
59
|
+
"fix-wix": "lucy-cli fix-wix",
|
60
|
+
"tsc": "tsc -p ./typescript/tsconfig.json --noEmit",
|
61
|
+
"test": "vitest --ui --coverage",
|
62
|
+
"coverage": "vitest run --coverage",
|
63
|
+
"cypress": "cypress open",
|
64
|
+
"e2e": "cypress-cloud run --parallel --record",
|
65
|
+
"graph": "madge --image graph.svg src"
|
66
|
+
}
|
67
|
+
}
|
package/dist/Gulpfile.d.ts
DELETED
@@ -1,34 +0,0 @@
|
|
1
|
-
import gulpSass from 'gulp-sass';
|
2
|
-
import backendSettings from '../settings/backend-settings.json';
|
3
|
-
import masterSettings from '../settings/master-settings.json';
|
4
|
-
import pageSettings from '../settings/page-settings.json';
|
5
|
-
import publicSettings from '../settings/public-settings.json';
|
6
|
-
import { ModuleSettings, ProjectSettings } from './index.js';
|
7
|
-
export type TaskOptions = {
|
8
|
-
moduleSettings?: ModuleSettings;
|
9
|
-
projectSettings?: ProjectSettings;
|
10
|
-
enableIncrementalBuild: boolean;
|
11
|
-
outputDir: string;
|
12
|
-
sass: ReturnType<typeof gulpSass>;
|
13
|
-
userHomeDir: string;
|
14
|
-
replaceOptions: typeof replaceOptions;
|
15
|
-
backendSettings: typeof backendSettings;
|
16
|
-
masterSettings: typeof masterSettings;
|
17
|
-
pageSettings: typeof pageSettings;
|
18
|
-
publicSettings: typeof publicSettings;
|
19
|
-
modulesSync: Record<string, string> | undefined;
|
20
|
-
modulesSourcePaths: string[];
|
21
|
-
cwd: string;
|
22
|
-
isWatching?: boolean;
|
23
|
-
};
|
24
|
-
export interface File {
|
25
|
-
path: string;
|
26
|
-
dirname: string;
|
27
|
-
}
|
28
|
-
declare const replaceOptions: {
|
29
|
-
logs: {
|
30
|
-
enabled: boolean;
|
31
|
-
};
|
32
|
-
};
|
33
|
-
export declare function runTask(task: string, moduleSettings: ModuleSettings, projectSettings: ProjectSettings): Promise<void>;
|
34
|
-
export {};
|
package/dist/Gulpfile.js
DELETED
@@ -1,115 +0,0 @@
|
|
1
|
-
import gulp from 'gulp';
|
2
|
-
import gulpSass from 'gulp-sass';
|
3
|
-
import shell from 'gulp-shell';
|
4
|
-
import * as os from 'os';
|
5
|
-
import * as dartSass from 'sass';
|
6
|
-
import backendSettings from '../settings/backend-settings.json' with { type: "json" };
|
7
|
-
;
|
8
|
-
import masterSettings from '../settings/master-settings.json' with { type: "json" };
|
9
|
-
;
|
10
|
-
import pageSettings from '../settings/page-settings.json' with { type: "json" };
|
11
|
-
;
|
12
|
-
import publicSettings from '../settings/public-settings.json' with { type: "json" };
|
13
|
-
;
|
14
|
-
import { buildPublic } from './gulp/public.js';
|
15
|
-
import { buildBackend, buildBackendJSW } from './gulp/backend.js';
|
16
|
-
import { checkPages, checkTs } from './gulp/checks.js';
|
17
|
-
import { compileScss } from './gulp/styles.js';
|
18
|
-
import { buildPages } from './gulp/pages.js';
|
19
|
-
import { previewTemplates } from './gulp/templates.js';
|
20
|
-
import { copyFiles } from './gulp/copy.js';
|
21
|
-
import { cleanSrc, cleanWix } from './gulp/clean.js';
|
22
|
-
import { addTypes, updateWixTypes } from './gulp/types.js';
|
23
|
-
import { setProdConfig } from './gulp/pipeline.js';
|
24
|
-
import { watchAll } from './gulp/watchers.js';
|
25
|
-
import { blue, green, magenta, orange, red } from './index.js';
|
26
|
-
import { getModulesSourcePaths, getModulesSync } from './gulp/helpers.js';
|
27
|
-
const sass = gulpSass(dartSass);
|
28
|
-
const outputDir = './src';
|
29
|
-
const userHomeDir = os.homedir();
|
30
|
-
const replaceOptions = {
|
31
|
-
logs: {
|
32
|
-
enabled: false
|
33
|
-
}
|
34
|
-
};
|
35
|
-
const taskOptions = {
|
36
|
-
enableIncrementalBuild: false,
|
37
|
-
outputDir,
|
38
|
-
sass,
|
39
|
-
userHomeDir,
|
40
|
-
pageSettings,
|
41
|
-
publicSettings,
|
42
|
-
backendSettings,
|
43
|
-
masterSettings,
|
44
|
-
replaceOptions,
|
45
|
-
cwd: process.cwd(),
|
46
|
-
modulesSync: getModulesSync(),
|
47
|
-
modulesSourcePaths: getModulesSourcePaths(),
|
48
|
-
};
|
49
|
-
const watchTaskOptions = { ...taskOptions, isWatching: true };
|
50
|
-
gulp.task('check-ts', gulp.parallel(checkTs(taskOptions)));
|
51
|
-
gulp.task('scss', gulp.parallel(compileScss(taskOptions)));
|
52
|
-
gulp.task('build-backend', gulp.parallel(buildBackend(taskOptions), buildBackendJSW(taskOptions)));
|
53
|
-
gulp.task('build-public', gulp.parallel(buildPublic(taskOptions)));
|
54
|
-
gulp.task('preview-templates', gulp.parallel(previewTemplates(taskOptions)));
|
55
|
-
gulp.task('copy-files', gulp.parallel(copyFiles(taskOptions)));
|
56
|
-
gulp.task('test', function () {
|
57
|
-
return shell.task(['yarn test'], { ignoreErrors: true })().then(() => {
|
58
|
-
console.log("🐕" + blue.underline.bold(' => Exited test task!'));
|
59
|
-
}).catch(err => {
|
60
|
-
console.log("💩" + red.underline.bold(' => Error in test task!'));
|
61
|
-
});
|
62
|
-
});
|
63
|
-
gulp.task('test-ci', function () {
|
64
|
-
return shell.task(['yarn test --run'], { ignoreErrors: true })().then(() => {
|
65
|
-
console.log("🐕" + blue.underline.bold(' => Exited test task!'));
|
66
|
-
}).catch(err => {
|
67
|
-
console.log("💩" + red.underline.bold(' => Error in test task!'));
|
68
|
-
});
|
69
|
-
});
|
70
|
-
gulp.task('sync-types', shell.task([
|
71
|
-
'yarn postinstall',
|
72
|
-
]));
|
73
|
-
gulp.task('fix-wixtypes', gulp.parallel(updateWixTypes(taskOptions)));
|
74
|
-
gulp.task('add-wix-types', function (done) {
|
75
|
-
return addTypes(taskOptions, done);
|
76
|
-
});
|
77
|
-
gulp.task('set-production', gulp.parallel(setProdConfig()));
|
78
|
-
gulp.task('start-wix', shell.task([
|
79
|
-
'yarn wix:dev',
|
80
|
-
]));
|
81
|
-
gulp.task('gen-docs', shell.task([
|
82
|
-
'yarn docs',
|
83
|
-
]));
|
84
|
-
gulp.task('fix-wix', gulp.series(cleanWix(), 'sync-types', 'fix-wixtypes', 'add-wix-types'));
|
85
|
-
gulp.task('build', gulp.parallel('build-backend', 'build-public', 'preview-templates', buildPages(taskOptions), compileScss(taskOptions), 'copy-files'));
|
86
|
-
gulp.task('build-pipeline', gulp.series(cleanSrc(taskOptions), 'set-production', 'check-ts', 'fix-wixtypes', 'add-wix-types', 'test-ci', 'build'));
|
87
|
-
gulp.task('build-prod', gulp.series((done) => checkPages(true, false).then(() => done(), (err) => done(err)), cleanSrc(taskOptions), 'set-production', 'fix-wix', 'check-ts', 'test-ci', 'build-backend', 'build-public', buildPages(taskOptions), 'copy-files', compileScss(taskOptions)));
|
88
|
-
gulp.task('start-dev-env', gulp.parallel(watchAll(watchTaskOptions), 'test', 'start-wix', 'check-ts', (done) => checkPages(false, taskOptions.moduleSettings?.force ?? false).then(() => done(), (err) => done(err))));
|
89
|
-
gulp.task('dev', gulp.series(cleanSrc(taskOptions), 'fix-wix', 'build', 'start-dev-env'));
|
90
|
-
async function gulpTaskRunner(task) {
|
91
|
-
return new Promise(function (resolve, reject) {
|
92
|
-
gulp.series(task, (done) => {
|
93
|
-
resolve(true);
|
94
|
-
done();
|
95
|
-
})(function (err) {
|
96
|
-
if (err) {
|
97
|
-
console.log((`💩 ${red.underline.bold("=> Error starting tasks =>")} ${orange(err)}`));
|
98
|
-
reject(err);
|
99
|
-
}
|
100
|
-
});
|
101
|
-
});
|
102
|
-
}
|
103
|
-
export async function runTask(task, moduleSettings, projectSettings) {
|
104
|
-
taskOptions.cwd = moduleSettings.targetFolder;
|
105
|
-
taskOptions.moduleSettings = moduleSettings;
|
106
|
-
taskOptions.projectSettings = projectSettings;
|
107
|
-
console.log("🐕" + magenta.underline(' => Starting Task => ' + orange(task)));
|
108
|
-
try {
|
109
|
-
await gulpTaskRunner(task);
|
110
|
-
}
|
111
|
-
catch (err) {
|
112
|
-
console.log((`💩 ${red.underline.bold("=> Error starting tasks =>")} ${orange(err)}`));
|
113
|
-
}
|
114
|
-
console.log("🐶" + green.underline.bold(' => Task completed: ' + task));
|
115
|
-
}
|
package/dist/cli.d.ts
DELETED
package/dist/cli.js
DELETED
@@ -1,44 +0,0 @@
|
|
1
|
-
#!/usr/bin/env node
|
2
|
-
import { helloWorld } from './index.js';
|
3
|
-
const args = process.argv.slice(2);
|
4
|
-
const cwd = process.cwd();
|
5
|
-
/**
|
6
|
-
*
|
7
|
-
*/
|
8
|
-
function main() {
|
9
|
-
console.log({ args, cwd });
|
10
|
-
if (args.includes('help') || args.includes('-h')) {
|
11
|
-
console.log('Help is on the way!');
|
12
|
-
return;
|
13
|
-
}
|
14
|
-
if (args.includes('version') || args.includes('-v')) {
|
15
|
-
console.log('1.0.0');
|
16
|
-
return;
|
17
|
-
}
|
18
|
-
if (args.includes('init')) {
|
19
|
-
helloWorld();
|
20
|
-
return;
|
21
|
-
}
|
22
|
-
if (args.includes('sync')) {
|
23
|
-
console.log('Hello serve');
|
24
|
-
return;
|
25
|
-
}
|
26
|
-
}
|
27
|
-
main();
|
28
|
-
// const fs = require("fs"),
|
29
|
-
// path = require("path")
|
30
|
-
// /** Parse the command line */
|
31
|
-
// var args = process.argv.slice(2);
|
32
|
-
// // Validate input
|
33
|
-
// if (args.length !== 2) {
|
34
|
-
// console.log("Warning: Requires 2 arguments");
|
35
|
-
// console.log("node index.js [path/source.html] [targetfile]");
|
36
|
-
// process.exit();
|
37
|
-
// }
|
38
|
-
// const src = args[0];
|
39
|
-
// const target = args[1];
|
40
|
-
// const dirsrc = path.dirname(src);
|
41
|
-
// if (!fs.existsSync(src)) {
|
42
|
-
// console.log("Error: Source file doesn't exist. Given: ", src);
|
43
|
-
// process.exit();
|
44
|
-
// }
|
package/dist/dev.d.ts
DELETED
package/dist/dev.js
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
// https://www.sergevandenoever.nl/run-gulp4-tasks-programatically-from-node/
|
2
|
-
import path from 'path';
|
3
|
-
import { fileURLToPath } from 'url';
|
4
|
-
export async function dev(moduleSettings, projectSettings) {
|
5
|
-
// Get the directory name of the current module
|
6
|
-
const __filename = fileURLToPath(import.meta.url);
|
7
|
-
const __dirname = path.dirname(__filename);
|
8
|
-
// Resolve the path to the Gulpfile
|
9
|
-
const gulpfilePath = path.resolve(__dirname, 'Gulpfile.js');
|
10
|
-
// Dynamically import the Gulpfile
|
11
|
-
const gulpfile = await import(`file://${gulpfilePath}`);
|
12
|
-
// Check if 'dev' task exists
|
13
|
-
gulpfile.runTask('dev', moduleSettings, projectSettings);
|
14
|
-
}
|
@@ -1,50 +0,0 @@
|
|
1
|
-
import chalk from 'chalk';
|
2
|
-
import gulp from 'gulp';
|
3
|
-
import { createGulpEsbuild } from 'gulp-esbuild';
|
4
|
-
import * as path from 'path';
|
5
|
-
export function buildPublic(options) {
|
6
|
-
const { outputDir, enableIncrementalBuild } = options;
|
7
|
-
const gulpEsbuild = createGulpEsbuild({
|
8
|
-
incremental: enableIncrementalBuild,
|
9
|
-
});
|
10
|
-
return () => {
|
11
|
-
return gulp.src([
|
12
|
-
'typescript/public/**/*.ts',
|
13
|
-
'typescript/public/**/*.tsx',
|
14
|
-
])
|
15
|
-
.pipe(gulpEsbuild({
|
16
|
-
bundle: false,
|
17
|
-
}))
|
18
|
-
.pipe(gulp.dest(path.join(outputDir, 'public')))
|
19
|
-
.on('error', function () {
|
20
|
-
console.log(chalk.red.underline.bold('Build of Public TS files failed!'));
|
21
|
-
this.emit('end');
|
22
|
-
})
|
23
|
-
.on('end', function () {
|
24
|
-
console.log(chalk.blueBright.underline('Build of Public TS files succeeded!'));
|
25
|
-
});
|
26
|
-
};
|
27
|
-
}
|
28
|
-
export function buildPublicLib(options) {
|
29
|
-
const { outputDir, enableIncrementalBuild } = options;
|
30
|
-
const gulpEsbuild = createGulpEsbuild({
|
31
|
-
incremental: enableIncrementalBuild,
|
32
|
-
});
|
33
|
-
return () => {
|
34
|
-
return gulp.src([
|
35
|
-
'wix-lucy-lib/src/public/**/*.ts',
|
36
|
-
'wix-lucy-lib/src/public/**/*.tsx'
|
37
|
-
])
|
38
|
-
.pipe(gulpEsbuild({
|
39
|
-
bundle: false,
|
40
|
-
}))
|
41
|
-
.pipe(gulp.dest(path.join(outputDir, 'public')))
|
42
|
-
.on('error', function () {
|
43
|
-
console.log(chalk.red.underline.bold('Build of Public (LIB) TS files failed!'));
|
44
|
-
this.emit('end');
|
45
|
-
})
|
46
|
-
.on('end', function () {
|
47
|
-
console.log(chalk.blueBright.underline('Build of Public (LIB) TS files succeeded!'));
|
48
|
-
});
|
49
|
-
};
|
50
|
-
}
|
package/dist/gulp/backend.d.ts
DELETED