purgetss 6.2.18 → 6.2.19

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/index.js CHANGED
@@ -100,7 +100,8 @@ const srcMaterialSymbolsTSSFile = path.resolve(__dirname, './dist/materialsymbol
100
100
  const srcConfigFile = path.resolve(__dirname, './lib/templates/purgetss.config.js');
101
101
 
102
102
  const configFile = (fs.existsSync(projectsConfigJS)) ? require(projectsConfigJS) : require(srcConfigFile);
103
- configFile.purge = configFile.purge ?? { mode: 'all' };
103
+ configFile.purge = configFile.purge ?? { mode: 'all', method: 'sync' };
104
+ configFile.purge.method = configFile.purge.method ?? 'sync';
104
105
  configFile.theme.extend = configFile.theme.extend ?? {};
105
106
 
106
107
  const configOptions = (configFile.purge && configFile.purge.options) ? configFile.purge.options : {};
@@ -111,13 +112,23 @@ if (configOptions) {
111
112
  configOptions.plugins = configOptions.plugins ?? [];
112
113
  }
113
114
 
115
+ let methodCommand
116
+ let oppositeCommand
117
+ if (configFile.purge.method === 'sync') {
118
+ oppositeCommand = "require('child_process').exec('purgetss"
119
+ methodCommand = "\trequire('child_process').execSync('purgetss', logger.warn('::PurgeTSS:: Auto-Purging ' + event.dir.project));"
120
+ } else {
121
+ oppositeCommand = "require('child_process').execSync('purgetss"
122
+ methodCommand = "\trequire('child_process').exec('purgetss', logger.warn('::PurgeTSS:: Auto-Purging ' + event.dir.project));"
123
+ }
114
124
  const srcJMKFile = path.resolve(__dirname, './lib/templates/alloy.jmk');
115
125
 
116
126
  //! Interfase
117
127
  //! Command: purgetss
118
128
  function purgeClasses(options) {
119
129
  purgingDebug = options.debug;
120
- if (alloyProject() && Date.now() > (fs.statSync(projectsAppTSS).mtimeMs + 1000)) {
130
+ let recentlyCreated = makeSureFileExists(projectsAppTSS)
131
+ if (alloyProject() && Date.now() > (fs.statSync(projectsAppTSS).mtimeMs + 2000) || recentlyCreated) {
121
132
  start();
122
133
 
123
134
  init(options);
@@ -149,6 +160,8 @@ function purgeClasses(options) {
149
160
  logger.file('app.tss');
150
161
 
151
162
  finish();
163
+ } else {
164
+ logger.warn('Purged less than 2 seconds ago!');
152
165
  }
153
166
  }
154
167
  module.exports.purgeClasses = purgeClasses;
@@ -174,7 +187,7 @@ function init(options) {
174
187
  if (fs.existsSync(projectsAlloyJMKFile)) {
175
188
  if (!fs.readFileSync(projectsAlloyJMKFile, 'utf8').includes('::PurgeTSS::')) {
176
189
  addHook();
177
- } else if (fs.readFileSync(projectsAlloyJMKFile, 'utf8').includes("require('child_process').execSync('purgetss")) {
190
+ } else if (fs.readFileSync(projectsAlloyJMKFile, 'utf8').includes(oppositeCommand)) {
178
191
  deleteHook();
179
192
  addHook();
180
193
  }
@@ -214,7 +227,7 @@ function watchMode(options) {
214
227
  deleteHook();
215
228
  } else if (!fs.readFileSync(projectsAlloyJMKFile, 'utf8').includes('::PurgeTSS::')) {
216
229
  addHook();
217
- } else if (fs.readFileSync(projectsAlloyJMKFile, 'utf8').includes("//\trequire('child_process').exec('purgetss")) {
230
+ } else if (fs.readFileSync(projectsAlloyJMKFile, 'utf8').includes(`//${methodCommand}`)) {
218
231
  enableHook();
219
232
  } else {
220
233
  logger.warn(chalk.yellow('Auto-Purging hook already present!'));
@@ -222,8 +235,6 @@ function watchMode(options) {
222
235
  } else if (!options.off) {
223
236
  createJMKFile();
224
237
  }
225
- } else {
226
- logger.warn(chalk.yellow('You can’t autorun purgetss !'));
227
238
  }
228
239
  }
229
240
  module.exports.watchMode = watchMode;
@@ -1070,7 +1081,7 @@ function addHook() {
1070
1081
 
1071
1082
  originalJMKFile.split(/\r?\n/).forEach((line) => {
1072
1083
  if (line.includes('pre:compile')) {
1073
- line += `\n\trequire('child_process').exec('purgetss', logger.warn('::PurgeTSS:: Auto-Purging ' + event.dir.project));`;
1084
+ line += `\n${methodCommand}`;
1074
1085
  }
1075
1086
  updatedJMKFile.push(line);
1076
1087
  });
@@ -1083,7 +1094,7 @@ function addHook() {
1083
1094
 
1084
1095
  alloyJMKTemplate.split(/\r?\n/).forEach((line) => {
1085
1096
  if (line.includes('pre:compile')) {
1086
- line += `\n\trequire('child_process').exec('purgetss', logger.warn('::PurgeTSS:: Auto-Purging ' + event.dir.project));`;
1097
+ line += `\n${methodCommand}`;
1087
1098
  }
1088
1099
  updatedJMKFile.push(line);
1089
1100
  });
@@ -1155,6 +1166,13 @@ function initIfNotConfig() {
1155
1166
  }
1156
1167
  }
1157
1168
 
1169
+ function makeSureFileExists(file) {
1170
+ if (!fs.existsSync(file)) {
1171
+ fs.writeFileSync(file, '')
1172
+ return true
1173
+ }
1174
+ }
1175
+
1158
1176
  function makeSureFolderExists(folder) {
1159
1177
  if (!fs.existsSync(folder)) {
1160
1178
  fs.mkdirSync(folder);
@@ -1188,18 +1206,13 @@ function getViewPaths() {
1188
1206
  }
1189
1207
 
1190
1208
  function getClassesOnlyFromXMLFiles() {
1191
- let viewPaths = getViewPaths();
1192
-
1193
1209
  let allClasses = [];
1194
- _.each(viewPaths, viewPath => {
1195
- allClasses.push(extractClassesOnly(fs.readFileSync(viewPath, 'utf8'), viewPath));
1196
- });
1210
+ let viewPaths = getViewPaths();
1211
+ _.each(viewPaths, viewPath => allClasses.push(extractClassesOnly(fs.readFileSync(viewPath, 'utf8'), viewPath)));
1197
1212
 
1198
1213
  let uniqueClasses = [];
1199
1214
  _.each(_.uniq(_.flattenDeep(allClasses)).sort(), uniqueClass => {
1200
- if (filterCharacters(uniqueClass)) {
1201
- uniqueClasses.push(uniqueClass);
1202
- }
1215
+ if (filterCharacters(uniqueClass)) uniqueClasses.push(uniqueClass);
1203
1216
  });
1204
1217
 
1205
1218
  return uniqueClasses.sort();
@@ -1208,29 +1221,18 @@ function getClassesOnlyFromXMLFiles() {
1208
1221
  function getUniqueClasses() {
1209
1222
  localStart();
1210
1223
 
1211
- let viewPaths = getViewPaths();
1212
-
1213
1224
  let allClasses = [];
1225
+ let viewPaths = getViewPaths();
1214
1226
  _.each(viewPaths, viewPath => {
1215
1227
  let file = fs.readFileSync(viewPath, 'utf8');
1216
- if (file) {
1217
- allClasses.push((configFile.purge.mode === 'all') ? file.match(/[^<>"'`\s]*[^<>"'`\s:]/g) : extractClasses(file, viewPath));
1218
- }
1228
+ if (file) allClasses.push((configFile.purge.mode === 'all') ? file.match(/[^<>"'`\s]*[^<>"'`\s:]/g) : extractClasses(file, viewPath));
1219
1229
  });
1220
1230
 
1221
- if (configOptions.safelist) {
1222
- _.each(configOptions.safelist, safe => {
1223
- allClasses.push(safe);
1224
- })
1225
- }
1231
+ if (configOptions.safelist) _.each(configOptions.safelist, safe => allClasses.push(safe))
1226
1232
 
1227
1233
  let uniqueClasses = [];
1228
-
1229
- // Clean even more unnecessary names
1230
1234
  _.each(_.uniq(_.flattenDeep(allClasses)).sort(), uniqueClass => {
1231
- if (filterCharacters(uniqueClass)) {
1232
- uniqueClasses.push(uniqueClass);
1233
- }
1235
+ if (filterCharacters(uniqueClass)) uniqueClasses.push(uniqueClass)
1234
1236
  });
1235
1237
 
1236
1238
  localFinish('Get Unique Classes');
@@ -2,6 +2,7 @@
2
2
  module.exports = {
3
3
  purge: {
4
4
  mode: 'all',
5
+ method: 'sync', // set how to execute auto-purging: sync or async
5
6
 
6
7
  // These options are passed directly to PurgeTSS
7
8
  options: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "purgetss",
3
- "version": "6.2.18",
3
+ "version": "6.2.19",
4
4
  "description": "An extension for Titanium SDK that contains a set of Tailwind-like classes to easily and quickly create beautifully designed mobile apps.",
5
5
  "main": "index.js",
6
6
  "bin": {