swallowkit 0.4.0-beta.3 → 1.0.0-beta.10

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 (111) hide show
  1. package/LICENSE +21 -21
  2. package/README.ja.md +254 -183
  3. package/README.md +311 -184
  4. package/dist/__tests__/fixtures.d.ts +14 -0
  5. package/dist/__tests__/fixtures.d.ts.map +1 -0
  6. package/dist/__tests__/fixtures.js +85 -0
  7. package/dist/__tests__/fixtures.js.map +1 -0
  8. package/dist/cli/commands/create-model.d.ts.map +1 -1
  9. package/dist/cli/commands/create-model.js +16 -15
  10. package/dist/cli/commands/create-model.js.map +1 -1
  11. package/dist/cli/commands/dev-seeds.d.ts +35 -0
  12. package/dist/cli/commands/dev-seeds.d.ts.map +1 -0
  13. package/dist/cli/commands/dev-seeds.js +292 -0
  14. package/dist/cli/commands/dev-seeds.js.map +1 -0
  15. package/dist/cli/commands/dev.d.ts +8 -0
  16. package/dist/cli/commands/dev.d.ts.map +1 -1
  17. package/dist/cli/commands/dev.js +308 -87
  18. package/dist/cli/commands/dev.js.map +1 -1
  19. package/dist/cli/commands/index.d.ts +1 -0
  20. package/dist/cli/commands/index.d.ts.map +1 -1
  21. package/dist/cli/commands/index.js +3 -1
  22. package/dist/cli/commands/index.js.map +1 -1
  23. package/dist/cli/commands/init.d.ts +13 -0
  24. package/dist/cli/commands/init.d.ts.map +1 -1
  25. package/dist/cli/commands/init.js +2639 -1708
  26. package/dist/cli/commands/init.js.map +1 -1
  27. package/dist/cli/commands/scaffold.d.ts +3 -0
  28. package/dist/cli/commands/scaffold.d.ts.map +1 -1
  29. package/dist/cli/commands/scaffold.js +283 -118
  30. package/dist/cli/commands/scaffold.js.map +1 -1
  31. package/dist/cli/index.js +17 -1
  32. package/dist/cli/index.js.map +1 -1
  33. package/dist/core/config.d.ts +2 -1
  34. package/dist/core/config.d.ts.map +1 -1
  35. package/dist/core/config.js +31 -1
  36. package/dist/core/config.js.map +1 -1
  37. package/dist/core/scaffold/functions-generator.d.ts +5 -0
  38. package/dist/core/scaffold/functions-generator.d.ts.map +1 -1
  39. package/dist/core/scaffold/functions-generator.js +649 -211
  40. package/dist/core/scaffold/functions-generator.js.map +1 -1
  41. package/dist/core/scaffold/model-parser.d.ts +1 -1
  42. package/dist/core/scaffold/model-parser.d.ts.map +1 -1
  43. package/dist/core/scaffold/model-parser.js +105 -101
  44. package/dist/core/scaffold/model-parser.js.map +1 -1
  45. package/dist/core/scaffold/nextjs-generator.js +181 -181
  46. package/dist/core/scaffold/openapi-generator.d.ts +3 -0
  47. package/dist/core/scaffold/openapi-generator.d.ts.map +1 -0
  48. package/dist/core/scaffold/openapi-generator.js +190 -0
  49. package/dist/core/scaffold/openapi-generator.js.map +1 -0
  50. package/dist/core/scaffold/ui-generator.js +656 -656
  51. package/dist/database/base-model.d.ts +3 -3
  52. package/dist/database/base-model.js +3 -3
  53. package/dist/index.d.ts +2 -2
  54. package/dist/index.d.ts.map +1 -1
  55. package/dist/index.js +2 -1
  56. package/dist/index.js.map +1 -1
  57. package/dist/types/index.d.ts +4 -0
  58. package/dist/types/index.d.ts.map +1 -1
  59. package/dist/utils/package-manager.d.ts +109 -0
  60. package/dist/utils/package-manager.d.ts.map +1 -0
  61. package/dist/utils/package-manager.js +215 -0
  62. package/dist/utils/package-manager.js.map +1 -0
  63. package/package.json +81 -73
  64. package/src/__tests__/__snapshots__/functions-generator.test.ts.snap +445 -0
  65. package/src/__tests__/__snapshots__/nextjs-generator.test.ts.snap +194 -0
  66. package/src/__tests__/__snapshots__/ui-generator.test.ts.snap +524 -0
  67. package/src/__tests__/config.test.ts +122 -0
  68. package/src/__tests__/dev-seeds.test.ts +112 -0
  69. package/src/__tests__/dev.test.ts +42 -0
  70. package/src/__tests__/fixtures.ts +83 -0
  71. package/src/__tests__/functions-generator.test.ts +101 -0
  72. package/src/__tests__/init.test.ts +80 -0
  73. package/src/__tests__/nextjs-generator.test.ts +97 -0
  74. package/src/__tests__/openapi-generator.test.ts +43 -0
  75. package/src/__tests__/package-manager.test.ts +189 -0
  76. package/src/__tests__/scaffold.test.ts +39 -0
  77. package/src/__tests__/string-utils.test.ts +75 -0
  78. package/src/__tests__/ui-generator.test.ts +144 -0
  79. package/src/cli/commands/create-model.ts +141 -0
  80. package/src/cli/commands/dev-seeds.ts +358 -0
  81. package/src/cli/commands/dev.ts +805 -0
  82. package/src/cli/commands/index.ts +9 -0
  83. package/src/cli/commands/init.ts +3370 -0
  84. package/src/cli/commands/provision.ts +193 -0
  85. package/src/cli/commands/scaffold.ts +786 -0
  86. package/src/cli/index.ts +74 -0
  87. package/src/core/config.ts +244 -0
  88. package/src/core/scaffold/functions-generator.ts +674 -0
  89. package/src/core/scaffold/model-parser.ts +627 -0
  90. package/src/core/scaffold/nextjs-generator.ts +217 -0
  91. package/src/core/scaffold/openapi-generator.ts +212 -0
  92. package/src/core/scaffold/ui-generator.ts +945 -0
  93. package/src/database/base-model.ts +184 -0
  94. package/src/database/client.ts +140 -0
  95. package/src/database/repository.ts +104 -0
  96. package/src/database/runtime-check.ts +25 -0
  97. package/src/index.ts +27 -0
  98. package/src/types/index.ts +45 -0
  99. package/src/utils/package-manager.ts +229 -0
  100. package/dist/cli/commands/build.d.ts +0 -6
  101. package/dist/cli/commands/build.d.ts.map +0 -1
  102. package/dist/cli/commands/build.js +0 -177
  103. package/dist/cli/commands/build.js.map +0 -1
  104. package/dist/cli/commands/deploy.d.ts +0 -3
  105. package/dist/cli/commands/deploy.d.ts.map +0 -1
  106. package/dist/cli/commands/deploy.js +0 -147
  107. package/dist/cli/commands/deploy.js.map +0 -1
  108. package/dist/cli/commands/setup.d.ts +0 -6
  109. package/dist/cli/commands/setup.d.ts.map +0 -1
  110. package/dist/cli/commands/setup.js +0 -254
  111. package/dist/cli/commands/setup.js.map +0 -1
