@ugo-studio/jspp 0.2.8 → 0.3.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 (46) hide show
  1. package/dist/analysis/typeAnalyzer.js +42 -27
  2. package/dist/core/codegen/class-handlers.js +6 -6
  3. package/dist/core/codegen/control-flow-handlers.js +4 -4
  4. package/dist/core/codegen/declaration-handlers.js +21 -3
  5. package/dist/core/codegen/destructuring-handlers.js +187 -0
  6. package/dist/core/codegen/expression-handlers.js +7 -0
  7. package/dist/core/codegen/function-handlers.js +58 -36
  8. package/dist/core/codegen/helpers.js +288 -52
  9. package/dist/core/codegen/index.js +7 -4
  10. package/dist/core/codegen/statement-handlers.js +43 -23
  11. package/package.json +1 -1
  12. package/scripts/precompile-headers.ts +13 -5
  13. package/src/prelude/any_value.hpp +362 -361
  14. package/src/prelude/any_value_access.hpp +170 -170
  15. package/src/prelude/any_value_defines.hpp +189 -189
  16. package/src/prelude/any_value_helpers.hpp +374 -365
  17. package/src/prelude/library/array.hpp +185 -185
  18. package/src/prelude/library/console.hpp +111 -111
  19. package/src/prelude/library/error.hpp +112 -112
  20. package/src/prelude/library/function.hpp +10 -10
  21. package/src/prelude/library/math.hpp +307 -307
  22. package/src/prelude/library/object.hpp +275 -275
  23. package/src/prelude/library/performance.hpp +1 -1
  24. package/src/prelude/library/process.hpp +39 -39
  25. package/src/prelude/library/promise.hpp +123 -123
  26. package/src/prelude/library/symbol.hpp +52 -52
  27. package/src/prelude/library/timer.hpp +91 -91
  28. package/src/prelude/types.hpp +178 -178
  29. package/src/prelude/utils/access.hpp +411 -393
  30. package/src/prelude/utils/operators.hpp +336 -329
  31. package/src/prelude/values/array.hpp +0 -1
  32. package/src/prelude/values/async_iterator.hpp +83 -81
  33. package/src/prelude/values/function.hpp +82 -82
  34. package/src/prelude/values/helpers/array.hpp +198 -208
  35. package/src/prelude/values/helpers/async_iterator.hpp +275 -271
  36. package/src/prelude/values/helpers/function.hpp +108 -108
  37. package/src/prelude/values/helpers/iterator.hpp +144 -107
  38. package/src/prelude/values/helpers/promise.hpp +253 -253
  39. package/src/prelude/values/helpers/string.hpp +37 -47
  40. package/src/prelude/values/iterator.hpp +32 -5
  41. package/src/prelude/values/promise.hpp +72 -72
  42. package/src/prelude/values/prototypes/array.hpp +54 -42
  43. package/src/prelude/values/prototypes/iterator.hpp +201 -74
  44. package/src/prelude/values/prototypes/promise.hpp +196 -196
  45. package/src/prelude/values/prototypes/string.hpp +564 -542
  46. package/src/prelude/values/string.hpp +25 -26
@@ -3,7 +3,10 @@ import fs from "fs/promises";
3
3
  import path from "path";
4
4
 
5
5
  const PRELUDE_DIR = path.resolve(process.cwd(), "src", "prelude");
6
- const PRECOMPILED_HEADER_BASE_DIR = path.resolve(process.cwd(), "prelude-build");
6
+ const PRECOMPILED_HEADER_BASE_DIR = path.resolve(
7
+ process.cwd(),
8
+ "prelude-build",
9
+ );
7
10
 
8
11
  const MODES = [
9
12
  {
@@ -52,7 +55,9 @@ async function precompileHeaders() {
52
55
  try {
53
56
  const gchStats = await fs.stat(gchPath);
54
57
  if (gchStats.mtimeMs >= sourceMtime) {
55
- console.log(`[${mode.name.toUpperCase()}] Headers are up-to-date. Skipping.`);
58
+ console.log(
59
+ `[${mode.name.toUpperCase()}] Headers are up-to-date. Skipping.`,
60
+ );
56
61
  continue;
57
62
  }
58
63
  } catch (e) {
@@ -78,7 +83,7 @@ async function precompileHeaders() {
78
83
 
79
84
  console.log(`[${mode.name.toUpperCase()}] Compiling header...`);
80
85
  const tempGchPath = `${gchPath}.tmp`;
81
-
86
+
82
87
  const compile = spawnSync(
83
88
  "g++",
84
89
  [
@@ -94,12 +99,14 @@ async function precompileHeaders() {
94
99
  ],
95
100
  {
96
101
  stdio: "inherit",
97
- }
102
+ },
98
103
  );
99
104
 
100
105
  if (compile.status !== 0) {
101
- if (await fs.stat(tempGchPath).then(() => true, () => false)) {
106
+ try {
102
107
  await fs.unlink(tempGchPath);
108
+ } catch (e) {
109
+ // Ignore if temp file doesn't exist
103
110
  }
104
111
  console.error(
105
112
  `[${mode.name.toUpperCase()}] Failed to precompile headers.`,
@@ -107,6 +114,7 @@ async function precompileHeaders() {
107
114
  process.exit(1);
108
115
  }
109
116
 
117
+ // Atomically replace the old GCH with the new one
110
118
  await fs.rename(tempGchPath, gchPath);
111
119
  console.log(`[${mode.name.toUpperCase()}] Success.`);
112
120
  }