@ronas-it/nx-generators 0.22.0-alpha.8 → 0.23.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.
Files changed (25) hide show
  1. package/package.json +1 -1
  2. package/src/generators/code-checks/files/.eslint.ronasit.cjs.template +2 -0
  3. package/src/generators/expo-app/app-files/app/_layout.tsx.template +3 -0
  4. package/src/generators/expo-app/easignore.js +6 -0
  5. package/src/generators/expo-app/easignore.js.map +1 -1
  6. package/src/generators/sentry/utils/generate-sentry-expo.js +10 -3
  7. package/src/generators/sentry/utils/generate-sentry-expo.js.map +1 -1
  8. package/src/shared/dependencies.d.ts +3 -0
  9. package/src/shared/dependencies.js +6 -3
  10. package/src/shared/dependencies.js.map +1 -1
  11. package/src/shared/generators/ui-kit/lib-files/shared/ui/ui-kit/src/app-version/component.tsx.template +27 -0
  12. package/src/shared/generators/ui-kit/lib-files/shared/ui/ui-kit/src/app-version/index.ts.template +1 -0
  13. package/src/shared/generators/ui-kit/lib-files/shared/ui/ui-kit/src/header/component.tsx.template +35 -8
  14. package/src/shared/generators/ui-kit/lib-files/shared/ui/ui-kit/src/index.ts.template +2 -0
  15. package/src/shared/generators/ui-kit/lib-files/shared/ui/ui-kit/src/keyboard-avoiding-view/component.tsx.template +47 -0
  16. package/src/shared/generators/ui-kit/lib-files/shared/ui/ui-kit/src/keyboard-avoiding-view/index.ts.template +1 -0
  17. package/src/shared/tests-utils/common-mocks.d.ts +0 -14
  18. package/src/shared/tests-utils/common-mocks.js +0 -75
  19. package/src/shared/tests-utils/common-mocks.js.map +0 -1
  20. package/src/shared/tests-utils/index.d.ts +0 -2
  21. package/src/shared/tests-utils/index.js +0 -6
  22. package/src/shared/tests-utils/index.js.map +0 -1
  23. package/src/shared/tests-utils/utils.d.ts +0 -10
  24. package/src/shared/tests-utils/utils.js +0 -92
  25. package/src/shared/tests-utils/utils.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ronas-it/nx-generators",
3
- "version": "0.22.0-alpha.8",
3
+ "version": "0.23.0",
4
4
  "description": "Nx generators for Ronas IT projects",
5
5
  "license": "MIT",
6
6
  "author": "Ronas IT",
@@ -141,6 +141,8 @@ module.exports = (async () => {
141
141
  },
142
142
  ],
143
143
 
