codeplay-common 2.1.24 → 2.1.26

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.
@@ -10,34 +10,34 @@ const configPath = path.join(process.cwd(), 'capacitor.config.json');
10
10
 
11
11
  // Expected plugin list with minimum versions
12
12
  const requiredPlugins = [
13
- { pattern: /backbutton-(\d+\.\d+)\.js$/, minVersion: '1.7', required: true, baseDir: 'js' },
13
+ { pattern: /backbutton-(\d+\.\d+)\.js$/, minVersion: '1.8', required: true, baseDir: 'js',mandatoryUpdate: true},
14
14
 
15
15
  /*/common-(\d+\.\d+)\.js$/*/
16
- { pattern: /common-(\d+\.\d+)(?:-beta-(\d+))?\.js$/, minVersion: '5.3', required: true, baseDir: 'js' },
16
+ { pattern: /common-(\d+\.\d+)(?:-beta-(\d+))?\.js$/, minVersion: '5.3', required: true, baseDir: 'js',mandatoryUpdate: false },
17
17
 
18
- { pattern: /localization_settings-(\d+\.\d+)\.js$/, minVersion: '1.1', required: true, baseDir: 'js' },
19
- { pattern: /localization-(\d+\.\d+)\.js$/, minVersion: '1.3', required: true, baseDir: 'js' },
20
- { pattern: /localNotification-(\d+\.\d+)\.js$/, minVersion: '2.2', required: true, baseDir: 'js' },
21
- { pattern: /localNotification_AppSettings-(\d+\.\d+)\.js$/, minVersion: '1.0', required: true, baseDir: 'js' },
22
- { pattern: /onesignal-(\d+\.\d+)\.js$/, minVersion: '2.3', required: true, baseDir: 'js' },
23
- { pattern: /saveToGalleryAndSaveAnyFile-(\d+\.\d+)(-ios)?\.js$/, minVersion: '3.0', required: true, baseDir: 'js' },
24
- { pattern: /Ads[\/\\]IAP-(\d+\.\d+)$/, minVersion: '2.5', isFolder: true , required: true, baseDir: 'js' },
25
- { pattern: /Ads[\/\\]admob-emi-(\d+\.\d+)\.js$/, minVersion: '3.3', required: true, baseDir: 'js' },
18
+ { pattern: /localization_settings-(\d+\.\d+)\.js$/, minVersion: '1.1', required: true, baseDir: 'js',mandatoryUpdate: false },
19
+ { pattern: /localization-(\d+\.\d+)\.js$/, minVersion: '1.4', required: true, baseDir: 'js',mandatoryUpdate: true },
20
+ { pattern: /localNotification-(\d+\.\d+)\.js$/, minVersion: '2.2', required: true, baseDir: 'js',mandatoryUpdate: false },
21
+ { pattern: /localNotification_AppSettings-(\d+\.\d+)\.js$/, minVersion: '1.0', required: true, baseDir: 'js',mandatoryUpdate: false },
22
+ { pattern: /onesignal-(\d+\.\d+)\.js$/, minVersion: '2.3', required: true, baseDir: 'js',mandatoryUpdate: false },
23
+ { pattern: /saveToGalleryAndSaveAnyFile-(\d+\.\d+)(-ios)?\.js$/, minVersion: '3.0', required: true, baseDir: 'js',mandatoryUpdate: false },
24
+ { pattern: /Ads[\/\\]IAP-(\d+\.\d+)$/, minVersion: '2.5', isFolder: true , required: true, baseDir: 'js',mandatoryUpdate: false },
25
+ { pattern: /Ads[\/\\]admob-emi-(\d+\.\d+)\.js$/, minVersion: '3.3', required: true, baseDir: 'js',mandatoryUpdate: false },
26
26
 
27
27
  // New added plugins
28
- { pattern: /video-player-(\d+\.\d+)\.js$/, minVersion: '1.5', required: true, baseDir: 'js' },
29
- { pattern: /image-cropper-(\d+\.\d+)\.js$/, minVersion: '1.1', required: true, baseDir: 'js' },
28
+ { pattern: /video-player-(\d+\.\d+)\.js$/, minVersion: '1.5', required: true, baseDir: 'js',mandatoryUpdate: false },
29
+ { pattern: /image-cropper-(\d+\.\d+)\.js$/, minVersion: '1.1', required: true, baseDir: 'js',mandatoryUpdate: false },
30
30
 
31
- { pattern: /common-(\d+\.\d+)\.less$/, minVersion: '1.6', required: true, baseDir: 'assets/css' },
31
+ { pattern: /common-(\d+\.\d+)\.less$/, minVersion: '1.6', required: true, baseDir: 'assets/css',mandatoryUpdate: false },
32
32
 
33
33
 
34
34
  // New folders
35
- { pattern: /editor-(\d+\.\d+)$/, minVersion: '1.9', isFolder: true, required: true, baseDir: 'js' },
36
- { pattern: /ffmpeg-(\d+\.\d+)$/, minVersion: '1.3', isFolder: true, required: true, baseDir: 'js' },
37
- { pattern: /theme-(\d+\.\d+)$/, minVersion: '1.9', isFolder: true , required: true, baseDir: 'theme' },
35
+ { pattern: /editor-(\d+\.\d+)$/, minVersion: '1.9', isFolder: true, required: true, baseDir: 'js',mandatoryUpdate: true },
36
+ { pattern: /ffmpeg-(\d+\.\d+)$/, minVersion: '1.3', isFolder: true, required: true, baseDir: 'js',mandatoryUpdate: false },
37
+ { pattern: /theme-(\d+\.\d+)$/, minVersion: '1.9', isFolder: true , required: true, baseDir: 'theme',mandatoryUpdate: true },
38
38
 
39
39
 
40
- { pattern: /certificatejs-(\d+\.\d+)$/, minVersion: '1.4', isFolder: true , required: true, baseDir: 'certificate' }
40
+ { pattern: /certificatejs-(\d+\.\d+)$/, minVersion: '1.4', isFolder: true , required: true, baseDir: 'certificate',mandatoryUpdate: true }
41
41
 
42
42
  ];
