@ronas-it/nx-generators 0.15.3 → 0.17.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/package.json +1 -1
- package/src/generators/code-checks/config.d.ts +1 -0
- package/src/generators/code-checks/config.js +1 -0
- package/src/generators/code-checks/config.js.map +1 -1
- package/src/generators/expo-app/app-files/app.config.ts.template +3 -3
- package/src/generators/expo-app/app-files/project.json.template +8 -0
- package/src/generators/expo-app/generator.js +2 -7
- package/src/generators/expo-app/generator.js.map +1 -1
- package/src/generators/next-app/files/project.json.template +1 -1
- package/src/generators/next-app/generator.js +6 -0
- package/src/generators/next-app/generator.js.map +1 -1
- package/src/shared/dependencies.d.ts +6 -0
- package/src/shared/dependencies.js +6 -0
- package/src/shared/dependencies.js.map +1 -1
- package/src/shared/generators/auth/{lib-files → common-files}/shared/data-access/api/src/lib/auth/models/refresh-token-response.ts.template +1 -1
- package/src/shared/generators/auth/common-files/shared/data-access/auth/src/lib/store/listener.ts.template +165 -0
- package/src/shared/generators/auth/{lib-files → common-files}/shared/data-access/auth/src/lib/store/slice.ts.template +12 -1
- package/src/shared/generators/auth/generator.d.ts +1 -1
- package/src/shared/generators/auth/generator.js +27 -12
- package/src/shared/generators/auth/generator.js.map +1 -1
- package/src/shared/generators/auth/next-app-files/app/[locale]/providers.tsx.template +26 -0
- package/src/shared/generators/auth/next-app-files/middleware.ts.template +33 -0
- package/src/shared/generators/auth/next-libs-files/shared/data-access/cookie/src/config.ts.template +6 -0
- package/src/shared/generators/auth/next-libs-files/shared/data-access/cookie/src/index.ts.template +2 -0
- package/src/shared/generators/auth/next-libs-files/shared/data-access/cookie/src/service.ts.template +28 -0
- package/src/shared/generators/auth/schema.d.ts +3 -0
- package/src/shared/utils/cli-utils.d.ts +1 -1
- package/src/shared/utils/cli-utils.js +9 -12
- package/src/shared/utils/cli-utils.js.map +1 -1
- package/src/generators/repo-config/files/.npmrc.template +0 -1
- package/src/shared/generators/auth/lib-files/shared/data-access/auth/src/lib/store/listener.ts.template +0 -74
- /package/src/shared/generators/auth/{lib-files → common-files}/shared/data-access/api/src/index.ts.template +0 -0
- /package/src/shared/generators/auth/{lib-files → common-files}/shared/data-access/api/src/lib/auth/api.ts.template +0 -0
- /package/src/shared/generators/auth/{lib-files → common-files}/shared/data-access/api/src/lib/auth/index.ts.template +0 -0
- /package/src/shared/generators/auth/{lib-files → common-files}/shared/data-access/api/src/lib/auth/models/forgot-password-request.ts.template +0 -0
- /package/src/shared/generators/auth/{lib-files → common-files}/shared/data-access/api/src/lib/auth/models/index.ts.template +0 -0
- /package/src/shared/generators/auth/{lib-files → common-files}/shared/data-access/api/src/lib/auth/models/login-request.ts.template +0 -0
- /package/src/shared/generators/auth/{lib-files → common-files}/shared/data-access/api/src/lib/auth/models/login-response.ts.template +0 -0
- /package/src/shared/generators/auth/{lib-files → common-files}/shared/data-access/api/src/lib/auth/models/register-request.ts.template +0 -0
- /package/src/shared/generators/auth/{lib-files → common-files}/shared/data-access/api/src/lib/auth/models/restore-password-request.ts.template +0 -0
- /package/src/shared/generators/auth/{lib-files → common-files}/shared/data-access/api/src/lib/index.ts.template +0 -0
- /package/src/shared/generators/auth/{lib-files → common-files}/shared/data-access/api/src/lib/profile/api.ts.template +0 -0
- /package/src/shared/generators/auth/{lib-files → common-files}/shared/data-access/api/src/lib/profile/config.ts.template +0 -0
- /package/src/shared/generators/auth/{lib-files → common-files}/shared/data-access/api/src/lib/profile/index.ts.template +0 -0
- /package/src/shared/generators/auth/{lib-files → common-files}/shared/data-access/api/src/lib/profile/models/get-profile-request.ts.template +0 -0
- /package/src/shared/generators/auth/{lib-files → common-files}/shared/data-access/api/src/lib/profile/models/index.ts.template +0 -0
- /package/src/shared/generators/auth/{lib-files → common-files}/shared/data-access/api/src/lib/profile/types/index.ts.template +0 -0
- /package/src/shared/generators/auth/{lib-files → common-files}/shared/data-access/api/src/lib/profile/types/relation.ts.template +0 -0
- /package/src/shared/generators/auth/{lib-files → common-files}/shared/data-access/api/src/lib/user/index.ts.template +0 -0
- /package/src/shared/generators/auth/{lib-files → common-files}/shared/data-access/api/src/lib/user/models/index.ts.template +0 -0
- /package/src/shared/generators/auth/{lib-files → common-files}/shared/data-access/api/src/lib/user/models/user.ts.template +0 -0
- /package/src/shared/generators/auth/{lib-files → common-files}/shared/data-access/auth/src/index.ts.template +0 -0
- /package/src/shared/generators/auth/{lib-files → common-files}/shared/data-access/auth/src/lib/index.ts.template +0 -0
- /package/src/shared/generators/auth/{lib-files → common-files}/shared/data-access/auth/src/lib/store/index.ts.template +0 -0
package/package.json
CHANGED
|
@@ -25,6 +25,7 @@ exports.default = {
|
|
|
25
25
|
noImplicitAny: true,
|
|
26
26
|
strictPropertyInitialization: false,
|
|
27
27
|
strictNullChecks: true,
|
|
28
|
+
lib: ['es2022', 'dom'],
|
|
28
29
|
},
|
|
29
30
|
tsConfigExclude: ['**/*.cjs', '**/*.mjs', 'node_modules', 'dist'],
|
|
30
31
|
gitIgnore: ['.eslintcache', '*.tsbuildinfo'],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../../plugin/src/generators/code-checks/config.ts"],"names":[],"mappings":";;AAAA,kBAAe;IACb,aAAa,EAAE;QACb,YAAY,EAAE,+BAA+B;QAC7C,4BAA4B,EAAE,kBAAkB;QAChD,eAAe,EAAE,sBAAsB;KACxC;IACD,QAAQ,EAAE;QACR,OAAO,EAAE,GAAG;QACZ,OAAO,EAAE,GAAG;QACZ,SAAS,EAAE,IAAI;QACf,MAAM,EAAE,IAAI;QACZ,qBAAqB,EAAE,IAAI;QAC3B,sBAAsB,EAAE,IAAI;QAC5B,SAAS,EAAE,KAAK;QAChB,cAAc,EAAE,KAAK;QACrB,mBAAmB,EAAE,KAAK;QAC1B,WAAW,EAAE,KAAK;QAClB,gBAAgB,EAAE,SAAS;QAC3B,GAAG,EAAE,cAAc;QACnB,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,IAAI;QACZ,4BAA4B,EAAE,IAAI;QAClC,aAAa,EAAE,IAAI;QACnB,4BAA4B,EAAE,KAAK;QACnC,gBAAgB,EAAE,IAAI;KACvB;IACD,eAAe,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,CAAC;IACjE,SAAS,EAAE,CAAC,cAAc,EAAE,eAAe,CAAC;CAC7C,CAAC"}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../../plugin/src/generators/code-checks/config.ts"],"names":[],"mappings":";;AAAA,kBAAe;IACb,aAAa,EAAE;QACb,YAAY,EAAE,+BAA+B;QAC7C,4BAA4B,EAAE,kBAAkB;QAChD,eAAe,EAAE,sBAAsB;KACxC;IACD,QAAQ,EAAE;QACR,OAAO,EAAE,GAAG;QACZ,OAAO,EAAE,GAAG;QACZ,SAAS,EAAE,IAAI;QACf,MAAM,EAAE,IAAI;QACZ,qBAAqB,EAAE,IAAI;QAC3B,sBAAsB,EAAE,IAAI;QAC5B,SAAS,EAAE,KAAK;QAChB,cAAc,EAAE,KAAK;QACrB,mBAAmB,EAAE,KAAK;QAC1B,WAAW,EAAE,KAAK;QAClB,gBAAgB,EAAE,SAAS;QAC3B,GAAG,EAAE,cAAc;QACnB,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,IAAI;QACZ,4BAA4B,EAAE,IAAI;QAClC,aAAa,EAAE,IAAI;QACnB,4BAA4B,EAAE,KAAK;QACnC,gBAAgB,EAAE,IAAI;QACtB,GAAG,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC;KACvB;IACD,eAAe,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,CAAC;IACjE,SAAS,EAAE,CAAC,cAAc,EAAE,eAAe,CAAC;CAC7C,CAAC"}
|
|
@@ -15,9 +15,9 @@ const createConfig = (): Omit<ExpoConfig, 'extra'> & { extra: { eas: EASConfig }
|
|
|
15
15
|
scheme: '<%= name %>-dev',
|
|
16
16
|
version: '0.1.0',
|
|
17
17
|
orientation: 'portrait',
|
|
18
|
-
icon: './assets/icon.png',
|
|
18
|
+
icon: './assets/images/icon.png',
|
|
19
19
|
splash: {
|
|
20
|
-
image: './assets/splash.png',
|
|
20
|
+
image: './assets/images/splash.png',
|
|
21
21
|
resizeMode: 'contain',
|
|
22
22
|
backgroundColor: '#ffffff',
|
|
23
23
|
},
|
|
@@ -36,7 +36,7 @@ const createConfig = (): Omit<ExpoConfig, 'extra'> & { extra: { eas: EASConfig }
|
|
|
36
36
|
package: appId,
|
|
37
37
|
versionCode: 1,
|
|
38
38
|
adaptiveIcon: {
|
|
39
|
-
foregroundImage: './assets/adaptive-icon.png',
|
|
39
|
+
foregroundImage: './assets/images/adaptive-icon.png',
|
|
40
40
|
backgroundColor: '#FFFFFF',
|
|
41
41
|
},
|
|
42
42
|
edgeToEdgeEnabled: true
|
|
@@ -22,12 +22,7 @@ function expoAppGenerator(tree, options) {
|
|
|
22
22
|
const tags = [`app:${options.directory}`, 'type:app'];
|
|
23
23
|
// Install @nx/expo plugin
|
|
24
24
|
(0, child_process_1.execSync)('npx nx add @nx/expo', { stdio: 'inherit' });
|
|
25
|
-
if ((0, fs_1.existsSync)(appRoot)) {
|
|
26
|
-
const project = (0, devkit_1.readProjectConfiguration)(tree, options.directory);
|
|
27
|
-
project.tags = [`app:${options.directory}`, 'type:app'];
|
|
28
|
-
(0, devkit_1.updateProjectConfiguration)(tree, project.name, project);
|
|
29
|
-
}
|
|
30
|
-
else {
|
|
25
|
+
if (!(0, fs_1.existsSync)(appRoot)) {
|
|
31
26
|
(0, child_process_1.execSync)(`npx nx g @nx/expo:app ${options.name} --directory=apps/${options.directory} --tags="${tags.join(', ')}" --linter=none --unitTestRunner=none --e2eTestRunner=none`, { stdio: 'inherit' });
|
|
32
27
|
}
|
|
33
28
|
// Generate shared libs
|
|
@@ -86,7 +81,7 @@ function expoAppGenerator(tree, options) {
|
|
|
86
81
|
(0, devkit_1.installPackagesTask)(tree);
|
|
87
82
|
(0, child_process_1.execSync)('npx expo install --fix', { stdio: 'inherit' });
|
|
88
83
|
if (shouldGenerateAuthLibs) {
|
|
89
|
-
(0, child_process_1.execSync)(`npx nx g auth
|
|
84
|
+
(0, child_process_1.execSync)(`npx nx g auth --directory=${options.directory} --type=${enums_1.BaseGeneratorType.EXPO_APP}`, {
|
|
90
85
|
stdio: 'inherit',
|
|
91
86
|
});
|
|
92
87
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../plugin/src/generators/expo-app/generator.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../plugin/src/generators/expo-app/generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,6 @@
|
|
|
4
4
|
"sourceRoot": "apps/<%= directory %>",
|
|
5
5
|
"projectType": "application",
|
|
6
6
|
"tags": ["app:<%= directory %>", "type:app"],
|
|
7
|
-
"// targets": "to see all targets run: nx show project
|
|
7
|
+
"// targets": "to see all targets run: nx show project <%= directory %> --web",
|
|
8
8
|
"targets": {}
|
|
9
9
|
}
|
|
@@ -15,6 +15,7 @@ function nextAppGenerator(tree, options) {
|
|
|
15
15
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
16
16
|
var _a, _b;
|
|
17
17
|
const shouldGenerateApiClientLib = options.withStore && !(0, lodash_1.isBoolean)(options.withApiClient) && (yield (0, utils_1.confirm)('Do you want to create api client lib?'));
|
|
18
|
+
const shouldGenerateAuthLibs = shouldGenerateApiClientLib && (yield (0, utils_1.confirm)('Do you want to create auth lib?'));
|
|
18
19
|
const appRoot = `apps/${options.directory}`;
|
|
19
20
|
const i18nRoot = `i18n/${options.directory}`;
|
|
20
21
|
const libPath = `${(0, utils_1.getImportPathPrefix)(tree)}/${options.directory}`;
|
|
@@ -75,6 +76,11 @@ function nextAppGenerator(tree, options) {
|
|
|
75
76
|
yield (0, devkit_1.formatFiles)(tree);
|
|
76
77
|
return () => {
|
|
77
78
|
(0, devkit_1.installPackagesTask)(tree);
|
|
79
|
+
if (shouldGenerateAuthLibs) {
|
|
80
|
+
(0, child_process_1.execSync)(`npx nx g auth --directory=${options.directory} --type=${enums_1.BaseGeneratorType.NEXT_APP}`, {
|
|
81
|
+
stdio: 'inherit',
|
|
82
|
+
});
|
|
83
|
+
}
|
|
78
84
|
if (options.withSentry) {
|
|
79
85
|
(0, child_process_1.execSync)(`npx nx g sentry --directory=${appRoot}`, {
|
|
80
86
|
stdio: 'inherit',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../plugin/src/generators/next-app/generator.ts"],"names":[],"mappings":";;AAyBA,
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../plugin/src/generators/next-app/generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -31,6 +31,9 @@ export declare const dependencies: {
|
|
|
31
31
|
auth: {
|
|
32
32
|
luxon: string;
|
|
33
33
|
};
|
|
34
|
+
'next-auth': {
|
|
35
|
+
'js-cookie': string;
|
|
36
|
+
};
|
|
34
37
|
'rn-styles': {
|
|
35
38
|
'react-native-extended-stylesheet': string;
|
|
36
39
|
};
|
|
@@ -94,4 +97,7 @@ export declare const devDependencies: {
|
|
|
94
97
|
auth: {
|
|
95
98
|
'@types/luxon': string;
|
|
96
99
|
};
|
|
100
|
+
'next-auth': {
|
|
101
|
+
'@types/js-cookie': string;
|
|
102
|
+
};
|
|
97
103
|
};
|
|
@@ -34,6 +34,9 @@ exports.dependencies = {
|
|
|
34
34
|
auth: {
|
|
35
35
|
luxon: '^3.6.1',
|
|
36
36
|
},
|
|
37
|
+
'next-auth': {
|
|
38
|
+
'js-cookie': '^3.0.5',
|
|
39
|
+
},
|
|
37
40
|
'rn-styles': {
|
|
38
41
|
'react-native-extended-stylesheet': '^0.12.0',
|
|
39
42
|
},
|
|
@@ -98,5 +101,8 @@ exports.devDependencies = {
|
|
|
98
101
|
auth: {
|
|
99
102
|
'@types/luxon': '3.6.2',
|
|
100
103
|
},
|
|
104
|
+
'next-auth': {
|
|
105
|
+
'@types/js-cookie': '^3.0.6',
|
|
106
|
+
},
|
|
101
107
|
};
|
|
102
108
|
//# sourceMappingURL=dependencies.js.map
|
|
@@ -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,QAAQ;QAC3B,aAAa,EAAE,QAAQ;QACvB,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,QAAQ;QACzB,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,QAAQ;QACrB,WAAW,EAAE,UAAU;QACvB,mBAAmB,EAAE,QAAQ;KAC9B;IACD,YAAY,EAAE;QACZ,4BAA4B,EAAE,QAAQ;KACvC;IACD,IAAI,EAAE;QACJ,KAAK,EAAE,QAAQ;KAChB;IACD,WAAW,EAAE;QACX,kCAAkC,EAAE,SAAS;KAC9C;IACD,KAAK,EAAE;QACL,2BAA2B,EAAE,SAAS;QACtC,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,SAAS;SAClC;QACD,IAAI,EAAE;YACJ,gBAAgB,EAAE,SAAS;SAC5B;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,wDAAwD;QACxD,oBAAoB,EAAE,SAAS;QAC/B,kBAAkB,EAAE,UAAU;KAC/B;IACD,aAAa,EAAE;QACb,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,QAAQ;KACtB;IACD,IAAI,EAAE;QACJ,cAAc,EAAE,OAAO;KACxB;CACF,CAAC"}
|
|
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,QAAQ;QAC3B,aAAa,EAAE,QAAQ;QACvB,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,QAAQ;QACzB,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,QAAQ;QACrB,WAAW,EAAE,UAAU;QACvB,mBAAmB,EAAE,QAAQ;KAC9B;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,SAAS;QACtC,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,SAAS;SAClC;QACD,IAAI,EAAE;YACJ,gBAAgB,EAAE,SAAS;SAC5B;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,wDAAwD;QACxD,oBAAoB,EAAE,SAAS;QAC/B,kBAAkB,EAAE,UAAU;KAC/B;IACD,aAAa,EAAE;QACb,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,QAAQ;KACtB;IACD,IAAI,EAAE;QACJ,cAAc,EAAE,OAAO;KACxB;IACD,WAAW,EAAE;QACX,kBAAkB,EAAE,QAAQ;KAC7B;CACF,CAAC"}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import { createListenerMiddleware, isAnyOf } from '@reduxjs/toolkit';
|
|
2
|
+
import {
|
|
3
|
+
onRequestRefreshTokenInterceptor,
|
|
4
|
+
onResponseRefreshTokenInterceptor,
|
|
5
|
+
RefreshTokenInterceptorOptions,
|
|
6
|
+
<% if (type === 'expo-app') { %>tokenInterceptor,<% } %>
|
|
7
|
+
unauthorizedInterceptor
|
|
8
|
+
} from '@ronas-it/axios-api-client';
|
|
9
|
+
import { storeActions } from '@ronas-it/rtkq-entity-api';
|
|
10
|
+
<% if (type === 'next-app') { %>import { DateTime } from 'luxon';<% } %>
|
|
11
|
+
import { authApi, profileApi, LogInResponse } from '<%= libPath %>/shared/data-access/api';
|
|
12
|
+
import { apiService, configuration } from '<%= libPath %>/shared/data-access/api-client';
|
|
13
|
+
<% if (type === 'next-app') { %>import { CookieService } from '<%= libPath %>/shared/data-access/cookie';<% } %>
|
|
14
|
+
<% if (type === 'expo-app') { %>import { AppStorageValue, storage } from '<%= libPath %>/shared/data-access/storage';<% } %>
|
|
15
|
+
import { authActions, authReducerPath, authSelectors, AuthState } from './slice';
|
|
16
|
+
|
|
17
|
+
export const authListenerMiddleware = createListenerMiddleware<{ [authReducerPath]: AuthState }>();
|
|
18
|
+
|
|
19
|
+
<% if (type === 'expo-app') { %>authListenerMiddleware.startListening({
|
|
20
|
+
actionCreator: storeActions.init,
|
|
21
|
+
effect: (_, { dispatch }) => {
|
|
22
|
+
const token = storage.getString(AppStorageValue.TOKEN);
|
|
23
|
+
dispatch(authActions.setIsAuthenticated(Boolean(token)));
|
|
24
|
+
|
|
25
|
+
apiService.useInterceptors({
|
|
26
|
+
request: [[tokenInterceptor({ getToken: () => storage.getString(AppStorageValue.TOKEN) ?? '' })]],
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
dispatch(authActions.setIsAppReady(true));
|
|
30
|
+
},
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
authListenerMiddleware.startListening({
|
|
34
|
+
matcher: authApi.internalActions.middlewareRegistered.match,
|
|
35
|
+
effect: (_, { dispatch, getState }) => {
|
|
36
|
+
const options: RefreshTokenInterceptorOptions = {
|
|
37
|
+
configuration: configuration.auth,
|
|
38
|
+
getIsAuthenticated: () => authSelectors.isAuthenticated(getState()),
|
|
39
|
+
runTokenRefreshRequest: async () => {
|
|
40
|
+
const { token } = await dispatch(authApi.endpoints.refreshToken.initiate()).unwrap();
|
|
41
|
+
storage.set(AppStorageValue.TOKEN, token);
|
|
42
|
+
|
|
43
|
+
return token;
|
|
44
|
+
},
|
|
45
|
+
onError: () => {
|
|
46
|
+
return dispatch(authApi.endpoints.logout.initiate()).unwrap();
|
|
47
|
+
},
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
apiService.useInterceptors({
|
|
51
|
+
request: [[onRequestRefreshTokenInterceptor(options)]],
|
|
52
|
+
response: [
|
|
53
|
+
[null, onResponseRefreshTokenInterceptor(options)],
|
|
54
|
+
[
|
|
55
|
+
null,
|
|
56
|
+
unauthorizedInterceptor({
|
|
57
|
+
publicEndpoints: configuration.auth.unauthorizedRoutes,
|
|
58
|
+
onError: () => dispatch(authActions.unauthorize()),
|
|
59
|
+
}),
|
|
60
|
+
],
|
|
61
|
+
],
|
|
62
|
+
});
|
|
63
|
+
},
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
authListenerMiddleware.startListening({
|
|
67
|
+
matcher: isAnyOf(authApi.endpoints.login.matchFulfilled, authApi.endpoints.register.matchFulfilled),
|
|
68
|
+
effect: ({ payload: { token } }: { payload: LogInResponse }, { dispatch }) => {
|
|
69
|
+
storage.set(AppStorageValue.TOKEN, token);
|
|
70
|
+
dispatch(authActions.setIsAuthenticated(true));
|
|
71
|
+
},
|
|
72
|
+
});<% } %>
|
|
73
|
+
|
|
74
|
+
<% if (type === 'next-app') { %>authListenerMiddleware.startListening({
|
|
75
|
+
actionCreator: storeActions.init,
|
|
76
|
+
effect: async (_, { dispatch, getState }) => {
|
|
77
|
+
const getIsAuthenticated = (): boolean | null => authSelectors.isAuthenticated(getState());
|
|
78
|
+
|
|
79
|
+
const getIsTokenExpired = (): boolean | null => {
|
|
80
|
+
const expiryDate = authSelectors.expiryDate(getState());
|
|
81
|
+
|
|
82
|
+
return !expiryDate || expiryDate <= new Date();
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
const options: RefreshTokenInterceptorOptions = {
|
|
86
|
+
configuration: configuration.auth,
|
|
87
|
+
getIsAuthenticated,
|
|
88
|
+
getIsTokenExpired,
|
|
89
|
+
runTokenRefreshRequest: async () => {
|
|
90
|
+
const { token, ttl, refreshTtl } = await dispatch(authApi.endpoints.refreshToken.initiate()).unwrap();
|
|
91
|
+
const expiryDate = DateTime.now().plus({ minute: ttl }).toJSDate();
|
|
92
|
+
|
|
93
|
+
CookieService.set(
|
|
94
|
+
{
|
|
95
|
+
isAuthenticated: 'true',
|
|
96
|
+
tokenExpiryDate: expiryDate.toISOString(),
|
|
97
|
+
},
|
|
98
|
+
{ expires: DateTime.now().plus({ minute: refreshTtl }).toJSDate() },
|
|
99
|
+
);
|
|
100
|
+
|
|
101
|
+
dispatch(authActions.setExpiryDate(expiryDate));
|
|
102
|
+
|
|
103
|
+
return token;
|
|
104
|
+
},
|
|
105
|
+
onError: async () => dispatch(authApi.endpoints.logout.initiate()).unwrap(),
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
apiService.useInterceptors({
|
|
109
|
+
request: [[onRequestRefreshTokenInterceptor(options)]],
|
|
110
|
+
response: [
|
|
111
|
+
[null, onResponseRefreshTokenInterceptor(options)],
|
|
112
|
+
[
|
|
113
|
+
null,
|
|
114
|
+
unauthorizedInterceptor({
|
|
115
|
+
publicEndpoints: configuration.auth.unauthorizedRoutes,
|
|
116
|
+
onError: () => dispatch(authActions.unauthorize()),
|
|
117
|
+
}),
|
|
118
|
+
],
|
|
119
|
+
],
|
|
120
|
+
});
|
|
121
|
+
|
|
122
|
+
dispatch(authActions.setIsAppReady(true));
|
|
123
|
+
},
|
|
124
|
+
});
|
|
125
|
+
|
|
126
|
+
authListenerMiddleware.startListening({
|
|
127
|
+
matcher: isAnyOf(authApi.endpoints.login.matchFulfilled, authApi.endpoints.register.matchFulfilled),
|
|
128
|
+
effect: async ({ payload: { refreshTtl, ttl } }: { payload: LogInResponse }, { dispatch }) => {
|
|
129
|
+
const expiryDate = DateTime.now().plus({ minute: ttl }).toJSDate();
|
|
130
|
+
|
|
131
|
+
CookieService.set(
|
|
132
|
+
{
|
|
133
|
+
isAuthenticated: 'true',
|
|
134
|
+
tokenExpiryDate: expiryDate.toISOString(),
|
|
135
|
+
},
|
|
136
|
+
{ expires: DateTime.now().plus({ minute: refreshTtl }).toJSDate() },
|
|
137
|
+
);
|
|
138
|
+
|
|
139
|
+
dispatch(authActions.setIsAuthenticated(true));
|
|
140
|
+
dispatch(authActions.setExpiryDate(expiryDate));
|
|
141
|
+
},
|
|
142
|
+
});<% } %>
|
|
143
|
+
|
|
144
|
+
authListenerMiddleware.startListening({
|
|
145
|
+
matcher: isAnyOf(
|
|
146
|
+
authApi.endpoints.logout.matchFulfilled,
|
|
147
|
+
authApi.endpoints.logout.matchRejected,
|
|
148
|
+
profileApi.endpoints.deleteProfile.matchFulfilled,
|
|
149
|
+
),
|
|
150
|
+
effect: (_, { dispatch }) => {
|
|
151
|
+
dispatch(authActions.unauthorize());
|
|
152
|
+
},
|
|
153
|
+
});
|
|
154
|
+
|
|
155
|
+
authListenerMiddleware.startListening({
|
|
156
|
+
actionCreator: authActions.unauthorize,
|
|
157
|
+
effect: (_, { dispatch }) => {
|
|
158
|
+
<% if (type === 'expo-app') { %>storage.delete(AppStorageValue.TOKEN);<% } %>
|
|
159
|
+
<% if (type === 'next-app') { %>CookieService.remove(['isAuthenticated', 'tokenExpiryDate']);<% } %>
|
|
160
|
+
dispatch(authActions.setIsAuthenticated(false));
|
|
161
|
+
<% if (type === 'next-app') { %>dispatch(authActions.setExpiryDate(null));<% } %>
|
|
162
|
+
|
|
163
|
+
dispatch(profileApi.util.resetApiState());
|
|
164
|
+
},
|
|
165
|
+
});
|
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
import { PayloadAction, createSlice } from '@reduxjs/toolkit';
|
|
2
|
+
<% if (type === 'next-app') { %>import { CookieService } from '<%= libPath %>/shared/data-access/cookie';<% } %>
|
|
2
3
|
|
|
3
4
|
export interface AuthState {
|
|
4
5
|
isAuthenticated: boolean | null;
|
|
5
6
|
isAppReady: boolean;
|
|
7
|
+
<% if (type === 'next-app') { %>expiryDate: Date | null;<% } %>
|
|
6
8
|
}
|
|
7
9
|
|
|
8
10
|
const initialState: AuthState = {
|
|
9
|
-
isAuthenticated: null
|
|
11
|
+
isAuthenticated: <% if (type === 'next-app') { %>CookieService.get('isAuthenticated') === 'true',<% } else { %>null,<% } %>
|
|
10
12
|
isAppReady: false,
|
|
13
|
+
<% if (type === 'next-app') { %>expiryDate: new Date(CookieService.get('tokenExpiryDate')),<% } %>
|
|
11
14
|
};
|
|
12
15
|
|
|
13
16
|
const authSlice = createSlice({
|
|
@@ -20,10 +23,18 @@ const authSlice = createSlice({
|
|
|
20
23
|
setIsAppReady(state, { payload }: PayloadAction<boolean>) {
|
|
21
24
|
state.isAppReady = payload;
|
|
22
25
|
},
|
|
26
|
+
<% if (type === 'next-app') { %>setExpiryDate(state, { payload }: PayloadAction<AuthState['expiryDate']>) {
|
|
27
|
+
state.expiryDate = payload;
|
|
28
|
+
},<% } %>
|
|
29
|
+
unauthorize(state) {
|
|
30
|
+
state.isAuthenticated = false;
|
|
31
|
+
<% if (type === 'next-app') { %>state.expiryDate = null;<% } %>
|
|
32
|
+
},
|
|
23
33
|
},
|
|
24
34
|
selectors: {
|
|
25
35
|
isAuthenticated: (state) => state.isAuthenticated,
|
|
26
36
|
isAppReady: (state) => state.isAppReady,
|
|
37
|
+
<% if (type === 'next-app') { %>expiryDate: (state) => state.expiryDate,<% } %>
|
|
27
38
|
},
|
|
28
39
|
});
|
|
29
40
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { Tree } from '@nx/devkit';
|
|
2
2
|
import { AuthGeneratorSchema } from './schema';
|
|
3
|
-
export declare function runAuthGenerator(tree: Tree, options: AuthGeneratorSchema): Promise<() => void>;
|
|
3
|
+
export declare function runAuthGenerator(tree: Tree, options: AuthGeneratorSchema, workspaceRoot?: string): Promise<() => void>;
|
|
4
4
|
export default runAuthGenerator;
|
|
@@ -8,20 +8,19 @@ const path = require("path");
|
|
|
8
8
|
const devkit_1 = require("@nx/devkit");
|
|
9
9
|
const ts_morph_1 = require("ts-morph");
|
|
10
10
|
const dependencies_1 = require("../../dependencies");
|
|
11
|
+
const enums_1 = require("../../enums");
|
|
11
12
|
const utils_1 = require("../../utils");
|
|
12
|
-
const updateStore = (libRoot) => {
|
|
13
|
+
const updateStore = (libRoot, workspaceRoot = process.cwd()) => {
|
|
13
14
|
const project = new ts_morph_1.Project({
|
|
14
15
|
manipulationSettings: {
|
|
15
16
|
indentationText: ts_morph_1.IndentationText.TwoSpaces,
|
|
16
17
|
quoteKind: ts_morph_1.QuoteKind.Single,
|
|
17
18
|
},
|
|
18
19
|
});
|
|
19
|
-
const storePath =
|
|
20
|
-
const
|
|
21
|
-
const
|
|
22
|
-
const
|
|
23
|
-
const apiAlias = (0, utils_1.searchAliasPath)(apiPath);
|
|
24
|
-
const authAlias = (0, utils_1.searchAliasPath)(authPath);
|
|
20
|
+
const storePath = path.join(workspaceRoot, libRoot, 'shared/data-access/store/src/store.ts');
|
|
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);
|
|
25
24
|
if (!apiAlias) {
|
|
26
25
|
throw new Error('Could not find API library.');
|
|
27
26
|
}
|
|
@@ -46,8 +45,8 @@ const updateStore = (libRoot) => {
|
|
|
46
45
|
});
|
|
47
46
|
project.saveSync();
|
|
48
47
|
};
|
|
49
|
-
function runAuthGenerator(
|
|
50
|
-
return tslib_1.__awaiter(this,
|
|
48
|
+
function runAuthGenerator(tree_1, options_1) {
|
|
49
|
+
return tslib_1.__awaiter(this, arguments, void 0, function* (tree, options, workspaceRoot = process.cwd()) {
|
|
51
50
|
const appRoot = `apps/${options.directory}`;
|
|
52
51
|
const libRoot = `libs/${options.directory}`;
|
|
53
52
|
const libPath = `${(0, utils_1.getImportPathPrefix)(tree)}/${options.directory}`;
|
|
@@ -58,19 +57,35 @@ function runAuthGenerator(tree, options) {
|
|
|
58
57
|
(0, child_process_1.execSync)(`npx nx g react-lib --app=${options.directory} --scope=shared --type=data-access --name=auth`, {
|
|
59
58
|
stdio: 'inherit',
|
|
60
59
|
});
|
|
60
|
+
if (options.type === enums_1.BaseGeneratorType.NEXT_APP) {
|
|
61
|
+
(0, child_process_1.execSync)(`npx nx g react-lib --app=${options.directory} --scope=shared --type=data-access --name=cookie`, {
|
|
62
|
+
stdio: 'inherit',
|
|
63
|
+
});
|
|
64
|
+
}
|
|
61
65
|
const appPackagePath = `${appRoot}/package.json`;
|
|
62
66
|
// Remove unnecessary files and files that will be replaced
|
|
63
67
|
tree.delete(`${libRoot}/shared/data-access/api/src/index.ts`);
|
|
64
68
|
tree.delete(`${libRoot}/shared/data-access/auth/src/index.ts`);
|
|
65
69
|
// Add lib files
|
|
66
|
-
(0, devkit_1.generateFiles)(tree, path.join(__dirname, '/
|
|
70
|
+
(0, devkit_1.generateFiles)(tree, path.join(__dirname, '/common-files'), libRoot, Object.assign(Object.assign({}, options), { formatName: utils_1.formatName,
|
|
67
71
|
formatAppIdentifier: utils_1.formatAppIdentifier,
|
|
68
72
|
libPath }));
|
|
69
|
-
|
|
70
|
-
|
|
73
|
+
if (options.type === enums_1.BaseGeneratorType.NEXT_APP) {
|
|
74
|
+
(0, devkit_1.generateFiles)(tree, path.join(__dirname, '/next-libs-files'), libRoot, {});
|
|
75
|
+
(0, devkit_1.generateFiles)(tree, path.join(__dirname, '/next-app-files'), appRoot, { libPath });
|
|
76
|
+
}
|
|
77
|
+
updateStore(libRoot, workspaceRoot);
|
|
78
|
+
// Add dependencies to root package.json
|
|
71
79
|
(0, devkit_1.addDependenciesToPackageJson)(tree, dependencies_1.dependencies['auth'], dependencies_1.devDependencies['auth']);
|
|
80
|
+
if (options.type === enums_1.BaseGeneratorType.NEXT_APP) {
|
|
81
|
+
(0, devkit_1.addDependenciesToPackageJson)(tree, dependencies_1.dependencies['next-auth'], dependencies_1.devDependencies['next-auth']);
|
|
82
|
+
}
|
|
83
|
+
// Add dependencies to app package.json
|
|
72
84
|
if ((0, fs_1.existsSync)(appPackagePath)) {
|
|
73
85
|
(0, devkit_1.addDependenciesToPackageJson)(tree, dependencies_1.dependencies['auth'], dependencies_1.devDependencies['auth'], appPackagePath);
|
|
86
|
+
if (options.type === enums_1.BaseGeneratorType.NEXT_APP) {
|
|
87
|
+
(0, devkit_1.addDependenciesToPackageJson)(tree, dependencies_1.dependencies['next-auth'], dependencies_1.devDependencies['next-auth'], appPackagePath);
|
|
88
|
+
}
|
|
74
89
|
}
|
|
75
90
|
yield (0, devkit_1.formatFiles)(tree);
|
|
76
91
|
return () => {
|
|
@@ -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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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { storeActions } from '@ronas-it/rtkq-entity-api';
|
|
4
|
+
import { PropsWithChildren, ReactElement, ReactNode, useEffect } from 'react';
|
|
5
|
+
import { Provider, useDispatch, useSelector } from 'react-redux';
|
|
6
|
+
import { authSelectors } from '<%= libPath %>/shared/data-access/auth';
|
|
7
|
+
import { store } from '<%= libPath %>/shared/data-access/store';
|
|
8
|
+
|
|
9
|
+
function App({ children }: PropsWithChildren): ReactNode {
|
|
10
|
+
const dispatch = useDispatch();
|
|
11
|
+
const isAppReady = useSelector(authSelectors.isAppReady);
|
|
12
|
+
|
|
13
|
+
useEffect(() => {
|
|
14
|
+
dispatch(storeActions.init());
|
|
15
|
+
}, []);
|
|
16
|
+
|
|
17
|
+
return isAppReady ? children : null;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export function Providers({ children }: PropsWithChildren): ReactElement {
|
|
21
|
+
return (
|
|
22
|
+
<Provider store={store}>
|
|
23
|
+
<App>{children}</App>
|
|
24
|
+
</Provider>
|
|
25
|
+
);
|
|
26
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { cookieConfig } from '<%= libPath %>/shared/data-access/cookie';
|
|
2
|
+
import { Locale } from '<%= libPath %>/shared/utils/i18n';
|
|
3
|
+
import { NextRequest, NextResponse } from 'next/server';
|
|
4
|
+
import createMiddleware from 'next-intl/middleware';
|
|
5
|
+
import { constants } from './constants';
|
|
6
|
+
|
|
7
|
+
const redirectToPage = (request: NextRequest, route: string): NextResponse => {
|
|
8
|
+
const pathname = request.nextUrl.pathname;
|
|
9
|
+
const segments = pathname.split('/');
|
|
10
|
+
const languageCode = constants.locales.includes(segments[0] as Locale) ? segments[0] : '';
|
|
11
|
+
const newUrl = new URL(`${languageCode}${route}`, request.url);
|
|
12
|
+
|
|
13
|
+
return NextResponse.redirect(newUrl);
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
const intlMiddleware = createMiddleware({
|
|
17
|
+
locales: constants.locales,
|
|
18
|
+
defaultLocale: constants.defaultLocale,
|
|
19
|
+
localePrefix: 'never',
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
export default async function middleware(request: NextRequest): Promise<NextResponse> {
|
|
23
|
+
const pathname = request.nextUrl.pathname;
|
|
24
|
+
const isAuthenticated = request.cookies.get(cookieConfig.keys.isAuthenticated)?.value === 'true';
|
|
25
|
+
|
|
26
|
+
// TODO: Implement redirects with redirectToPage according to pathname and isAuthenticated
|
|
27
|
+
|
|
28
|
+
return intlMiddleware(request);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export const config = {
|
|
32
|
+
matcher: ['/((?!api|_next|.*\\..*).*)'],
|
|
33
|
+
};
|
package/src/shared/generators/auth/next-libs-files/shared/data-access/cookie/src/service.ts.template
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import Cookies from 'js-cookie';
|
|
2
|
+
import { isNil } from 'lodash';
|
|
3
|
+
import { cookieConfig } from './config';
|
|
4
|
+
|
|
5
|
+
type Key = keyof typeof cookieConfig.keys;
|
|
6
|
+
type Data = Partial<Record<Key, string>>;
|
|
7
|
+
|
|
8
|
+
export class CookieService {
|
|
9
|
+
public static set(data: Data, options?: Cookies.CookieAttributes): void {
|
|
10
|
+
Object.entries(data).forEach(([key, value]) => {
|
|
11
|
+
if (isNil(value)) {
|
|
12
|
+
CookieService.remove([key as Key]);
|
|
13
|
+
} else {
|
|
14
|
+
Cookies.set(key, value, options);
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
public static get(key: Key): string {
|
|
20
|
+
return Cookies.get(key) || '';
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
public static remove(keys: Array<Key>, options?: Cookies.CookieAttributes): void {
|
|
24
|
+
for (const key of keys) {
|
|
25
|
+
Cookies.remove(key, options);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -12,7 +12,7 @@ export declare enum LibraryType {
|
|
|
12
12
|
export declare const validateLibraryType: (type: string) => string;
|
|
13
13
|
export declare const getNxLibsPaths: (types: Array<LibraryType>) => Array<string>;
|
|
14
14
|
export declare const searchNxLibsPaths: (paths: Array<string>, input: string, method?: "includes" | "startsWith" | "endsWith") => Array<string>;
|
|
15
|
-
export declare const searchAliasPath: (input: string) => string | undefined;
|
|
15
|
+
export declare const searchAliasPath: (input: string, workspaceRoot?: string) => string | undefined;
|
|
16
16
|
export declare const filterSource: (input: string, source: Array<string>) => Promise<Array<{
|
|
17
17
|
value: string;
|
|
18
18
|
}>>;
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.getLibraryDetailsByName = exports.selectProject = exports.getProjectsDetails = exports.appendFileContent = exports.updateFileContent = exports.filterSource = exports.searchAliasPath = exports.searchNxLibsPaths = exports.getNxLibsPaths = exports.validateLibraryType = exports.LibraryType = exports.confirm = exports.askQuestion = exports.createCliReadline = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const fs = require("fs");
|
|
6
|
+
const path = require("path");
|
|
6
7
|
const readline = require("readline");
|
|
7
8
|
const devkit_1 = require("@nx/devkit");
|
|
8
9
|
const lodash_1 = require("lodash");
|
|
@@ -37,14 +38,11 @@ var LibraryType;
|
|
|
37
38
|
LibraryType["FEATURES"] = "features";
|
|
38
39
|
LibraryType["UTILS"] = "utils";
|
|
39
40
|
})(LibraryType || (exports.LibraryType = LibraryType = {}));
|
|
40
|
-
const parseLibsPaths = () => {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
else {
|
|
46
|
-
tsconfig = JSON.parse(fs.readFileSync('tsconfig.json', 'utf8'));
|
|
47
|
-
}
|
|
41
|
+
const parseLibsPaths = (workspaceRoot = process.cwd()) => {
|
|
42
|
+
const tsconfigPath = fs.existsSync(path.join(workspaceRoot, 'tsconfig.base.json'))
|
|
43
|
+
? path.join(workspaceRoot, 'tsconfig.base.json')
|
|
44
|
+
: path.join(workspaceRoot, 'tsconfig.json');
|
|
45
|
+
const tsconfig = JSON.parse(fs.readFileSync(tsconfigPath, 'utf8'));
|
|
48
46
|
return tsconfig.compilerOptions.paths;
|
|
49
47
|
};
|
|
50
48
|
const validateLibraryType = (type) => {
|
|
@@ -66,10 +64,9 @@ const searchNxLibsPaths = (paths, input, method = 'includes') => {
|
|
|
66
64
|
return paths.filter((path) => path[method](input));
|
|
67
65
|
};
|
|
68
66
|
exports.searchNxLibsPaths = searchNxLibsPaths;
|
|
69
|
-
const searchAliasPath = (input) => {
|
|
70
|
-
const libs = parseLibsPaths();
|
|
71
|
-
|
|
72
|
-
return path;
|
|
67
|
+
const searchAliasPath = (input, workspaceRoot) => {
|
|
68
|
+
const libs = parseLibsPaths(workspaceRoot);
|
|
69
|
+
return Object.keys(libs).find((key) => libs[key][0].includes(input));
|
|
73
70
|
};
|
|
74
71
|
exports.searchAliasPath = searchAliasPath;
|
|
75
72
|
const filterSource = (input, source) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-utils.js","sourceRoot":"","sources":["../../../../../plugin/src/shared/utils/cli-utils.ts"],"names":[],"mappings":";;;;AAAA,yBAAyB;AACzB,qCAAqC;AACrC,uCAA4D;AAC5D,mCAAiC;AACjC,2CAAwC;AAEjC,MAAM,iBAAiB,GAAG,GAAuB,EAAE,CACxD,QAAQ,CAAC,eAAe,CAAC;IACvB,KAAK,EAAE,OAAO,CAAC,KAAK;IACpB,MAAM,EAAE,OAAO,CAAC,MAAM;CACvB,CAAC,CAAC;AAJQ,QAAA,iBAAiB,qBAIzB;AAEE,MAAM,WAAW,GAAG,CAAO,QAAgB,EAAE,aAAsB,EAAmB,EAAE;IAC7F,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC;QACvB,OAAO,EAAE,QAAQ;QACjB,OAAO,EAAE,aAAa;KACvB,CAAC,CAAC;IAEH,OAAO,MAAM,MAAM,CAAC,GAAG,EAAE,CAAC;AAC5B,CAAC,CAAA,CAAC;AARW,QAAA,WAAW,eAQtB;AAEK,MAAM,OAAO,GAAG,CAAO,mBAA2B,EAAoB,EAAE;IAC7E,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAExC,MAAM,MAAM,GAAG,IAAI,OAAO,CAAC;QACzB,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,mBAAmB;KAC7B,CAAC,CAAC;IAEH,OAAO,MAAM,MAAM,CAAC,GAAG,EAAE,CAAC;AAC5B,CAAC,CAAA,CAAC;AATW,QAAA,OAAO,WASlB;AAEF,IAAY,WAKX;AALD,WAAY,WAAW;IACrB,wBAAS,CAAA;IACT,0CAA2B,CAAA;IAC3B,oCAAqB,CAAA;IACrB,8BAAe,CAAA;AACjB,CAAC,EALW,WAAW,2BAAX,WAAW,QAKtB;AAED,MAAM,cAAc,GAAG,
|
|
1
|
+
{"version":3,"file":"cli-utils.js","sourceRoot":"","sources":["../../../../../plugin/src/shared/utils/cli-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
node-linker=hoisted
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import { createListenerMiddleware, isAnyOf } from '@reduxjs/toolkit';
|
|
2
|
-
import {
|
|
3
|
-
onRequestRefreshTokenInterceptor,
|
|
4
|
-
onResponseRefreshTokenInterceptor,
|
|
5
|
-
RefreshTokenInterceptorOptions,
|
|
6
|
-
tokenInterceptor,
|
|
7
|
-
} from '@ronas-it/axios-api-client';
|
|
8
|
-
import { storeActions } from '@ronas-it/rtkq-entity-api';
|
|
9
|
-
import { authApi, profileApi, LogInResponse } from '<%= libPath %>/shared/data-access/api';
|
|
10
|
-
import { apiService, configuration } from '<%= libPath %>/shared/data-access/api-client';
|
|
11
|
-
import { AppStorageValue, storage } from '<%= libPath %>/shared/data-access/storage';
|
|
12
|
-
import { authActions, authReducerPath, authSelectors, AuthState } from './slice';
|
|
13
|
-
|
|
14
|
-
export const authListenerMiddleware = createListenerMiddleware<{ [authReducerPath]: AuthState }>();
|
|
15
|
-
|
|
16
|
-
authListenerMiddleware.startListening({
|
|
17
|
-
actionCreator: storeActions.init,
|
|
18
|
-
effect: (_, { dispatch }) => {
|
|
19
|
-
const token = storage.getString(AppStorageValue.TOKEN);
|
|
20
|
-
dispatch(authActions.setIsAuthenticated(Boolean(token)));
|
|
21
|
-
|
|
22
|
-
apiService.useInterceptors({
|
|
23
|
-
request: [[tokenInterceptor({ getToken: () => storage.getString(AppStorageValue.TOKEN) ?? '' })]],
|
|
24
|
-
});
|
|
25
|
-
|
|
26
|
-
dispatch(authActions.setIsAppReady(true));
|
|
27
|
-
},
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
authListenerMiddleware.startListening({
|
|
31
|
-
matcher: authApi.internalActions.middlewareRegistered.match,
|
|
32
|
-
effect: (_, { dispatch, getState }) => {
|
|
33
|
-
const options: RefreshTokenInterceptorOptions = {
|
|
34
|
-
configuration: configuration.auth,
|
|
35
|
-
getIsAuthenticated: () => authSelectors.isAuthenticated(getState()),
|
|
36
|
-
runTokenRefreshRequest: async () => {
|
|
37
|
-
const { token } = await dispatch(authApi.endpoints.refreshToken.initiate()).unwrap();
|
|
38
|
-
storage.set(AppStorageValue.TOKEN, token);
|
|
39
|
-
|
|
40
|
-
return token;
|
|
41
|
-
},
|
|
42
|
-
onError: () => {
|
|
43
|
-
return dispatch(authApi.endpoints.logout.initiate()).unwrap();
|
|
44
|
-
},
|
|
45
|
-
};
|
|
46
|
-
|
|
47
|
-
apiService.useInterceptors({
|
|
48
|
-
request: [[onRequestRefreshTokenInterceptor(options)]],
|
|
49
|
-
response: [[null, onResponseRefreshTokenInterceptor(options)]],
|
|
50
|
-
});
|
|
51
|
-
},
|
|
52
|
-
});
|
|
53
|
-
|
|
54
|
-
authListenerMiddleware.startListening({
|
|
55
|
-
matcher: isAnyOf(authApi.endpoints.login.matchFulfilled, authApi.endpoints.register.matchFulfilled),
|
|
56
|
-
effect: ({ payload: { token } }: { payload: LogInResponse }, { dispatch }) => {
|
|
57
|
-
storage.set(AppStorageValue.TOKEN, token);
|
|
58
|
-
dispatch(authActions.setIsAuthenticated(true));
|
|
59
|
-
},
|
|
60
|
-
});
|
|
61
|
-
|
|
62
|
-
authListenerMiddleware.startListening({
|
|
63
|
-
matcher: isAnyOf(
|
|
64
|
-
authApi.endpoints.logout.matchFulfilled,
|
|
65
|
-
authApi.endpoints.logout.matchRejected,
|
|
66
|
-
profileApi.endpoints.deleteProfile.matchFulfilled,
|
|
67
|
-
),
|
|
68
|
-
effect: (_, { dispatch }) => {
|
|
69
|
-
storage.delete(AppStorageValue.TOKEN);
|
|
70
|
-
dispatch(authActions.setIsAuthenticated(false));
|
|
71
|
-
|
|
72
|
-
dispatch(profileApi.util.resetApiState());
|
|
73
|
-
},
|
|
74
|
-
});
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|