lucy-cli 2.0.0-beta.12 → 2.0.0-beta.14

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.
Files changed (184) hide show
  1. package/dist/commands/git.d.ts +3 -3
  2. package/dist/commands/home.d.ts +1 -1
  3. package/dist/init/cargo.d.ts +1 -1
  4. package/dist/init/gitModules.d.ts +1 -1
  5. package/dist/init/index.d.ts +1 -1
  6. package/dist/init/index.js +0 -2
  7. package/dist/init/index.js.map +1 -1
  8. package/dist/init/monorepo.d.ts +1 -1
  9. package/dist/init/prepareVelo.d.ts +1 -1
  10. package/dist/init/tauri.d.ts +1 -1
  11. package/dist/init/templates.d.ts +1 -1
  12. package/dist/init/velo.d.ts +1 -1
  13. package/package.json +8 -2
  14. package/.cursorignore +0 -4
  15. package/.eslintrc.cjs +0 -96
  16. package/.github/funding.yml +0 -2
  17. package/.nvmrc +0 -1
  18. package/.stylelintrc.js +0 -8
  19. package/.wix/debug.log +0 -10
  20. package/.yarnrc.yml +0 -2
  21. package/files/sync-data/data/test.csv +0 -17
  22. package/files/sync-data/files/lucy.jpg +0 -0
  23. package/files/sync-data/schema/test.json +0 -11
  24. package/lucy.jpg +0 -0
  25. package/mitarbeiter-login.html +0 -188
  26. package/old/Gulpfile.d.ts +0 -34
  27. package/old/Gulpfile.js +0 -116
  28. package/old/Gulpfile.js.map +0 -1
  29. package/old/Gulpfile.ts +0 -231
  30. package/old/gulp/backend.d.ts +0 -3
  31. package/old/gulp/backend.js +0 -92
  32. package/old/gulp/backend.js.map +0 -1
  33. package/old/gulp/backend.ts +0 -109
  34. package/old/gulp/checks.d.ts +0 -3
  35. package/old/gulp/checks.js +0 -205
  36. package/old/gulp/checks.js.map +0 -1
  37. package/old/gulp/checks.ts +0 -228
  38. package/old/gulp/clean.d.ts +0 -3
  39. package/old/gulp/clean.js +0 -29
  40. package/old/gulp/clean.js.map +0 -1
  41. package/old/gulp/clean.ts +0 -33
  42. package/old/gulp/copy.d.ts +0 -2
  43. package/old/gulp/copy.js +0 -34
  44. package/old/gulp/copy.js.map +0 -1
  45. package/old/gulp/copy.ts +0 -42
  46. package/old/gulp/helpers.d.ts +0 -2
  47. package/old/gulp/helpers.js +0 -25
  48. package/old/gulp/helpers.js.map +0 -1
  49. package/old/gulp/helpers.ts +0 -26
  50. package/old/gulp/pages.d.ts +0 -2
  51. package/old/gulp/pages.js +0 -37
  52. package/old/gulp/pages.js.map +0 -1
  53. package/old/gulp/pages.ts +0 -40
  54. package/old/gulp/pipeline.d.ts +0 -1
  55. package/old/gulp/pipeline.js +0 -29
  56. package/old/gulp/pipeline.js.map +0 -1
  57. package/old/gulp/pipeline.ts +0 -31
  58. package/old/gulp/public.d.ts +0 -2
  59. package/old/gulp/public.js +0 -50
  60. package/old/gulp/public.js.map +0 -1
  61. package/old/gulp/public.ts +0 -59
  62. package/old/gulp/styles.d.ts +0 -2
  63. package/old/gulp/styles.js +0 -40
  64. package/old/gulp/styles.js.map +0 -1
  65. package/old/gulp/styles.ts +0 -46
  66. package/old/gulp/templates.d.ts +0 -2
  67. package/old/gulp/templates.js +0 -33
  68. package/old/gulp/templates.js.map +0 -1
  69. package/old/gulp/templates.ts +0 -39
  70. package/old/gulp/types.d.ts +0 -4
  71. package/old/gulp/types.js +0 -289
  72. package/old/gulp/types.js.map +0 -1
  73. package/old/gulp/types.ts +0 -311
  74. package/old/gulp/watchers.d.ts +0 -9
  75. package/old/gulp/watchers.js +0 -59
  76. package/old/gulp/watchers.js.map +0 -1
  77. package/old/gulp/watchers.ts +0 -105
  78. package/old/helpers.d.ts +0 -32
  79. package/old/helpers.js +0 -267
  80. package/old/helpers.js.map +0 -1
  81. package/old/helpers.ts +0 -307
  82. package/old/index.d.ts +0 -59
  83. package/old/index.js +0 -288
  84. package/old/index.js.map +0 -1
  85. package/old/index.ts +0 -379
  86. package/old/init.d.ts +0 -8
  87. package/old/init.js +0 -165
  88. package/old/init.js.map +0 -1
  89. package/old/init.ts +0 -183
  90. package/old/models.d.ts +0 -37
  91. package/old/models.js +0 -2
  92. package/old/models.js.map +0 -1
  93. package/old/models.ts +0 -35
  94. package/old/prepare.d.ts +0 -8
  95. package/old/prepare.js +0 -20
  96. package/old/prepare.js.map +0 -1
  97. package/old/prepare.ts +0 -24
  98. package/old/schemas/index.d.ts +0 -0
  99. package/old/schemas/index.js +0 -2
  100. package/old/schemas/index.js.map +0 -1
  101. package/old/schemas/index.ts +0 -0
  102. package/old/schemas/types.d.ts +0 -0
  103. package/old/schemas/types.js +0 -2
  104. package/old/schemas/types.js.map +0 -1
  105. package/old/schemas/types.ts +0 -0
  106. package/old/settings.json +0 -67
  107. package/old/sync.d.ts +0 -2
  108. package/old/sync.js +0 -88
  109. package/old/sync.js.map +0 -1
  110. package/old/sync.ts +0 -97
  111. package/old/types.d.ts +0 -8
  112. package/pnpm-workspace.yaml +0 -6
  113. package/settings/backend-settings.json +0 -19
  114. package/settings/master-settings.json +0 -20
  115. package/settings/page-settings.json +0 -21
  116. package/settings/public-settings.json +0 -22
  117. package/src/args.ts +0 -121
  118. package/src/commands/checks.ts +0 -51
  119. package/src/commands/cleanup.ts +0 -11
  120. package/src/commands/copy.ts +0 -29
  121. package/src/commands/edit.ts +0 -81
  122. package/src/commands/exec.ts +0 -73
  123. package/src/commands/git.ts +0 -152
  124. package/src/commands/home.ts +0 -20
  125. package/src/commands/install.ts +0 -269
  126. package/src/commands/read.ts +0 -45
  127. package/src/commands/write.ts +0 -45
  128. package/src/commands.ts +0 -21
  129. package/src/config.ts +0 -142
  130. package/src/error.ts +0 -3
  131. package/src/helpers.ts +0 -93
  132. package/src/index.ts +0 -113
  133. package/src/init/blocks.ts +0 -85
  134. package/src/init/cargo.ts +0 -25
  135. package/src/init/expo.ts +0 -69
  136. package/src/init/gitModules.ts +0 -15
  137. package/src/init/index.ts +0 -88
  138. package/src/init/monorepo.ts +0 -72
  139. package/src/init/prepareVelo.ts +0 -19
  140. package/src/init/tauri.ts +0 -42
  141. package/src/init/templates.ts +0 -98
  142. package/src/init/velo.ts +0 -66
  143. package/src/policy.ts +0 -6
  144. package/src/prepare.ts +0 -24
  145. package/src/runtime.ts +0 -21
  146. package/src/schemas/gulp.ts +0 -31
  147. package/src/schemas/index.ts +0 -17
  148. package/src/schemas/lucy.ts +0 -43
  149. package/src/schemas/tsconfig.ts +0 -35
  150. package/src/schemas/types.ts +0 -40
  151. package/src/settings.json +0 -67
  152. package/src/states.ts +0 -15
  153. package/src/tasks/Gulpfile.ts +0 -207
  154. package/src/tasks/gulp/backend.ts +0 -113
  155. package/src/tasks/gulp/checks.ts +0 -219
  156. package/src/tasks/gulp/clean.ts +0 -38
  157. package/src/tasks/gulp/copy.ts +0 -38
  158. package/src/tasks/gulp/helpers.ts +0 -18
  159. package/src/tasks/gulp/pages.ts +0 -43
  160. package/src/tasks/gulp/pipeline.ts +0 -31
  161. package/src/tasks/gulp/public.ts +0 -61
  162. package/src/tasks/gulp/styles.ts +0 -47
  163. package/src/tasks/gulp/templates.ts +0 -53
  164. package/src/tasks/gulp/types.ts +0 -310
  165. package/src/tasks/gulp/watchers.ts +0 -97
  166. package/src/tasks/index.ts +0 -24
  167. package/src/tasks/syncSettings.ts +0 -21
  168. package/src/types.d.ts +0 -8
  169. package/src/utils/index.ts +0 -0
  170. package/src/utils/logger.ts +0 -40
  171. package/src/wix-sdk/check.ts +0 -24
  172. package/src/wix-sdk/client.ts +0 -18
  173. package/src/wix-sdk/index.ts +0 -17
  174. package/src/wix-sdk/init.ts +0 -54
  175. package/src/wix-sdk/run.ts +0 -56
  176. package/src/wix-sync/client.ts +0 -6
  177. package/src/wix-sync/export.ts +0 -19
  178. package/src/wix-sync/import.ts +0 -27
  179. package/src/wix-sync/index.ts +0 -36
  180. package/src/wix-sync/init.ts +0 -77
  181. package/src/wix-sync/is-alive.ts +0 -25
  182. package/src/wix-sync/migrate.ts +0 -23
  183. package/src/wix-sync/sync.ts +0 -27
  184. package/tsconfig.json +0 -34
