@ronas-it/nx-generators 0.17.0 → 0.18.0
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/README.md +23 -1
- package/package.json +6 -6
- package/src/generators/expo-app/app-files/app.config.ts.template +1 -1
- package/src/generators/expo-app/app-files/test-setup.ts.template +2 -1
- package/src/generators/sentry/files/{sentry.client.config.ts.template → instrumentation-client.ts.template} +1 -1
- package/src/generators/sentry/files/instrumentation.ts.template +12 -0
- package/src/generators/sentry/files/sentry.edge.config.ts.template +1 -1
- package/src/generators/sentry/files/sentry.server.config.ts.template +1 -1
- package/src/shared/dependencies.d.ts +1 -0
- package/src/shared/dependencies.js +41 -41
- package/src/shared/dependencies.js.map +1 -1
- package/src/shared/generators/auth/generator.js +2 -2
- package/src/shared/generators/auth/generator.js.map +1 -1
package/README.md
CHANGED
|
@@ -102,7 +102,7 @@ Configures code checks and formatting with pre-commit hook.
|
|
|
102
102
|
### 3. `expo-app`
|
|
103
103
|
|
|
104
104
|
Generates and configures an Expo React Native app.
|
|
105
|
-
Also generates [navigation utilities](#navigation-utilities)
|
|
105
|
+
Also generates [navigation utilities](#navigation-utilities).
|
|
106
106
|
|
|
107
107
|
#### Options
|
|
108
108
|
|
|
@@ -325,10 +325,32 @@ Creates [Sentry](https://sentry.io/) integration for Expo/Next application.
|
|
|
325
325
|
|
|
326
326
|
2. `dsn` (optional) - [Data Source Name](https://docs.sentry.io/concepts/key-terms/dsn-explainer/) of your Sentry project
|
|
327
327
|
|
|
328
|
+
#### Example
|
|
329
|
+
|
|
330
|
+
```sh
|
|
331
|
+
npx nx g sentry --directory=apps/mobile --dsn=http://your-dsn.ingest.sentry.io/112233
|
|
332
|
+
```
|
|
333
|
+
|
|
328
334
|
### 14. `dockerfile`
|
|
329
335
|
|
|
330
336
|
Generates a deployment-ready Dockerfile for Next.js applications in the monorepo.
|
|
331
337
|
|
|
338
|
+
### 15. `auth`
|
|
339
|
+
|
|
340
|
+
Generates authentication setup module for Expo/Next application.
|
|
341
|
+
|
|
342
|
+
#### Options
|
|
343
|
+
|
|
344
|
+
1. `directory` - the application directory
|
|
345
|
+
|
|
346
|
+
2. `type` - application type, can be `next-app` or `expo-app`
|
|
347
|
+
|
|
348
|
+
#### Example
|
|
349
|
+
|
|
350
|
+
```sh
|
|
351
|
+
npx nx g auth --directory=mobile --type=expo-app
|
|
352
|
+
```
|
|
353
|
+
|
|
332
354
|
## Navigation utilities
|
|
333
355
|
|
|
334
356
|
The generators `next-app` and `expo-app` also create customizable utilities for navigation
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ronas-it/nx-generators",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.18.0",
|
|
4
4
|
"description": "Nx generators for Ronas IT projects",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Ronas IT",
|
|
@@ -24,14 +24,14 @@
|
|
|
24
24
|
"access": "public"
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@nx/devkit": "^21.
|
|
28
|
-
"@phenomnomnominal/tsquery": "~
|
|
27
|
+
"@nx/devkit": "^21.6.4",
|
|
28
|
+
"@phenomnomnominal/tsquery": "~6.1.3",
|
|
29
29
|
"lodash": "^4.17.21",
|
|
30
|
-
"tslib": "^2.
|
|
31
|
-
"ts-morph": "^
|
|
30
|
+
"tslib": "^2.8.1",
|
|
31
|
+
"ts-morph": "^27.0.2"
|
|
32
32
|
},
|
|
33
33
|
"peerDependencies": {
|
|
34
|
-
"typescript": "^5.
|
|
34
|
+
"typescript": "^5.9.2"
|
|
35
35
|
},
|
|
36
36
|
"type": "commonjs",
|
|
37
37
|
"main": "./src/index.js",
|
|
@@ -17,7 +17,7 @@ const createConfig = (): Omit<ExpoConfig, 'extra'> & { extra: { eas: EASConfig }
|
|
|
17
17
|
orientation: 'portrait',
|
|
18
18
|
icon: './assets/images/icon.png',
|
|
19
19
|
splash: {
|
|
20
|
-
image: './assets/images/splash.png',
|
|
20
|
+
image: './assets/images/splash-icon.png',
|
|
21
21
|
resizeMode: 'contain',
|
|
22
22
|
backgroundColor: '#ffffff',
|
|
23
23
|
},
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
// NOTE: Install this package to use the testing library for React Native
|
|
2
|
+
// import '@testing-library/jest-native/extend-expect';
|
|
@@ -16,7 +16,7 @@ Sentry.init({
|
|
|
16
16
|
// You can remove this option if you're not planning to use the Sentry Session Replay feature:
|
|
17
17
|
integrations: [
|
|
18
18
|
Sentry.replayIntegration(),
|
|
19
|
-
Sentry.
|
|
19
|
+
Sentry.eventFiltersIntegration(),
|
|
20
20
|
],
|
|
21
21
|
denyUrls: ['localhost'],
|
|
22
22
|
});
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import * as Sentry from '@sentry/nextjs';
|
|
2
|
+
|
|
3
|
+
export async function register() {
|
|
4
|
+
if (process.env.NEXT_RUNTIME === 'nodejs') {
|
|
5
|
+
await import('./sentry.server.config');
|
|
6
|
+
}
|
|
7
|
+
if (process.env.NEXT_RUNTIME === 'edge') {
|
|
8
|
+
await import('./sentry.edge.config');
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export const onRequestError = Sentry.captureRequestError;
|
|
@@ -4,35 +4,36 @@ exports.devDependencies = exports.dependencies = void 0;
|
|
|
4
4
|
exports.dependencies = {
|
|
5
5
|
'expo-app': {
|
|
6
6
|
'@ronas-it/react-native-common-modules': '~1.1.0',
|
|
7
|
-
'react-native-mmkv': '~3.
|
|
8
|
-
'expo-constants': '~
|
|
9
|
-
'expo-dev-client': '~
|
|
10
|
-
'expo-router': '~
|
|
11
|
-
'react-native-safe-area-context': '~5.
|
|
12
|
-
'react-native-screens': '~4.
|
|
13
|
-
expo: '
|
|
14
|
-
'expo-linking': '~
|
|
15
|
-
'expo-status-bar': '~
|
|
16
|
-
'expo-updates': '~0.
|
|
17
|
-
'expo-insights': '~0.
|
|
18
|
-
'expo-localization': '~
|
|
7
|
+
'react-native-mmkv': '~3.3.3',
|
|
8
|
+
'expo-constants': '~18.0.9',
|
|
9
|
+
'expo-dev-client': '~6.0.15',
|
|
10
|
+
'expo-router': '~6.0.12',
|
|
11
|
+
'react-native-safe-area-context': '~5.6.0',
|
|
12
|
+
'react-native-screens': '~4.16.0',
|
|
13
|
+
expo: '^54.0.0',
|
|
14
|
+
'expo-linking': '~8.0.8',
|
|
15
|
+
'expo-status-bar': '~3.0.8',
|
|
16
|
+
'expo-updates': '~29.0.12',
|
|
17
|
+
'expo-insights': '~0.10.7',
|
|
18
|
+
'expo-localization': '~17.0.7',
|
|
19
19
|
'i18n-js': '~4.5.1',
|
|
20
20
|
'lodash-es': '^4.17.21',
|
|
21
|
-
react: '~19.
|
|
22
|
-
'react-native': '~0.
|
|
23
|
-
'react-native-svg': '~15.
|
|
21
|
+
react: '~19.1.0',
|
|
22
|
+
'react-native': '~0.81.4',
|
|
23
|
+
'react-native-svg': '~15.12.1',
|
|
24
24
|
'react-native-svg-transformer': '~1.5.1',
|
|
25
25
|
},
|
|
26
26
|
'next-app': {
|
|
27
|
-
'next-intl': '^4.
|
|
27
|
+
'next-intl': '^4.3.12',
|
|
28
28
|
'lodash-es': '^4.17.21',
|
|
29
29
|
'class-transformer': '^0.5.1',
|
|
30
|
+
next: '~15.5.4',
|
|
30
31
|
},
|
|
31
32
|
'api-client': {
|
|
32
33
|
'@ronas-it/axios-api-client': '^0.1.2',
|
|
33
34
|
},
|
|
34
35
|
auth: {
|
|
35
|
-
luxon: '^3.
|
|
36
|
+
luxon: '^3.7.2',
|
|
36
37
|
},
|
|
37
38
|
'next-auth': {
|
|
38
39
|
'js-cookie': '^3.0.5',
|
|
@@ -41,7 +42,7 @@ exports.dependencies = {
|
|
|
41
42
|
'react-native-extended-stylesheet': '^0.12.0',
|
|
42
43
|
},
|
|
43
44
|
store: {
|
|
44
|
-
'@ronas-it/rtkq-entity-api': '^0.
|
|
45
|
+
'@ronas-it/rtkq-entity-api': '^0.5.0',
|
|
45
46
|
'react-redux': '^9.2.0',
|
|
46
47
|
},
|
|
47
48
|
'ui-kitten': {
|
|
@@ -49,57 +50,56 @@ exports.dependencies = {
|
|
|
49
50
|
'@ui-kitten/components': '^5.3.1',
|
|
50
51
|
},
|
|
51
52
|
form: {
|
|
52
|
-
'@hookform/resolvers': '^5.
|
|
53
|
-
'react-hook-form': '^7.
|
|
54
|
-
yup: '^1.
|
|
53
|
+
'@hookform/resolvers': '^5.2.2',
|
|
54
|
+
'react-hook-form': '^7.65.0',
|
|
55
|
+
yup: '^1.7.1',
|
|
55
56
|
},
|
|
56
57
|
sentry: {
|
|
57
58
|
expo: {
|
|
58
|
-
'@sentry/react-native': '~
|
|
59
|
+
'@sentry/react-native': '~7.3.0',
|
|
59
60
|
},
|
|
60
61
|
next: {
|
|
61
|
-
'@sentry/nextjs': '^
|
|
62
|
+
'@sentry/nextjs': '^10.19.0',
|
|
62
63
|
},
|
|
63
64
|
},
|
|
64
65
|
};
|
|
65
66
|
exports.devDependencies = {
|
|
66
67
|
'code-checks': {
|
|
67
|
-
'@eslint/compat': '^1.
|
|
68
|
+
'@eslint/compat': '^1.4.0',
|
|
68
69
|
'@eslint/eslintrc': '^3.3.1',
|
|
69
|
-
eslint: '^9.
|
|
70
|
-
prettier: '^3.
|
|
71
|
-
'eslint-config-prettier': '^10.1.
|
|
72
|
-
'eslint-import-resolver-typescript': '^4.4.
|
|
73
|
-
'eslint-plugin-import': '^2.
|
|
70
|
+
eslint: '^9.37.0',
|
|
71
|
+
prettier: '^3.6.2',
|
|
72
|
+
'eslint-config-prettier': '^10.1.8',
|
|
73
|
+
'eslint-import-resolver-typescript': '^4.4.4',
|
|
74
|
+
'eslint-plugin-import': '^2.32.0',
|
|
74
75
|
'eslint-plugin-jsx-a11y': '^6.10.2',
|
|
75
76
|
'eslint-plugin-react': '^7.37.5',
|
|
76
|
-
'eslint-plugin-react-hooks': '^
|
|
77
|
-
'eslint-plugin-unused-imports': '^4.
|
|
77
|
+
'eslint-plugin-react-hooks': '^7.0.0',
|
|
78
|
+
'eslint-plugin-unused-imports': '^4.2.0',
|
|
78
79
|
husky: '^9.1.7',
|
|
79
80
|
'@stylistic/eslint-plugin': '^4.4.1',
|
|
80
|
-
'@typescript-eslint/eslint-plugin': '^8.
|
|
81
|
-
'@typescript-eslint/parser': '^8.
|
|
81
|
+
'@typescript-eslint/eslint-plugin': '^8.46.0',
|
|
82
|
+
'@typescript-eslint/parser': '^8.46.0',
|
|
82
83
|
'tsc-files': '^1.1.4',
|
|
83
84
|
},
|
|
84
85
|
'expo-app': {
|
|
85
86
|
'@types/lodash-es': '^4.17.12',
|
|
86
|
-
'@expo/cli': '~0.
|
|
87
|
-
'reactotron-react-native': '~5.1.
|
|
88
|
-
'reactotron-redux': '~3.2.
|
|
89
|
-
metro: '^0.
|
|
87
|
+
'@expo/cli': '~54.0.11',
|
|
88
|
+
'reactotron-react-native': '~5.1.17',
|
|
89
|
+
'reactotron-redux': '~3.2.1',
|
|
90
|
+
metro: '^0.83.1',
|
|
90
91
|
'metro-config': '^0.82.0',
|
|
91
92
|
},
|
|
92
93
|
'next-app': {
|
|
93
|
-
|
|
94
|
-
'eslint-config-next': '^15.3.3',
|
|
94
|
+
'eslint-config-next': '^15.5.4',
|
|
95
95
|
'@types/lodash-es': '^4.17.12',
|
|
96
96
|
},
|
|
97
97
|
'repo-config': {
|
|
98
98
|
syncpack: '^13.0.4',
|
|
99
|
-
'cross-env': '^
|
|
99
|
+
'cross-env': '^10.1.0',
|
|
100
100
|
},
|
|
101
101
|
auth: {
|
|
102
|
-
'@types/luxon': '3.
|
|
102
|
+
'@types/luxon': '3.7.1',
|
|
103
103
|
},
|
|
104
104
|
'next-auth': {
|
|
105
105
|
'@types/js-cookie': '^3.0.6',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dependencies.js","sourceRoot":"","sources":["../../../../plugin/src/shared/dependencies.ts"],"names":[],"mappings":";;;AAAa,QAAA,YAAY,GAAG;IAC1B,UAAU,EAAE;QACV,uCAAuC,EAAE,QAAQ;QACjD,mBAAmB,EAAE,QAAQ;QAC7B,gBAAgB,EAAE,SAAS;QAC3B,iBAAiB,EAAE,
|
|
1
|
+
{"version":3,"file":"dependencies.js","sourceRoot":"","sources":["../../../../plugin/src/shared/dependencies.ts"],"names":[],"mappings":";;;AAAa,QAAA,YAAY,GAAG;IAC1B,UAAU,EAAE;QACV,uCAAuC,EAAE,QAAQ;QACjD,mBAAmB,EAAE,QAAQ;QAC7B,gBAAgB,EAAE,SAAS;QAC3B,iBAAiB,EAAE,SAAS;QAC5B,aAAa,EAAE,SAAS;QACxB,gCAAgC,EAAE,QAAQ;QAC1C,sBAAsB,EAAE,SAAS;QACjC,IAAI,EAAE,SAAS;QACf,cAAc,EAAE,QAAQ;QACxB,iBAAiB,EAAE,QAAQ;QAC3B,cAAc,EAAE,UAAU;QAC1B,eAAe,EAAE,SAAS;QAC1B,mBAAmB,EAAE,SAAS;QAC9B,SAAS,EAAE,QAAQ;QACnB,WAAW,EAAE,UAAU;QACvB,KAAK,EAAE,SAAS;QAChB,cAAc,EAAE,SAAS;QACzB,kBAAkB,EAAE,UAAU;QAC9B,8BAA8B,EAAE,QAAQ;KACzC;IACD,UAAU,EAAE;QACV,WAAW,EAAE,SAAS;QACtB,WAAW,EAAE,UAAU;QACvB,mBAAmB,EAAE,QAAQ;QAC7B,IAAI,EAAE,SAAS;KAChB;IACD,YAAY,EAAE;QACZ,4BAA4B,EAAE,QAAQ;KACvC;IACD,IAAI,EAAE;QACJ,KAAK,EAAE,QAAQ;KAChB;IACD,WAAW,EAAE;QACX,WAAW,EAAE,QAAQ;KACtB;IACD,WAAW,EAAE;QACX,kCAAkC,EAAE,SAAS;KAC9C;IACD,KAAK,EAAE;QACL,2BAA2B,EAAE,QAAQ;QACrC,aAAa,EAAE,QAAQ;KACxB;IACD,WAAW,EAAE;QACX,iBAAiB,EAAE,QAAQ;QAC3B,uBAAuB,EAAE,QAAQ;KAClC;IACD,IAAI,EAAE;QACJ,qBAAqB,EAAE,QAAQ;QAC/B,iBAAiB,EAAE,SAAS;QAC5B,GAAG,EAAE,QAAQ;KACd;IACD,MAAM,EAAE;QACN,IAAI,EAAE;YACJ,sBAAsB,EAAE,QAAQ;SACjC;QACD,IAAI,EAAE;YACJ,gBAAgB,EAAE,UAAU;SAC7B;KACF;CACF,CAAC;AAEW,QAAA,eAAe,GAAG;IAC7B,aAAa,EAAE;QACb,gBAAgB,EAAE,QAAQ;QAC1B,kBAAkB,EAAE,QAAQ;QAC5B,MAAM,EAAE,SAAS;QACjB,QAAQ,EAAE,QAAQ;QAClB,wBAAwB,EAAE,SAAS;QACnC,mCAAmC,EAAE,QAAQ;QAC7C,sBAAsB,EAAE,SAAS;QACjC,wBAAwB,EAAE,SAAS;QACnC,qBAAqB,EAAE,SAAS;QAChC,2BAA2B,EAAE,QAAQ;QACrC,8BAA8B,EAAE,QAAQ;QACxC,KAAK,EAAE,QAAQ;QACf,0BAA0B,EAAE,QAAQ;QACpC,kCAAkC,EAAE,SAAS;QAC7C,2BAA2B,EAAE,SAAS;QACtC,WAAW,EAAE,QAAQ;KACtB;IACD,UAAU,EAAE;QACV,kBAAkB,EAAE,UAAU;QAC9B,WAAW,EAAE,UAAU;QACvB,yBAAyB,EAAE,SAAS;QACpC,kBAAkB,EAAE,QAAQ;QAC5B,KAAK,EAAE,SAAS;QAChB,cAAc,EAAE,SAAS;KAC1B;IACD,UAAU,EAAE;QACV,oBAAoB,EAAE,SAAS;QAC/B,kBAAkB,EAAE,UAAU;KAC/B;IACD,aAAa,EAAE;QACb,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,SAAS;KACvB;IACD,IAAI,EAAE;QACJ,cAAc,EAAE,OAAO;KACxB;IACD,WAAW,EAAE;QACX,kBAAkB,EAAE,QAAQ;KAC7B;CACF,CAAC"}
|
|
@@ -19,8 +19,8 @@ const updateStore = (libRoot, workspaceRoot = process.cwd()) => {
|
|
|
19
19
|
});
|
|
20
20
|
const storePath = path.join(workspaceRoot, libRoot, 'shared/data-access/store/src/store.ts');
|
|
21
21
|
const store = project.addSourceFileAtPath(storePath);
|
|
22
|
-
const apiAlias = (0, utils_1.searchAliasPath)(path.join(workspaceRoot, libRoot, 'shared/data-access/api/src'), workspaceRoot);
|
|
23
|
-
const authAlias = (0, utils_1.searchAliasPath)(path.join(workspaceRoot, libRoot, 'shared/data-access/auth/src'), workspaceRoot);
|
|
22
|
+
const apiAlias = (0, utils_1.searchAliasPath)(path.relative(workspaceRoot, path.join(workspaceRoot, libRoot, 'shared/data-access/api/src')), workspaceRoot);
|
|
23
|
+
const authAlias = (0, utils_1.searchAliasPath)(path.relative(workspaceRoot, path.join(workspaceRoot, libRoot, 'shared/data-access/auth/src')), workspaceRoot);
|
|
24
24
|
if (!apiAlias) {
|
|
25
25
|
throw new Error('Could not find API library.');
|
|
26
26
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../plugin/src/shared/generators/auth/generator.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../plugin/src/shared/generators/auth/generator.ts"],"names":[],"mappings":"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"}
|