rpc4next 0.1.8 → 0.2.2

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.
@@ -8,6 +8,26 @@ const path_1 = __importDefault(require("path"));
8
8
  const constants_1 = require("./constants");
9
9
  const generator_1 = require("./generator");
10
10
  const watcher_1 = require("./watcher");
11
+ const handleGenerateSafely = (baseDir, outputPath, paramsFileName, logger) => {
12
+ try {
13
+ (0, generator_1.generate)({
14
+ baseDir,
15
+ outputPath,
16
+ paramsFileName,
17
+ logger,
18
+ });
19
+ return constants_1.EXIT_SUCCESS;
20
+ }
21
+ catch (error) {
22
+ if (error instanceof Error) {
23
+ logger.error(`Failed to generate: ${error.message}`);
24
+ }
25
+ else {
26
+ logger.error(`Unknown error occurred during generate: ${String(error)}`);
27
+ }
28
+ return constants_1.EXIT_FAILURE;
29
+ }
30
+ };
11
31
  const handleCli = (baseDir, outputPath, options, logger) => {
12
32
  const resolvedBaseDir = path_1.default.resolve(baseDir).replace(/\\/g, "/");
13
33
  const resolvedOutputPath = path_1.default.resolve(outputPath).replace(/\\/g, "/");
@@ -18,22 +38,10 @@ const handleCli = (baseDir, outputPath, options, logger) => {
18
38
  }
19
39
  if (options.watch) {
20
40
  (0, watcher_1.setupWatcher)(resolvedBaseDir, () => {
21
- (0, generator_1.generate)({
22
- baseDir: resolvedBaseDir,
23
- outputPath: resolvedOutputPath,
24
- paramsFileName,
25
- logger,
26
- });
41
+ handleGenerateSafely(resolvedBaseDir, resolvedOutputPath, paramsFileName, logger);
27
42
  }, logger);
43
+ return constants_1.EXIT_SUCCESS;
28
44
  }
29
- else {
30
- (0, generator_1.generate)({
31
- baseDir: resolvedBaseDir,
32
- outputPath: resolvedOutputPath,
33
- paramsFileName,
34
- logger,
35
- });
36
- }
37
- return constants_1.EXIT_SUCCESS;
45
+ return handleGenerateSafely(resolvedBaseDir, resolvedOutputPath, paramsFileName, logger);
38
46
  };
39
47
  exports.handleCli = handleCli;
@@ -10,7 +10,7 @@ const constants_1 = require("./constants");
10
10
  const generate_path_structure_1 = require("./core/generate-path-structure");
11
11
  const logger_1 = require("./logger");
12
12
  const generate = ({ baseDir, outputPath, paramsFileName, logger, }) => {
13
- logger.info("Types regenerated due to file change", { event: "generate" });
13
+ logger.info("Generating types...", { event: "generate" });
14
14
  const { pathStructure, paramsTypes } = (0, generate_path_structure_1.generatePages)(outputPath, baseDir);
15
15
  fs_1.default.writeFileSync(outputPath, pathStructure);
16
16
  logger.success((0, logger_1.padMessage)("Path structure type", path_1.default.relative(process.cwd(), outputPath), constants_1.SUCCESS_SEPARATOR, constants_1.SUCCESS_PAD_LENGTH), { indentLevel: constants_1.SUCCESS_INDENT_LEVEL });
@@ -43,5 +43,25 @@ const setupWatcher = (baseDir, onGenerate, logger) => {
43
43
  }
44
44
  });
45
45
  });
46
+ watcher.on("error", (error) => {
47
+ if (error instanceof Error) {
48
+ logger.error(`Watcher error: ${error.message}`);
49
+ }
50
+ else {
51
+ logger.error(`Unknown watcher error: ${String(error)}`);
52
+ }
53
+ });
54
+ const cleanup = () => {
55
+ watcher
56
+ .close()
57
+ .then(() => {
58
+ logger.info("Watcher closed.", { event: "watch" });
59
+ })
60
+ .catch((err) => {
61
+ logger.error(`Failed to close watcher: ${err.message}`);
62
+ });
63
+ };
64
+ process.on("SIGINT", cleanup);
65
+ process.on("SIGTERM", cleanup);
46
66
  };
47
67
  exports.setupWatcher = setupWatcher;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rpc4next",
3
- "version": "0.1.8",
3
+ "version": "0.2.2",
4
4
  "description": "Inspired by Hono RPC and Pathpida, rpc4next brings a lightweight and intuitive RPC solution to Next.js, making server-client communication seamless",
5
5
  "author": "watanabe-1",
6
6
  "license": "MIT",