43
43
 
@@ -954,13 +954,17 @@ function getSearchRoot(plugin) {
954
954
  return path.join(srcDir, plugin.baseDir || 'js');
955
955
  }
956
956
 
957
+ let hasMandatoryUpdate = false;
957
958
  function checkPlugins() {
958
959
  return new Promise((resolve, reject) => {
959
960
  const files = walkSync(srcDir);
961
+ const outdatedPlugins = [];
962
+ let hasMandatoryUpdate = false;
960
963
 
961
964
  for (const plugin of requiredPlugins) {
962
965
  const searchRoot = getSearchRoot(plugin);
963
966
 
967
+ // ---------- Folder plugins ----------
964
968
  if (plugin.isFolder) {
965
969
  if (!fs.existsSync(searchRoot)) continue;
966
970
 
@@ -974,18 +978,25 @@ function checkPlugins() {
974
978
 
975
979
  if (match) {
976
980
  const currentVersion = match[1];
981
+
977
982
  if (compareVersions(currentVersion, plugin.minVersion) < 0) {
978
983
  outdatedPlugins.push({
979
984
  name: relativePath,
980
985
  currentVersion,
981
- requiredVersion: plugin.minVersion
986
+ requiredVersion: plugin.minVersion,
987
+ mandatoryUpdate: plugin.mandatoryUpdate === true
982
988
  });
989
+
990
+ if (plugin.mandatoryUpdate) {
991
+ hasMandatoryUpdate = true;
992
+ }
983
993
  }
984
994
  }
985
995
  }
986
996
  continue;
987
997
  }
988
998
 
999
+ // ---------- File plugins ----------
989
1000
  const matchedFile = files.find(file =>
990
1001
  file.startsWith(searchRoot) && plugin.pattern.test(file)
991
1002
  );
@@ -1004,35 +1015,56 @@ function checkPlugins() {
1004
1015
  outdatedPlugins.push({
1005
1016
  name: path.relative(srcDir, matchedFile),
1006
1017
  currentVersion: isBeta ? `${currentVersion}-beta` : currentVersion,
1007
- requiredVersion: plugin.minVersion
1018
+ requiredVersion: plugin.minVersion,
1019
+ mandatoryUpdate: plugin.mandatoryUpdate === true
1008
1020
  });
1021
+
1022
+ if (plugin.mandatoryUpdate) {
1023
+ hasMandatoryUpdate = true;
1024
+ }
1009
1025
  }
1010
1026
  }
1011
1027
  }
1012
1028
  }
1013
1029
 
1030
+ // ---------- Result handling ----------
1014
1031
  if (outdatedPlugins.length > 0) {
1015
- console.log('\n❗ The following plugins are outdated:');
1032
+ console.log('\n❗ The following plugins are outdated:\n');
1033
+
1016
1034
  outdatedPlugins.forEach(p => {
1017
- console.log(` - ${p.name} (Current: ${p.currentVersion}, Required: ${p.requiredVersion})`);
1035
+ const tag = p.mandatoryUpdate ? '🔥 MANDATORY' : '';
1036
+ console.log(
1037
+ ` ❌ - ${p.name} (Current: ${p.currentVersion}, Required: ${p.requiredVersion}) ${tag}`
1038
+ );
1018
1039
  });
1019
1040
 
1041
+ // 🚨 Mandatory update → stop build
1042
+ if (hasMandatoryUpdate) {
1043
+ console.log('\n🚫 One or more plugins require a mandatory update.');
1044
+ console.log('❌ Build cancelled. Please update mandatory plugins and try again.');
1045
+ process.exit(1);
1046
+ }
1047
+
1048
+ // Optional updates → ask user
1020
1049
  const rl = readline.createInterface({
1021
1050
  input: process.stdin,
1022
1051
  output: process.stdout
1023
1052
  });
1024
1053
 
1025
- rl.question('\nAre you sure you want to continue without updating these plugins? (y/n): ', answer => {
1026
- rl.close();
1027
-
1028
- if (answer.toLowerCase() !== 'y') {
1029
- console.log('\n❌ Build cancelled due to outdated plugins.');
1030
- process.exit(1);
1031
- } else {
1032
- console.log('\n✅ Continuing build...');
1033
- resolve();
1054
+ rl.question(
1055
+ '\nAre you sure you want to continue without updating these plugins? (y/n): ',
1056
+ answer => {
1057
+ rl.close();
1058
+
1059
+ if (answer.toLowerCase() !== 'y') {
1060
+ console.log('\n❌ Build cancelled due to outdated plugins.');
1061
+ process.exit(1);
1062
+ } else {
1063
+ console.log('\n✅ Continuing build...');
1064
+ resolve();
1065
+ }
1034
1066
  }
1035
- });
1067
+ );
1036
1068
  } else {
1037
1069
  console.log('✅ All plugin versions are up to date.');
1038
1070
  resolve();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codeplay-common",
3
- "version": "2.1.24",
3
+ "version": "2.1.26",
4
4
  "description": "Common build scripts and files",
5
5
  "scripts": {
6
6
  "postinstall": "node scripts/sync-files.js",