@fto-consult/expo-ui 7.5.10 → 7.5.12

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/bin/index.js CHANGED
@@ -182,20 +182,10 @@ program.command('electron')
182
182
  });
183
183
 
184
184
  } else {
185
- const electronPackage = require(`${path.resolve(electronProjectRoot,'package.json')}`);
186
- electronPackage.name = packageObj.name;
187
- electronPackage.version = packageObj.version;
188
- //copying package json in build folder
189
- writeFile(path.resolve(electronProjectRoot,"package.json"),JSON.stringify(electronPackage,null,"\t"));
190
- platform = platform || process.platform;
191
- console.log("packaing app from ",electronProjectRoot);
192
- return require("./package")({
193
- src : electronProjectRoot,
194
- dist : path.resolve(outDir,platform),
195
- platform,
196
- arch : arch || undefined,
197
- projectRoot : electronProjectRoot,
198
- });
185
+ cmd = `npx electron-forge package ${platform? `--platform="${platform}"`:""} ${arch?`--arch="${arch}"`:""}`;
186
+ return exec({cmd,projectRoot:electronProjectRoot}).then(()=>{
187
+ console.log("application package avec succèss");
188
+ });
199
189
  }
200
190
  break;
201
191
  }
package/bin/init.js CHANGED
@@ -31,6 +31,7 @@ module.exports = ({projectRoot,electronProjectRoot,paths,pathsJSON})=>{
31
31
  "start" : `npx ${mainPackageName} electron start`,
32
32
  "run-dev" : `npx ${mainPackageName} electron start`,
33
33
  "compile2start" : `npx ${mainPackageName} electron start --build`,
34
+ ...Object.assign({},electronPackageJSON.scripts)
34
35
  }
35
36
  projectRootPackage.name = projectRootPackage.name;
36
37
  projectRootPackage.realAppName = typeof projectRootPackage.realAppName =="string" && projectRootPackage.realAppName || projectRootPackage.name;
package/electron/index.js CHANGED
@@ -3,7 +3,6 @@ const session = require("./utils/session");
3
3
  const path = require("path");
4
4
  const fs = require("fs");
5
5
  const { program } = require('commander');
6
- const getPaths = require("../electron/utils/paths");
7
6
 
8
7
  program
9
8
  .option('-u, --url <url>', 'L\'adresse url à ouvrir au lancement de l\'application')
@@ -12,26 +11,12 @@ program
12
11
  .parse();
13
12
 
14
13
  const programOptions = program.opts();
15
- const {url:pUrl,paths:pathsJSON,root:mainProjectRoot} = programOptions
16
- const cPaths = path.resolve("./paths.json");
17
- const pathsJ = pathsJSON && fs.existsSync(pathsJSON) && pathsJSON.endsWith("paths.json")? pathsJSON : null;
18
- let paths = pathsJ ? require(`${pathsJ}`) : fs.existsSync(cPaths) ? require(cPaths) : '';
19
- const projectRoot = mainProjectRoot && fs.existsSync(mainProjectRoot) ? mainProjectRoot : paths.projectRoot || process.cwd();
14
+ const {url:pUrl,root:mainProjectRoot} = programOptions
15
+ const projectRoot = mainProjectRoot && fs.existsSync(mainProjectRoot) ? mainProjectRoot : process.cwd();
20
16
  const electronProjectRoot = projectRoot && fs.existsSync(path.resolve(projectRoot,"electron")) && path.resolve(projectRoot,"electron") || '';
21
- const ePathsJSON = path.resolve(electronProjectRoot,"paths.json");
22
17
  const packageJSONPath = path.resolve(projectRoot,"package.json");
23
18
  const isValidUrl = require("./utils/isValidUrl");
24
19
  const packageJSON = fs.existsSync(packageJSONPath) ? require(`${packageJSONPath}`) : {};