@@ -6,7 +6,7 @@ import { z } from "zod";
6
6
  *
7
7
  * @example
8
8
  * ```typescript
9
- * // lib/models/user.ts
9
+ * // shared/models/user.ts
10
10
  * import { z } from 'zod';
11
11
  *
12
12
  * export const userSchema = z.object({
@@ -20,7 +20,7 @@ import { z } from "zod";
20
20
  *
21
21
  * Then use the scaffold command to generate CRUD operations:
22
22
  * ```bash
23
- * npx swallowkit scaffold lib/models/user.ts
23
+ * npx swallowkit scaffold shared/models/user.ts
24
24
  * ```
25
25
  *
26
26
  * This will generate:
@@ -31,7 +31,7 @@ import { z } from "zod";
31
31
  * Use the generated API from frontend:
32
32
  * ```typescript
33
33
  * import { api } from '@/lib/api/backend';
34
- * import type { UserType } from '@/lib/models/user';
34
+ * import type { UserType } from '@myapp/shared';
35
35
  *
36
36
  * const users = await api.get<UserType[]>('/api/users');
37
37
  * await api.post<UserType>('/api/users', { email: 'test@example.com', name: 'Test' });
@@ -10,7 +10,7 @@ const runtime_check_js_1 = require("./runtime-check.js");
10
10
  *
11
11
  * @example
12
12
  * ```typescript
13
- * // lib/models/user.ts
13
+ * // shared/models/user.ts
14
14
  * import { z } from 'zod';
15
15
  *
16
16
  * export const userSchema = z.object({
@@ -24,7 +24,7 @@ const runtime_check_js_1 = require("./runtime-check.js");
24
24
  *
25
25
  * Then use the scaffold command to generate CRUD operations:
26
26
  * ```bash
