@modularizer/plat 0.1.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 (287) hide show
  1. package/README.md +574 -0
  2. package/bin/z2.js +5 -0
  3. package/dist/args/coerce.d.ts +54 -0
  4. package/dist/args/coerce.d.ts.map +1 -0
  5. package/dist/args/coerce.js +236 -0
  6. package/dist/args/coerce.js.map +1 -0
  7. package/dist/args/index.d.ts +2 -0
  8. package/dist/args/index.d.ts.map +1 -0
  9. package/dist/args/index.js +2 -0
  10. package/dist/args/index.js.map +1 -0
  11. package/dist/args/scalars.d.ts +87 -0
  12. package/dist/args/scalars.d.ts.map +1 -0
  13. package/dist/args/scalars.js +22 -0
  14. package/dist/args/scalars.js.map +1 -0
  15. package/dist/args/validate.d.ts +23 -0
  16. package/dist/args/validate.d.ts.map +1 -0
  17. package/dist/args/validate.js +185 -0
  18. package/dist/args/validate.js.map +1 -0
  19. package/dist/args/z2.d.ts +27 -0
  20. package/dist/args/z2.d.ts.map +1 -0
  21. package/dist/args/z2.js +24 -0
  22. package/dist/args/z2.js.map +1 -0
  23. package/dist/cli/commands/api-proxy.d.ts +9 -0
  24. package/dist/cli/commands/api-proxy.d.ts.map +1 -0
  25. package/dist/cli/commands/api-proxy.js +292 -0
  26. package/dist/cli/commands/api-proxy.js.map +1 -0
  27. package/dist/cli/commands/env.d.ts +32 -0
  28. package/dist/cli/commands/env.d.ts.map +1 -0
  29. package/dist/cli/commands/env.js +157 -0
  30. package/dist/cli/commands/env.js.map +1 -0
  31. package/dist/cli/commands/gen.d.ts +2 -0
  32. package/dist/cli/commands/gen.d.ts.map +1 -0
  33. package/dist/cli/commands/gen.js +88 -0
  34. package/dist/cli/commands/gen.js.map +1 -0
  35. package/dist/cli/commands/init-project.d.ts +9 -0
  36. package/dist/cli/commands/init-project.d.ts.map +1 -0
  37. package/dist/cli/commands/init-project.js +143 -0
  38. package/dist/cli/commands/init-project.js.map +1 -0
  39. package/dist/cli/commands/jwt-cmd.d.ts +10 -0
  40. package/dist/cli/commands/jwt-cmd.d.ts.map +1 -0
  41. package/dist/cli/commands/jwt-cmd.js +33 -0
  42. package/dist/cli/commands/jwt-cmd.js.map +1 -0
  43. package/dist/cli/commands/run.d.ts +5 -0
  44. package/dist/cli/commands/run.d.ts.map +1 -0
  45. package/dist/cli/commands/run.js +31 -0
  46. package/dist/cli/commands/run.js.map +1 -0
  47. package/dist/cli/commands/serve.d.ts +2 -0
  48. package/dist/cli/commands/serve.d.ts.map +1 -0
  49. package/dist/cli/commands/serve.js +43 -0
  50. package/dist/cli/commands/serve.js.map +1 -0
  51. package/dist/cli/commands/watch.d.ts +5 -0
  52. package/dist/cli/commands/watch.d.ts.map +1 -0
  53. package/dist/cli/commands/watch.js +119 -0
  54. package/dist/cli/commands/watch.js.map +1 -0
  55. package/dist/cli/index.d.ts +11 -0
  56. package/dist/cli/index.d.ts.map +1 -0
  57. package/dist/cli/index.js +11 -0
  58. package/dist/cli/index.js.map +1 -0
  59. package/dist/cli/jwt-helper.d.ts +32 -0
  60. package/dist/cli/jwt-helper.d.ts.map +1 -0
  61. package/dist/cli/jwt-helper.js +84 -0
  62. package/dist/cli/jwt-helper.js.map +1 -0
  63. package/dist/cli/proxy.d.ts +40 -0
  64. package/dist/cli/proxy.d.ts.map +1 -0
  65. package/dist/cli/proxy.js +171 -0
  66. package/dist/cli/proxy.js.map +1 -0
  67. package/dist/cli/runtime.d.ts +17 -0
  68. package/dist/cli/runtime.d.ts.map +1 -0
  69. package/dist/cli/runtime.js +286 -0
  70. package/dist/cli/runtime.js.map +1 -0
  71. package/dist/cli/spec-source.d.ts +13 -0
  72. package/dist/cli/spec-source.d.ts.map +1 -0
  73. package/dist/cli/spec-source.js +207 -0
  74. package/dist/cli/spec-source.js.map +1 -0
  75. package/dist/cli/z2.d.ts +7 -0
  76. package/dist/cli/z2.d.ts.map +1 -0
  77. package/dist/cli/z2.js +93 -0
  78. package/dist/cli/z2.js.map +1 -0
  79. package/dist/client/file-transport-plugin.d.ts +25 -0
  80. package/dist/client/file-transport-plugin.d.ts.map +1 -0
  81. package/dist/client/file-transport-plugin.js +80 -0
  82. package/dist/client/file-transport-plugin.js.map +1 -0
  83. package/dist/client/http-transport-plugin.d.ts +27 -0
  84. package/dist/client/http-transport-plugin.d.ts.map +1 -0
  85. package/dist/client/http-transport-plugin.js +48 -0
  86. package/dist/client/http-transport-plugin.js.map +1 -0
  87. package/dist/client/index.d.ts +6 -0
  88. package/dist/client/index.d.ts.map +1 -0
  89. package/dist/client/index.js +6 -0
  90. package/dist/client/index.js.map +1 -0
  91. package/dist/client/openapi-client.d.ts +332 -0
  92. package/dist/client/openapi-client.d.ts.map +1 -0
  93. package/dist/client/openapi-client.js +879 -0
  94. package/dist/client/openapi-client.js.map +1 -0
  95. package/dist/client/proxy.d.ts +5 -0
  96. package/dist/client/proxy.d.ts.map +1 -0
  97. package/dist/client/proxy.js +353 -0
  98. package/dist/client/proxy.js.map +1 -0
  99. package/dist/client/request-builder.d.ts +4 -0
  100. package/dist/client/request-builder.d.ts.map +1 -0
  101. package/dist/client/request-builder.js +88 -0
  102. package/dist/client/request-builder.js.map +1 -0
  103. package/dist/client/rpc-transport-plugin.d.ts +17 -0
  104. package/dist/client/rpc-transport-plugin.d.ts.map +1 -0
  105. package/dist/client/rpc-transport-plugin.js +69 -0
  106. package/dist/client/rpc-transport-plugin.js.map +1 -0
  107. package/dist/client/tools.d.ts +69 -0
  108. package/dist/client/tools.d.ts.map +1 -0
  109. package/dist/client/tools.js +122 -0
  110. package/dist/client/tools.js.map +1 -0
  111. package/dist/client/transport-plugin.d.ts +62 -0
  112. package/dist/client/transport-plugin.d.ts.map +1 -0
  113. package/dist/client/transport-plugin.js +40 -0
  114. package/dist/client/transport-plugin.js.map +1 -0
  115. package/dist/index.d.ts +9 -0
  116. package/dist/index.d.ts.map +1 -0
  117. package/dist/index.js +8 -0
  118. package/dist/index.js.map +1 -0
  119. package/dist/logging.d.ts +9 -0
  120. package/dist/logging.d.ts.map +1 -0
  121. package/dist/logging.js +29 -0
  122. package/dist/logging.js.map +1 -0
  123. package/dist/rpc.d.ts +39 -0
  124. package/dist/rpc.d.ts.map +1 -0
  125. package/dist/rpc.js +2 -0
  126. package/dist/rpc.js.map +1 -0
  127. package/dist/server/auth/index.d.ts +4 -0
  128. package/dist/server/auth/index.d.ts.map +1 -0
  129. package/dist/server/auth/index.js +2 -0
  130. package/dist/server/auth/index.js.map +1 -0
  131. package/dist/server/auth/jwt.d.ts +27 -0
  132. package/dist/server/auth/jwt.d.ts.map +1 -0
  133. package/dist/server/auth/jwt.js +95 -0
  134. package/dist/server/auth/jwt.js.map +1 -0
  135. package/dist/server/cache/index.d.ts +2 -0
  136. package/dist/server/cache/index.d.ts.map +1 -0
  137. package/dist/server/cache/index.js +2 -0
  138. package/dist/server/cache/index.js.map +1 -0
  139. package/dist/server/cache/utils.d.ts +30 -0
  140. package/dist/server/cache/utils.d.ts.map +1 -0
  141. package/dist/server/cache/utils.js +116 -0
  142. package/dist/server/cache/utils.js.map +1 -0
  143. package/dist/server/call-sessions.d.ts +50 -0
  144. package/dist/server/call-sessions.d.ts.map +1 -0
  145. package/dist/server/call-sessions.js +90 -0
  146. package/dist/server/call-sessions.js.map +1 -0
  147. package/dist/server/config/bucket.d.ts +9 -0
  148. package/dist/server/config/bucket.d.ts.map +1 -0
  149. package/dist/server/config/bucket.js +57 -0
  150. package/dist/server/config/bucket.js.map +1 -0
  151. package/dist/server/config/defaults.d.ts +3 -0
  152. package/dist/server/config/defaults.d.ts.map +1 -0
  153. package/dist/server/config/defaults.js +29 -0
  154. package/dist/server/config/defaults.js.map +1 -0
  155. package/dist/server/config/index.d.ts +5 -0
  156. package/dist/server/config/index.d.ts.map +1 -0
  157. package/dist/server/config/index.js +5 -0
  158. package/dist/server/config/index.js.map +1 -0
  159. package/dist/server/config/logger.d.ts +3 -0
  160. package/dist/server/config/logger.d.ts.map +1 -0
  161. package/dist/server/config/logger.js +2 -0
  162. package/dist/server/config/logger.js.map +1 -0
  163. package/dist/server/config/types.d.ts +198 -0
  164. package/dist/server/config/types.d.ts.map +1 -0
  165. package/dist/server/config/types.js +2 -0
  166. package/dist/server/config/types.js.map +1 -0
  167. package/dist/server/core.d.ts +42 -0
  168. package/dist/server/core.d.ts.map +1 -0
  169. package/dist/server/core.js +202 -0
  170. package/dist/server/core.js.map +1 -0
  171. package/dist/server/env.d.ts +39 -0
  172. package/dist/server/env.d.ts.map +1 -0
  173. package/dist/server/env.js +66 -0
  174. package/dist/server/env.js.map +1 -0
  175. package/dist/server/file-queue-protocol-plugin.d.ts +7 -0
  176. package/dist/server/file-queue-protocol-plugin.d.ts.map +1 -0
  177. package/dist/server/file-queue-protocol-plugin.js +150 -0
  178. package/dist/server/file-queue-protocol-plugin.js.map +1 -0
  179. package/dist/server/file-queue.d.ts +25 -0
  180. package/dist/server/file-queue.d.ts.map +1 -0
  181. package/dist/server/file-queue.js +2 -0
  182. package/dist/server/file-queue.js.map +1 -0
  183. package/dist/server/help.d.ts +19 -0
  184. package/dist/server/help.d.ts.map +1 -0
  185. package/dist/server/help.js +91 -0
  186. package/dist/server/help.js.map +1 -0
  187. package/dist/server/index.d.ts +29 -0
  188. package/dist/server/index.d.ts.map +1 -0
  189. package/dist/server/index.js +29 -0
  190. package/dist/server/index.js.map +1 -0
  191. package/dist/server/operation-registry.d.ts +9 -0
  192. package/dist/server/operation-registry.d.ts.map +1 -0
  193. package/dist/server/operation-registry.js +16 -0
  194. package/dist/server/operation-registry.js.map +1 -0
  195. package/dist/server/param-aliases.d.ts +40 -0
  196. package/dist/server/param-aliases.d.ts.map +1 -0
  197. package/dist/server/param-aliases.js +112 -0
  198. package/dist/server/param-aliases.js.map +1 -0
  199. package/dist/server/protocol-plugin.d.ts +72 -0
  200. package/dist/server/protocol-plugin.d.ts.map +1 -0
  201. package/dist/server/protocol-plugin.js +2 -0
  202. package/dist/server/protocol-plugin.js.map +1 -0
  203. package/dist/server/rate-limit/index.d.ts +2 -0
  204. package/dist/server/rate-limit/index.d.ts.map +1 -0
  205. package/dist/server/rate-limit/index.js +2 -0
  206. package/dist/server/rate-limit/index.js.map +1 -0
  207. package/dist/server/rate-limit/utils.d.ts +27 -0
  208. package/dist/server/rate-limit/utils.d.ts.map +1 -0
  209. package/dist/server/rate-limit/utils.js +126 -0
  210. package/dist/server/rate-limit/utils.js.map +1 -0
  211. package/dist/server/routing.d.ts +39 -0
  212. package/dist/server/routing.d.ts.map +1 -0
  213. package/dist/server/routing.js +70 -0
  214. package/dist/server/routing.js.map +1 -0
  215. package/dist/server/rpc-protocol-plugin.d.ts +12 -0
  216. package/dist/server/rpc-protocol-plugin.d.ts.map +1 -0
  217. package/dist/server/rpc-protocol-plugin.js +134 -0
  218. package/dist/server/rpc-protocol-plugin.js.map +1 -0
  219. package/dist/server/server.d.ts +143 -0
  220. package/dist/server/server.d.ts.map +1 -0
  221. package/dist/server/server.js +1161 -0
  222. package/dist/server/server.js.map +1 -0
  223. package/dist/server/token-limit/index.d.ts +2 -0
  224. package/dist/server/token-limit/index.d.ts.map +1 -0
  225. package/dist/server/token-limit/index.js +2 -0
  226. package/dist/server/token-limit/index.js.map +1 -0
  227. package/dist/server/token-limit/utils.d.ts +44 -0
  228. package/dist/server/token-limit/utils.d.ts.map +1 -0
  229. package/dist/server/token-limit/utils.js +260 -0
  230. package/dist/server/token-limit/utils.js.map +1 -0
  231. package/dist/server/tools.d.ts +51 -0
  232. package/dist/server/tools.d.ts.map +1 -0
  233. package/dist/server/tools.js +225 -0
  234. package/dist/server/tools.js.map +1 -0
  235. package/dist/server/transports.d.ts +25 -0
  236. package/dist/server/transports.d.ts.map +1 -0
  237. package/dist/server/transports.js +2 -0
  238. package/dist/server/transports.js.map +1 -0
  239. package/dist/spec/decorators.d.ts +41 -0
  240. package/dist/spec/decorators.d.ts.map +1 -0
  241. package/dist/spec/decorators.js +93 -0
  242. package/dist/spec/decorators.js.map +1 -0
  243. package/dist/spec/index.d.ts +3 -0
  244. package/dist/spec/index.d.ts.map +1 -0
  245. package/dist/spec/index.js +3 -0
  246. package/dist/spec/index.js.map +1 -0
  247. package/dist/spec/metadata.d.ts +5 -0
  248. package/dist/spec/metadata.d.ts.map +1 -0
  249. package/dist/spec/metadata.js +37 -0
  250. package/dist/spec/metadata.js.map +1 -0
  251. package/dist/types/client.d.ts +81 -0
  252. package/dist/types/client.d.ts.map +1 -0
  253. package/dist/types/client.js +14 -0
  254. package/dist/types/client.js.map +1 -0
  255. package/dist/types/endpoints.d.ts +76 -0
  256. package/dist/types/endpoints.d.ts.map +1 -0
  257. package/dist/types/endpoints.js +2 -0
  258. package/dist/types/endpoints.js.map +1 -0
  259. package/dist/types/errors.d.ts +86 -0
  260. package/dist/types/errors.d.ts.map +1 -0
  261. package/dist/types/errors.js +153 -0
  262. package/dist/types/errors.js.map +1 -0
  263. package/dist/types/http.d.ts +80 -0
  264. package/dist/types/http.d.ts.map +1 -0
  265. package/dist/types/http.js +61 -0
  266. package/dist/types/http.js.map +1 -0
  267. package/dist/types/index.d.ts +9 -0
  268. package/dist/types/index.d.ts.map +1 -0
  269. package/dist/types/index.js +9 -0
  270. package/dist/types/index.js.map +1 -0
  271. package/dist/types/openapi.d.ts +220 -0
  272. package/dist/types/openapi.d.ts.map +1 -0
  273. package/dist/types/openapi.js +11 -0
  274. package/dist/types/openapi.js.map +1 -0
  275. package/dist/types/opts.d.ts +46 -0
  276. package/dist/types/opts.d.ts.map +1 -0
  277. package/dist/types/opts.js +2 -0
  278. package/dist/types/opts.js.map +1 -0
  279. package/dist/types/plugins.d.ts +93 -0
  280. package/dist/types/plugins.d.ts.map +1 -0
  281. package/dist/types/plugins.js +5 -0
  282. package/dist/types/plugins.js.map +1 -0
  283. package/dist/types/tools.d.ts +52 -0
  284. package/dist/types/tools.d.ts.map +1 -0
  285. package/dist/types/tools.js +2 -0
  286. package/dist/types/tools.js.map +1 -0
  287. package/package.json +84 -0