25
- const eePaths = path.resolve(getPaths(projectRoot));
26
- if(!paths){
27
- if(fs.existsSync(ePathsJSON)){
28
- paths = require(ePathsJSON);
29
- } else if(fs.existsSync(eePaths)){
30
- path = require(eePaths);
31
- } else {
32
- throw {message : 'Chemin de noms, fichier paths.json introuvable!! Exécutez l\'application en enviornnement web|mobile|android|ios puis re-essayez'}
33
- }
34
- }
35
20
 
36
21
  const mainProcessPath = path.resolve('processes',"main","index.js");
37
22
  const mainProcessIndex = electronProjectRoot && fs.existsSync(path.resolve(electronProjectRoot,mainProcessPath)) && path.resolve(electronProjectRoot,mainProcessPath);
@@ -369,7 +354,7 @@ ipcMain.on("get-project-root",(event)=>{
369
354
  event.returnValue = projectRoot;
370
355
  return projectRoot;
371
356
  });
372
- ipcMain.on("get-project-root",(event)=>{
357
+ ipcMain.on("get-electron-project-root",(event)=>{
373
358
  event.returnValue = electronProjectRoot;
374
359
  return event.returnValue ;
375
360
  });
@@ -379,11 +364,6 @@ ipcMain.on("get-package.json",(event)=>{
379
364
  return event.returnValue ;
380
365
  });
381
366
 
382
- ipcMain.on("get-paths.json",(event)=>{
383
- event.returnValue = JSON.stringify(paths);
384
- return event.returnValue ;
385
- });
386
-
387
367
  ipcMain.on("get-app-name",(event)=>{
388
368
  event.returnValue = packageJSON.realAppName || packageJSON.name;
389
369
  return event.returnValue ;
package/electron/pload.js CHANGED
@@ -1,7 +1,7 @@
1
1
  const { machineIdSync} = require('node-machine-id');
2
2
  const fs = require("fs");
3
3
  const path = require("path");
4
- module.exports = (ELECTRON,paths)=>{
4
+ module.exports = (ELECTRON,{projectRoot,electronProjectRoot})=>{
5
5
  const isWin = process.platform === "win32"? true : false;
6
6
  const isLinux = process.platform === "linux"? true : false;
7
7
  const {ipcRenderer} = require("electron");
@@ -78,8 +78,6 @@ module.exports = (ELECTRON,paths)=>{
78
78
  process.env.LNAME ||
79
79
  process.env.USERNAME || '';
80
80
 
81
- const projectRoot = (paths || {}).projectRoot;
82
- const electronProjectRoot = projectRoot && fs.existsSync(path.resolve(projectRoot,"electron")) && path.resolve(projectRoot,"electron") || null;
83
81
  const mainRendererPath = path.resolve('processes',"renderer","index.js");
84
82
  const rendererProcessIndex = electronProjectRoot && fs.existsSync(path.resolve(electronProjectRoot,mainRendererPath)) && path.resolve(electronProjectRoot,mainRendererPath);
85
83
  //pour étendre les fonctionnalités au niveau du renderer proceess, bien vouloir écrire dans le fichier projectRoot/electron/processes/renderer/index.js
@@ -7,10 +7,9 @@ const fs = require("fs");
7
7
  const isDataURL = require("./utils/isDataURL");
8
8
  const isBase64 = require("./utils/isBase64");
9
9
  const isNonNullString = x=>x && typeof x =='string';
10
- const replaceAll = require("./utils/replaceAll");
11
- const pathsStr = ipcRenderer.sendSync("get-paths.json");
12
- const paths = typeof pathsStr ==='string' && pathsStr ? JSON.parse(pathsStr) : {};
10
+ require("./utils/replaceAll");
13
11
  const appName = ipcRenderer.sendSync("get-app-name");
12
+ const electronProjectRoot = ipcRenderer.sendSync("get-electron-project-root");
14
13
  const sanitize = require("sanitize-filename");
15
14
  const uniqid = require("./utils/uniqid");
16
15
  if(!appName || typeof appName !=='string'){
@@ -422,7 +421,7 @@ const ELECTRON = {
422
421
  },
423
422
  };
424
423
 
425
- require("./pload")(ELECTRON,paths || {});
424
+ require("./pload")(ELECTRON,{electronProjectRoot});
426
425
  ELECTRON.getBackupPath();
427
426
  //require("./app/index")(ELECTRON)
428
427
  //require('v8-compile-cache');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fto-consult/expo-ui",
3
- "version": "7.5.10",
3
+ "version": "7.5.12",
4
4
  "description": "Bibliothèque de composants UI Expo,react-native",
5
5
  "scripts": {
6
6
  "clear-npx-cache": "npx clear-npx-cache",
@@ -1,162 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- /**
4
- toujours ajouter l'instruction ci-dessus à la première ligne de chaque script npx
5
- @see : https://blog.shahednasser.com/how-to-create-a-npx-tool/
6
- @see : https://www.npmjs.com/package/commander, for command parsing
7
- */
8
- 'use strict';
9
- process.on('unhandledRejection', err => {
10
- throw err;
11
- });
12
- const createAppScript = "create-app";
13
- const supportedScript = {
14
- "init" : true, //initialize electron app
15
- "start" : true,//start electron
16
- "build" : true, //script pour faire un build,
17
- "package" : true, ///script pour le packagin de l'application
18
- "generate-getTable" : true,/// script pour la génération de la fonction getTable des tables de l'application
19
- [createAppScript] : true,//les script de création de l'application
20
- }
21
- const {createDir,electronDir,copy,exec,throwError} = require("./utils");
22
- const path= require("path");
23
- const fs = require("fs");
24
- const dir = path.resolve(__dirname);
25
- const projectRoot = path.resolve(process.cwd());
26
- const parsedArgs = require("../electron/utils/parseArgs")(null,supportedScript);
27
- parsedArgs.script = typeof parsedArgs.script =='string' && parsedArgs.script && parsedArgs.script.toLowerCase().trim() || "";
28
- if(!parsedArgs.script || !(parsedArgs.script in supportedScript)){
29
- throwError("Erreur : script invalide, vous devez spécifier script figurant parmi les script : ["+Object.keys(supportedScript).join(", ")+"]");
30
- }
31
- let cmd = null;
32
- const script = parsedArgs.script;
33
- /****
34
- * 1. installer electron globallement : npm i -g electron@latest
35
- * cmde : [cmd] start electron config=[path-to-config-relative-to-project-dir]
36
- * splash=[path-to-splashcreen-relative-to-project-root]
37
- * output-dir|out = [path-to-output-dir-relative-to-root-project]
38
- * url = [url-to-start-electron-to]
39
- * */
40
- if(parsedArgs.electron){
41
- if(projectRoot == dir){
42
- throwError(`Invalid project root ${projectRoot}; project root must be different to ${dir}`);
43
- }
44
- const pathsJSON = path.resolve(electronDir,"paths.json");
45
- if(!fs.existsSync(pathsJSON)){
46
- throwError("Le fichier des chemins d'accès à l'application est innexistant, rassurez vous de tester l'application en environnement web, via la cmde <npx expo start>, avant l'exécution du script electron.");
47
- }
48
- const paths = require(`${pathsJSON}`);
49
- if(typeof paths !=='object' || !paths || !paths.projectRoot){
50
- throwError("Fichiers des chemins d'application invalide!!! merci d'exécuter l'application en environnement web|android|ios puis réessayez");
51
- }
52
- /**** le project root d'où a été lancé le script electron doit être le même que celui de l'application principale */
53
- if(projectRoot !== paths.projectRoot){
54
- throwError(`main app project root ${paths.projectRoot} must be equals to ${projectRoot} in which you want to generate electron app`);
55
- }
56
- const electronProjectRoot = path.resolve(projectRoot,"electron");
57
- const isElectionInitialized = require("../electron/is-initialized")(electronProjectRoot);
58
- process.env.isElectron = true;
59
- process.env.isElectronScript = true;
60
- if(!isElectionInitialized || script =='init'){
61
- if(script !=='init'){
62
- console.log("initializing electron application before ....");
63
- }
64
- return require("./init")({
65
- projectRoot,
66
- electronDir,
67
- electronProjectRoot,
68
- paths,
69
- });
70
- }
71
- require("../electron/create-index-file")(electronProjectRoot);
72
- const out = parsedArgs.out || parsedArgs["output-dir"];
73
- const outDir = out && path.dirname(out) && path.resolve(projectRoot,path.dirname(out),"electron") || path.resolve(electronProjectRoot,"bin")
74
- if(!createDir(outDir)){
75
- throwError("Impossible de créer le répertoire <<"+outDir+">> du fichier binaire!!");
76
- }
77
- const logoPath = paths.logo || paths.$assets && path.resolve(paths.$assets,"logo.png") || paths.$images && path.resolve(paths.$images,"logo.png");
78
- if(!logoPath || !fs.existsSync(logoPath)){
79
- if(logoPath){
80
- console.warn("Logo de l'application innexistant!! Vous devez spécifier le logo de votre application, fichier ["+(logoPath)+"]")
81
- }
82
- }
83
- const buildOutDir = path.resolve(electronProjectRoot,"dist");
84
- const indexFile = path.resolve(buildOutDir,"index.html");
85
- const webBuildDir = path.resolve(projectRoot,"web-build");
86
- const packagePath = path.resolve(projectRoot,"package.json");
87
- const url = parsedArgs.url && parsedArgs.url.trim() || "";
88
- const start = x=>{
89
- return new Promise((resolve,reject)=>{
90
- cmd = "electron "+electronProjectRoot+" url="+url;
91
- exec({
92
- cmd,
93
- projectRoot : electronProjectRoot,
94
- }).finally(()=>{
95
- console.log("ant to exit");
96
- })
97
- typeof (resolve) =='function' && setTimeout(resolve,1000);
98
- })
99
- };
100
- if(url){
101
- return start().then(process.exit);
102
- }
103
- const promise = new Promise((resolve,reject)=>{
104
- const next = ()=>{
105
- if(fs.existsSync(webBuildDir)){
106
- return copy(webBuildDir,buildOutDir).catch(reject).then(resolve);
107
- } else {
108
- reject("dossier web-build exporté par electron innexistant!!");
109
- }
110
- }
111
- if(!url && (parsedArgs.compile || !fs.existsSync(path.resolve(webBuildDir,"index.html")))){
112
- console.log("exporting expo web app ...");
113
- cmd = "npx expo export:web";
114
- return exec({cmd,projectRoot}).then(next).catch(reject);
115
- }
116
- next();
117
- });
118
- return promise.then(()=>{
119
- if(!fs.existsSync(buildOutDir) || !fs.existsSync(indexFile)){
120
- throwError("répertoire d'export web invalide où innexistant ["+buildOutDir+"]");
121
- }
122
- switch(parsedArgs.script){
123
- case "start":
124
- return start();
125
- break;
126
- case "build":
127
- break;
128
- case "generate-getTable" :
129
- require("./generate-tables")();
130
- break;
131
- default :
132
- if(!fs.existsSync(packagePath)){
133
- throwError("package.json file does not exist in "+projectRoot+". please make jure that your have running package script in expo root application");
134
- }
135
- const packageObj = require(`${packagePath}`);
136
- const electronPackage = require(`${path.resolve(electronProjectRoot,'package.json')}`);
137
- electronPackage.name = packageObj.name;
138
- electronPackage.version = packageObj.version;
139
- //copying package json in build folder
140
- writeFile(path.resolve(electronProjectRoot,"package.json"),JSON.stringify(electronPackage,null,"\t"));
141
- const platform = parsedArgs.platform || process.platform;
142
- console.log("packaing app from ",electronProjectRoot);
143
- return require("./package")({
144
- src : electronProjectRoot,
145
- dist : path.resolve(outDir,platform),
146
- platform,
147
- arch : parsedArgs.arch || undefined,
148
- projectRoot : electronProjectRoot,
149
- });
150
- break;
151
- }
152
- }).catch((e)=>{
153
- console.log(e," is cathing ggg");
154
- }).finally(()=>{
155
- process.exit();
156
- });
157
- } else {
158
- if(script ===createAppScript || script ==="init"){
159
- return require("./create-app")(parsedArgs,{projectRoot});
160
- }
161
- process.exit();
162
- }
package/bin/package.js DELETED
@@ -1,60 +0,0 @@
1
- const getIcon = require("../electron/utils/getIcon");
2
- const path = require("path");
3
- const path = require("../electron/utils/paths");
4
- const defaultFunc = (cb,cb2) => typeof cb =='function' ? cb : typeof cb2 ==='function'? cb2 : x=> x;
5
- const paths = require("../electron/paths.json");
6
- const images = paths.$images, assets = paths.$assets, logo = paths.logo;
7
- const createDir = require("../electron/utils/createDir");
8
- const fs = require("fs");
9
- const getDirname = require("../electron/utils/getDirname");
10
- const copy = require("../electron/utils/copy");
11
-
12
- /***@see : https://electron.github.io/electron-packager/main/interfaces/electronpackager.options.html */
13
- module.exports = function package(opts){
14
- opts = typeof opts =="object" && !Array.isArray(opts) && opts || {};
15
- const {projectRoot:pRoot,...options} = opts;
16
- options.dir = typeof options.dir =='string' && options.dir || typeof options.srcDir =='string' && options.srcDir || typeof options.src =='string' && options.src || undefined;
17
- const projectRoot = pRoot || options.dir;
18
- if(typeof projectRoot !='string' || !projectRoot || !fs.existsSync(projectRoot)){
19
- return Promise.reject({
20
- message :'projectRoot not defined!! or its invalid '+projectRoot
21
- })
22
- }
23
- const packagerPath = path.resolve(projectRoot,"node_modules","electron-packager");
24
- if(!fs.existsSync(packagerPath)){
25
- return Promise.reject({
26
- message : "packager module not found!! you must initialize your project before to package it; packager path : "+packagerPath,
27
- })
28
- }
29
- const packager = require(`${packagerPath}`);
30
- options.afterAsar = defaultFunc(options.afterAsar,()=>{});
31
- options.afterComplete = defaultFunc(options.afterComplete,()=>{});
32
- options.afterCopy = defaultFunc(options.afterCopy);
33
- options.appVersion = typeof options.appVersion =='string' && options.appVersion || typeof options.version =='string' && options.version || undefined;
34
- options.arch = typeof options.arch =='string' && options.arch || process.arch;
35
- options.asar = typeof options.asar =='boolean'? options.asar : true;
36
- return new Promise((resolve,reject)=>{
37
- if(!options.dir || !fs.existsSync(options.dir)){
38
- return reject({message:"Repertoire source ["+options.dir+"] innexistant!! Veuillez spécifier un répertoire source valide"});
39
- }
40
- options.out = typeof options.out =="string" && options.out || typeof options.distDir =="string" && options.distDir || typeof options.dist =='string' && options.dist || undefined;
41
- if(options.out){
42
- createDir(options.out);
43
- }
44
- options.overwrite = typeof options.overwrite =='boolean'? options.overwrite : true;
45
- options.platform = typeof options.platform =='string' && options.platform || process.platform;
46
- options.prune = typeof options.prune =='boolean'? options.prune : true;
47
- options.quiet = typeof options.quiet =='boolean'? options.quiet : false;
48
- options.tmpdir = options.tmpdir === false ? false : typeof options.tmpdir =='string' && options.tmpdir || undefined;
49
- options.icon = options.icon && typeof options.icon =='string' && fs.existsSync(options.icon) && options.icon || getIcon([
50
- logo && fs.existsSync(logo) && getDirname(logo),
51
- images && getDirname(images) || '',
52
- assets && getDirname(assets) || '',
53
- options.dir && getDirname(options.dir)
54
- ]);
55
- return packager(options).then((appPaths)=>{
56
- console.log(`Electron app bundles created at : ${appPaths.join("\n")}`);
57
- resolve(appPaths);
58
- }).catch(reject);
59
- })
60
- }