@common-stack/mobile-stack-react 6.0.8-alpha.13 → 6.0.8-alpha.16
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/lib/index.d.ts
CHANGED
package/lib/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{createClientContainer}from'./config/client.service.js';export{createReduxStore,epicMiddlewareFunc,persistConfig}from'./config/redux-config.js';export{UtilityClass,logger}from'./utils/index.js';export{loadContext}from'./load-context.mobile.js';export{default as history}from'./config/router-history.js';
|
|
1
|
+
export{createClientContainer}from'./config/client.service.js';export{createReduxStore,epicMiddlewareFunc,persistConfig}from'./config/redux-config.js';export{UtilityClass,logger}from'./utils/index.js';export{loadContext}from'./load-context.mobile.js';export{updateMobileDependencies}from'./tools/update-mobile-dependencies.js';export{default as history}from'./config/router-history.js';
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import path from'path';import fs from'fs/promises';import pkg from'glob';import {promisify}from'util';// eslint-disable-next-line no-underscore-dangle
|
|
2
|
+
const { glob } = pkg;
|
|
3
|
+
const globPromise = promisify(glob);
|
|
4
|
+
// eslint-disable-next-line no-underscore-dangle
|
|
5
|
+
// const __dirname = fileURLToPath(new URL('.', import.meta.url));
|
|
6
|
+
// const monorepoRoot = path.resolve(process.cwd(), '..');
|
|
7
|
+
const monorepoRoot = path.resolve(process.cwd());
|
|
8
|
+
async function findPackageJsonFiles(rootFolderPath) {
|
|
9
|
+
try {
|
|
10
|
+
// Use glob pattern and the correct options
|
|
11
|
+
const files = await globPromise(`${rootFolderPath}/+(portable-devices)/**/mobile*/package.json`, // Glob pattern
|
|
12
|
+
{ ignore: '**/node_modules/**', nodir: true });
|
|
13
|
+
return files;
|
|
14
|
+
}
|
|
15
|
+
catch (err) {
|
|
16
|
+
throw new Error(`Unable to scan directory: ${err}`);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
// Merge peer dependencies, removing '*' version and updating with mobile versions if applicable
|
|
20
|
+
function mergePeerDependencies(baseDeps, additionalDeps, excludedPrefixes = []) {
|
|
21
|
+
const filterDeps = (deps) => Object.entries(deps).reduce((acc, [key, value]) => {
|
|
22
|
+
// Skip dependencies with version "*" or ones that match excluded prefixes
|
|
23
|
+
if (value !== '*' && !excludedPrefixes.some((prefix) => key.startsWith(prefix))) {
|
|
24
|
+
acc[key] = value;
|
|
25
|
+
}
|
|
26
|
+
return acc;
|
|
27
|
+
}, {});
|
|
28
|
+
const filteredBaseDeps = filterDeps(baseDeps);
|
|
29
|
+
const filteredAdditionalDeps = filterDeps(additionalDeps);
|
|
30
|
+
// Merge the filtered dependencies
|
|
31
|
+
return { ...filteredBaseDeps, ...filteredAdditionalDeps };
|
|
32
|
+
}
|
|
33
|
+
// Read and extract peer dependencies from a package's package.json
|
|
34
|
+
async function getPeerDependencies(pkg, rootPath) {
|
|
35
|
+
const modulePackageJsonFilePath = path.join(rootPath, `node_modules/${pkg}/package.json`);
|
|
36
|
+
const modulePackageJsonFileData = await fs.readFile(modulePackageJsonFilePath, 'utf-8');
|
|
37
|
+
const modulePackageJsonData = JSON.parse(modulePackageJsonFileData);
|
|
38
|
+
return modulePackageJsonData.peerDependencies || {};
|
|
39
|
+
}
|
|
40
|
+
// Function to get the peer dependencies of @common-stack/mobile-stack-react
|
|
41
|
+
async function getCommonStackPeerDependencies(config, rootPath) {
|
|
42
|
+
const mobileStackReactPackageName = config?.copyOperations?.packageName ?? '@common-stack/mobile-stack-react';
|
|
43
|
+
return getPeerDependencies(`${mobileStackReactPackageName}`, rootPath);
|
|
44
|
+
}
|
|
45
|
+
const updateMobileDependencies = async ({ packagePrefixesToExclude = [], rootPath = monorepoRoot, } = {}) => {
|
|
46
|
+
const rootFolderPath = rootPath || monorepoRoot;
|
|
47
|
+
const excludePrefixes = packagePrefixesToExclude || [];
|
|
48
|
+
const packageJsonFiles = (await findPackageJsonFiles(rootFolderPath));
|
|
49
|
+
packageJsonFiles.forEach(async (file) => {
|
|
50
|
+
const mobileConfigFilePath = path.join(path.dirname(file), './config.json');
|
|
51
|
+
const packageJson = JSON.parse(await fs.readFile(file, 'utf-8'));
|
|
52
|
+
const config = JSON.parse(await fs.readFile(mobileConfigFilePath, 'utf-8'));
|
|
53
|
+
let mergedPeerDependencies = {};
|
|
54
|
+
const mobileDependencies = packageJson.dependencies || {};
|
|
55
|
+
// Get peer dependencies from @common-stack/mobile-stack-react
|
|
56
|
+
const commonStackPeerDeps = await getCommonStackPeerDependencies(config, rootFolderPath);
|
|
57
|
+
mergedPeerDependencies = mergePeerDependencies(mergedPeerDependencies, commonStackPeerDeps, excludePrefixes);
|
|
58
|
+
// Loop over the modules from config.json and extract their peer dependencies
|
|
59
|
+
for (const pkg of [...config.modules, ...config.externalModulesDependencies]) {
|
|
60
|
+
if (excludePrefixes.some((prefix) => pkg.startsWith(prefix))) {
|
|
61
|
+
console.log(`Ignoring package: ${pkg} due to prefix filter.`);
|
|
62
|
+
// eslint-disable-next-line no-continue
|
|
63
|
+
continue; // Skip this package
|
|
64
|
+
}
|
|
65
|
+
const modulePeerDeps = await getPeerDependencies(pkg, rootFolderPath);
|
|
66
|
+
mergedPeerDependencies = mergePeerDependencies(modulePeerDeps, mergedPeerDependencies, excludePrefixes);
|
|
67
|
+
// Update mergedPeerDependencies with the version from the mobile package.json if present
|
|
68
|
+
if (mobileDependencies[pkg]) {
|
|
69
|
+
// If the module is in mobileDependencies, update the version in mergedPeerDependencies
|
|
70
|
+
mergedPeerDependencies[pkg] = mobileDependencies[pkg];
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
// If not in mobileDependencies, merge peer dependencies normally
|
|
74
|
+
mergedPeerDependencies = mergePeerDependencies(modulePeerDeps, mergedPeerDependencies, excludePrefixes);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
packageJson.dependencies = {
|
|
78
|
+
...packageJson.dependencies,
|
|
79
|
+
...mergedPeerDependencies,
|
|
80
|
+
};
|
|
81
|
+
// Save the updated mobile package.json
|
|
82
|
+
await fs.writeFile(file, JSON.stringify(packageJson, null, 2));
|
|
83
|
+
console.log('Updated mobile package.json with merged peer dependencies.');
|
|
84
|
+
});
|
|
85
|
+
};export{updateMobileDependencies};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@common-stack/mobile-stack-react",
|
|
3
|
-
"version": "6.0.8-alpha.
|
|
3
|
+
"version": "6.0.8-alpha.16",
|
|
4
4
|
"description": "Client Module for mobile app",
|
|
5
5
|
"homepage": "https://github.com/cdmbase/fullstack-pro#readme",
|
|
6
6
|
"bugs": {
|
|
@@ -32,6 +32,20 @@
|
|
|
32
32
|
"preset": "jest-expo"
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
|
+
"@react-native-async-storage/async-storage": "~1.23.1"
|
|
36
|
+
},
|
|
37
|
+
"devDependencies": {
|
|
38
|
+
"@babel/core": "^7.25.2",
|
|
39
|
+
"@types/jest": "^29.5.12",
|
|
40
|
+
"@types/react": "~18.3.12",
|
|
41
|
+
"@types/react-dom": "~18.3.1",
|
|
42
|
+
"@types/react-test-renderer": "^18.3.0",
|
|
43
|
+
"jest": "^29.2.1",
|
|
44
|
+
"jest-expo": "~52.0.2",
|
|
45
|
+
"react-test-renderer": "18.3.1",
|
|
46
|
+
"typescript": "^5.3.3"
|
|
47
|
+
},
|
|
48
|
+
"peerDependencies": {
|
|
35
49
|
"@apollo/client": "^3.9.0",
|
|
36
50
|
"@cdm-logger/client": "^9.0.3",
|
|
37
51
|
"@common-stack/client-core": "6.0.8-alpha.7",
|
|
@@ -124,27 +138,10 @@
|
|
|
124
138
|
"text-encoding-polyfill": "^0.6.7",
|
|
125
139
|
"ts-invariant": "^0.10.3"
|
|
126
140
|
},
|
|
127
|
-
"devDependencies": {
|
|
128
|
-
"@babel/core": "^7.25.2",
|
|
129
|
-
"@types/jest": "^29.5.12",
|
|
130
|
-
"@types/react": "~18.3.12",
|
|
131
|
-
"@types/react-dom": "~18.3.1",
|
|
132
|
-
"@types/react-test-renderer": "^18.3.0",
|
|
133
|
-
"jest": "^29.2.1",
|
|
134
|
-
"jest-expo": "~52.0.2",
|
|
135
|
-
"react-test-renderer": "18.3.1",
|
|
136
|
-
"typescript": "^5.3.3"
|
|
137
|
-
},
|
|
138
|
-
"peerDependencies": {
|
|
139
|
-
"@apollo/client": ">=3.0.0",
|
|
140
|
-
"react": ">=18",
|
|
141
|
-
"react-dom": ">=18",
|
|
142
|
-
"redux": ">=5.0.1"
|
|
143
|
-
},
|
|
144
141
|
"publishConfig": {
|
|
145
142
|
"access": "public"
|
|
146
143
|
},
|
|
147
|
-
"gitHead": "
|
|
144
|
+
"gitHead": "49b753608c1c3cb71fbe3555a23544d7f2a87ddd",
|
|
148
145
|
"typescript": {
|
|
149
146
|
"definition": "lib/index.d.ts"
|
|
150
147
|
}
|