@@ -0,0 +1,24 @@
1
+ /**
2
+ * plat — type-driven schemas.
3
+ *
4
+ * Define types with plain TypeScript + inline comments for constraints.
5
+ * Run gen-schema.ts to produce JSON Schema. Import the schema and use
6
+ * parse() / safeParse() for runtime validation with coercion.
7
+ *
8
+ * Example:
9
+ *
10
+ * type CreatePost = {
11
+ * title: string // min: 1, max: 200
12
+ * author: email
13
+ * priority: posint
14
+ * age: int<0, 150>
15
+ * }
16
+ *
17
+ * Scalars (type aliases with built-in constraints):
18
+ * str, email, url, uuid, datestr, datetime,
19
+ * hex, digits, numeric, upper, lower, title, slug,
20
+ * num, int, posint, pos, percent, limit, offset
21
+ */
22
+ export { parse, safeParse, ValidationError } from './validate';
23
+ export { coerce, parseDateish, parseRelativeDate, registerCoerce, Coerce } from './coerce';
24
+ //# sourceMappingURL=z2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"z2.js","sourceRoot":"","sources":["../../src/args/z2.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAE9D,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * API Proxy command
3
+ * Call API endpoints directly from CLI using OpenAPI spec
4
+ */
5
+ /**
6
+ * Proxy an API call using OpenAPI spec
7
+ */
8
+ export declare function apiProxy(cwd: string, argv: string[]): Promise<void>;
9
+ //# sourceMappingURL=api-proxy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-proxy.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/api-proxy.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAuNH;;GAEG;AACH,wBAAsB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAwIzE"}
@@ -0,0 +1,292 @@
1
+ /**
2
+ * API Proxy command
3
+ * Call API endpoints directly from CLI using OpenAPI spec
4
+ */
5
+ import fs from 'fs';
6
+ import path from 'path';
7
+ /**
8
+ * Parse CLI arguments into params object and options
9
+ * Supports multiple formats:
10
+ * - --key value (space-separated)
11
+ * - --key=value (equals-separated)
12
+ * - key=value (no dashes)
13
+ * - key=value&key2=value2 (query string format)
14
+ * - {"key": value, "key2": "value2"} (JSON object)
15
+ * Plus options: --timeoutMs=5000, etc.
16
+ */
17
+ function parseCliArgs(args) {
18
+ const params = {};
19
+ const options = {};
20
+ const pathParams = {};
21
+ let i = 0;
22
+ while (i < args.length) {
23
+ const arg = args[i];
24
+ if (arg === undefined) {
25
+ i++;
26
+ continue;
27
+ }
28
+ // Handle JSON object format
29
+ if (arg.startsWith('{') && arg.endsWith('}')) {
30
+ try {
31
+ const jsonObj = JSON.parse(arg);
32
+ Object.assign(params, jsonObj);
33
+ i++;
34
+ continue;
35
+ }
36
+ catch {
37
+ // Not valid JSON, treat as regular arg
38
+ }
39
+ }
40
+ // Handle query string format (key=value&key2=value2)
41
+ if (!arg.startsWith('-') && arg.includes('=') && arg.includes('&')) {
42
+ const pairs = arg.split('&');
43
+ for (const pair of pairs) {
44
+ const [key, val] = pair.split('=', 2);
45
+ if (key !== undefined) {
46
+ params[key] = decodeURIComponent(val || '');
47
+ }
48
+ }
49
+ i++;
50
+ continue;
51
+ }
52
+ // Handle --key=value (equals-separated with dashes - these are options)
53
+ if (arg.startsWith('--') && arg.includes('=')) {
54
+ const [key, val] = arg.split('=', 2);
55
+ if (key !== undefined) {
56
+ const cleanKey = key.slice(2);
57
+ // Treat as option if it's a known option name
58
+ if (['timeoutMs', 'timeout', 'retryMs', 'retryDelayMs'].includes(cleanKey)) {
59
+ const numVal = parseInt(val || '0', 10);
60
+ options[cleanKey] = isNaN(numVal) ? val : numVal;
61
+ }
62
+ else {
63
+ params[cleanKey] = decodeURIComponent(val || '');
64
+ }
65
+ }
66
+ i++;
67
+ continue;
68
+ }
69
+ // Handle key=value (no dashes) or --key=value
70
+ if (arg.includes('=') && !arg.startsWith('--')) {
71
+ const [key, val] = arg.split('=', 2);
72
+ if (key !== undefined) {
73
+ params[key] = decodeURIComponent(val || '');
74
+ }
75
+ i++;
76
+ continue;
77
+ }
78
+ // Handle --key value (space-separated)
79
+ if (arg.startsWith('--') && i + 1 < args.length) {
80
+ const key = arg.slice(2);
81
+ const value = args[i + 1];
82
+ // Check if next arg exists and is not another flag
83
+ if (value && !value.startsWith('-') && !value.includes('=')) {
84
+ // Known options go to options, others to params
85
+ if (['timeoutMs', 'timeout', 'retryMs', 'retryDelayMs'].includes(key)) {
86
+ const numVal = parseInt(value, 10);
87
+ options[key] = isNaN(numVal) ? value : numVal;
88
+ }
89
+ else {
90
+ params[key] = value;
91
+ }
92
+ i += 2;
93
+ continue;
94
+ }
95
+ }
96
+ i++;
97
+ }
98
+ return { params, pathParams, options };
99
+ }
100
+ /**
101
+ * Find operation in OpenAPI spec by operationId
102
+ */
103
+ function findOperation(spec, operationId) {
104
+ for (const [pathKey, methods] of Object.entries(spec.paths)) {
105
+ for (const [method, operation] of Object.entries(methods)) {
106
+ if (operation.operationId === operationId) {
107
+ return { path: pathKey, method, operation };
108
+ }
109
+ }
110
+ }
111
+ return null;
112
+ }
113
+ /**
114
+ * Extract path parameter names from a path template
115
+ * e.g., /api/orders/{id}/items/{itemId} → ['id', 'itemId']
116
+ */
117
+ function extractPathParamNames(pathTemplate) {
118
+ const matches = pathTemplate.match(/{([^}]+)}/g) || [];
119
+ return matches.map(m => m.slice(1, -1));
120
+ }
121
+ /**
122
+ * Build the request URL with path substitutions and query parameters
123
+ */
124
+ function buildUrl(baseUrl, pathTemplate, params, method) {
125
+ let url = baseUrl + pathTemplate;
126
+ const remainingParams = { ...params };
127
+ // Extract and substitute path parameters
128
+ const pathParamNames = extractPathParamNames(pathTemplate);
129
+ for (const paramName of pathParamNames) {
130
+ if (remainingParams.hasOwnProperty(paramName)) {
131
+ const value = remainingParams[paramName];
132
+ url = url.replace(`{${paramName}}`, encodeURIComponent(String(value)));
133
+ delete remainingParams[paramName];
134
+ }
135
+ }
136
+ // Handle remaining parameters based on HTTP method
137
+ let body;
138
+ if (['GET', 'HEAD', 'DELETE'].includes(method.toUpperCase())) {
139
+ // Add as query parameters
140
+ const searchParams = new URLSearchParams();
141
+ for (const [key, value] of Object.entries(remainingParams)) {
142
+ if (value !== undefined && value !== null) {
143
+ searchParams.append(key, String(value));
144
+ }
145
+ }
146
+ const queryString = searchParams.toString();
147
+ if (queryString) {
148
+ url += (url.includes('?') ? '&' : '?') + queryString;
149
+ }
150
+ }
151
+ else {
152
+ // PUT/POST/PATCH: add to body
153
+ if (Object.keys(remainingParams).length > 0) {
154
+ body = JSON.stringify(remainingParams);
155
+ }
156
+ }
157
+ return { url, body };
158
+ }
159
+ /**
160
+ * Check if a string is an HTTP method
161
+ */
162
+ function isHttpMethod(str) {
163
+ return ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'HEAD'].includes(str.toUpperCase());
164
+ }
165
+ /**
166
+ * Proxy an API call using OpenAPI spec
167
+ */
168
+ export async function apiProxy(cwd, argv) {
169
+ if (argv.length === 0) {
170
+ console.error('❌ Error: No operation specified');
171
+ console.error('Usage:');
172
+ console.error(' plat <operationId> [--key=value ...]');
173
+ console.error(' plat <method> <path> [--key=value ...]');
174
+ process.exit(1);
175
+ }
176
+ try {
177
+ // Load OpenAPI spec
178
+ const specPath = path.join(cwd, 'openapi.json');
179
+ if (!fs.existsSync(specPath)) {
180
+ console.error('❌ Error: openapi.json not found');
181
+ console.error('Run: plat gen openapi');
182
+ process.exit(1);
183
+ }
184
+ const specContent = fs.readFileSync(specPath, 'utf-8');
185
+ const spec = JSON.parse(specContent);
186
+ // Check if first argument is an HTTP method
187
+ let operationId;
188
+ let methodOverride;
189
+ let pathOverride;
190
+ let argsStartIndex = 1;
191
+ if (isHttpMethod(argv[0]) && argv.length > 1) {
192
+ methodOverride = argv[0].toUpperCase();
193
+ pathOverride = argv[1];
194
+ argsStartIndex = 2;
195
+ }
196
+ else {
197
+ operationId = argv[0];
198
+ }
199
+ let operation = null;
200
+ // If we have method + path override, find the operation by those
201
+ if (methodOverride && pathOverride) {
202
+ for (const [pathKey, methods] of Object.entries(spec.paths)) {
203
+ if (pathKey === pathOverride || pathKey === `/api${pathOverride}`) {
204
+ const method = methods[methodOverride.toLowerCase()];
205
+ if (method) {
206
+ operation = { path: pathKey, method: methodOverride.toLowerCase(), operation: method };
207
+ break;
208
+ }
209
+ }
210
+ }
211
+ if (!operation) {
212
+ console.error(`❌ Error: No operation found for ${methodOverride} ${pathOverride}`);
213
+ process.exit(1);
214
+ }
215
+ }
216
+ else {
217
+ operation = findOperation(spec, operationId);
218
+ if (!operation) {
219
+ console.error(`❌ Error: Operation '${operationId}' not found in OpenAPI spec`);
220
+ process.exit(1);
221
+ }
222
+ }
223
+ // Parse remaining arguments
224
+ const parsed = parseCliArgs(argv.slice(argsStartIndex));
225
+ // Resolve base URL
226
+ const baseUrl = process.env.PLAT_BASE_URL ||
227
+ process.env.API_BASE_URL ||
228
+ process.env.BASE_URL ||
229
+ 'http://localhost:3000';
230
+ // Build request URL
231
+ const { url, body } = buildUrl(baseUrl, operation.path, parsed.params, operation.method);
232
+ // Build fetch options
233
+ const fetchOptions = {
234
+ method: operation.method.toUpperCase(),
235
+ headers: {
236
+ 'Content-Type': 'application/json',
237
+ },
238
+ };
239
+ // Add timeout if specified
240
+ const timeoutMs = parsed.options.timeoutMs || parsed.options.timeout;
241
+ if (timeoutMs) {
242
+ const controller = new AbortController();
243
+ const timeout = setTimeout(() => controller.abort(), timeoutMs);
244
+ fetchOptions.signal = controller.signal;
245
+ }
246
+ // Add Authorization header if token is available
247
+ const token = process.env.PLAT_TOKEN ||
248
+ process.env.API_TOKEN ||
249
+ process.env.AUTH_TOKEN;
250
+ if (token) {
251
+ ;
252
+ fetchOptions.headers['Authorization'] = `Bearer ${token}`;
253
+ }
254
+ // Add body if present
255
+ if (body) {
256
+ fetchOptions.body = body;
257
+ }
258
+ // Make request
259
+ const response = await fetch(url, fetchOptions);
260
+ // Handle response
261
+ const contentType = response.headers.get('content-type') || '';
262
+ let responseBody = null;
263
+ if (contentType.includes('application/json')) {
264
+ responseBody = await response.json();
265
+ }
266
+ else {
267
+ responseBody = await response.text();
268
+ }
269
+ if (!response.ok) {
270
+ console.error(`❌ Error: ${response.status} ${response.statusText}`);
271
+ if (typeof responseBody === 'object') {
272
+ console.error(JSON.stringify(responseBody, null, 2));
273
+ }
274
+ else {
275
+ console.error(responseBody);
276
+ }
277
+ process.exit(1);
278
+ }
279
+ // Print formatted response
280
+ if (typeof responseBody === 'object') {
281
+ console.log(JSON.stringify(responseBody, null, 2));
282
+ }
283
+ else {
284
+ console.log(responseBody);
285
+ }
286
+ }
287
+ catch (error) {
288
+ console.error('❌ Error:', error.message);
289
+ process.exit(1);
290
+ }
291
+ }
292
+ //# sourceMappingURL=api-proxy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-proxy.js","sourceRoot":"","sources":["../../../src/cli/commands/api-proxy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Environment management commands
3
+ * Handles .env file initialization and JWT secret generation
4
+ */
5
+ /**
6
+ * Parse env file into key-value object
7
+ */
8
+ export declare function parseEnvFile(content: string): Record<string, string>;
9
+ /**
10
+ * Format env file with comments preserved
11
+ */
12
+ export declare function formatEnvFile(sample: string, existing: Record<string, string>): string;
13
+ /**
14
+ * Update or create env file with a key-value pair
15
+ */
16
+ export declare function updateEnvFile(filePath: string, key: string, value: string): void;
17
+ /**
18
+ * Generate cryptographically secure random string
19
+ */
20
+ export declare function generateSecret(length: number): string;
21
+ /**
22
+ * Initialize .env file from .env.sample
23
+ * - Copies .env.sample to .env if .env doesn't exist
24
+ * - If .env exists, merges in new variables from .env.sample
25
+ * - Preserves existing values
26
+ */
27
+ export declare function envUpsert(cwd: string): void;
28
+ /**
29
+ * Generate and update JWT_SECRET in .env
30
+ */
31
+ export declare function envRoll(cwd: string, length?: number): void;
32
+ //# sourceMappingURL=env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/env.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAuBpE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC/B,MAAM,CA+BR;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,GACZ,IAAI,CA4BN;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAErD;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAmC3C;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAwB1D"}
@@ -0,0 +1,157 @@
1
+ /**
2
+ * Environment management commands
3
+ * Handles .env file initialization and JWT secret generation
4
+ */
5
+ import fs from 'fs';
6
+ import path from 'path';
7
+ import crypto from 'crypto';
8
+ /**
9
+ * Parse env file into key-value object
10
+ */
11
+ export function parseEnvFile(content) {
12
+ const result = {};
13
+ const lines = content.split('\n');
14
+ for (const line of lines) {
15
+ const trimmed = line.trim();
16
+ // Skip empty lines and comments
17
+ if (!trimmed || trimmed.startsWith('#')) {
18
+ continue;
19
+ }
20
+ const eqIndex = trimmed.indexOf('=');
21
+ if (eqIndex === -1)
22
+ continue;
23
+ const key = trimmed.substring(0, eqIndex).trim();
24
+ const value = trimmed.substring(eqIndex + 1).trim();
25
+ // Remove quotes if present
26
+ result[key] = value.replace(/^["']|["']$/g, '');
27
+ }
28
+ return result;
29
+ }
30
+ /**
31
+ * Format env file with comments preserved
32
+ */
33
+ export function formatEnvFile(sample, existing) {
34
+ let result = '';
35
+ const lines = sample.split('\n');
36
+ for (const line of lines) {
37
+ const trimmed = line.trim();
38
+ // Preserve comments and empty lines
39
+ if (!trimmed || trimmed.startsWith('#')) {
40
+ result += line + '\n';
41
+ continue;
42
+ }
43
+ const eqIndex = trimmed.indexOf('=');
44
+ if (eqIndex === -1) {
45
+ result += line + '\n';
46
+ continue;
47
+ }
48
+ const key = trimmed.substring(0, eqIndex).trim();
49
+ // Use existing value if available, otherwise use sample value
50
+ if (existing.hasOwnProperty(key)) {
51
+ const indent = line.substring(0, line.indexOf(key));
52
+ result += `${indent}${key}=${existing[key]}\n`;
53
+ }
54
+ else {
55
+ result += line + '\n';
56
+ }
57
+ }
58
+ return result;
59
+ }
60
+ /**
61
+ * Update or create env file with a key-value pair
62
+ */
63
+ export function updateEnvFile(filePath, key, value) {
64
+ let content = '';
65
+ if (fs.existsSync(filePath)) {
66
+ content = fs.readFileSync(filePath, 'utf-8');
67
+ }
68
+ const lines = content.split('\n');
69
+ let found = false;
70
+ const updatedLines = lines.map(line => {
71
+ const trimmed = line.trim();
72
+ if (trimmed.startsWith(key + '=')) {
73
+ found = true;
74
+ return `${key}=${value}`;
75
+ }
76
+ return line;
77
+ });
78
+ // If not found, add it
79
+ if (!found) {
80
+ updatedLines.push(`${key}=${value}`);
81
+ }
82
+ // Remove trailing empty lines and add one newline at end
83
+ let result = updatedLines.join('\n').trim() + '\n';
84
+ fs.writeFileSync(filePath, result);
85
+ }
86
+ /**
87
+ * Generate cryptographically secure random string
88
+ */
89
+ export function generateSecret(length) {
90
+ return crypto.randomBytes(length / 2).toString('hex');
91
+ }
92
+ /**
93
+ * Initialize .env file from .env.sample
94
+ * - Copies .env.sample to .env if .env doesn't exist
95
+ * - If .env exists, merges in new variables from .env.sample
96
+ * - Preserves existing values
97
+ */
98
+ export function envUpsert(cwd) {
99
+ const envPath = path.join(cwd, '.env');
100
+ const samplePath = path.join(cwd, '.env.sample');
101
+ // Check if .env.sample exists
102
+ if (!fs.existsSync(samplePath)) {
103
+ console.error('❌ Error: .env.sample not found');
104
+ process.exit(1);
105
+ }
106
+ try {
107
+ const sampleContent = fs.readFileSync(samplePath, 'utf-8');
108
+ let existingVars = {};
109
+ if (fs.existsSync(envPath)) {
110
+ const existingContent = fs.readFileSync(envPath, 'utf-8');
111
+ existingVars = parseEnvFile(existingContent);
112
+ console.log('📝 Merging .env with new variables from .env.sample...');
113
+ }
114
+ else {
115
+ console.log('📝 Creating .env from .env.sample...');
116
+ }
117
+ const newContent = formatEnvFile(sampleContent, existingVars);
118
+ fs.writeFileSync(envPath, newContent);
119
+ console.log('✅ .env file initialized successfully');
120
+ console.log('');
121
+ console.log('Next steps:');
122
+ console.log(' 1. Edit .env with your configuration');
123
+ console.log(' 2. Run: plat env roll');
124
+ console.log(' 3. Start the server: npm run dev');
125
+ }
126
+ catch (error) {
127
+ console.error('❌ Error:', error.message);
128
+ process.exit(1);
129
+ }
130
+ }
131
+ /**
132
+ * Generate and update JWT_SECRET in .env
133
+ */
134
+ export function envRoll(cwd, length) {
135
+ const envPath = path.join(cwd, '.env');
136
+ const secretLength = length ?? 64;
137
+ try {
138
+ const secret = generateSecret(secretLength);
139
+ updateEnvFile(envPath, 'JWT_SECRET', secret);
140
+ console.log('✅ JWT_SECRET updated successfully');
141
+ console.log('');
142
+ console.log('New Secret (length: ' + secret.length + '):');
143
+ console.log(secret);
144
+ console.log('');
145
+ console.log('Location: .env');
146
+ console.log('');
147
+ console.log('⚠️ Keep this secret safe!');
148
+ console.log(' - Do not commit .env to version control');
149
+ console.log(' - Use a .gitignore entry: .env');
150
+ console.log(' - In production, use secure secret management');
151
+ }
152
+ catch (error) {
153
+ console.error('❌ Error:', error.message);
154
+ process.exit(1);
155
+ }
156
+ }
157
+ //# sourceMappingURL=env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../../../src/cli/commands/env.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function runGen(cwd: string, subcommand?: string, argv?: string[]): void;
2
+ //# sourceMappingURL=gen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gen.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/gen.ts"],"names":[],"mappings":"AA4CA,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,EAAO,GAAG,IAAI,CAyClF"}
@@ -0,0 +1,88 @@
1
+ import { execSync } from 'child_process';
2
+ import path from 'path';
3
+ import { fileURLToPath } from 'url';
4
+ const __filename = fileURLToPath(import.meta.url);
5
+ const __dirname = path.dirname(__filename);
6
+ function scriptDir() {
7
+ return path.resolve(__dirname, '../../..', 'scripts');
8
+ }
9
+ function run(script, cwd, args = []) {
10
+ const scriptPath = path.join(scriptDir(), script);
11
+ const cmd = `npx tsx "${scriptPath}" ${args.map(a => `"${a}"`).join(' ')}`.trim();
12
+ execSync(cmd, { stdio: 'inherit', cwd });
13
+ }
14
+ function getOption(argv, flag) {
15
+ for (let i = 0; i < argv.length; i++) {
16
+ const arg = argv[i];
17
+ if (arg === flag)
18
+ return argv[i + 1];
19
+ if (arg?.startsWith(`${flag}=`))
20
+ return arg.slice(flag.length + 1);
21
+ }
22
+ return undefined;
23
+ }
24
+ function forwardOption(argv, flag, out) {
25
+ const value = getOption(argv, flag);
26
+ if (value)
27
+ out.push(flag, value);
28
+ }
29
+ function getFirstPositionalArg(argv) {
30
+ for (let i = 0; i < argv.length; i++) {
31
+ const arg = argv[i];
32
+ if (!arg)
33
+ continue;
34
+ if (arg.startsWith('--')) {
35
+ if (arg === '--src' || arg === '--dst')
36
+ i += 1;
37
+ continue;
38
+ }
39
+ return arg;
40
+ }
41
+ return undefined;
42
+ }
43
+ export function runGen(cwd, subcommand, argv = []) {
44
+ switch (subcommand) {
45
+ case undefined:
46
+ case 'openapi': {
47
+ const args = [];
48
+ forwardOption(argv, '--src', args);
49
+ forwardOption(argv, '--dst', args);
50
+ if (!getOption(argv, '--src')) {
51
+ const positional = getFirstPositionalArg(argv);
52
+ if (positional)
53
+ args.push(positional);
54
+ }
55
+ run('gen-openapi.ts', cwd, args);
56
+ return;
57
+ }
58
+ case 'client': {
59
+ const args = [];
60
+ forwardOption(argv, '--src', args);
61
+ forwardOption(argv, '--dst', args);
62
+ if (!getOption(argv, '--src')) {
63
+ const positional = getFirstPositionalArg(argv);
64
+ if (positional)
65
+ args.push(positional);
66
+ }
67
+ run('gen-client-openapi.ts', cwd, args);
68
+ return;
69
+ }
70
+ case 'cli': {
71
+ const args = [];
72
+ forwardOption(argv, '--src', args);
73
+ forwardOption(argv, '--dst', args);
74
+ if (!getOption(argv, '--src')) {
75
+ const positional = getFirstPositionalArg(argv);
76
+ if (positional)
77
+ args.push(positional);
78
+ }
79
+ run('gen-cli-openapi.ts', cwd, args);
80
+ return;
81
+ }
82
+ default:
83
+ console.error(`Unknown target: ${subcommand}`);
84
+ console.error('Available: openapi, client, cli');
85
+ process.exit(1);
86
+ }
87
+ }
88
+ //# sourceMappingURL=gen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gen.js","sourceRoot":"","sources":["../../../src/cli/commands/gen.ts"],"names":[],"mappings":"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"}