27
- * npx swallowkit scaffold lib/models/user.ts
27
+ * npx swallowkit scaffold shared/models/user.ts
28
28
  * ```
29
29
  *
30
30
  * This will generate:
@@ -35,7 +35,7 @@ const runtime_check_js_1 = require("./runtime-check.js");
35
35
  * Use the generated API from frontend:
36
36
  * ```typescript
37
37
  * import { api } from '@/lib/api/backend';
38
- * import type { UserType } from '@/lib/models/user';
38
+ * import type { UserType } from '@myapp/shared';
39
39
  *
40
40
  * const users = await api.get<UserType[]>('/api/users');
41
41
  * await api.post<UserType>('/api/users', { email: 'test@example.com', name: 'Test' });
package/dist/index.d.ts CHANGED
@@ -2,8 +2,8 @@
2
2
  * SwallowKit - Next.js framework optimized for Azure deployment
3
3
  * Main exports
4
4
  */
5
- export type { UseServerFnOptions, UseServerFnResult, ServerFnMode, SwallowKitConfig, } from "./types";
6
- export { loadConfig, generateConfig, getFullConfig, validateConfig } from "./core/config";
5
+ export type { UseServerFnOptions, UseServerFnResult, ServerFnMode, BackendLanguage, SwallowKitConfig, } from "./types";
6
+ export { loadConfig, generateConfig, getBackendLanguage, getFullConfig, validateConfig, } from "./core/config";
7
7
  export { DatabaseClient, getDatabaseClient } from "./database/client";
8
8
  export { SchemaRepository, createRepository, TodoSchema, TodoRepository } from "./database/repository";
9
9
  export type { Todo } from "./database/repository";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,YAAY,EACV,kBAAkB,EAClB,iBAAiB,EACjB,YAAY,EACZ,gBAAgB,GACjB,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG1F,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvG,YAAY,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,YAAY,EACV,kBAAkB,EAClB,iBAAiB,EACjB,YAAY,EACZ,eAAe,EACf,gBAAgB,GACjB,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,UAAU,EACV,cAAc,EACd,kBAAkB,EAClB,aAAa,EACb,cAAc,GACf,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvG,YAAY,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC"}
package/dist/index.js CHANGED
@@ -4,11 +4,12 @@
4
4
  * Main exports
5
5
  */
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.TodoRepository = exports.TodoSchema = exports.createRepository = exports.SchemaRepository = exports.getDatabaseClient = exports.DatabaseClient = exports.validateConfig = exports.getFullConfig = exports.generateConfig = exports.loadConfig = void 0;
7
+ exports.TodoRepository = exports.TodoSchema = exports.createRepository = exports.SchemaRepository = exports.getDatabaseClient = exports.DatabaseClient = exports.validateConfig = exports.getFullConfig = exports.getBackendLanguage = exports.generateConfig = exports.loadConfig = void 0;
8
8
  // Configuration
9
9
  var config_1 = require("./core/config");
10
10
  Object.defineProperty(exports, "loadConfig", { enumerable: true, get: function () { return config_1.loadConfig; } });
11
11
  Object.defineProperty(exports, "generateConfig", { enumerable: true, get: function () { return config_1.generateConfig; } });
12
+ Object.defineProperty(exports, "getBackendLanguage", { enumerable: true, get: function () { return config_1.getBackendLanguage; } });
12
13
  Object.defineProperty(exports, "getFullConfig", { enumerable: true, get: function () { return config_1.getFullConfig; } });
13
14
  Object.defineProperty(exports, "validateConfig", { enumerable: true, get: function () { return config_1.validateConfig; } });
14
15
  // Database - Zod-based schema sharing between frontend, backend, and Cosmos DB
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAUH,gBAAgB;AAChB,wCAA0F;AAAjF,oGAAA,UAAU,OAAA;AAAE,wGAAA,cAAc,OAAA;AAAE,uGAAA,aAAa,OAAA;AAAE,wGAAA,cAAc,OAAA;AAElE,+EAA+E;AAC/E,4CAAsE;AAA7D,wGAAA,cAAc,OAAA;AAAE,2GAAA,iBAAiB,OAAA;AAC1C,oDAAuG;AAA9F,8GAAA,gBAAgB,OAAA;AAAE,8GAAA,gBAAgB,OAAA;AAAE,wGAAA,UAAU,OAAA;AAAE,4GAAA,cAAc,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAWH,gBAAgB;AAChB,wCAMuB;AALrB,oGAAA,UAAU,OAAA;AACV,wGAAA,cAAc,OAAA;AACd,4GAAA,kBAAkB,OAAA;AAClB,uGAAA,aAAa,OAAA;AACb,wGAAA,cAAc,OAAA;AAGhB,+EAA+E;AAC/E,4CAAsE;AAA7D,wGAAA,cAAc,OAAA;AAAE,2GAAA,iBAAiB,OAAA;AAC1C,oDAAuG;AAA9F,8GAAA,gBAAgB,OAAA;AAAE,8GAAA,gBAAgB,OAAA;AAAE,wGAAA,UAAU,OAAA;AAAE,4GAAA,cAAc,OAAA"}
@@ -2,6 +2,7 @@
2
2
  * SwallowKit の基本型定義