@@ -1,310 +0,0 @@
1
- import gulp from 'gulp';
2
- import * as path from 'path';
3
- import { File, TaskOptions } from '../../schemas/gulp.js';
4
- import replace from 'gulp-string-replace';
5
- import flatmap from 'gulp-flatmap';
6
- import jeditor from 'gulp-json-editor';
7
- import * as insert from 'gulp-insert';
8
- import tap from 'gulp-tap';
9
- import { TSConfig } from '../../schemas/tsconfig.js';
10
- import { logger, orange, yellow } from '../../utils/logger.js';
11
-
12
- export function updateWixTypes(options: TaskOptions) {
13
- return () => {
14
- const { publicSettings, backendSettings, masterSettings, pageSettings, replaceOptions } = options;
15
- let count = 0;
16
-
17
-
18
- // Add module to publicSettings
19
- publicSettings.compilerOptions.paths['backend/*.web'] = [ "../../../typescript/backend/*.web.ts" ] as never;
20
- publicSettings.compilerOptions.paths['backend/*.web.js'] = [ "../../../typescript/backend/*.web.ts" ] as never;
21
- publicSettings.compilerOptions.paths['backend/*'] = [ "../../../typescript/backend/*.web.ts" ] as never;
22
- publicSettings.compilerOptions.paths['backend/*.jsw'] = [ "../../../typescript/backend/*.jsw.ts" ] as never;
23
- publicSettings.compilerOptions.paths.mocks = [ "../../../typescript/__mocks__/*" ] as never;
24
- publicSettings.compilerOptions.paths['types/*'] = [ "../../../typescript/types/*" ] as never;
25
- publicSettings.compilerOptions.paths['public/*'] = [ "../../../typescript/public/*.ts" ] as never;
26
- publicSettings.include = [
27
- "../../../typescript/public/**/*",
28
- "../../../typescript/__mocks__/**/*",
29
- // "../../../typescript/backend/**/*.jsw.ts",
30
- // "../../../typescript/backend/**/*.web.ts",
31
- // "../../../typescript/backend/**/*.web"
32
- ] as never;
33
-
34
- // Add module to backendSettings
35
- backendSettings.compilerOptions.paths.mocks = [ "../../../typescript/__mocks__/*" ] as never;
36
- backendSettings.compilerOptions.paths['types/*'] = [ `../../../typescript/types/*` ] as never;
37
- backendSettings.include = [
38
- "../../../typescript/backend/**/*",
39
- "../../../typescript/__mocks__/**/*",
40
- // "../../../typescript/backend/**/*.jsw.ts",
41
- // "../../../typescript/backend/**/*.web.ts",
42
- // "../../../typescript/backend/**/*.web"
43
- ] as never;
44
- // Add module to masterSettings
45
- masterSettings.compilerOptions.paths['backend/*.web'] = [ "../../../typescript/backend/*.web.ts" ] as never;
46
- masterSettings.compilerOptions.paths['backend/*.web.js'] = [ "../../../typescript/backend/*.web.ts" ] as never;
47
- masterSettings.compilerOptions.paths['backend/*'] = [ "../../../typescript/backend/*.web.ts" ] as never;
48
- masterSettings.compilerOptions.paths['backend/*.jsw'] = [ "../../../typescript/backend/*.jsw.ts" ] as never;
49
- masterSettings.compilerOptions.paths['types/*'] = [ "../../../typescript/types/*" ] as never;
50
- masterSettings.include = [
51
- "../../../typescript/public/**/*",
52
- "../../../typescript/__mocks__/**/*",
53
- // "../../../typescript/backend/**/*.jsw.ts",
54
- // "../../../typescript/backend/**/*.web.ts",
55
- // "../../../typescript/backend/**/*.web"
56
- ] as never;
57
- // Add module to pageSettings
58
- pageSettings.compilerOptions.paths['backend/*.web'] = [ "../../../typescript/backend/*.web.ts" ] as never;
59
- pageSettings.compilerOptions.paths['backend/*.web.js'] = [ "../../../typescript/backend/*.web.ts" ] as never;
60
- pageSettings.compilerOptions.paths['backend/*'] = [ "../../../typescript/backend/*.web.ts" ] as never;
61
- pageSettings.compilerOptions.paths['backend/*.jsw'] = [ "../../../typescript/backend/*.jsw.ts" ] as never;
62
- pageSettings.compilerOptions.paths['types/*'] = [ "../../../typescript/types/*" ] as never;
63
- pageSettings.compilerOptions.paths['backend/*.jsw'] = [ "../../../typescript/backend/*.jsw.ts" ] as never;
64
- pageSettings.include = [
65
- "../../../typescript/public/**/*",
66
- "../../../typescript/__mocks__/**/*",
67
- // "../../../typescript/backend/**/*.jsw.ts",
68
- // "../../../typescript/backend/**/*.web.ts",
69
- // "../../../typescript/backend/**/*.web"
70
- ] as never;
71
-
72
- for (const name of options.modulesSourcePaths) {
73
- // Add module to publicSettings
74
- publicSettings.compilerOptions.paths['backend/*.web.js'].push(`../../../${name}/backend/*.web.ts` as never);
75
- publicSettings.compilerOptions.paths['backend/*.web'].push(`../../../${name}/backend/*.web.ts` as never);
76
- publicSettings.compilerOptions.paths['backend/*'].push(`../../../${name}/backend/*.web.ts` as never);
77
- publicSettings.compilerOptions.paths['backend/*.jsw'].push(`../../../${name}/backend/*.jsw.ts` as never);
78
- publicSettings.compilerOptions.paths['public/*'].push(`../../../${name}/public/*` as never);
79
- publicSettings.compilerOptions.paths.mocks.push(...[ `../../../${name}/__mocks__/*` as never ]);
80
- publicSettings.compilerOptions.paths['types/*'].push(`../../../${name}/types/*` as never);
81
- publicSettings.include.push(...[
82
- `../../../${name}/public/**/*`,
83
- `../../../${name}__mocks__/**/*`,
84
- // `../../../${name}/backend/**/*.jsw.ts`,
85
- // `../../../${name}/backend/**/*.web.ts`,
86
- // `../../../${name}/backend/**/*.web`
87
- ] as never[]);
88
- // Add module to backendSettings
89
- backendSettings.compilerOptions.paths['public/*'].push(`../../../${name}/public/*` as never);
90
- backendSettings.compilerOptions.paths['backend/*'].push(`../../../${name}/backend/*` as never);
91
- backendSettings.compilerOptions.paths.mocks.push(...[ `../../../${name}/__mocks__/*` ] as never[]);
92
- backendSettings.compilerOptions.paths['types/*'].push(`../../../${name}/types/*` as never);
93
- backendSettings.include.push(...[
94
- `../../../${name}/public/**/*`,
95
- `../../../${name}__mocks__/**/*`,
96
- `../../../${name}/backend/**/*`,
97
- // `../../../${name}/backend/**/*.jsw.ts`,
98
- // `../../../${name}/backend/**/*.web.ts`,
99
- // `../../../${name}/backend/**/*.web`
100
- ] as never[]);
101
- // Add module to masterSettings
102
- masterSettings.compilerOptions.paths['backend/*.web.js'].push(`../../../${name}/backend/*.web.ts` as never);
103
- masterSettings.compilerOptions.paths['backend/*.web'].push(`../../../${name}/backend/*.web.ts` as never);
104
- masterSettings.compilerOptions.paths['backend/*'].push(`../../../${name}/backend/*.web.ts` as never);
105
- masterSettings.compilerOptions.paths['backend/*.jsw'].push(`../../../${name}/backend/*.jsw.ts` as never);
106
- masterSettings.compilerOptions.paths['public/*'].push(`../../../${name}/public/*` as never);
107
- masterSettings.compilerOptions.paths['types/*'].push(`../../../${name}/types/*` as never);
108
- masterSettings.include.push(...[
109
- `../../../${name}/public/**/*`,
110
- `../../../${name}__mocks__/**/*`,
111
- // `../../../${name}/backend/**/*.jsw.ts`,
112
- // `../../../${name}/backend/**/*.web.ts`,
113
- // `../../../${name}/backend/**/*.web`
114
- ] as never[]);
115
- // Add module to pageSettings
116
- pageSettings.compilerOptions.paths['backend/*.web.js'].push(`../../../${name}/backend/*.web.ts` as never);
117
- pageSettings.compilerOptions.paths['backend/*.web'].push(`../../../${name}/backend/*.web.ts` as never);
118
- pageSettings.compilerOptions.paths['backend/*'].push(`../../../${name}/backend/*.web.ts` as never);
119
- pageSettings.compilerOptions.paths['backend/*.jsw'].push(`../../../${name}/backend/*.jsw.ts` as never);
120
- pageSettings.compilerOptions.paths['public/*'].push(`../../../${name}/public/*` as never);
121
- pageSettings.compilerOptions.paths['types/*'].push(`../../../${name}/types/*` as never);
122
- pageSettings.include.push(...[
123
- `../../../${name}/public/**/*`,
124
- `../../../${name}__mocks__/**/*`,
125
- // `../../../${name}/backend/**/*.jsw.ts`,
126
- // `../../../${name}/backend/**/*.web.ts`,
127
- // `../../../${name}/backend/**/*.web`
128
- ] as never[]);
129
- }
130
-
131
- return gulp.src(['./.wix/types/**/*.json', '!./.wix/types/wix-code-types/**/*'])
132
- .pipe(flatmap(function(stream: NodeJS.ReadableStream, file: File) {
133
- count ++;
134
- if (file.dirname.endsWith('public')) {
135
- return stream.pipe(jeditor(publicSettings))
136
- .pipe(jeditor((json: any) => cleanTsConfig(json)))
137
- .pipe(jeditor((json: any) => processJson(json)))
138
- .pipe(replace('"../backend.d.ts",', '', replaceOptions))
139
- .pipe(replace('"../../../src/backend/\\*\\*/\\*.web.js",', '', replaceOptions));
140
- }
141
- if (file.dirname.endsWith('backend')) {
142
- return stream.pipe(jeditor(backendSettings))
143
- .pipe(jeditor((json: any) => cleanTsConfig(json)))
144
- .pipe(jeditor((json: any) => processJson(json)))
145
- };
146
- if (file.dirname.endsWith('masterPage')) {
147
- return stream.pipe(jeditor(masterSettings))
148
- .pipe(jeditor((json: any) => cleanTsConfig(json)))
149
- .pipe(jeditor((json: any) => processJson(json)))
150
- .pipe(replace('"../backend.d.ts",', '', replaceOptions))
151
- .pipe(replace('"../../../src/backend/\\*\\*/\\*.web.js",', '', replaceOptions));
152
- };
153
-
154
- return stream.pipe(jeditor(pageSettings))
155
- .pipe(jeditor((json: any) => cleanTsConfig(json)))
156
- .pipe(jeditor((json: any) => processJson(json)))
157
- .pipe(replace('"../backend.d.ts",', '', replaceOptions))
158
- .pipe(replace('"../../../src/backend/\\*\\*/\\*.web.js",', '', replaceOptions));
159
- }))
160
- .pipe(replace('masterPage.masterPage.js', 'masterPage.ts', replaceOptions))
161
- .pipe(replace('/src/', '/typescript/', replaceOptions))
162
- .pipe(replace('.js"', '.ts"', replaceOptions))
163
- .pipe(tap(function(file) { // tap into the stream to log the output
164
- // console.debug(file.contents?.toString() ?? 'no content'); TODO: Uncomment when needed
165
- }))
166
- .pipe(gulp.dest((file: File) => {
167
- const filePath = file.dirname;
168
- const outputDir = path.dirname(filePath);
169
-
170
- return path.join(outputDir);
171
- }))
172
- .on('error', function (e: Error) {
173
- logger.error('Modification of WIX configs failed!');
174
- logger.error(`Error: ${orange(e.message)}`);
175
- this.emit('end');
176
- })
177
- .on('end', function() { logger.success(`Modification of ${yellow(count)} WIX configs succeeded!`); });
178
- }
179
- }
180
-
181
- export function addTypes(options: TaskOptions, done: gulp.TaskFunctionCallback) {
182
- const { replaceOptions } = options;
183
-
184
- // Regex to match keywords at the beginning of a line, capturing any leading whitespace.
185
- // The 'm' flag is for multiline matching (^ matches start of line).
186
- // The 'g' flag is for global matching (replace all instances).
187
- const interfaceRegex = /^(\s*)interface\s/gm;
188
- const enumRegex = /^(\s*)enum\s/gm;
189
- const typeRegex = /^(\s*)type\s/gm;
190
-
191
- const streams = [
192
- // Stream for common types
193
- gulp.src(['./.wix/types/wix-code-types/dist/types/common/*.d.ts', '!./.wix/types/wix-code-types/dist/types/common/$w.d.ts'])
194
- .pipe(replace(interfaceRegex, 'export interface ', replaceOptions))
195
- .pipe(replace(enumRegex, 'export enum ', replaceOptions))
196
- .pipe(replace(typeRegex, 'export type ', replaceOptions))
197
- .pipe(gulp.dest('./.wix/types/wix-code-types/dist/types/common/')),
198
-
199
- // Stream for beta types
200
- gulp.src(['./.wix/types/wix-code-types/dist/types/beta/common/*.d.ts', '!./.wix/types/wix-code-types/dist/types/beta/common/$w.d.ts'])
201
- .pipe(replace(interfaceRegex, 'export interface ', replaceOptions))
202
- .pipe(replace(enumRegex, 'export enum ', replaceOptions))
203
- .pipe(replace(typeRegex, 'export type ', replaceOptions))
204
- .pipe(gulp.dest('./.wix/types/wix-code-types/dist/types/beta/common/')),
205
-
206
- // Stream for processing $w.d.ts
207
- gulp.src(['./.wix/types/wix-code-types/dist/types/common/$w.d.ts'])
208
- .pipe(insert.prepend("import '@total-typescript/ts-reset';\n"))
209
- .pipe(gulp.dest('./.wix/types/wix-code-types/dist/types/common/'))
210
- ];
211
-
212
- let completedStreams = 0;
213
- let hasErrored = false;
214
-
215
- streams.forEach(stream => {
216
- stream.on('end', () => {
217
- completedStreams++;
218
- if (completedStreams === streams.length && !hasErrored) {
219
- logger.success('Updating WIX succeeded!');
220
- done();
221
- }
222
- });
223
- stream.on('error', (e: Error) => {
224
- if (!hasErrored) {
225
- hasErrored = true;
226
- logger.error('Updating WIX failed!');
227
- logger.error(`Error: ${orange(e.message)}`);
228
- done(e);
229
- }
230
- });
231
- });
232
- };
233
- function makeHashable(obj: any): any {
234
- if (Array.isArray(obj)) {
235
- return obj.map(makeHashable);
236
- } else if (obj && typeof obj === 'object') {
237
- const sortedKeys = Object.keys(obj).sort();
238
- const result: any = {};
239
- for (const key of sortedKeys) {
240
- result[key] = makeHashable(obj[key]);
241
- }
242
- return result;
243
- } else {
244
- return obj;
245
- }
246
- }
247
-
248
- function removeDuplicatesFromArray(arr: any[]): any[] {
249
- const seen = new Set<string>();
250
- const newArr: any[] = [];
251
-
252
- for (const item of arr) {
253
- const processedItem = processJson(item); // Recursively process the item
254
- const hashableItem = makeHashable(processedItem);
255
- const serializedItem = JSON.stringify(hashableItem);
256
-
257
- if (!seen.has(serializedItem)) {
258
- seen.add(serializedItem);
259
- newArr.push(processedItem);
260
- }
261
- }
262
- return newArr;
263
- }
264
-
265
- function processJson(obj: any): any {
266
- if (Array.isArray(obj)) {
267
- // Process arrays and remove duplicate items
268
- const uniqueArray = removeDuplicatesFromArray(obj);
269
- return uniqueArray.length > 0 ? uniqueArray : undefined; // Remove empty arrays
270
- } else if (obj && typeof obj === 'object') {
271
- // Process objects, ensuring keys are unique
272
- const result: any = {};
273
- const seenKeys = new Set<string>();
274
-
275
- for (const key in obj) {
276
- if (Object.prototype.hasOwnProperty.call(obj, key)) {
277
- if (!seenKeys.has(key)) {
278
- const processedValue = processJson(obj[key]);
279
- if (processedValue !== undefined) { // Remove keys with undefined values
280
- seenKeys.add(key);
281
- result[key] = processedValue;
282
- }
283
- }
284
- }
285
- }
286
-
287
- // If all keys were empty or undefined, return undefined
288
- return Object.keys(result).length > 0 ? result : undefined;
289
- } else {
290
- // Return primitive values as-is
291
- return obj;
292
- }
293
- }
294
-
295
- function cleanTsConfig(json: TSConfig): TSConfig {
296
- // const paths: Record<string, string[]> = {};
297
- if (json.compilerOptions?.paths) {
298
- for (const [key, value] of Object.entries(json.compilerOptions.paths)) {
299
- const uniquePaths = new Set(value);
300
- json.compilerOptions.paths[key] = Array.from(uniquePaths);
301
- // paths[key] = Array.from(uniquePaths);
302
- }
303
- // json.compilerOptions.paths = paths;
304
- }
305
- json.include = Array.from(new Set(json.include));
306
- json.exclude = Array.from(new Set(json.exclude));
307
- json.files = Array.from(new Set(json.files));
308
-
309
- return json;
310
- }
@@ -1,97 +0,0 @@
1
- import gulp from 'gulp';
2
- import { buildBackend } from './backend.js';
3
- import { buildPublic } from './public.js';
4
- import { buildPages } from './pages.js';
5
- import { copyFiles } from './copy.js';
6
- import { previewTemplates } from './templates.js';
7
- import { checkTs } from './checks.js';
8
- import { TaskOptions } from '../../schemas/gulp.js';
9
- import { TaskType } from '../../schemas/types.js';
10
-
11
- export function watchAll(options: TaskOptions): TaskType {
12
- function watchSCSS() {
13
- return gulp.watch([
14
- '*/styles/**/*.scss'
15
- ],
16
- gulp.parallel('scss')
17
- );
18
- }
19
-
20
- function watchBackend() {
21
- return gulp.watch([
22
- '*/backend/**/*.ts',
23
- '*/backend/**/*.tsx',
24
- '!*/backend/**/*.jsw.ts',
25
- '!src/**/*',
26
- ], gulp.parallel(
27
- checkTs(options, true),
28
- buildBackend(options),
29
- ));
30
- }
31
-
32
- function watchPublic() {
33
- return gulp.watch([
34
- '*/public/**/*.ts',
35
- '*/public/**/*.tsx',
36
- '!src/**/*',
37
- ], gulp.parallel(
38
- checkTs(options, true),
39
- buildPublic(options),
40
- ));
41
- }
42
-
43
- function watchPages() {
44
- return gulp.watch(['typescript/pages/**/*.ts', '!src/**/*',],
45
- gulp.parallel(
46
- checkTs(options, true),
47
- buildPages(options),
48
- )
49
- );
50
- }
51
-
52
- function watchFiles() {
53
- return gulp.watch([
54
- '*/backend/**/*',
55
- '*/public/**/*',
56
- '*/pages/**/*',
57
- '!*/**/*.ts',
58
- '!*/**/*.tsx',
59
- '!src/**/*',
60
- ], gulp.parallel(copyFiles(options)));
61
- }
62
-
63
- function watchTemplates() {
64
- return gulp.watch([
65
- '*/backend/templates/**/*.tsx',
66
- '*/backend/templates/data/*.json',
67
- '!*/backend/templates/render.ts',
68
- '!src/**/*',
69
- ], gulp.parallel(
70
- previewTemplates(options),
71
- checkTs(options, true),
72
- )
73
- );
74
- }
75
-
76
- function watchTypes() {
77
- return gulp.watch([
78
- './.wix/types/**/*.d.ts',
79
- '!./.wix/types/wix-code-types',
80
- '!src/**/*',
81
- ],
82
- gulp.series(
83
- 'fix-wix-types'
84
- )
85
- );
86
- }
87
-
88
- return gulp.parallel(
89
- watchSCSS,
90
- watchBackend,
91
- watchPublic,
92
- watchPages,
93
- watchFiles,
94
- watchTemplates,
95
- watchTypes,
96
- );
97
- }
@@ -1,24 +0,0 @@
1
- import { Effect } from "effect/index"
2
- import { Config } from "../config.js";
3
- import { AppError } from "../error.js";
4
- import { task_runGulp } from "./Gulpfile.js";
5
- import { task_syncSettings } from "./syncSettings.js";
6
- import { setNeedsCleanup } from "../index.js";
7
- export const tasks = Effect.gen(function* (_) {
8
- const config = yield* Config;
9
- if(config.config.action.tasksName === undefined) {
10
- return yield* Effect.fail(new AppError({ message: "No task name provided", cause: new Error("No task name provided") }));
11
- }
12
- if(
13
- config.config.action.tasksName === 'dev'
14
- || config.config.action.tasksName === 'build'
15
- || config.config.action.tasksName === 'build-prod'
16
- || config.config.action.tasksName === 'build-pipeline'
17
- )
18
- {
19
- setNeedsCleanup(true);
20
- return yield* task_runGulp;
21
- }
22
- if(config.config.action.tasksName === 'sync-settings') return yield* task_syncSettings;
23
- yield* Effect.fail(new AppError({ message: `Unsupported task type: ${config.config.action.tasksName}`, cause: new Error(`Unsupported task type: ${config.config.action.tasksName}`) }));
24
- })
@@ -1,21 +0,0 @@
1
- import { Effect } from "effect/index"
2
- import { logger } from "../utils/logger.js";
3
- import { Config } from "../config.js";
4
- import { writeLucySettings } from "../commands/write.js";
5
-
6
- export const task_syncSettings = Effect.gen(function*() {
7
- const config = yield* Config;
8
- logger.action("Syncing settings...");
9
- if(config.config.lucySettings.initialized){
10
- config.config.lucySettings.dependencies = config.config.packageJson.dependencies
11
- config.config.lucySettings.devDependencies = config.config.packageJson.devDependencies
12
- config.config.lucySettings.scripts = config.config.packageJson.scripts;
13
- yield* writeLucySettings;
14
-
15
- logger.success("Settings synced successfully.");
16
- return;
17
- }
18
-
19
- logger.error("Lucy settings are not initialized. Please run 'lucy init' first.");
20
- })
21
-
package/src/types.d.ts DELETED
@@ -1,8 +0,0 @@
1
- declare module 'gulp-exec';
2
- declare module 'gulp-clean';
3
- declare module 'gulp-foreach';
4
- declare module 'gulp-string-replace';
5
- declare module 'gulp-wait';
6
- declare module 'gulp-jest';
7
- declare module 'gulp-flatmap';
8
- declare module 'gulp-swc';
File without changes
@@ -1,40 +0,0 @@
1
- import chalk from "chalk";
2
- import { error } from "effect/Brand";
3
- import { info } from "sass";
4
-
5
- export const orange = chalk.hex('#FFA500');
6
- export const blue = chalk.blueBright;
7
- export const green = chalk.greenBright;
8
- export const red = chalk.redBright;
9
- export const yellow = chalk.yellow;
10
- export const magenta = chalk.magentaBright;
11
-
12
- export const logger = {
13
- success: (message: string, ...optionalParams: any[]) => {
14
- console.log("đŸļ" + green.underline(' => ' + message + optionalParams.map(param => ' ' + param)), ' ✅');
15
- },
16
- info: (message: string, ...optionalParams: any[]) => {
17
- console.log("đŸļ" + blue.underline(' => ' + message + optionalParams.map(param => ' ' + param)), ' â„šī¸');
18
- },
19
- action: (message: string, ...optionalParams: any[]) => {
20
- console.log("🐕" + blue.underline(' => ' + message + optionalParams.map(param => ' ' + param)));
21
- },
22
- exception: (message: string, ...optionalParams: any[]) => {
23
- console.log("đŸ’Ĩ" + red(' => ' + message + optionalParams.map(param => ' ' + param)));
24
- },
25
- error: (message: string, ...optionalParams: any[]) => {
26
- console.log("🛑" + red(' => ' + message + optionalParams.map(param => ' ' + param)));
27
- },
28
- warning: (message: string, ...optionalParams: any[]) => {
29
- console.log("âš ī¸" + orange.underline(' => ' + message + optionalParams.map(param => ' ' + param)));
30
- },
31
- alert: (message: string, ...optionalParams: any[]) => {
32
- console.log("🚨" + yellow.underline(' => ' + message + optionalParams.map(param => ' ' + param)));
33
- },
34
- report : (message: string, ...optionalParams: any[]) => {
35
- console.log("📝" + magenta.underline(' => ' + message + optionalParams.map(param => ' ' + param)));
36
- },
37
- kill : (message: string, ...optionalParams: any[]) => {
38
- console.log("đŸ”Ē" + red.underline(' => ' + message + optionalParams.map(param => ' ' + param)));
39
- }
40
- };
@@ -1,24 +0,0 @@
1
- import { Effect, Schema } from "effect/index";
2
- import { Config } from "../config.js";
3
- import { AppError } from "../error.js";
4
- import { logger } from "../utils/logger.js";
5
- import { createSDKClient } from "./client.js";
6
-
7
- export const wix_sdk_check = Effect.gen(function* (_) {
8
- const config = yield* Config;
9
- const wixSDKSettings = config.config.wixSDKSettings;
10
- if (!wixSDKSettings) return yield* Effect.fail(new AppError({ message: 'Wix SDK settings not found', cause: new Error('Wix SDK settings not found') }));
11
- const client = yield* createSDKClient;
12
-
13
- logger.action(`Checking if the SDK is working`);
14
-
15
- const res = yield* Effect.tryPromise({
16
- try: () => client.sites.countSites(),
17
- catch: (e) => {
18
- return new AppError({ cause: e, message: 'Error checking if the SDK is working' });
19
- }
20
- })
21
- if(res.count) {
22
- return logger.success(`SDK for site ${wixSDKSettings.siteId} is alive and working!`);
23
- }
24
- })
@@ -1,18 +0,0 @@
1
- import { items, collections } from '@wix/data';
2
- import { sites } from "@wix/sites";
3
- import { createClient, ApiKeyStrategy } from '@wix/sdk';
4
- import { Effect } from 'effect/index';
5
- import { Config } from '../config.js';
6
- import { AppError } from '../error.js';
7
-
8
- export const createSDKClient = Effect.gen(function* (_) {
9
- const config = yield* Config;
10
- const wixSDKSettings = config.config.wixSDKSettings;
11
- if (wixSDKSettings) {
12
- return createClient({
13
- modules: { items, collections, sites },
14
- auth: ApiKeyStrategy(wixSDKSettings),
15
- });
16
- }
17
- return yield* Effect.fail(new AppError({ message: "No API key provided", cause: new Error("No API key provided") }));
18
- });
@@ -1,17 +0,0 @@
1
- import { Effect, Schema } from "effect/index"
2
- import { Config } from "../config.js";
3
- import { AppError } from "../error.js";
4
- import { wix_sdk_init } from "./init.js";
5
-
6
-
7
- export const wix_sdk = Effect.gen(function* (_) {
8
- const config = yield* Config;
9
- if(config.config.action.wixSDKAction === undefined) {
10
- return yield* Effect.fail(new AppError({ message: "No wix-sdk action provided", cause: new Error("No wix-sdk action provided") }));
11
- }
12
- if(config.config.action.wixSDKAction === 'init')
13
- {
14
- return yield* wix_sdk_init;
15
- }
16
- yield* Effect.fail(new AppError({ message: `Unsupported wix-sdk action type: ${config.config.action.syncAction}`, cause: new Error(`Unsupported wix-sdk action type: ${config.config.action.syncAction}`) }));
17
- })
@@ -1,54 +0,0 @@
1
- import { Effect, Schema } from "effect/index";
2
- import { Config } from "../config.js";
3
- import Enquirer from "enquirer";
4
- import { AppError } from "../error.js";
5
- import { writeWixSDKSettings } from "../commands/write.js";
6
- import { wixSDKSettings } from "../schemas/index.js";
7
- import { logger } from "../utils/logger.js";
8
- import { wix_sdk_check } from "./check.js";
9
-
10
- export const wix_sdk_init = Effect.gen(function* (_) {
11
- const config = yield* Config;
12
- const prompter = new Enquirer();
13
-
14
- const choice = yield* Effect.tryPromise({
15
- try: () => prompter.prompt([
16
- {
17
- type: 'input',
18
- name: 'siteId',
19
- message: 'Enter the Wix SDK site ID',
20
- initial: config.config.wixSDKSettings?.siteId || 'siteId',
21
- validate: (value: string) => value.trim() !== '' ? true : 'Site ID cannot be empty'
22
- },
23
- {
24
- type: 'input',
25
- name: 'apiKey',
26
- message: 'Enter the Wix SDK API key',
27
- initial: config.config.wixSDKSettings?.apiKey || 'apiKey',
28
- validate: (value: string) => value.trim() !== '' ? true : 'API key cannot be empty'
29
- }
30
- ]),
31
- catch: (e) => {
32
- return new AppError({ cause: e, message: 'Error initializing wix-sdk settings' });
33
- }
34
- });
35
-
36
- config.config.wixSDKSettings = yield* Schema.decodeUnknown(wixSDKSettings)(choice)
37
- yield* writeWixSDKSettings
38
-
39
- const question = new Enquirer();
40
- const verify = yield* Effect.tryPromise({
41
- try: () => question.prompt({
42
- type: 'confirm',
43
- name: 'verify',
44
- message: 'Do you want to verify the wix-sdk settings?',
45
- }),
46
- catch: (e) => {
47
- return new AppError({ cause: e, message: 'Error setting up wix-sdk settings' });
48
- }
49
- })
50
- const verifySDK = yield* Schema.decodeUnknown(Schema.Struct({ verify: Schema.Boolean }))(verify)
51
- if (verifySDK.verify) yield* wix_sdk_check
52
-
53
- logger.success(`Velo-sync settings initialized successfully!`);
54
- })