144
+ '@typescript-eslint/no-empty-function': 'error',
145
+
144
146
  '@typescript-eslint/no-use-before-define': [
145
147
  'warn',
146
148
  {
@@ -7,6 +7,7 @@ import * as SplashScreen from 'expo-splash-screen';
7
7
  import { StatusBar } from 'expo-status-bar';
8
8
  import { Fragment, ReactElement, useEffect } from 'react';
9
9
  <% if(isStoreEnabled) { %>import { Provider } from 'react-redux';<% } %>
10
+ <% if(withUiKit) { %>import { KeyboardProvider } from 'react-native-keyboard-controller';<% } %>
10
11
 
11
12
  export { ErrorBoundary } from 'expo-router';
12
13
 
@@ -54,7 +55,9 @@ export default function RootLayout(): ReactElement | null {
54
55
  <Fragment>
55
56
  <% if(isStoreEnabled) { %><Provider store={store}><% } %>
56
57
  <StatusBar style='light' />
58
+ <% if(withUiKit) { %><KeyboardProvider><% } %>
57
59
  <App />
60
+ <% if(withUiKit) { %></KeyboardProvider><% } %>
58
61
  <% if(isStoreEnabled) { %></Provider><% } %>
59
62
  </Fragment>
60
63
  );
@@ -28,6 +28,10 @@ i18n/*
28
28
  !patches
29
29
  !patches/**
30
30
 
31
+ # Tools
32
+ !tools
33
+ !tools/**
34
+
31
35
  # Root config files required for the build
32
36
  !package.json
33
37
  !package-lock.json
@@ -43,6 +47,8 @@ function getAppSpecificLines(directory) {
43
47
  !apps/${directory}
44
48
  !apps/${directory}/**
45
49
  apps/${directory}/.expo
50
+ apps/${directory}/android
51
+ apps/${directory}/ios
46
52
 
47
53
  # Libraries: ${directory}
48
54
  !libs/${directory}
@@ -1 +1 @@
1
- {"version":3,"file":"easignore.js","sourceRoot":"","sources":["../../../../../plugin/src/generators/expo-app/easignore.ts"],"names":[],"mappings":";;AAwDA,8CAgBC;AAtED,MAAM,cAAc,GAAG,YAAY,CAAC;AAEpC,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAkCT,CAAC;AAEb,SAAS,mBAAmB,CAAC,SAAiB;IAC5C,OAAO;gBACO,SAAS;QACjB,SAAS;QACT,SAAS;OACV,SAAS;;eAED,SAAS;QAChB,SAAS;QACT,SAAS;;UAEP,SAAS;QACX,SAAS;QACT,SAAS,KAAK,CAAC;AACvB,CAAC;AAED,SAAgB,iBAAiB,CAAC,IAAU,EAAE,SAAiB;IAC7D,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC;IAExD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC;QACjC,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,YAAY,GAAG,IAAI,GAAG,gBAAgB,GAAG,IAAI,CAAC,CAAC;QAE1E,OAAO;IACT,CAAC;IAED,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,OAAO,CAAE,CAAC;IAE5D,IAAI,eAAe,CAAC,QAAQ,CAAC,SAAS,SAAS,IAAI,CAAC,EAAE,CAAC;QACrD,OAAO;IACT,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,eAAe,CAAC,OAAO,EAAE,GAAG,IAAI,GAAG,gBAAgB,GAAG,IAAI,CAAC,CAAC;AACzF,CAAC"}
1
+ {"version":3,"file":"easignore.js","sourceRoot":"","sources":["../../../../../plugin/src/generators/expo-app/easignore.ts"],"names":[],"mappings":";;AA8DA,8CAgBC;AA5ED,MAAM,cAAc,GAAG,YAAY,CAAC;AAEpC,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAsCT,CAAC;AAEb,SAAS,mBAAmB,CAAC,SAAiB;IAC5C,OAAO;gBACO,SAAS;QACjB,SAAS;QACT,SAAS;OACV,SAAS;OACT,SAAS;OACT,SAAS;;eAED,SAAS;QAChB,SAAS;QACT,SAAS;;UAEP,SAAS;QACX,SAAS;QACT,SAAS,KAAK,CAAC;AACvB,CAAC;AAED,SAAgB,iBAAiB,CAAC,IAAU,EAAE,SAAiB;IAC7D,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC;IAExD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC;QACjC,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,YAAY,GAAG,IAAI,GAAG,gBAAgB,GAAG,IAAI,CAAC,CAAC;QAE1E,OAAO;IACT,CAAC;IAED,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,OAAO,CAAE,CAAC;IAE5D,IAAI,eAAe,CAAC,QAAQ,CAAC,SAAS,SAAS,IAAI,CAAC,EAAE,CAAC;QACrD,OAAO;IACT,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,eAAe,CAAC,OAAO,EAAE,GAAG,IAAI,GAAG,gBAAgB,GAAG,IAAI,CAAC,CAAC;AACzF,CAAC"}
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.generateSentryExpo = generateSentryExpo;
4
4
  const devkit_1 = require("@nx/devkit");
5
5
  const tsquery_1 = require("@phenomnomnominal/tsquery");
6
+ const ts_morph_1 = require("ts-morph");
6
7
  const typescript_1 = require("typescript");
7
8
  const dependencies_1 = require("../../../shared/dependencies");
8
9
  const utils_1 = require("../../../shared/utils");
@@ -11,9 +12,15 @@ const addRequiredImportsExpo = (content) => tsquery_1.tsquery.replace(content, '
11
12
  import * as Sentry from "@sentry/react-native";
12
13
  import Constants from "expo-constants";
13
14
  import { isRunningInExpoGo } from 'expo';`);
14
- const removeExportsKeywordForRootLayout = (content) => tsquery_1.tsquery.replace(content, 'FunctionDeclaration:has(Identifier[name="RootLayout"]) > :matches(ExportKeyword, DefaultKeyword)', () => '', {
15
- visitAllChildren: true,
16
- });
15
+ const removeExportsKeywordForRootLayout = (content) => {
16
+ const sourceFile = new ts_morph_1.Project({ useInMemoryFileSystem: true }).createSourceFile('file.tsx', content, {
17
+ scriptKind: ts_morph_1.ScriptKind.TSX,
18
+ });
19
+ const rootLayout = sourceFile.getFunctions().find((func) => func.getName() === 'RootLayout');
20
+ rootLayout === null || rootLayout === void 0 ? void 0 : rootLayout.setIsDefaultExport(false);
21
+ rootLayout === null || rootLayout === void 0 ? void 0 : rootLayout.setIsExported(false);
22
+ return sourceFile.getFullText();
23
+ };
17
24
  const updateExtraConfig = (content, dsn) => (0, typescript_1.createPrinter)().printFile(tsquery_1.tsquery.map(tsquery_1.tsquery.ast(content), 'VariableDeclaration > Identifier[name="extra"] ~ ObjectLiteralExpression', (node) => (0, create_object_literal_expression_1.createObjectLiteralExpression)([
18
25
  {
19
26
  key: 'sentry',
@@ -1 +1 @@
1
- {"version":3,"file":"generate-sentry-expo.js","sourceRoot":"","sources":["../../../../../../plugin/src/generators/sentry/utils/generate-sentry-expo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generate-sentry-expo.js","sourceRoot":"","sources":["../../../../../../plugin/src/generators/sentry/utils/generate-sentry-expo.ts"],"names":[],"mappings":"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"}
@@ -44,10 +44,13 @@ export declare const dependencies: {
44
44
  'react-native-nitro-modules': string;
45
45
  };
46
46
  'ui-kit': {
47
+ 'expo-constants': string;
47
48
  'react-native-reanimated': string;
48
49
  'react-native-worklets': string;
49
50
  'expo-image': string;
51
+ 'expo-router': string;
50
52
  'react-native-toast-message': string;
53
+ 'react-native-keyboard-controller': string;
51
54
  };
52
55
  store: {
53
56
  '@ronas-it/rtkq-entity-api': string;
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.devDependencies = exports.dependencies = void 0;
4
4
  exports.dependencies = {
5
5
  'expo-app': {
6
- '@ronas-it/react-native-common-modules': '~1.1.0',
6
+ '@ronas-it/react-native-common-modules': '~2.0.0',
7
7
  'react-native-mmkv': '~3.3.3',
8
8
  'expo-constants': '~18.0.9',
9
9
  'expo-dev-client': '~6.0.15',
@@ -33,7 +33,7 @@ exports.dependencies = {
33
33
  'react-dom': '~19.2.4',
34
34
  },
35
35
  'api-client': {
36
- '@ronas-it/axios-api-client': '^0.1.2',
36
+ '@ronas-it/axios-api-client': '^0.2.0',
37
37
  },
38
38
  auth: {
39
39
  luxon: '^3.7.2',
@@ -47,13 +47,16 @@ exports.dependencies = {
47
47
  'react-native-nitro-modules': '~0.35.2',
48
48
  },
49
49
  'ui-kit': {
50
+ 'expo-constants': '~18.0.13',
50
51
  'react-native-reanimated': '~4.1.1',
51
52
  'react-native-worklets': '0.5.1',
52
53
  'expo-image': '~3.0.10',
54
+ 'expo-router': '~6.0.12',
53
55
  'react-native-toast-message': '^2.3.3',
56
+ 'react-native-keyboard-controller': '^1.20.7',
54
57
  },
55
58
  store: {
56
- '@ronas-it/rtkq-entity-api': '^0.5.0',
59
+ '@ronas-it/rtkq-entity-api': '^1.1.1',
57
60
  'react-redux': '^9.2.0',
58
61
  },
59
62
  form: {
@@ -1 +1 @@
1
- {"version":3,"file":"dependencies.js","sourceRoot":"","sources":["../../../../plugin/src/shared/dependencies.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dependencies.js","sourceRoot":"","sources":["../../../../plugin/src/shared/dependencies.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import Constants from 'expo-constants';
2
+ import { ReactElement } from 'react';
3
+ import { Platform, View } from 'react-native';
4
+ import { StyleSheet } from 'react-native-unistyles';
5
+ import { AppText } from '../text';
6
+
7
+ export function AppVersion(): ReactElement {
8
+ const build =
9
+ Platform.OS === 'ios'
10
+ ? Constants.expoConfig?.ios?.buildNumber
11
+ : Constants.expoConfig?.android?.versionCode;
12
+
13
+ return (
14
+ <View style={styles.container}>
15
+ <AppText>{Constants.expoConfig?.version}</AppText>
16
+ <AppText>{`(${build})`}</AppText>
17
+ </View>
18
+ );
19
+ }
20
+
21
+ const styles = StyleSheet.create(({ spacings }) => ({
22
+ container: {
23
+ gap: spacings.xs,
24
+ flexDirection: 'row',
25
+ justifyContent: 'center',
26
+ },
27
+ }));
@@ -1,38 +1,54 @@
1
1
  import { NativeStackHeaderProps } from '@react-navigation/native-stack';
2
2
  import { AppSafeAreaView } from '@ronas-it/react-native-common-modules/safe-area-view';
3
+ import { useRouter } from 'expo-router';
3
4
  import { ReactElement } from 'react';
4
5
  import { View } from 'react-native';
5
6
  import { StyleSheet } from 'react-native-unistyles';
6
7
  import { AppPressableIcon } from '../pressable-icon';
7
- import { AppText } from '../text';
8
+ import { AppText, type AppTextProps } from '../text';
8
9
 
9
10
  export interface AppHeaderProps {
10
11
  title?: string;
12
+ titleOptions?: Omit<AppTextProps, 'children'>;
13
+ subtitle?: string;
14
+ subtitleOptions?: Omit<AppTextProps, 'children'>;
11
15
  accessoryLeft?: ReactElement;
12
16
  accessoryRight?: ReactElement;
13
- onGoBack?: () => void;
14
17
  }
15
18
 
16
19
  export function AppHeader({
17
20
  title,
21
+ titleOptions,
22
+ subtitle,
23
+ subtitleOptions,
18
24
  accessoryLeft,
19
25
  accessoryRight,
20
- onGoBack,
21
26
  ...props
22
27
  }: AppHeaderProps & NativeStackHeaderProps): ReactElement {
28
+ const router = useRouter();
29
+ const canGoBack = router.canGoBack();
30
+ const goBack = (): void => router.back();
31
+
23
32
  const options = props.options;
24
33
  const titleText = title || options.title;
25
34
 
26
35
  const renderBackButton = (): ReactElement | null => {
27
- return onGoBack ? <AppPressableIcon name='chevronLeft' onPress={onGoBack} /> : null;
36
+ return canGoBack ? <AppPressableIcon name='chevronLeft' onPress={goBack} /> : null;
28
37
  };
29
38
 
30
39
  return (
31
40
  <AppSafeAreaView edges={['top']} style={styles.container}>
32
41
  <View style={styles.accessory}>{accessoryLeft ? accessoryLeft : renderBackButton()}</View>
33
- <AppText variant='bodyLargeBold' style={styles.text}>
34
- {titleText}
35
- </AppText>
42
+ <View style={styles.center}>
43
+ <AppText variant='bodyLargeBold' {...titleOptions} style={[styles.titleText, titleOptions?.style]}>
44
+ {titleText}
45
+ </AppText>
46
+ {!!subtitle && (
47
+ <AppText variant='bodySmall' {...subtitleOptions} style={[styles.subtitleText, subtitleOptions?.style]}>
48
+ {subtitle}
49
+ </AppText>
50
+ )}
51
+ </View>
36
52
  <View style={styles.accessory}>{accessoryRight}</View>
37
53
  </AppSafeAreaView>
38
54
  );
@@ -47,11 +63,22 @@ const styles = StyleSheet.create(({ colors, spacings }, { screen }) => ({
47
63
  justifyContent: 'space-between',
48
64
  alignItems: 'center',
49
65
  },
50
- text: {
66
+ center: {
67
+ flex: 1,
68
+ alignItems: 'center',
69
+ justifyContent: 'center',
70
+ },
71
+ titleText: {
51
72
  textAlign: 'center',
52
73
  // 44 - header accessory width, spacings.md - header horizontal padding
53
74
  maxWidth: screen.width - 44 * 2 - spacings.md * 2,
54
75
  },
76
+ subtitleText: {
77
+ textAlign: 'center',
78
+ marginTop: spacings.xxs,
79
+ color: colors.textSecondary,
80
+ maxWidth: screen.width - 44 * 2 - spacings.md * 2,
81
+ },
55
82
  accessory: {
56
83
  minHeight: 44,
57
84
  minWidth: 44,
@@ -1,4 +1,5 @@
1
1
  export * from './assets';
2
+ export * from './app-version';
2
3
  export * from './button';
3
4
  export * from './icon';
4
5
  export * from './pressable';
@@ -9,6 +10,7 @@ export * from './text';
9
10
  export * from './text-input';
10
11
  export * from './header';
11
12
  export * from './image';
13
+ export * from './keyboard-avoiding-view';
12
14
  export * from './checkbox';
13
15
  export * from './under-construction';
14
16
  export * from './search-input';
@@ -0,0 +1,47 @@
1
+ import { ReactElement, Ref } from 'react';
2
+ import { View } from 'react-native';
3
+ import {
4
+ KeyboardAvoidingView,
5
+ KeyboardAvoidingViewProps,
6
+ KeyboardAwareScrollView,
7
+ KeyboardAwareScrollViewProps,
8
+ KeyboardAwareScrollViewRef,
9
+ } from 'react-native-keyboard-controller';
10
+ import { commonStyle, rem } from '<%= libPath %>/shared/ui/styles';
11
+
12
+ type AppKeyboardAvoidingViewProps =
13
+ | ({
14
+ isScrollable: true;
15
+ ref?: Ref<KeyboardAwareScrollViewRef>;
16
+ } & KeyboardAwareScrollViewProps)
17
+ | ({
18
+ isScrollable?: false;
19
+ ref?: Ref<View>;
20
+ } & KeyboardAvoidingViewProps);
21
+
22
+ export const AppKeyboardAvoidingView = ({
23
+ children,
24
+ ref,
25
+ isScrollable,
26
+ ...restProps
27
+ }: AppKeyboardAvoidingViewProps): ReactElement => {
28
+ return isScrollable ? (
29
+ <KeyboardAwareScrollView
30
+ ref={ref as Ref<KeyboardAwareScrollViewRef>}
31
+ keyboardShouldPersistTaps='handled'
32
+ showsVerticalScrollIndicator={false}
33
+ alwaysBounceVertical={false}
34
+ bottomOffset={rem}
35
+ style={commonStyle.fullHeight}
36
+ {...restProps}>
37
+ {children}
38
+ </KeyboardAwareScrollView>
39
+ ) : (
40
+ <KeyboardAvoidingView
41
+ ref={ref as Ref<View>}
42
+ behavior='padding'
43
+ {...(restProps as Omit<KeyboardAvoidingViewProps, 'behavior' | 'contentContainerStyle'>)}>
44
+ {children}
45
+ </KeyboardAvoidingView>
46
+ );
47
+ };
@@ -1,14 +0,0 @@
1
- export declare const installPackagesTaskMock: jest.Mock;
2
- export declare const execSyncMock: jest.Mock;
3
- export declare const existsSyncMock: jest.Mock;
4
- export declare const generateFilesMock: jest.Mock;
5
- export declare const formatFilesMock: jest.Mock;
6
- export declare const addDependenciesMock: jest.Mock;
7
- export declare const readJsonMock: jest.Mock;
8
- export declare const writeJsonMock: jest.Mock;
9
- export declare const readProjectConfigurationMock: jest.Mock;
10
- export declare const getProjectsMock: jest.Mock;
11
- export declare const confirmMock: jest.Mock;
12
- export declare const askQuestionMock: jest.Mock;
13
- export declare const getLibraryDetailsByNameMock: jest.Mock;
14
- export declare const getImportPathPrefixMock: jest.Mock;
@@ -1,75 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getImportPathPrefixMock = exports.getLibraryDetailsByNameMock = exports.askQuestionMock = exports.confirmMock = exports.getProjectsMock = exports.readProjectConfigurationMock = exports.writeJsonMock = exports.readJsonMock = exports.addDependenciesMock = exports.formatFilesMock = exports.generateFilesMock = exports.existsSyncMock = exports.execSyncMock = exports.installPackagesTaskMock = void 0;
4
- /// <reference types="jest" />
5
- const child_process = require("child_process");
6
- const fs = require("fs");
7
- const devkit = require("@nx/devkit");
8
- const utils_1 = require("./utils");
9
- // Mock child_process.execSync globally
10
- jest.mock('child_process', () => ({
11
- execSync: jest.fn(),
12
- }));
13
- // Mock fs methods commonly used
14
- jest.mock('fs', () => {
15
- const actualFs = jest.requireActual('fs');
16
- return Object.assign(Object.assign({}, actualFs), { existsSync: jest.fn(), readdirSync: actualFs.readdirSync, readFileSync: actualFs.readFileSync });
17
- });
18
- // Mock @nx/devkit utilities commonly used in generators
19
- jest.mock('@nx/devkit', () => ({
20
- readJson: jest.fn(),
21
- writeJson: jest.fn(),
22
- generateFiles: jest.fn((tree, src, dest, vars) => {
23
- (0, utils_1.mockGenerateFiles)(tree, src, dest, vars);
24
- }),
25
- formatFiles: jest.fn(),
26
- addDependenciesToPackageJson: jest.fn(),
27
- removeDependenciesFromPackageJson: jest.fn(),
28
- installPackagesTask: jest.fn(),
29
- readProjectConfiguration: jest.fn(),
30
- updateProjectConfiguration: jest.fn(),
31
- getProjects: jest.fn(),
32
- output: {
33
- log: jest.fn(),
34
- warn: jest.fn(),
35
- bold: (text) => text,
36
- },
37
- Tree: jest.fn(),
38
- }));
39
- // Mock enquirer AutoComplete used in some generators
40
- jest.mock('enquirer', () => ({
41
- Confirm: jest.fn().mockImplementation(() => ({
42
- run: jest.fn().mockResolvedValue(true), // simulate user confirmed "yes"
43
- })),
44
- AutoComplete: jest.fn().mockImplementation(() => ({
45
- run: jest.fn().mockResolvedValue('libs/shared/ui'),
46
- })),
47
- }));
48
- // Mock cli-utils common functions partially
49
- jest.mock('../utils/cli-utils', () => {
50
- const actualUtils = jest.requireActual('../utils/cli-utils');
51
- return Object.assign(Object.assign({}, actualUtils), { confirm: jest.fn(() => Promise.resolve(true)), askQuestion: jest.fn(), getLibraryDetailsByName: jest.fn() });
52
- });
53
- // Mock config-utils common functions partially
54
- jest.mock('../utils/config-utils', () => {
55
- const actualUtils = jest.requireActual('../utils/config-utils');
56
- return Object.assign(Object.assign({}, actualUtils), { getImportPathPrefix: jest.fn(() => '@proj') });
57
- });
58
- jest.mock('../utils/get-app-framework-name', () => ({
59
- getAppFrameworkName: jest.fn(),
60
- }));
61
- exports.installPackagesTaskMock = devkit.installPackagesTask;
62
- exports.execSyncMock = child_process.execSync;
63
- exports.existsSyncMock = fs.existsSync;
64
- exports.generateFilesMock = devkit.generateFiles;
65
- exports.formatFilesMock = devkit.formatFiles;
66
- exports.addDependenciesMock = devkit.addDependenciesToPackageJson;
67
- exports.readJsonMock = devkit.readJson;
68
- exports.writeJsonMock = devkit.writeJson;
69
- exports.readProjectConfigurationMock = devkit.readProjectConfiguration;
70
- exports.getProjectsMock = devkit.getProjects;
71
- exports.confirmMock = require('../utils/cli-utils').confirm;
72
- exports.askQuestionMock = require('../utils/cli-utils').askQuestion;
73
- exports.getLibraryDetailsByNameMock = require('../utils/cli-utils').getLibraryDetailsByName;
74
- exports.getImportPathPrefixMock = require('../utils/config-utils').getImportPathPrefix;
75
- //# sourceMappingURL=common-mocks.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"common-mocks.js","sourceRoot":"","sources":["../../../../../plugin/src/shared/tests-utils/common-mocks.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export * from './utils';
2
- export * from './common-mocks';
@@ -1,6 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
- tslib_1.__exportStar(require("./utils"), exports);
5
- tslib_1.__exportStar(require("./common-mocks"), exports);
6
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../plugin/src/shared/tests-utils/index.ts"],"names":[],"mappings":";;;AAAA,kDAAwB;AACxB,yDAA+B"}
@@ -1,10 +0,0 @@
1
- import * as devkit from '@nx/devkit';
2
- import { Tree } from '@nx/devkit';
3
- interface AssertFirstLineOptions {
4
- placeholders?: Record<string, string>;
5
- /** Basename match, or glob with `*` (e.g. `*.ttf`). */
6
- ignoreFiles?: Array<string>;
7
- }
8
- export declare function assertFirstLine(sourceDir: string, targetDir: string, tree: devkit.Tree, options?: AssertFirstLineOptions): void;
9
- export declare function mockGenerateFiles(tree: Tree, srcDir: string, destDir: string, templateVars?: Record<string, string>): void;
10
- export {};
@@ -1,92 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.assertFirstLine = assertFirstLine;
4
- exports.mockGenerateFiles = mockGenerateFiles;
5
- const fs = require("fs");
6
- const path = require("path");
7
- const BINARY_FILE_PATTERN = /\.(ttf|otf|eot|woff2?|png|jpe?g|gif|ico|webp|pdf)$/i;
8
- function fileNameMatchesIgnorePattern(fileName, pattern) {
9
- if (!pattern.includes('*')) {
10
- return fileName === pattern;
11
- }
12
- const regexSource = pattern
13
- .split('*')
14
- .map((segment) => segment.replace(/[.+^${}()|[\]\\]/g, '\\$&'))
15
- .join('.*');
16
- return new RegExp(`^${regexSource}$`).test(fileName);
17
- }
18
- function assertFirstLine(sourceDir, targetDir, tree, options = {}) {
19
- var _a;
20
- const { placeholders = {}, ignoreFiles = [] } = options;
21
- const entries = fs.readdirSync(sourceDir, { withFileTypes: true });
22
- for (const entry of entries) {
23
- const srcPath = path.join(sourceDir, entry.name);
24
- if (entry.isDirectory()) {
25
- assertFirstLine(srcPath, path.join(targetDir, entry.name), tree, options);
26
- }
27
- else {
28
- if (ignoreFiles.some((p) => fileNameMatchesIgnorePattern(entry.name, p))) {
29
- continue;
30
- }
31
- let fileName = entry.name.replace(/\.template$/, '');
32
- Object.entries(placeholders).forEach(([key, value]) => {
33
- fileName = fileName.replace(new RegExp(`__${key}__`, 'g'), value);
34
- });
35
- const targetFile = path.join(targetDir, fileName).split(path.sep).join('/');
36
- let expectedFirstLine = fs.readFileSync(srcPath, 'utf8').split('\n')[0].trim();
37
- // Substitute placeholders in first line
38
- Object.entries(placeholders).forEach(([key, value]) => {
39
- expectedFirstLine = expectedFirstLine.replace(new RegExp(`<%=\\s*${key}\\s*%>`, 'g'), value);
40
- expectedFirstLine = expectedFirstLine.replace(new RegExp(`__${key}__`, 'g'), value);
41
- });
42
- // Check for unresolved placeholders in expected line
43
- const unresolved = expectedFirstLine.match(/<%=?\s*\w+\s*%>|__\w+__/);
44
- if (unresolved) {
45
- throw new Error(`Unresolved placeholder '${unresolved[0]}' found in template '${srcPath}' first line: '${expectedFirstLine}'. ` +
46
- `You may have forgotten to pass it in placeholders.`);
47
- }
48
- const generatedContent = (_a = tree.read(targetFile)) === null || _a === void 0 ? void 0 : _a.toString();
49
- if (!generatedContent) {
50
- throw new Error(`Expected generated file not found: ${targetFile}`);
51
- }
52
- const actualFirstLine = generatedContent.split('\n')[0].trim();
53
- expect(actualFirstLine).toBe(expectedFirstLine);
54
- }
55
- }
56
- }
57
- function mockGenerateFiles(tree, srcDir, destDir, templateVars) {
58
- function copyRecursive(src, dest) {
59
- const entries = fs.readdirSync(src, { withFileTypes: true });
60
- for (const entry of entries) {
61
- const srcPath = path.join(src, entry.name);
62
- if (entry.isDirectory()) {
63
- copyRecursive(srcPath, path.join(dest, entry.name));
64
- }
65
- else {
66
- let fileName = entry.name.replace(/\.template$/, '');
67
- if (templateVars) {
68
- Object.entries(templateVars).forEach(([key, value]) => {
69
- fileName = fileName.replace(new RegExp(`__${key}__`, 'g'), value);
70
- });
71
- }
72
- const destPath = path.join(dest, fileName).split(path.sep).join('/');
73
- if (BINARY_FILE_PATTERN.test(fileName)) {
74
- tree.write(destPath, fs.readFileSync(srcPath));
75
- continue;
76
- }
77
- let content = fs.readFileSync(srcPath, 'utf8');
78
- if (templateVars) {
79
- Object.entries(templateVars).forEach(([key, value]) => {
80
- const regex1 = new RegExp(`<%=\\s*${key}\\s*%>`, 'g');
81
- const regex2 = new RegExp(`__${key}__`, 'g');
82
- content = content.replace(regex1, value);
83
- content = content.replace(regex2, value);
84
- });
85
- }
86
- tree.write(destPath, content);
87
- }
88
- }
89
- }
90
- copyRecursive(srcDir, destDir.split(path.sep).join('/'));
91
- }
92
- //# sourceMappingURL=utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../plugin/src/shared/tests-utils/utils.ts"],"names":[],"mappings":";;AA0BA,0CAwDC;AAED,8CA8CC;AAlID,yBAAyB;AACzB,6BAA6B;AAI7B,MAAM,mBAAmB,GAAG,qDAAqD,CAAC;AAElF,SAAS,4BAA4B,CAAC,QAAgB,EAAE,OAAe;IACrE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3B,OAAO,QAAQ,KAAK,OAAO,CAAC;IAC9B,CAAC;IAED,MAAM,WAAW,GAAG,OAAO;SACxB,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;SAC9D,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,OAAO,IAAI,MAAM,CAAC,IAAI,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACvD,CAAC;AAQD,SAAgB,eAAe,CAC7B,SAAiB,EACjB,SAAiB,EACjB,IAAiB,EACjB,UAAkC,EAAE;;IAEpC,MAAM,EAAE,YAAY,GAAG,EAAE,EAAE,WAAW,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC;IAExD,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAEnE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAEjD,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAC5E,CAAC;aAAM,CAAC;YACN,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,4BAA4B,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACzE,SAAS;YACX,CAAC;YAED,IAAI,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;YAErD,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;gBACpD,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,KAAK,GAAG,IAAI,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;YACpE,CAAC,CAAC,CAAC;YAEH,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAE5E,IAAI,iBAAiB,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAE/E,wCAAwC;YACxC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;gBACpD,iBAAiB,GAAG,iBAAiB,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,UAAU,GAAG,QAAQ,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;gBAC7F,iBAAiB,GAAG,iBAAiB,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,KAAK,GAAG,IAAI,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;YACtF,CAAC,CAAC,CAAC;YAEH,qDAAqD;YACrD,MAAM,UAAU,GAAG,iBAAiB,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;YAEtE,IAAI,UAAU,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CACb,2BAA2B,UAAU,CAAC,CAAC,CAAC,wBAAwB,OAAO,kBAAkB,iBAAiB,KAAK;oBAC7G,oDAAoD,CACvD,CAAC;YACJ,CAAC;YAED,MAAM,gBAAgB,GAAG,MAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,0CAAE,QAAQ,EAAE,CAAC;YAE3D,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACtB,MAAM,IAAI,KAAK,CAAC,sCAAsC,UAAU,EAAE,CAAC,CAAC;YACtE,CAAC;YAED,MAAM,eAAe,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC/D,MAAM,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAgB,iBAAiB,CAC/B,IAAU,EACV,MAAc,EACd,OAAe,EACf,YAAqC;IAErC,SAAS,aAAa,CAAC,GAAW,EAAE,IAAY;QAC9C,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAE7D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAE3C,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxB,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YACtD,CAAC;iBAAM,CAAC;gBACN,IAAI,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;gBAErD,IAAI,YAAY,EAAE,CAAC;oBACjB,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;wBACpD,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,KAAK,GAAG,IAAI,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;oBACpE,CAAC,CAAC,CAAC;gBACL,CAAC;gBAED,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAErE,IAAI,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACvC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;oBAC/C,SAAS;gBACX,CAAC;gBAED,IAAI,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBAE/C,IAAI,YAAY,EAAE,CAAC;oBACjB,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;wBACpD,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,UAAU,GAAG,QAAQ,EAAE,GAAG,CAAC,CAAC;wBACtD,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,KAAK,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC;wBAC7C,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;wBACzC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;oBAC3C,CAAC,CAAC,CAAC;gBACL,CAAC;gBAED,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;IACH,CAAC;IACD,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3D,CAAC"}