@idealyst/cli 1.1.9 → 1.2.1
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/dist/commands/add.js +233 -0
- package/dist/commands/add.js.map +1 -0
- package/dist/commands/index.js +13 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/info.js +193 -0
- package/dist/commands/info.js.map +1 -0
- package/dist/commands/init.js +155 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/constants.js +119 -0
- package/dist/constants.js.map +1 -0
- package/dist/generators/core/index.js +23 -0
- package/dist/generators/core/index.js.map +1 -0
- package/dist/generators/core/mobile.js +286 -0
- package/dist/generators/core/mobile.js.map +1 -0
- package/dist/generators/core/shared.js +207 -0
- package/dist/generators/core/shared.js.map +1 -0
- package/dist/generators/core/web.js +377 -0
- package/dist/generators/core/web.js.map +1 -0
- package/dist/generators/extensions/api.js +223 -0
- package/dist/generators/extensions/api.js.map +1 -0
- package/dist/generators/extensions/devcontainer.js +510 -0
- package/dist/generators/extensions/devcontainer.js.map +1 -0
- package/dist/generators/extensions/graphql.js +202 -0
- package/dist/generators/extensions/graphql.js.map +1 -0
- package/dist/generators/extensions/index.js +17 -0
- package/dist/generators/extensions/index.js.map +1 -0
- package/dist/generators/extensions/prisma.js +249 -0
- package/dist/generators/extensions/prisma.js.map +1 -0
- package/dist/generators/extensions/trpc.js +258 -0
- package/dist/generators/extensions/trpc.js.map +1 -0
- package/dist/generators/index.js +106 -4
- package/dist/generators/index.js.map +1 -1
- package/dist/generators/reactNative.js +177 -0
- package/dist/generators/reactNative.js.map +1 -0
- package/dist/generators/workspace.js +272 -0
- package/dist/generators/workspace.js.map +1 -0
- package/dist/identifiers/android.js +75 -0
- package/dist/identifiers/android.js.map +1 -0
- package/dist/identifiers/index.js +35 -0
- package/dist/identifiers/index.js.map +1 -0
- package/dist/identifiers/ios.js +65 -0
- package/dist/identifiers/ios.js.map +1 -0
- package/dist/index.js +41 -319
- package/dist/index.js.map +1 -1
- package/dist/templates/copier.js +135 -0
- package/dist/templates/copier.js.map +1 -0
- package/dist/templates/index.js +23 -0
- package/dist/templates/index.js.map +1 -0
- package/dist/templates/merger.js +113 -0
- package/dist/templates/merger.js.map +1 -0
- package/dist/templates/processor.js +142 -0
- package/dist/templates/processor.js.map +1 -0
- package/dist/types/commands/add.d.ts +14 -0
- package/dist/types/commands/index.d.ts +6 -0
- package/dist/types/commands/info.d.ts +10 -0
- package/dist/types/commands/init.d.ts +19 -0
- package/dist/types/constants.d.ts +76 -0
- package/dist/types/generators/core/index.d.ts +6 -0
- package/dist/types/generators/core/mobile.d.ts +13 -0
- package/dist/types/generators/core/shared.d.ts +8 -0
- package/dist/types/generators/core/web.d.ts +8 -0
- package/dist/types/generators/extensions/api.d.ts +8 -0
- package/dist/types/generators/extensions/devcontainer.d.ts +15 -0
- package/dist/types/generators/extensions/graphql.d.ts +8 -0
- package/dist/types/generators/extensions/index.d.ts +8 -0
- package/dist/types/generators/extensions/prisma.d.ts +8 -0
- package/dist/types/generators/extensions/trpc.d.ts +9 -0
- package/dist/types/generators/index.d.ts +11 -3
- package/dist/types/generators/reactNative.d.ts +19 -0
- package/dist/types/generators/workspace.d.ts +8 -0
- package/dist/types/identifiers/android.d.ts +26 -0
- package/dist/types/identifiers/index.d.ts +26 -0
- package/dist/types/identifiers/ios.d.ts +21 -0
- package/dist/types/index.d.ts +3 -0
- package/dist/types/templates/copier.d.ts +24 -0
- package/dist/types/templates/index.d.ts +6 -0
- package/dist/types/templates/merger.d.ts +43 -0
- package/dist/types/templates/processor.d.ts +39 -0
- package/dist/types/types.d.ts +153 -5
- package/dist/types/utils/filesystem.d.ts +56 -0
- package/dist/types/utils/index.d.ts +7 -0
- package/dist/types/utils/logger.d.ts +58 -0
- package/dist/types/utils/shell.d.ts +35 -0
- package/dist/types/utils/validation.d.ts +32 -0
- package/dist/types/wizard/index.d.ts +20 -0
- package/dist/types/wizard/steps/apiExtension.d.ts +5 -0
- package/dist/types/wizard/steps/appDisplayName.d.ts +5 -0
- package/dist/types/wizard/steps/devcontainerExtension.d.ts +5 -0
- package/dist/types/wizard/steps/graphqlExtension.d.ts +5 -0
- package/dist/types/wizard/steps/index.d.ts +12 -0
- package/dist/types/wizard/steps/orgDomain.d.ts +5 -0
- package/dist/types/wizard/steps/prismaExtension.d.ts +5 -0
- package/dist/types/wizard/steps/projectName.d.ts +5 -0
- package/dist/types/wizard/steps/summary.d.ts +5 -0
- package/dist/types/wizard/steps/trpcExtension.d.ts +5 -0
- package/dist/types/wizard/validators.d.ts +17 -0
- package/dist/types.js +41 -0
- package/dist/types.js.map +1 -1
- package/dist/utils/filesystem.js +173 -0
- package/dist/utils/filesystem.js.map +1 -0
- package/dist/utils/index.js +24 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/logger.js +95 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/shell.js +113 -0
- package/dist/utils/shell.js.map +1 -0
- package/dist/utils/validation.js +196 -0
- package/dist/utils/validation.js.map +1 -0
- package/dist/wizard/index.js +177 -0
- package/dist/wizard/index.js.map +1 -0
- package/dist/wizard/steps/apiExtension.js +33 -0
- package/dist/wizard/steps/apiExtension.js.map +1 -0
- package/dist/wizard/steps/appDisplayName.js +53 -0
- package/dist/wizard/steps/appDisplayName.js.map +1 -0
- package/dist/wizard/steps/devcontainerExtension.js +78 -0
- package/dist/wizard/steps/devcontainerExtension.js.map +1 -0
- package/dist/wizard/steps/graphqlExtension.js +37 -0
- package/dist/wizard/steps/graphqlExtension.js.map +1 -0
- package/dist/wizard/steps/index.js +25 -0
- package/dist/wizard/steps/index.js.map +1 -0
- package/dist/wizard/steps/orgDomain.js +40 -0
- package/dist/wizard/steps/orgDomain.js.map +1 -0
- package/dist/wizard/steps/prismaExtension.js +33 -0
- package/dist/wizard/steps/prismaExtension.js.map +1 -0
- package/dist/wizard/steps/projectName.js +40 -0
- package/dist/wizard/steps/projectName.js.map +1 -0
- package/dist/wizard/steps/summary.js +107 -0
- package/dist/wizard/steps/summary.js.map +1 -0
- package/dist/wizard/steps/trpcExtension.js +37 -0
- package/dist/wizard/steps/trpcExtension.js.map +1 -0
- package/dist/wizard/validators.js +35 -0
- package/dist/wizard/validators.js.map +1 -0
- package/package.json +6 -19
- package/README.md +0 -110
- package/dist/generators/init.js +0 -268
- package/dist/generators/init.js.map +0 -1
- package/dist/generators/utils.js +0 -682
- package/dist/generators/utils.js.map +0 -1
- package/dist/scripts/configure-react-native-monorepo.js +0 -144
- package/dist/scripts/configure-react-native-monorepo.js.map +0 -1
- package/dist/template/.devcontainer/Dockerfile +0 -26
- package/dist/template/.devcontainer/devcontainer.json +0 -113
- package/dist/template/.devcontainer/docker-compose.yml +0 -59
- package/dist/template/.devcontainer/figma-mcp.sh +0 -32
- package/dist/template/.devcontainer/gitignore.template +0 -2
- package/dist/template/.devcontainer/setup.sh +0 -45
- package/dist/template/DOCKER.md +0 -0
- package/dist/template/Dockerfile +0 -111
- package/dist/template/README.md +0 -233
- package/dist/template/docker/nginx/prod.conf +0 -238
- package/dist/template/docker/nginx.conf +0 -131
- package/dist/template/docker/postgres/init.sql +0 -41
- package/dist/template/docker/prometheus/prometheus.yml +0 -52
- package/dist/template/docker-compose.prod.yml +0 -146
- package/dist/template/docker-compose.yml +0 -143
- package/dist/template/dockerignore.template +0 -151
- package/dist/template/env.example.template +0 -36
- package/dist/template/gitignore.template +0 -56
- package/dist/template/jest.config.js +0 -20
- package/dist/template/mcp.json.template +0 -8
- package/dist/template/package.json +0 -45
- package/dist/template/packages/api/README.md +0 -510
- package/dist/template/packages/api/__tests__/api.test.ts +0 -26
- package/dist/template/packages/api/env.example.template +0 -6
- package/dist/template/packages/api/gitignore.template +0 -35
- package/dist/template/packages/api/jest.config.js +0 -23
- package/dist/template/packages/api/jest.setup.js +0 -9
- package/dist/template/packages/api/package.json +0 -66
- package/dist/template/packages/api/src/context.ts +0 -52
- package/dist/template/packages/api/src/controllers/TestController.ts +0 -0
- package/dist/template/packages/api/src/graphql/builder.ts +0 -75
- package/dist/template/packages/api/src/graphql/generated.ts +0 -64
- package/dist/template/packages/api/src/graphql/index.ts +0 -75
- package/dist/template/packages/api/src/graphql/types/index.ts +0 -44
- package/dist/template/packages/api/src/graphql/types/test.ts +0 -245
- package/dist/template/packages/api/src/index.ts +0 -26
- package/dist/template/packages/api/src/lib/database.ts +0 -23
- package/dist/template/packages/api/src/router/index.ts +0 -163
- package/dist/template/packages/api/src/routers/test.ts +0 -161
- package/dist/template/packages/api/src/server.ts +0 -68
- package/dist/template/packages/api/src/trpc.ts +0 -28
- package/dist/template/packages/api/tsconfig.json +0 -44
- package/dist/template/packages/database/README.md +0 -162
- package/dist/template/packages/database/gitignore.template +0 -41
- package/dist/template/packages/database/package.json +0 -49
- package/dist/template/packages/database/prisma/seed.ts +0 -64
- package/dist/template/packages/database/schema.prisma +0 -107
- package/dist/template/packages/database/src/index.ts +0 -15
- package/dist/template/packages/database/src/validators.ts +0 -10
- package/dist/template/packages/database/tsconfig.json +0 -18
- package/dist/template/packages/mobile/README.md +0 -86
- package/dist/template/packages/mobile/__tests__/App.test.tsx +0 -156
- package/dist/template/packages/mobile/__tests__/components.test.tsx +0 -300
- package/dist/template/packages/mobile/app.json +0 -5
- package/dist/template/packages/mobile/babel.config.js +0 -10
- package/dist/template/packages/mobile/gitignore.template +0 -73
- package/dist/template/packages/mobile/index.js +0 -6
- package/dist/template/packages/mobile/jest.config.js +0 -21
- package/dist/template/packages/mobile/jest.setup.js +0 -12
- package/dist/template/packages/mobile/metro.config.js +0 -36
- package/dist/template/packages/mobile/package.json +0 -60
- package/dist/template/packages/mobile/src/App.tsx +0 -8
- package/dist/template/packages/mobile/src/utils/trpc.ts +0 -7
- package/dist/template/packages/mobile/tsconfig.json +0 -28
- package/dist/template/packages/shared/README.md +0 -135
- package/dist/template/packages/shared/__tests__/shared.test.ts +0 -51
- package/dist/template/packages/shared/gitignore.template +0 -35
- package/dist/template/packages/shared/jest.config.js +0 -22
- package/dist/template/packages/shared/package.json +0 -68
- package/dist/template/packages/shared/src/components/App.tsx +0 -57
- package/dist/template/packages/shared/src/components/HelloWorld.tsx +0 -531
- package/dist/template/packages/shared/src/components/index.ts +0 -1
- package/dist/template/packages/shared/src/graphql/client.ts +0 -34
- package/dist/template/packages/shared/src/index.ts +0 -22
- package/dist/template/packages/shared/src/navigation/AppRouter.tsx +0 -565
- package/dist/template/packages/shared/src/trpc/client.ts +0 -44
- package/dist/template/packages/shared/tsconfig.json +0 -22
- package/dist/template/packages/web/README.md +0 -131
- package/dist/template/packages/web/__tests__/App.test.tsx +0 -342
- package/dist/template/packages/web/__tests__/components.test.tsx +0 -564
- package/dist/template/packages/web/gitignore.template +0 -35
- package/dist/template/packages/web/index.html +0 -13
- package/dist/template/packages/web/jest.config.js +0 -27
- package/dist/template/packages/web/jest.setup.js +0 -24
- package/dist/template/packages/web/package.json +0 -69
- package/dist/template/packages/web/src/App.tsx +0 -14
- package/dist/template/packages/web/src/components/TestDemo.tsx +0 -164
- package/dist/template/packages/web/src/main.tsx +0 -25
- package/dist/template/packages/web/src/utils/trpc.ts +0 -7
- package/dist/template/packages/web/tsconfig.json +0 -26
- package/dist/template/packages/web/vite.config.ts +0 -98
- package/dist/template/setup.sh +0 -30
- package/dist/template/tsconfig.json +0 -22
- package/dist/template/yarnrc.yml.template +0 -4
- package/dist/types/generators/init.d.ts +0 -5
- package/dist/types/generators/utils.d.ts +0 -45
- package/dist/types/scripts/configure-react-native-monorepo.d.ts +0 -23
- package/template/.devcontainer/Dockerfile +0 -26
- package/template/.devcontainer/devcontainer.json +0 -113
- package/template/.devcontainer/docker-compose.yml +0 -59
- package/template/.devcontainer/figma-mcp.sh +0 -32
- package/template/.devcontainer/setup.sh +0 -45
- package/template/.dockerignore +0 -151
- package/template/.env.example +0 -36
- package/template/.env.production +0 -56
- package/template/DOCKER.md +0 -0
- package/template/Dockerfile +0 -111
- package/template/README.md +0 -233
- package/template/docker/nginx/prod.conf +0 -238
- package/template/docker/nginx.conf +0 -131
- package/template/docker/postgres/init.sql +0 -41
- package/template/docker/prometheus/prometheus.yml +0 -52
- package/template/docker-compose.prod.yml +0 -146
- package/template/docker-compose.yml +0 -143
- package/template/jest.config.js +0 -20
- package/template/package.json +0 -45
- package/template/packages/api/.env.example +0 -6
- package/template/packages/api/README.md +0 -510
- package/template/packages/api/__tests__/api.test.ts +0 -26
- package/template/packages/api/jest.config.js +0 -23
- package/template/packages/api/jest.setup.js +0 -9
- package/template/packages/api/package.json +0 -66
- package/template/packages/api/src/context.ts +0 -52
- package/template/packages/api/src/controllers/TestController.ts +0 -0
- package/template/packages/api/src/graphql/builder.ts +0 -75
- package/template/packages/api/src/graphql/generated.ts +0 -64
- package/template/packages/api/src/graphql/index.ts +0 -75
- package/template/packages/api/src/graphql/types/index.ts +0 -44
- package/template/packages/api/src/graphql/types/test.ts +0 -245
- package/template/packages/api/src/index.ts +0 -26
- package/template/packages/api/src/lib/database.ts +0 -23
- package/template/packages/api/src/router/index.ts +0 -163
- package/template/packages/api/src/routers/test.ts +0 -161
- package/template/packages/api/src/server.ts +0 -68
- package/template/packages/api/src/trpc.ts +0 -28
- package/template/packages/api/tsconfig.json +0 -44
- package/template/packages/database/README.md +0 -162
- package/template/packages/database/package.json +0 -49
- package/template/packages/database/prisma/seed.ts +0 -64
- package/template/packages/database/schema.prisma +0 -107
- package/template/packages/database/src/index.ts +0 -15
- package/template/packages/database/src/validators.ts +0 -10
- package/template/packages/database/tsconfig.json +0 -18
- package/template/packages/mobile/README.md +0 -86
- package/template/packages/mobile/__tests__/App.test.tsx +0 -156
- package/template/packages/mobile/__tests__/components.test.tsx +0 -300
- package/template/packages/mobile/app.json +0 -5
- package/template/packages/mobile/babel.config.js +0 -26
- package/template/packages/mobile/index.js +0 -8
- package/template/packages/mobile/jest.config.js +0 -21
- package/template/packages/mobile/jest.setup.js +0 -12
- package/template/packages/mobile/metro.config.js +0 -36
- package/template/packages/mobile/package.json +0 -60
- package/template/packages/mobile/src/App.tsx +0 -8
- package/template/packages/mobile/src/utils/trpc.ts +0 -7
- package/template/packages/mobile/tsconfig.json +0 -28
- package/template/packages/shared/README.md +0 -135
- package/template/packages/shared/__tests__/shared.test.ts +0 -51
- package/template/packages/shared/jest.config.js +0 -22
- package/template/packages/shared/package.json +0 -68
- package/template/packages/shared/src/components/App.tsx +0 -57
- package/template/packages/shared/src/components/HelloWorld.tsx +0 -531
- package/template/packages/shared/src/components/index.ts +0 -1
- package/template/packages/shared/src/graphql/client.ts +0 -34
- package/template/packages/shared/src/index.ts +0 -25
- package/template/packages/shared/src/navigation/AppRouter.tsx +0 -565
- package/template/packages/shared/src/trpc/client.ts +0 -44
- package/template/packages/shared/src/unistyles.ts +0 -50
- package/template/packages/shared/tsconfig.json +0 -22
- package/template/packages/web/README.md +0 -131
- package/template/packages/web/__tests__/App.test.tsx +0 -342
- package/template/packages/web/__tests__/components.test.tsx +0 -564
- package/template/packages/web/index.html +0 -13
- package/template/packages/web/jest.config.js +0 -27
- package/template/packages/web/jest.setup.js +0 -24
- package/template/packages/web/package.json +0 -69
- package/template/packages/web/src/App.tsx +0 -14
- package/template/packages/web/src/components/TestDemo.tsx +0 -164
- package/template/packages/web/src/main.tsx +0 -27
- package/template/packages/web/src/utils/trpc.ts +0 -7
- package/template/packages/web/tsconfig.json +0 -26
- package/template/packages/web/vite.config.ts +0 -114
- package/template/setup.sh +0 -30
- package/template/tsconfig.json +0 -22
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Workspace root generator
|
|
4
|
+
*/
|
|
5
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
6
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.generateWorkspace = generateWorkspace;
|
|
10
|
+
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
11
|
+
const path_1 = __importDefault(require("path"));
|
|
12
|
+
const copier_1 = require("../templates/copier");
|
|
13
|
+
const logger_1 = require("../utils/logger");
|
|
14
|
+
/**
|
|
15
|
+
* Generate workspace root structure
|
|
16
|
+
*/
|
|
17
|
+
async function generateWorkspace(projectPath, data) {
|
|
18
|
+
logger_1.logger.info(`Creating workspace at ${projectPath}...`);
|
|
19
|
+
// Ensure project directory exists
|
|
20
|
+
await fs_extra_1.default.ensureDir(projectPath);
|
|
21
|
+
// Copy workspace template or generate programmatically
|
|
22
|
+
const templatePath = (0, copier_1.getTemplatePath)('core', 'workspace');
|
|
23
|
+
if (await (0, copier_1.templateHasContent)(templatePath)) {
|
|
24
|
+
await (0, copier_1.copyTemplateDirectory)(templatePath, projectPath, data);
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
// Generate workspace files programmatically if no template exists
|
|
28
|
+
await generateWorkspaceFiles(projectPath, data);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Generate workspace files programmatically
|
|
33
|
+
*/
|
|
34
|
+
async function generateWorkspaceFiles(projectPath, data) {
|
|
35
|
+
// Create packages directory
|
|
36
|
+
await fs_extra_1.default.ensureDir(path_1.default.join(projectPath, 'packages'));
|
|
37
|
+
// Generate root package.json
|
|
38
|
+
const packageJson = createRootPackageJson(data);
|
|
39
|
+
await fs_extra_1.default.writeJson(path_1.default.join(projectPath, 'package.json'), packageJson, { spaces: 2 });
|
|
40
|
+
// Generate tsconfig.json
|
|
41
|
+
const tsconfig = createRootTsConfig();
|
|
42
|
+
await fs_extra_1.default.writeJson(path_1.default.join(projectPath, 'tsconfig.json'), tsconfig, { spaces: 2 });
|
|
43
|
+
// Generate .gitignore
|
|
44
|
+
const gitignore = createGitignore();
|
|
45
|
+
await fs_extra_1.default.writeFile(path_1.default.join(projectPath, '.gitignore'), gitignore);
|
|
46
|
+
// Generate .yarnrc.yml
|
|
47
|
+
const yarnrc = createYarnrc();
|
|
48
|
+
await fs_extra_1.default.writeFile(path_1.default.join(projectPath, '.yarnrc.yml'), yarnrc);
|
|
49
|
+
// Generate README.md
|
|
50
|
+
const readme = createReadme(data);
|
|
51
|
+
await fs_extra_1.default.writeFile(path_1.default.join(projectPath, 'README.md'), readme);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Create root package.json content
|
|
55
|
+
*/
|
|
56
|
+
function createRootPackageJson(data) {
|
|
57
|
+
const scripts = {
|
|
58
|
+
'dev': 'concurrently "yarn web:dev" "yarn mobile:start"',
|
|
59
|
+
'build': 'yarn build:packages && yarn web:build',
|
|
60
|
+
'build:packages': 'yarn workspace @' + data.workspaceScope + '/shared build',
|
|
61
|
+
'test': 'jest',
|
|
62
|
+
'test:watch': 'jest --watch',
|
|
63
|
+
'test:coverage': 'jest --coverage',
|
|
64
|
+
'web:dev': 'yarn workspace @' + data.workspaceScope + '/web dev',
|
|
65
|
+
'web:build': 'yarn workspace @' + data.workspaceScope + '/web build',
|
|
66
|
+
'web:preview': 'yarn workspace @' + data.workspaceScope + '/web preview',
|
|
67
|
+
'mobile:start': 'yarn workspace @' + data.workspaceScope + '/mobile start',
|
|
68
|
+
'mobile:android': 'yarn workspace @' + data.workspaceScope + '/mobile android',
|
|
69
|
+
'mobile:ios': 'yarn workspace @' + data.workspaceScope + '/mobile ios',
|
|
70
|
+
};
|
|
71
|
+
// Add API scripts if API is enabled
|
|
72
|
+
if (data.hasApi) {
|
|
73
|
+
scripts['api:dev'] = 'yarn workspace @' + data.workspaceScope + '/api dev';
|
|
74
|
+
scripts['api:build'] = 'yarn workspace @' + data.workspaceScope + '/api build';
|
|
75
|
+
scripts['dev'] = 'concurrently "yarn api:dev" "yarn web:dev" "yarn mobile:start"';
|
|
76
|
+
}
|
|
77
|
+
// Add database scripts if Prisma is enabled
|
|
78
|
+
if (data.hasPrisma) {
|
|
79
|
+
scripts['db:generate'] = 'yarn workspace @' + data.workspaceScope + '/database db:generate';
|
|
80
|
+
scripts['db:push'] = 'yarn workspace @' + data.workspaceScope + '/database db:push';
|
|
81
|
+
scripts['db:migrate'] = 'yarn workspace @' + data.workspaceScope + '/database db:migrate';
|
|
82
|
+
scripts['db:studio'] = 'yarn workspace @' + data.workspaceScope + '/database db:studio';
|
|
83
|
+
scripts['db:seed'] = 'yarn workspace @' + data.workspaceScope + '/database db:seed';
|
|
84
|
+
scripts['build:packages'] = 'yarn db:generate && yarn workspace @' + data.workspaceScope + '/shared build';
|
|
85
|
+
}
|
|
86
|
+
return {
|
|
87
|
+
name: `@${data.workspaceScope}/${data.projectName}`,
|
|
88
|
+
version: data.version,
|
|
89
|
+
private: true,
|
|
90
|
+
packageManager: 'yarn@4.1.0',
|
|
91
|
+
workspaces: ['packages/*'],
|
|
92
|
+
scripts,
|
|
93
|
+
devDependencies: {
|
|
94
|
+
'concurrently': '^9.0.0',
|
|
95
|
+
'jest': '^29.7.0',
|
|
96
|
+
'@types/jest': '^29.5.0',
|
|
97
|
+
'ts-jest': '^29.1.0',
|
|
98
|
+
'typescript': '^5.0.0',
|
|
99
|
+
},
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Create root tsconfig.json
|
|
104
|
+
*/
|
|
105
|
+
function createRootTsConfig() {
|
|
106
|
+
return {
|
|
107
|
+
compilerOptions: {
|
|
108
|
+
target: 'ES2020',
|
|
109
|
+
module: 'commonjs',
|
|
110
|
+
declaration: true,
|
|
111
|
+
declarationMap: true,
|
|
112
|
+
sourceMap: true,
|
|
113
|
+
strict: true,
|
|
114
|
+
esModuleInterop: true,
|
|
115
|
+
skipLibCheck: true,
|
|
116
|
+
forceConsistentCasingInFileNames: true,
|
|
117
|
+
moduleResolution: 'node',
|
|
118
|
+
resolveJsonModule: true,
|
|
119
|
+
},
|
|
120
|
+
include: ['packages/*/src/**/*'],
|
|
121
|
+
exclude: ['node_modules', 'dist', 'build'],
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Create .gitignore content
|
|
126
|
+
*/
|
|
127
|
+
function createGitignore() {
|
|
128
|
+
return `# Dependencies
|
|
129
|
+
node_modules/
|
|
130
|
+
.yarn/*
|
|
131
|
+
!.yarn/patches
|
|
132
|
+
!.yarn/plugins
|
|
133
|
+
!.yarn/releases
|
|
134
|
+
!.yarn/sdks
|
|
135
|
+
!.yarn/versions
|
|
136
|
+
|
|
137
|
+
# Build outputs
|
|
138
|
+
dist/
|
|
139
|
+
build/
|
|
140
|
+
.cache/
|
|
141
|
+
*.tsbuildinfo
|
|
142
|
+
|
|
143
|
+
# Environment
|
|
144
|
+
.env
|
|
145
|
+
.env.local
|
|
146
|
+
.env.*.local
|
|
147
|
+
|
|
148
|
+
# IDE
|
|
149
|
+
.idea/
|
|
150
|
+
.vscode/
|
|
151
|
+
*.swp
|
|
152
|
+
*.swo
|
|
153
|
+
|
|
154
|
+
# OS
|
|
155
|
+
.DS_Store
|
|
156
|
+
Thumbs.db
|
|
157
|
+
|
|
158
|
+
# Testing
|
|
159
|
+
coverage/
|
|
160
|
+
.jest/
|
|
161
|
+
|
|
162
|
+
# Mobile
|
|
163
|
+
ios/Pods/
|
|
164
|
+
android/.gradle/
|
|
165
|
+
android/app/build/
|
|
166
|
+
*.keystore
|
|
167
|
+
*.jks
|
|
168
|
+
|
|
169
|
+
# Logs
|
|
170
|
+
*.log
|
|
171
|
+
npm-debug.log*
|
|
172
|
+
yarn-debug.log*
|
|
173
|
+
yarn-error.log*
|
|
174
|
+
|
|
175
|
+
# Misc
|
|
176
|
+
*.tmp
|
|
177
|
+
*.bak
|
|
178
|
+
`;
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Create .yarnrc.yml content
|
|
182
|
+
*/
|
|
183
|
+
function createYarnrc() {
|
|
184
|
+
return `nodeLinker: node-modules
|
|
185
|
+
|
|
186
|
+
enableGlobalCache: true
|
|
187
|
+
`;
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Create README.md content
|
|
191
|
+
*/
|
|
192
|
+
function createReadme(data) {
|
|
193
|
+
return `# ${data.appDisplayName}
|
|
194
|
+
|
|
195
|
+
${data.description}
|
|
196
|
+
|
|
197
|
+
Built with [Idealyst Framework](https://github.com/IdealystIO/idealyst-framework).
|
|
198
|
+
|
|
199
|
+
## Getting Started
|
|
200
|
+
|
|
201
|
+
### Install Dependencies
|
|
202
|
+
|
|
203
|
+
\`\`\`bash
|
|
204
|
+
yarn install
|
|
205
|
+
\`\`\`
|
|
206
|
+
|
|
207
|
+
### Development
|
|
208
|
+
|
|
209
|
+
Start all development servers:
|
|
210
|
+
|
|
211
|
+
\`\`\`bash
|
|
212
|
+
yarn dev
|
|
213
|
+
\`\`\`
|
|
214
|
+
|
|
215
|
+
Or run individually:
|
|
216
|
+
|
|
217
|
+
\`\`\`bash
|
|
218
|
+
# Web
|
|
219
|
+
yarn web:dev
|
|
220
|
+
|
|
221
|
+
# Mobile
|
|
222
|
+
yarn mobile:start
|
|
223
|
+
yarn mobile:android # or yarn mobile:ios
|
|
224
|
+
${data.hasApi ? `
|
|
225
|
+
# API
|
|
226
|
+
yarn api:dev
|
|
227
|
+
` : ''}
|
|
228
|
+
\`\`\`
|
|
229
|
+
${data.hasPrisma ? `
|
|
230
|
+
### Database
|
|
231
|
+
|
|
232
|
+
\`\`\`bash
|
|
233
|
+
# Generate Prisma client
|
|
234
|
+
yarn db:generate
|
|
235
|
+
|
|
236
|
+
# Push schema to database
|
|
237
|
+
yarn db:push
|
|
238
|
+
|
|
239
|
+
# Open Prisma Studio
|
|
240
|
+
yarn db:studio
|
|
241
|
+
\`\`\`
|
|
242
|
+
` : ''}
|
|
243
|
+
### Build
|
|
244
|
+
|
|
245
|
+
\`\`\`bash
|
|
246
|
+
yarn build
|
|
247
|
+
\`\`\`
|
|
248
|
+
|
|
249
|
+
### Testing
|
|
250
|
+
|
|
251
|
+
\`\`\`bash
|
|
252
|
+
yarn test
|
|
253
|
+
yarn test:watch
|
|
254
|
+
yarn test:coverage
|
|
255
|
+
\`\`\`
|
|
256
|
+
|
|
257
|
+
## Project Structure
|
|
258
|
+
|
|
259
|
+
\`\`\`
|
|
260
|
+
${data.projectName}/
|
|
261
|
+
├── packages/
|
|
262
|
+
│ ├── shared/ # Shared components and utilities
|
|
263
|
+
│ ├── web/ # React web application
|
|
264
|
+
│ └── mobile/ # React Native mobile application${data.hasApi ? `
|
|
265
|
+
│ └── api/ # API server` : ''}${data.hasPrisma ? `
|
|
266
|
+
│ └── database/ # Database layer (Prisma)` : ''}
|
|
267
|
+
├── package.json
|
|
268
|
+
└── README.md
|
|
269
|
+
\`\`\`
|
|
270
|
+
`;
|
|
271
|
+
}
|
|
272
|
+
//# sourceMappingURL=workspace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/generators/workspace.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;AAWH,8CAkBC;AA3BD,wDAA0B;AAC1B,gDAAwB;AAExB,gDAAiG;AACjG,4CAAyC;AAEzC;;GAEG;AACI,KAAK,UAAU,iBAAiB,CACrC,WAAmB,EACnB,IAAkB;IAElB,eAAM,CAAC,IAAI,CAAC,yBAAyB,WAAW,KAAK,CAAC,CAAC;IAEvD,kCAAkC;IAClC,MAAM,kBAAE,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAEhC,uDAAuD;IACvD,MAAM,YAAY,GAAG,IAAA,wBAAe,EAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAE1D,IAAI,MAAM,IAAA,2BAAkB,EAAC,YAAY,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAA,8BAAqB,EAAC,YAAY,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;IAC/D,CAAC;SAAM,CAAC;QACN,kEAAkE;QAClE,MAAM,sBAAsB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IAClD,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,sBAAsB,CACnC,WAAmB,EACnB,IAAkB;IAElB,4BAA4B;IAC5B,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC;IAEvD,6BAA6B;IAC7B,MAAM,WAAW,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,EAAE,WAAW,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;IAEvF,yBAAyB;IACzB,MAAM,QAAQ,GAAG,kBAAkB,EAAE,CAAC;IACtC,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;IAErF,sBAAsB;IACtB,MAAM,SAAS,GAAG,eAAe,EAAE,CAAC;IACpC,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,EAAE,SAAS,CAAC,CAAC;IAEpE,uBAAuB;IACvB,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;IAC9B,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,EAAE,MAAM,CAAC,CAAC;IAElE,qBAAqB;IACrB,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,MAAM,CAAC,CAAC;AAClE,CAAC;AAED;;GAEG;AACH,SAAS,qBAAqB,CAAC,IAAkB;IAC/C,MAAM,OAAO,GAA2B;QACtC,KAAK,EAAE,iDAAiD;QACxD,OAAO,EAAE,uCAAuC;QAChD,gBAAgB,EAAE,kBAAkB,GAAG,IAAI,CAAC,cAAc,GAAG,eAAe;QAC5E,MAAM,EAAE,MAAM;QACd,YAAY,EAAE,cAAc;QAC5B,eAAe,EAAE,iBAAiB;QAClC,SAAS,EAAE,kBAAkB,GAAG,IAAI,CAAC,cAAc,GAAG,UAAU;QAChE,WAAW,EAAE,kBAAkB,GAAG,IAAI,CAAC,cAAc,GAAG,YAAY;QACpE,aAAa,EAAE,kBAAkB,GAAG,IAAI,CAAC,cAAc,GAAG,cAAc;QACxE,cAAc,EAAE,kBAAkB,GAAG,IAAI,CAAC,cAAc,GAAG,eAAe;QAC1E,gBAAgB,EAAE,kBAAkB,GAAG,IAAI,CAAC,cAAc,GAAG,iBAAiB;QAC9E,YAAY,EAAE,kBAAkB,GAAG,IAAI,CAAC,cAAc,GAAG,aAAa;KACvE,CAAC;IAEF,oCAAoC;IACpC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,OAAO,CAAC,SAAS,CAAC,GAAG,kBAAkB,GAAG,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC;QAC3E,OAAO,CAAC,WAAW,CAAC,GAAG,kBAAkB,GAAG,IAAI,CAAC,cAAc,GAAG,YAAY,CAAC;QAC/E,OAAO,CAAC,KAAK,CAAC,GAAG,gEAAgE,CAAC;IACpF,CAAC;IAED,4CAA4C;IAC5C,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,OAAO,CAAC,aAAa,CAAC,GAAG,kBAAkB,GAAG,IAAI,CAAC,cAAc,GAAG,uBAAuB,CAAC;QAC5F,OAAO,CAAC,SAAS,CAAC,GAAG,kBAAkB,GAAG,IAAI,CAAC,cAAc,GAAG,mBAAmB,CAAC;QACpF,OAAO,CAAC,YAAY,CAAC,GAAG,kBAAkB,GAAG,IAAI,CAAC,cAAc,GAAG,sBAAsB,CAAC;QAC1F,OAAO,CAAC,WAAW,CAAC,GAAG,kBAAkB,GAAG,IAAI,CAAC,cAAc,GAAG,qBAAqB,CAAC;QACxF,OAAO,CAAC,SAAS,CAAC,GAAG,kBAAkB,GAAG,IAAI,CAAC,cAAc,GAAG,mBAAmB,CAAC;QACpF,OAAO,CAAC,gBAAgB,CAAC,GAAG,sCAAsC,GAAG,IAAI,CAAC,cAAc,GAAG,eAAe,CAAC;IAC7G,CAAC;IAED,OAAO;QACL,IAAI,EAAE,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,WAAW,EAAE;QACnD,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,OAAO,EAAE,IAAI;QACb,cAAc,EAAE,YAAY;QAC5B,UAAU,EAAE,CAAC,YAAY,CAAC;QAC1B,OAAO;QACP,eAAe,EAAE;YACf,cAAc,EAAE,QAAQ;YACxB,MAAM,EAAE,SAAS;YACjB,aAAa,EAAE,SAAS;YACxB,SAAS,EAAE,SAAS;YACpB,YAAY,EAAE,QAAQ;SACvB;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB;IACzB,OAAO;QACL,eAAe,EAAE;YACf,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,UAAU;YAClB,WAAW,EAAE,IAAI;YACjB,cAAc,EAAE,IAAI;YACpB,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,IAAI;YACZ,eAAe,EAAE,IAAI;YACrB,YAAY,EAAE,IAAI;YAClB,gCAAgC,EAAE,IAAI;YACtC,gBAAgB,EAAE,MAAM;YACxB,iBAAiB,EAAE,IAAI;SACxB;QACD,OAAO,EAAE,CAAC,qBAAqB,CAAC;QAChC,OAAO,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,CAAC;KAC3C,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,eAAe;IACtB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkDR,CAAC;AACF,CAAC;AAED;;GAEG;AACH,SAAS,YAAY;IACnB,OAAO;;;CAGR,CAAC;AACF,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,IAAkB;IACtC,OAAO,KAAK,IAAI,CAAC,cAAc;;EAE/B,IAAI,CAAC,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6BhB,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;;;CAGf,CAAC,CAAC,CAAC,EAAE;;EAEJ,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;;;;;;;;;;;;;CAalB,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;;;;;;;;EAkBJ,IAAI,CAAC,WAAW;;;;uDAIqC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;iCACpC,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;8CACZ,CAAC,CAAC,CAAC,EAAE;;;;CAIlD,CAAC;AACF,CAAC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Android Package Name generation utilities
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.generateAndroidPackageName = generateAndroidPackageName;
|
|
7
|
+
exports.validateAndroidPackageName = validateAndroidPackageName;
|
|
8
|
+
exports.toAndroidSegment = toAndroidSegment;
|
|
9
|
+
const constants_1 = require("../constants");
|
|
10
|
+
/**
|
|
11
|
+
* Generate Android package name
|
|
12
|
+
* Android does NOT allow hyphens - must be lowercase alphanumeric with dots
|
|
13
|
+
*
|
|
14
|
+
* @param orgDomain - Organization domain (e.g., "com.company")
|
|
15
|
+
* @param projectName - Project name in kebab-case
|
|
16
|
+
* @returns Android package name (hyphens removed)
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* generateAndroidPackageName('com.mycompany', 'my-app')
|
|
20
|
+
* // Returns: 'com.mycompany.myapp'
|
|
21
|
+
*/
|
|
22
|
+
function generateAndroidPackageName(orgDomain, projectName) {
|
|
23
|
+
// Normalize org domain
|
|
24
|
+
const normalizedDomain = orgDomain.toLowerCase().replace(/\.+$/, '');
|
|
25
|
+
// Normalize project name - remove hyphens for Android
|
|
26
|
+
const normalizedName = projectName
|
|
27
|
+
.toLowerCase()
|
|
28
|
+
.replace(/-/g, '') // Remove hyphens
|
|
29
|
+
.replace(/[^a-z0-9]/g, ''); // Remove any other non-alphanumeric
|
|
30
|
+
return `${normalizedDomain}.${normalizedName}`;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Validate Android package name format
|
|
34
|
+
*/
|
|
35
|
+
function validateAndroidPackageName(packageName) {
|
|
36
|
+
// Must be all lowercase with dots separating segments
|
|
37
|
+
if (!constants_1.PATTERNS.ANDROID_PACKAGE.test(packageName)) {
|
|
38
|
+
return {
|
|
39
|
+
valid: false,
|
|
40
|
+
error: 'Package name must be lowercase, start with letter, and have dot-separated segments',
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
// Check for reserved keywords
|
|
44
|
+
const segments = packageName.split('.');
|
|
45
|
+
for (const segment of segments) {
|
|
46
|
+
if (constants_1.JAVA_RESERVED_KEYWORDS.includes(segment)) {
|
|
47
|
+
return {
|
|
48
|
+
valid: false,
|
|
49
|
+
error: `"${segment}" is a Java reserved keyword and cannot be used`,
|
|
50
|
+
suggestions: [`Change "${segment}" to something else like "${segment}app"`],
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
// Each segment must not be empty
|
|
55
|
+
for (const segment of segments) {
|
|
56
|
+
if (segment.length === 0) {
|
|
57
|
+
return {
|
|
58
|
+
valid: false,
|
|
59
|
+
error: 'Package name segments cannot be empty',
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return { valid: true };
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Convert a kebab-case string to a valid Android package segment
|
|
67
|
+
* Removes hyphens and ensures lowercase
|
|
68
|
+
*/
|
|
69
|
+
function toAndroidSegment(input) {
|
|
70
|
+
return input
|
|
71
|
+
.toLowerCase()
|
|
72
|
+
.replace(/-/g, '')
|
|
73
|
+
.replace(/[^a-z0-9]/g, '');
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=android.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"android.js","sourceRoot":"","sources":["../../src/identifiers/android.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAiBH,gEAWC;AAKD,gEAgCC;AAMD,4CAKC;AAzED,4CAAgE;AAEhE;;;;;;;;;;;GAWG;AACH,SAAgB,0BAA0B,CAAC,SAAiB,EAAE,WAAmB;IAC/E,uBAAuB;IACvB,MAAM,gBAAgB,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAErE,sDAAsD;IACtD,MAAM,cAAc,GAAG,WAAW;SAC/B,WAAW,EAAE;SACb,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAE,iBAAiB;SACpC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,CAAC,oCAAoC;IAElE,OAAO,GAAG,gBAAgB,IAAI,cAAc,EAAE,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,SAAgB,0BAA0B,CAAC,WAAmB;IAC5D,sDAAsD;IACtD,IAAI,CAAC,oBAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;QAChD,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,oFAAoF;SAC5F,CAAC;IACJ,CAAC;IAED,8BAA8B;IAC9B,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACxC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,kCAAsB,CAAC,QAAQ,CAAC,OAAgD,CAAC,EAAE,CAAC;YACtF,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE,IAAI,OAAO,iDAAiD;gBACnE,WAAW,EAAE,CAAC,WAAW,OAAO,6BAA6B,OAAO,MAAM,CAAC;aAC5E,CAAC;QACJ,CAAC;IACH,CAAC;IAED,iCAAiC;IACjC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE,uCAAuC;aAC/C,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACzB,CAAC;AAED;;;GAGG;AACH,SAAgB,gBAAgB,CAAC,KAAa;IAC5C,OAAO,KAAK;SACT,WAAW,EAAE;SACb,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;SACjB,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AAC/B,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Mobile identifier generation
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.validateAndroidPackageName = exports.generateAndroidPackageName = exports.validateIosBundleId = exports.generateIosBundleId = void 0;
|
|
7
|
+
exports.generateIdentifiers = generateIdentifiers;
|
|
8
|
+
const ios_1 = require("./ios");
|
|
9
|
+
Object.defineProperty(exports, "generateIosBundleId", { enumerable: true, get: function () { return ios_1.generateIosBundleId; } });
|
|
10
|
+
Object.defineProperty(exports, "validateIosBundleId", { enumerable: true, get: function () { return ios_1.validateIosBundleId; } });
|
|
11
|
+
const android_1 = require("./android");
|
|
12
|
+
Object.defineProperty(exports, "generateAndroidPackageName", { enumerable: true, get: function () { return android_1.generateAndroidPackageName; } });
|
|
13
|
+
Object.defineProperty(exports, "validateAndroidPackageName", { enumerable: true, get: function () { return android_1.validateAndroidPackageName; } });
|
|
14
|
+
/**
|
|
15
|
+
* Generate iOS and Android identifiers from org domain and project name
|
|
16
|
+
*
|
|
17
|
+
* @param orgDomain - Organization domain (e.g., "com.company")
|
|
18
|
+
* @param projectName - Project name in kebab-case
|
|
19
|
+
* @returns Generated identifiers for both platforms
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* generateIdentifiers('com.mycompany', 'awesome-app')
|
|
23
|
+
* // Returns:
|
|
24
|
+
* // {
|
|
25
|
+
* // iosBundleId: 'com.mycompany.awesome-app',
|
|
26
|
+
* // androidPackageName: 'com.mycompany.awesomeapp'
|
|
27
|
+
* // }
|
|
28
|
+
*/
|
|
29
|
+
function generateIdentifiers(orgDomain, projectName) {
|
|
30
|
+
return {
|
|
31
|
+
iosBundleId: (0, ios_1.generateIosBundleId)(orgDomain, projectName),
|
|
32
|
+
androidPackageName: (0, android_1.generateAndroidPackageName)(orgDomain, projectName),
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/identifiers/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAyBH,kDAQC;AA/BD,+BAAiE;AAkC/D,oGAlCO,yBAAmB,OAkCP;AACnB,oGAnC4B,yBAAmB,OAmC5B;AAlCrB,uCAAmF;AAmCjF,2GAnCO,oCAA0B,OAmCP;AAC1B,2GApCmC,oCAA0B,OAoCnC;AA7B5B;;;;;;;;;;;;;;GAcG;AACH,SAAgB,mBAAmB,CACjC,SAAiB,EACjB,WAAmB;IAEnB,OAAO;QACL,WAAW,EAAE,IAAA,yBAAmB,EAAC,SAAS,EAAE,WAAW,CAAC;QACxD,kBAAkB,EAAE,IAAA,oCAA0B,EAAC,SAAS,EAAE,WAAW,CAAC;KACvE,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* iOS Bundle ID generation utilities
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.generateIosBundleId = generateIosBundleId;
|
|
7
|
+
exports.validateIosBundleId = validateIosBundleId;
|
|
8
|
+
const constants_1 = require("../constants");
|
|
9
|
+
/**
|
|
10
|
+
* Generate iOS bundle identifier
|
|
11
|
+
* iOS allows hyphens in bundle IDs
|
|
12
|
+
*
|
|
13
|
+
* @param orgDomain - Organization domain (e.g., "com.company")
|
|
14
|
+
* @param projectName - Project name in kebab-case
|
|
15
|
+
* @returns iOS bundle identifier
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* generateIosBundleId('com.mycompany', 'my-app')
|
|
19
|
+
* // Returns: 'com.mycompany.my-app'
|
|
20
|
+
*/
|
|
21
|
+
function generateIosBundleId(orgDomain, projectName) {
|
|
22
|
+
// Normalize org domain (ensure lowercase, no trailing dots)
|
|
23
|
+
const normalizedDomain = orgDomain.toLowerCase().replace(/\.+$/, '');
|
|
24
|
+
// Normalize project name (lowercase, keep hyphens)
|
|
25
|
+
const normalizedName = projectName.toLowerCase();
|
|
26
|
+
return `${normalizedDomain}.${normalizedName}`;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Validate iOS bundle ID format
|
|
30
|
+
*/
|
|
31
|
+
function validateIosBundleId(bundleId) {
|
|
32
|
+
// Must start with letter
|
|
33
|
+
if (!/^[a-zA-Z]/.test(bundleId)) {
|
|
34
|
+
return {
|
|
35
|
+
valid: false,
|
|
36
|
+
error: 'Bundle ID must start with a letter',
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
// Only alphanumeric, dots, and hyphens
|
|
40
|
+
if (!constants_1.PATTERNS.IOS_BUNDLE_ID.test(bundleId)) {
|
|
41
|
+
return {
|
|
42
|
+
valid: false,
|
|
43
|
+
error: 'Bundle ID can only contain letters, numbers, dots, and hyphens',
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
// Must have at least two segments (e.g., com.app)
|
|
47
|
+
const segments = bundleId.split('.');
|
|
48
|
+
if (segments.length < 2) {
|
|
49
|
+
return {
|
|
50
|
+
valid: false,
|
|
51
|
+
error: 'Bundle ID must have at least two segments (e.g., com.app)',
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
// Each segment must not be empty
|
|
55
|
+
for (const segment of segments) {
|
|
56
|
+
if (segment.length === 0) {
|
|
57
|
+
return {
|
|
58
|
+
valid: false,
|
|
59
|
+
error: 'Bundle ID segments cannot be empty',
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return { valid: true };
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=ios.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ios.js","sourceRoot":"","sources":["../../src/identifiers/ios.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAiBH,kDAQC;AAKD,kDAqCC;AAhED,4CAAwC;AAExC;;;;;;;;;;;GAWG;AACH,SAAgB,mBAAmB,CAAC,SAAiB,EAAE,WAAmB;IACxE,4DAA4D;IAC5D,MAAM,gBAAgB,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAErE,mDAAmD;IACnD,MAAM,cAAc,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC;IAEjD,OAAO,GAAG,gBAAgB,IAAI,cAAc,EAAE,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,SAAgB,mBAAmB,CAAC,QAAgB;IAClD,yBAAyB;IACzB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QAChC,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,oCAAoC;SAC5C,CAAC;IACJ,CAAC;IAED,uCAAuC;IACvC,IAAI,CAAC,oBAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3C,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,gEAAgE;SACxE,CAAC;IACJ,CAAC;IAED,kDAAkD;IAClD,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,2DAA2D;SACnE,CAAC;IACJ,CAAC;IAED,iCAAiC;IACjC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE,oCAAoC;aAC5C,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACzB,CAAC"}
|