3
3
  */
4
4
  export type ServerFnMode = "auto" | "force-server" | "force-client";
5
+ export type BackendLanguage = "typescript" | "csharp" | "python";
5
6
  export interface UseServerFnOptions {
6
7
  mode?: ServerFnMode;
7
8
  refetchOnMount?: boolean;
@@ -21,6 +22,9 @@ export interface SwallowKitConfig {
21
22
  connectionString?: string;
22
23
  databaseName?: string;
23
24
  };
25
+ backend?: {
26
+ language?: BackendLanguage;
27
+ };
24
28
  api?: {
25
29
  endpoint?: string;
26
30
  cors?: {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,cAAc,GAAG,cAAc,CAAC;AAGpE,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAGD,MAAM,WAAW,iBAAiB,CAAC,OAAO;IACxC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,GAAG,CAAC;IACX,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAGD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE;QACT,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,GAAG,CAAC,EAAE;QACJ,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE;YACL,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;YAC3B,WAAW,CAAC,EAAE,OAAO,CAAC;SACvB,CAAC;KACH,CAAC;CACH"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,cAAc,GAAG,cAAc,CAAC;AAEpE,MAAM,MAAM,eAAe,GAAG,YAAY,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAGjE,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAGD,MAAM,WAAW,iBAAiB,CAAC,OAAO;IACxC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,GAAG,CAAC;IACX,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAGD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE;QACT,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,OAAO,CAAC,EAAE;QACR,QAAQ,CAAC,EAAE,eAAe,CAAC;KAC5B,CAAC;IACF,GAAG,CAAC,EAAE;QACJ,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE;YACL,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;YAC3B,WAAW,CAAC,EAAE,OAAO,CAAC;SACvB,CAAC;KACH,CAAC;CACH"}
@@ -0,0 +1,109 @@
1
+ import { BackendLanguage } from "../types";
2
+ /**
3
+ * Supported package managers
4
+ */
5
+ export type PackageManager = "npm" | "pnpm";
6
+ /**
7
+ * Package manager command mappings
8
+ */
9
+ export interface PackageManagerCommands {
10
+ /** The binary name: "npm" or "pnpm" */
11
+ name: PackageManager;
12
+ /** Install all dependencies: "pnpm install" / "npm install" */
13
+ install: string;
14
+ /** Install with lockfile: "pnpm install --frozen-lockfile" / "npm ci" */
15
+ ci: string;
16
+ /** Add a dependency: "pnpm add" / "npm install" */
17
+ add: string;
18
+ /** Add a dev dependency: "pnpm add -D" / "npm install -D" */
19
+ addDev: string;
20
+ /** Add a global dependency: "pnpm add -g" / "npm install -g" */
21
+ addGlobal: string;
22
+ /** Execute a package binary: "pnpm exec" / "npx" */
23
+ exec: string;
24
+ /** Download & execute: "pnpm dlx" / "npx" */
25
+ dlx: string;
26
+ /** Run a script: "pnpm run" / "npm run" */
27
+ run: string;
28
+ /** Run a script with filter: "pnpm run --filter <ws>" / "npm run --workspace=<ws>" */
29
+ runFilter: (workspace: string) => string;
30
+ /** Start script: "pnpm start" / "npm start" */
31
+ start: string;
32
+ /** Install production only (in temp dir for CI): "pnpm install --prod" / "npm install --omit=dev" */
33
+ installProd: string;
34
+ /** create-next-app flag: "--use-pnpm" / (none for npm) */
35
+ createNextAppFlag: string | null;
36
+ }
37
+ /**
38
+ * Get the full command mapping for the given package manager
39
+ */
40
+ export declare function getCommands(pm: PackageManager): PackageManagerCommands;
41
+ /**
42
+ * Detect the preferred package manager for new project initialisation.
43
+ *
44
+ * Strategy (pnpm-preferred):
45
+ * 1. If pnpm is installed on the system → always use pnpm
46
+ * (even when invoked via `npx`, since `npx` is often used out of habit)
47
+ * 2. Otherwise → npm
48
+ *
49
+ * This is intentionally independent of `npm_config_user_agent` so that
50
+ * `npx swallowkit init` still creates a pnpm project when pnpm is available.
51
+ */
52
+ export declare function detectFromUserAgent(): PackageManager;
53
+ /**
54
+ * Detect the package manager used in an existing project directory
55
+ * by checking for lockfiles.
56
+ *
57
+ * Priority: pnpm-lock.yaml > package-lock.json > fallback to detectFromUserAgent()
58
+ */
59
+ export declare function detectFromProject(projectDir?: string): PackageManager;
60
+ /**
61
+ * Get spawn arguments (command + args array) for the package manager.
62
+ * Useful when calling spawn() directly.
63
+ *
64
+ * Examples:
65
+ * spawnArgs("pnpm", ["add", "next@latest"]) => { cmd: "pnpm", args: ["add", "next@latest"] }
66
+ * spawnArgs("npm", ["add", "next@latest"]) => { cmd: "npm", args: ["install", "next@latest"] }
67
+ */
68
+ export declare function spawnArgs(pm: PackageManager, args: string[]): {
69
+ cmd: string;
70
+ args: string[];
71
+ };
72
+ /**
73
+ * Workspace configuration helpers
74
+ */
75
+ export declare function getWorkspaceConfig(pm: PackageManager, workspaces: string[]): {
76
+ /** pnpm uses pnpm-workspace.yaml */
77
+ type: "file";
78
+ filename: string;
79
+ content: string;
80
+ field?: undefined;
81
+ value?: undefined;
82
+ } | {
83
+ type: "packageJson";
84
+ field: string;
85
+ value: string[];
86
+ filename?: undefined;
87
+ content?: undefined;
88
+ };
89
+ /**
90
+ * CI/CD setup step for GitHub Actions
91
+ */
92
+ export declare function getCiSetupStep(pm: PackageManager): string;
93
+ /**
94
+ * CI/CD setup steps for Azure Pipelines
95
+ */
96
+ export declare function getAzurePipelinesSetup(pm: PackageManager): string;
97
+ /**
98
+ * Build script for generated package.json (depends on workspace command syntax)
99
+ */
100
+ export declare function getBuildScript(pm: PackageManager): string;
101
+ /**
102
+ * Functions prestart script
103
+ */
104
+ export declare function getFunctionsPrestart(pm: PackageManager): string;
105
+ /**
106
+ * Functions:start script for root package.json
107
+ */
108
+ export declare function getFunctionsStartScript(pm: PackageManager, backendLanguage?: BackendLanguage): string;
109
+ //# sourceMappingURL=package-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-manager.d.ts","sourceRoot":"","sources":["../../src/utils/package-manager.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,MAAM,CAAC;AAE5C;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,uCAAuC;IACvC,IAAI,EAAE,cAAc,CAAC;IACrB,+DAA+D;IAC/D,OAAO,EAAE,MAAM,CAAC;IAChB,yEAAyE;IACzE,EAAE,EAAE,MAAM,CAAC;IACX,mDAAmD;IACnD,GAAG,EAAE,MAAM,CAAC;IACZ,6DAA6D;IAC7D,MAAM,EAAE,MAAM,CAAC;IACf,gEAAgE;IAChE,SAAS,EAAE,MAAM,CAAC;IAClB,oDAAoD;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,6CAA6C;IAC7C,GAAG,EAAE,MAAM,CAAC;IACZ,2CAA2C;IAC3C,GAAG,EAAE,MAAM,CAAC;IACZ,sFAAsF;IACtF,SAAS,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;IACzC,+CAA+C;IAC/C,KAAK,EAAE,MAAM,CAAC;IACd,qGAAqG;IACrG,WAAW,EAAE,MAAM,CAAC;IACpB,0DAA0D;IAC1D,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,EAAE,EAAE,cAAc,GAAG,sBAAsB,CAmCtE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,IAAI,cAAc,CAEpD;AAcD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,cAAc,CAYrE;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CACvB,EAAE,EAAE,cAAc,EAClB,IAAI,EAAE,MAAM,EAAE,GACb;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,CAEjC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,EAAE;IAGrE,oCAAoC;;;;;;;;;;;;EAazC;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,cAAc,GAAG,MAAM,CAOzD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,cAAc,GAAG,MAAM,CASjE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,cAAc,GAAG,MAAM,CAOzD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,cAAc,GAAG,MAAM,CAK/D;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,EAAE,EAAE,cAAc,EAClB,eAAe,GAAE,eAA8B,GAC9C,MAAM,CASR"}
@@ -0,0 +1,215 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.getCommands = getCommands;
37
+ exports.detectFromUserAgent = detectFromUserAgent;
38
+ exports.detectFromProject = detectFromProject;
39
+ exports.spawnArgs = spawnArgs;
40
+ exports.getWorkspaceConfig = getWorkspaceConfig;
41
+ exports.getCiSetupStep = getCiSetupStep;
42
+ exports.getAzurePipelinesSetup = getAzurePipelinesSetup;
43
+ exports.getBuildScript = getBuildScript;
44
+ exports.getFunctionsPrestart = getFunctionsPrestart;
45
+ exports.getFunctionsStartScript = getFunctionsStartScript;
46
+ const fs = __importStar(require("fs"));
47
+ const path = __importStar(require("path"));
48
+ const child_process_1 = require("child_process");
49
+ /**
50
+ * Get the full command mapping for the given package manager
51
+ */
52
+ function getCommands(pm) {
53
+ if (pm === "pnpm") {
54
+ return {
55
+ name: "pnpm",
56
+ install: "pnpm install",
57
+ ci: "pnpm install --frozen-lockfile",
58
+ add: "pnpm add",
59
+ addDev: "pnpm add -D",
60
+ addGlobal: "pnpm add -g",
61
+ exec: "pnpm exec",
62
+ dlx: "pnpm dlx",
63
+ run: "pnpm run",
64
+ runFilter: (ws) => `pnpm run --filter ${ws}`,
65
+ start: "pnpm start",
66
+ installProd: "pnpm install --prod",
67
+ createNextAppFlag: "--use-pnpm",
68
+ };
69
+ }
70
+ // npm
71
+ return {
72
+ name: "npm",
73
+ install: "npm install",
74
+ ci: "npm ci",
75
+ add: "npm install",
76
+ addDev: "npm install -D",
77
+ addGlobal: "npm install -g",
78
+ exec: "npx",
79
+ dlx: "npx",
80
+ run: "npm run",
81
+ runFilter: (ws) => `npm run --workspace=${ws}`,
82
+ start: "npm start",
83
+ installProd: "npm install --omit=dev",
84
+ createNextAppFlag: null,
85
+ };
86
+ }
87
+ /**
88
+ * Detect the preferred package manager for new project initialisation.
89
+ *
90
+ * Strategy (pnpm-preferred):
91
+ * 1. If pnpm is installed on the system → always use pnpm
92
+ * (even when invoked via `npx`, since `npx` is often used out of habit)
93
+ * 2. Otherwise → npm
94
+ *
95
+ * This is intentionally independent of `npm_config_user_agent` so that
96
+ * `npx swallowkit init` still creates a pnpm project when pnpm is available.
97
+ */
98
+ function detectFromUserAgent() {
99
+ return isPnpmInstalled() ? "pnpm" : "npm";
100
+ }
101
+ /**
102
+ * Check whether pnpm is available on the system PATH.
103
+ */
104
+ function isPnpmInstalled() {
105
+ try {
106
+ (0, child_process_1.execSync)("pnpm --version", { stdio: "ignore" });
107
+ return true;
108
+ }
109
+ catch {
110
+ return false;
111
+ }
112
+ }
113
+ /**
114
+ * Detect the package manager used in an existing project directory
115
+ * by checking for lockfiles.
116
+ *
117
+ * Priority: pnpm-lock.yaml > package-lock.json > fallback to detectFromUserAgent()
118
+ */
119
+ function detectFromProject(projectDir) {
120
+ const dir = projectDir || process.cwd();
121
+ if (fs.existsSync(path.join(dir, "pnpm-lock.yaml"))) {
122
+ return "pnpm";
123
+ }
124
+ if (fs.existsSync(path.join(dir, "package-lock.json"))) {
125
+ return "npm";
126
+ }
127
+ // No lockfile found — fall back to user agent detection
128
+ return detectFromUserAgent();
129
+ }
130
+ /**
131
+ * Get spawn arguments (command + args array) for the package manager.
132
+ * Useful when calling spawn() directly.
133
+ *
134
+ * Examples:
135
+ * spawnArgs("pnpm", ["add", "next@latest"]) => { cmd: "pnpm", args: ["add", "next@latest"] }
136
+ * spawnArgs("npm", ["add", "next@latest"]) => { cmd: "npm", args: ["install", "next@latest"] }
137
+ */
138
+ function spawnArgs(pm, args) {
139
+ return { cmd: pm, args };
140
+ }
141
+ /**
142
+ * Workspace configuration helpers
143
+ */
144
+ function getWorkspaceConfig(pm, workspaces) {
145
+ if (pm === "pnpm") {
146
+ return {
147
+ /** pnpm uses pnpm-workspace.yaml */
148
+ type: "file",
149
+ filename: "pnpm-workspace.yaml",
150
+ content: `packages:\n${workspaces.map((w) => ` - ${w}`).join("\n")}\n`,
151
+ };
152
+ }
153
+ // npm uses "workspaces" field in package.json
154
+ return {
155
+ type: "packageJson",
156
+ field: "workspaces",
157
+ value: workspaces,
158
+ };
159
+ }
160
+ /**
161
+ * CI/CD setup step for GitHub Actions
162
+ */
163
+ function getCiSetupStep(pm) {
164
+ if (pm === "pnpm") {
165
+ return ` - name: Setup pnpm
166
+ uses: pnpm/action-setup@v4`;
167
+ }
168
+ // npm: no extra setup needed (comes with Node.js)
169
+ return "";
170
+ }
171
+ /**
172
+ * CI/CD setup steps for Azure Pipelines
173
+ */
174
+ function getAzurePipelinesSetup(pm) {
175
+ if (pm === "pnpm") {
176
+ return ` - script: |
177
+ corepack enable
178
+ corepack prepare pnpm@latest --activate
179
+ displayName: 'Setup pnpm'`;
180
+ }
181
+ // npm: no extra step needed
182
+ return "";
183
+ }
184
+ /**
185
+ * Build script for generated package.json (depends on workspace command syntax)
186
+ */
187
+ function getBuildScript(pm) {
188
+ const copyStandaloneAssets = `node -e "const fs=require('fs');fs.mkdirSync('.next/standalone/.next',{recursive:true});if(fs.existsSync('.next/static'))fs.cpSync('.next/static','.next/standalone/.next/static',{recursive:true});if(fs.existsSync('public'))fs.cpSync('public','.next/standalone/public',{recursive:true});"`;
189
+ if (pm === "pnpm") {
190
+ return `pnpm run --filter shared build && next build --webpack && ${copyStandaloneAssets}`;
191
+ }
192
+ return `npm run --workspace=shared build && next build --webpack && ${copyStandaloneAssets}`;
193
+ }
194
+ /**
195
+ * Functions prestart script
196
+ */
197
+ function getFunctionsPrestart(pm) {
198
+ if (pm === "pnpm") {
199
+ return "pnpm run build";
200
+ }
201
+ return "npm run build";
202
+ }
203
+ /**
204
+ * Functions:start script for root package.json
205
+ */
206
+ function getFunctionsStartScript(pm, backendLanguage = "typescript") {
207
+ if (backendLanguage === "typescript") {
208
+ if (pm === "pnpm") {
209
+ return "cd functions && pnpm start";
210
+ }
211
+ return "cd functions && npm start";
212
+ }
213
+ return "cd functions && func start";
214
+ }
215
+ //# sourceMappingURL=package-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-manager.js","sourceRoot":"","sources":["../../src/utils/package-manager.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,73 +1,81 @@
1
- {
2
- "name": "swallowkit",
3
- "version": "0.4.0-beta.3",
4
- "description": "Type-safe schema-driven development toolkit for Next.js applications on Azure",
5
- "main": "dist/index.js",
6
- "types": "dist/index.d.ts",
7
- "bin": {
8
- "swallowkit": "dist/cli/index.js"
9
- },
10
- "files": [
11
- "dist",
12
- "README.md",
13
- "LICENSE"
14
- ],
15
- "scripts": {
16
- "build": "tsc",
17
- "dev": "tsc --watch",
18
- "test": "jest",
19
- "lint": "eslint src/**/*.ts",
20
- "format": "prettier --write src/**/*.ts"
21
- },
22
- "keywords": [
23
- "azure",
24
- "static-web-apps",
25
- "react",
26
- "hooks",
27
- "typescript",
28
- "framework"
29
- ],
30
- "author": "Takumasa Hirabayashi",
31
- "license": "MIT",
32
- "dependencies": {
33
- "@azure/cosmos": "^4.7.0",
34
- "commander": "^11.0.0",
35
- "cors": "^2.8.5",
36
- "execa": "^8.0.1",
37
- "express": "^4.18.0",
38
- "prompts": "^2.4.2",
39
- "tsx": "^4.7.0",
40
- "zod": "^3.25.76"
41
- },
42
- "devDependencies": {
43
- "@types/cors": "^2.8.0",
44
- "@types/express": "^4.17.0",
45
- "@types/jest": "^29.0.0",
46
- "@types/node": "^20.0.0",
47
- "@types/prompts": "^2.4.9",
48
- "@types/react": "^18.0.0",
49
- "@typescript-eslint/eslint-plugin": "^6.0.0",
50
- "@typescript-eslint/parser": "^6.0.0",
51
- "eslint": "^8.0.0",
52
- "jest": "^29.0.0",
53
- "prettier": "^3.0.0",
54
- "ts-jest": "^29.0.0",
55
- "typescript": "^5.9.2"
56
- },
57
- "peerDependencies": {
58
- "next": ">=14.0.0",
59
- "react": ">=18.0.0",
60
- "react-dom": ">=18.0.0"
61
- },
62
- "directories": {
63
- "doc": "docs"
64
- },
65
- "repository": {
66
- "type": "git",
67
- "url": "git+https://github.com/himanago/swallowkit.git"
68
- },
69
- "bugs": {
70
- "url": "https://github.com/himanago/swallowkit/issues"
71
- },
72
- "homepage": "https://github.com/himanago/swallowkit#readme"
73
- }
1
+ {
2
+ "name": "swallowkit",
3
+ "version": "1.0.0-beta.10",
4
+ "description": "Type-safe schema-driven development toolkit for Next.js applications on Azure",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "bin": {
8
+ "swallowkit": "dist/cli/index.js"
9
+ },
10
+ "files": [
11
+ "dist",
12
+ "src",
13
+ "README.md",
14
+ "LICENSE"
15
+ ],
16
+ "scripts": {
17
+ "build": "tsc",
18
+ "dev": "tsc --watch",
19
+ "test": "jest",
20
+ "lint": "eslint src/**/*.ts",
21
+ "format": "prettier --write src/**/*.ts",
22
+ "docs:dev": "vitepress dev docs",
23
+ "docs:build": "vitepress build docs",
24
+ "docs:preview": "vitepress preview docs"
25
+ },
26
+ "keywords": [
27
+ "azure",
28
+ "static-web-apps",
29
+ "react",
30
+ "hooks",
31
+ "typescript",
32
+ "framework"
33
+ ],
34
+ "author": "Takumasa Hirabayashi",
35
+ "license": "MIT",
36
+ "dependencies": {
37
+ "@azure/cosmos": "^4.7.0",
38
+ "commander": "^11.0.0",
39
+ "cors": "^2.8.5",
40
+ "execa": "^8.0.1",
41
+ "express": "^4.18.0",
42
+ "prompts": "^2.4.2",
43
+ "tsx": "^4.7.0",
44
+ "zod": "^3.25.76"
45
+ },
46
+ "devDependencies": {
47
+ "@types/cors": "^2.8.0",
48
+ "@types/express": "^4.17.0",
49
+ "@types/jest": "^29.0.0",
50
+ "@types/node": "^20.0.0",
51
+ "@types/prompts": "^2.4.9",
52
+ "@types/react": "^18.0.0",
53
+ "@typescript-eslint/eslint-plugin": "^6.0.0",
54
+ "@typescript-eslint/parser": "^6.0.0",
55
+ "eslint": "^8.0.0",
56
+ "jest": "^29.0.0",
57
+ "prettier": "^3.0.0",
58
+ "react": "^18.3.1",
59
+ "react-dom": "^18.3.1",
60
+ "ts-jest": "^29.0.0",
61
+ "typescript": "^5.9.2",
62
+ "vitepress": "^1.6.4"
63
+ },
64
+ "peerDependencies": {
65
+ "next": ">=14.0.0",
66
+ "react": ">=18.0.0",
67
+ "react-dom": ">=18.0.0"
68
+ },
69
+ "directories": {
70
+ "doc": "docs"
71
+ },
72
+ "repository": {
73
+ "type": "git",
74
+ "url": "git+https://github.com/himanago/swallowkit.git"
75
+ },
76
+ "bugs": {
77
+ "url": "https://github.com/himanago/swallowkit/issues"
78
+ },
79
+ "homepage": "https://github.com/himanago/swallowkit#readme",
80
+ "packageManager": "pnpm@latest"
81
+ }