@inlang/paraglide-js 2.7.2 → 2.8.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 (57) hide show
  1. package/README.md +42 -47
  2. package/dist/bundler-plugins/unplugin.d.ts.map +1 -1
  3. package/dist/bundler-plugins/unplugin.js +30 -36
  4. package/dist/bundler-plugins/unplugin.js.map +1 -1
  5. package/dist/cli/commands/compile/command.d.ts.map +1 -1
  6. package/dist/cli/commands/compile/command.js +160 -17
  7. package/dist/cli/commands/compile/command.js.map +1 -1
  8. package/dist/cli/commands/init/command.d.ts.map +1 -1
  9. package/dist/cli/commands/init/command.js +7 -11
  10. package/dist/cli/commands/init/command.js.map +1 -1
  11. package/dist/cli/steps/check-for-uncomitted-changes.d.ts.map +1 -1
  12. package/dist/cli/steps/check-for-uncomitted-changes.js +2 -2
  13. package/dist/cli/steps/check-for-uncomitted-changes.js.map +1 -1
  14. package/dist/cli/steps/maybe-add-sherlock.d.ts.map +1 -1
  15. package/dist/cli/steps/maybe-add-sherlock.js +9 -3
  16. package/dist/cli/steps/maybe-add-sherlock.js.map +1 -1
  17. package/dist/cli/steps/prompt-for-outdir.js +1 -1
  18. package/dist/cli/steps/prompt-for-outdir.js.map +1 -1
  19. package/dist/compiler/compile-message.test.js +22 -0
  20. package/dist/compiler/compile-message.test.js.map +1 -1
  21. package/dist/compiler/compile-project.d.ts +2 -1
  22. package/dist/compiler/compile-project.d.ts.map +1 -1
  23. package/dist/compiler/compile-project.js +5 -1
  24. package/dist/compiler/compile-project.js.map +1 -1
  25. package/dist/compiler/compile-project.test.js +53 -0
  26. package/dist/compiler/compile-project.test.js.map +1 -1
  27. package/dist/compiler/compile.d.ts.map +1 -1
  28. package/dist/compiler/compile.js +1 -0
  29. package/dist/compiler/compile.js.map +1 -1
  30. package/dist/compiler/compile.test.js +26 -0
  31. package/dist/compiler/compile.test.js.map +1 -1
  32. package/dist/compiler/compiler-options.d.ts +18 -0
  33. package/dist/compiler/compiler-options.d.ts.map +1 -1
  34. package/dist/compiler/compiler-options.js +1 -0
  35. package/dist/compiler/compiler-options.js.map +1 -1
  36. package/dist/compiler/create-readme.d.ts +10 -0
  37. package/dist/compiler/create-readme.d.ts.map +1 -0
  38. package/dist/compiler/create-readme.js +104 -0
  39. package/dist/compiler/create-readme.js.map +1 -0
  40. package/dist/compiler/runtime/create-runtime.js +7 -1
  41. package/dist/compiler/runtime/create-runtime.js.map +1 -1
  42. package/dist/compiler/server/create-server-file.js +7 -1
  43. package/dist/compiler/server/create-server-file.js.map +1 -1
  44. package/dist/compiler/server/middleware.d.ts +40 -4
  45. package/dist/compiler/server/middleware.d.ts.map +1 -1
  46. package/dist/compiler/server/middleware.js +40 -4
  47. package/dist/compiler/server/middleware.js.map +1 -1
  48. package/dist/services/env-variables/index.js +1 -1
  49. package/dist/services/file-watching/tracked-fs.d.ts +26 -0
  50. package/dist/services/file-watching/tracked-fs.d.ts.map +1 -0
  51. package/dist/services/file-watching/tracked-fs.js +92 -0
  52. package/dist/services/file-watching/tracked-fs.js.map +1 -0
  53. package/dist/services/file-watching/tracked-fs.test.d.ts +2 -0
  54. package/dist/services/file-watching/tracked-fs.test.d.ts.map +1 -0
  55. package/dist/services/file-watching/tracked-fs.test.js +90 -0
  56. package/dist/services/file-watching/tracked-fs.test.js.map +1 -0
  57. package/package.json +3 -3
package/README.md CHANGED
@@ -1,19 +1,15 @@
1
1
  [![NPM Downloads](https://img.shields.io/npm/dw/%40inlang%2Fparaglide-js?logo=npm&logoColor=red&label=npm%20downloads)](https://www.npmjs.com/package/@inlang/paraglide-js)
2
- [![GitHub Issues](https://img.shields.io/github/issues-closed/opral/inlang-paraglide-js?logo=github&color=purple)](https://github.com/opral/inlang-paraglide-js/issues)
2
+ [![GitHub Issues](https://img.shields.io/github/issues-closed/opral/paraglide-js?logo=github&color=purple)](https://github.com/opral/paraglide-js/issues)
3
+ [![Contributors](https://img.shields.io/github/contributors/opral/paraglide-js?logo=github)](https://github.com/opral/paraglide-js/graphs/contributors)
3
4
  [![Discord](https://img.shields.io/discord/897438559458430986?logo=discord&logoColor=white&label=discord)](https://discord.gg/gdMPPWy57R)
4
- [![License](https://img.shields.io/github/license/opral/inlang-paraglide-js)](https://github.com/opral/inlang-paraglide-js/blob/main/LICENSE)
5
5
 
6
6
  <p align="center">
7
- <img src="https://cdn.jsdelivr.net/gh/opral/monorepo@latest/inlang/packages/paraglide/paraglide-js/assets/header.png" alt="Paraglide JS" width="600" />
7
+ <img src="https://cdn.jsdelivr.net/gh/opral/paraglide-js@latest/assets/header.png" alt="Paraglide JS" width="600" />
8
8
  </p>
9
9
 
10
10
  <h1 align="center">🪂 Paraglide JS</h1>
11
11
  <p align="center">
12
- <strong>Compiler-based i18n library with tree-shaking, full typesafety, and near zero runtime</strong>
13
- </p>
14
- <p align="center">
15
- Paraglide JS compiles your translations into tree-shakable message functions.<br/>
16
- Unused translations are eliminated, and what remains is a fully typesafe API with autocomplete.
12
+ <strong>Compiler-based i18n library that emits tree-shakable translations, leading to up to 70% smaller bundle sizes.</strong>
17
13
  </p>
18
14
 
19
15
  <p align="center">
@@ -47,23 +43,23 @@
47
43
  ```
48
44
 
49
45
  ```js
50
- import { m } from "./paraglide/messages.js"
46
+ import { m } from "./paraglide/messages.js";
51
47
 
52
- m.greeting({ name: "World" }) // "Hello World!" — fully typesafe
48
+ m.greeting({ name: "World" }); // "Hello World!" — fully typesafe
53
49
  ```
54
50
 
55
- The compiler generates typed message functions. Your bundler tree-shakes unused messages. Expect **~75% smaller bundles** (47 KB vs 205 KB) compared to runtime i18n libraries. [See benchmarks →](https://inlang.com/m/gerre34r/library-inlang-paraglideJs/benchmark)
51
+ The compiler generates typed message functions. Your bundler tree-shakes unused messages. Expect [**up to 70% smaller bundle sizes**](https://inlang.com/m/gerre34r/library-inlang-paraglideJs/benchmark) compared to runtime i18n libraries (e.g. 47 KB vs 205 KB).
56
52
 
57
53
  ## Why Paraglide?
58
54
 
59
- | | |
60
- |---|---|
61
- | **Tiny Runtime** | ~300 bytes. No async loading. No waterfalls. |
62
- | **Tree-Shakable** | Unused messages are eliminated by your bundler. |
63
- | **Fully Typesafe** | Autocomplete for message keys and parameters. Typos become compile errors. |
64
- | **Framework Agnostic** | Works with React, Vue, Svelte, Solid, TanStack, or vanilla JS/TS. |
65
- | **Built-in i18n Routing** | URL-based locale detection and localized paths out of the box. |
66
- | **Inlang Ecosystem** | VS Code extension, CLI, translation editor — all work out of the box. |
55
+ | | |
56
+ | ------------------------- | -------------------------------------------------------------------------- |
57
+ | **Smaller Bundle Sizes** | Up to 70% smaller than runtime i18n libraries. |
58
+ | **Tree-Shakable** | Unused messages are eliminated by your bundler. |
59
+ | **Fully Typesafe** | Autocomplete for message keys and parameters. Typos become compile errors. |
60
+ | **Framework Agnostic** | Works with React, Vue, Svelte, Solid, TanStack, or vanilla JS/TS. |
61
+ | **Built-in i18n Routing** | URL-based locale detection and localized paths out of the box. |
62
+ | **Built on inlang** | Integrates with VS Code extension, CLI, and translation editor. |
67
63
 
68
64
  ## Works With Your Stack
69
65
 
@@ -84,6 +80,7 @@ npx @inlang/paraglide-js init
84
80
  ```
85
81
 
86
82
  The CLI sets up everything:
83
+
87
84
  - Creates your message files
88
85
  - Configures your bundler (Vite, Webpack, etc.)
89
86
  - Generates typesafe message functions
@@ -91,16 +88,16 @@ The CLI sets up everything:
91
88
  Then use your messages:
92
89
 
93
90
  ```js
94
- import { m } from "./paraglide/messages.js"
95
- import { setLocale, getLocale } from "./paraglide/runtime.js"
91
+ import { m } from "./paraglide/messages.js";
92
+ import { setLocale, getLocale } from "./paraglide/runtime.js";
96
93
 
97
94
  // Use messages (typesafe, with autocomplete)
98
- m.hello_world()
99
- m.greeting({ name: "Ada" })
95
+ m.hello_world();
96
+ m.greeting({ name: "Ada" });
100
97
 
101
98
  // Get/set locale
102
- getLocale() // "en"
103
- setLocale("de") // switches to German
99
+ getLocale(); // "en"
100
+ setLocale("de"); // switches to German
104
101
  ```
105
102
 
106
103
  **[Full Getting Started Guide →](https://inlang.com/m/gerre34r/library-inlang-paraglideJs)**
@@ -108,15 +105,13 @@ setLocale("de") // switches to German
108
105
  ## How It Works
109
106
 
110
107
  ```
111
- messages/en.json ──┐
112
- messages/de.json ──┼──→ Compiler ──→ ./paraglide/messages.js
113
- messages/fr.json ──┘ ./paraglide/runtime.js
108
+ ┌────────────────┐ ┌────────────────────┐ ┌──────────────────────────┐
109
+ │ Inlang Project │ ───▶ │ Paraglide Compiler │ ───▶ │ ./paraglide/messages.js
110
+ └────────────────┘ └────────────────────┘ │ ./paraglide/runtime.js
111
+ └──────────────────────────┘
114
112
  ```
115
113
 
116
- 1. You write messages in JSON (or any supported format)
117
- 2. The compiler generates typed functions
118
- 3. Your bundler tree-shakes unused messages
119
- 4. Result: tiny, typesafe, fast
114
+ Paraglide compiles an [inlang project](https://inlang.com/docs/introduction#how-it-works) into tree-shakable message functions. Your bundler eliminates unused messages at build time.
120
115
 
121
116
  ## Message Format
122
117
 
@@ -124,8 +119,8 @@ Paraglide uses `Intl.PluralRules` for locale-aware pluralization, supporting all
124
119
 
125
120
  ```js
126
121
  // Pluralization example
127
- m.items_in_cart({ count: 1 }) // "1 item in cart"
128
- m.items_in_cart({ count: 5 }) // "5 items in cart"
122
+ m.items_in_cart({ count: 1 }); // "1 item in cart"
123
+ m.items_in_cart({ count: 5 }); // "5 items in cart"
129
124
 
130
125
  // Works correctly for complex locales (Russian, Arabic, etc.)
131
126
  ```
@@ -136,13 +131,13 @@ Message format is **plugin-based** — use the default inlang format, or switch
136
131
 
137
132
  ## Comparison
138
133
 
139
- | Feature | Paraglide | i18next | react-intl |
140
- |---------|-----------|---------|------------|
141
- | **Runtime size** | ~300B | 10kB+ | 8kB+ |
142
- | **Tree-shakable** | ✅ | ❌ | ❌ |
143
- | **Typesafe** | ✅ | Partial | ❌ |
144
- | **Framework agnostic** | ✅ | Wrappers needed | React only |
145
- | **i18n routing** | ✅ Built-in | ❌ | ❌ |
134
+ | Feature | Paraglide | i18next | react-intl |
135
+ | ---------------------- | ----------- | --------------- | ---------- |
136
+ | **Bundle size** | Up to 70% smaller via tree-shaking | Ships all messages | Ships all messages |
137
+ | **Tree-shakable** | ✅ | ❌ | ❌ |
138
+ | **Typesafe** | ✅ | Partial | ❌ |
139
+ | **Framework agnostic** | ✅ | Wrappers needed | React only |
140
+ | **i18n routing** | ✅ Built-in | ❌ | ❌ |
146
141
 
147
142
  **[Full Comparison →](https://inlang.com/m/gerre34r/library-inlang-paraglideJs/comparison)**
148
143
 
@@ -169,12 +164,12 @@ Message format is **plugin-based** — use the default inlang format, or switch
169
164
 
170
165
  Paraglide is built on the [open inlang format](https://github.com/opral/inlang-sdk). Works with:
171
166
 
172
- | Tool | Description |
173
- |------|-------------|
174
- | [Sherlock](https://inlang.com/m/r7kp499g/app-inlang-ideExtension) | VS Code extension for inline translation editing |
175
- | [CLI](https://inlang.com/m/2qj2w8pu/app-inlang-cli) | Machine translate from the terminal |
176
- | [Fink](https://inlang.com/m/tdozzpar/app-inlang-finkLocalizationEditor) | Translation editor for non-developers |
177
- | [Parrot](https://inlang.com/m/gkrpgoir/app-parrot-figmaPlugin) | Manage translations in Figma |
167
+ | Tool | Description |
168
+ | ----------------------------------------------------------------------- | ------------------------------------------------ |
169
+ | [Sherlock](https://inlang.com/m/r7kp499g/app-inlang-ideExtension) | VS Code extension for inline translation editing |
170
+ | [CLI](https://inlang.com/m/2qj2w8pu/app-inlang-cli) | Machine translate from the terminal |
171
+ | [Fink](https://inlang.com/m/tdozzpar/app-inlang-finkLocalizationEditor) | Translation editor for non-developers |
172
+ | [Parrot](https://inlang.com/m/gkrpgoir/app-parrot-figmaPlugin) | Manage translations in Figma |
178
173
 
179
174
  **[Explore the inlang ecosystem →](https://inlang.com/c/apps)**
180
175
 
@@ -1 +1 @@
1
- {"version":3,"file":"unplugin.d.ts","sourceRoot":"","sources":["../../src/bundler-plugins/unplugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAMhD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAavE,eAAO,MAAM,eAAe,EAAE,eAAe,CAAC,eAAe,CA2H3D,CAAC"}
1
+ {"version":3,"file":"unplugin.d.ts","sourceRoot":"","sources":["../../src/bundler-plugins/unplugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAIhD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAoBvE,eAAO,MAAM,eAAe,EAAE,eAAe,CAAC,eAAe,CA6I3D,CAAC"}
@@ -1,8 +1,8 @@
1
1
  import { compile } from "../compiler/compile.js";
2
- import fs from "node:fs";
3
- import { resolve, relative } from "node:path";
4
- import { nodeNormalizePath } from "../utilities/node-normalize-path.js";
2
+ import { relative } from "node:path";
5
3
  import { Logger } from "../services/logger/index.js";
4
+ import { createTrackedFs, getWatchTargets, isPathWithinDirectories, } from "../services/file-watching/tracked-fs.js";
5
+ import { nodeNormalizePath } from "../utilities/node-normalize-path.js";
6
6
  const PLUGIN_NAME = "unplugin-paraglide-js";
7
7
  const logger = new Logger();
8
8
  /**
@@ -10,6 +10,7 @@ const logger = new Logger();
10
10
  */
11
11
  let isServer;
12
12
  let previousCompilation;
13
+ const { fs: trackedFs, readFiles, clearReadFiles } = createTrackedFs();
13
14
  export const unpluginFactory = (args) => ({
14
15
  name: PLUGIN_NAME,
15
16
  enforce: "pre",
@@ -21,7 +22,7 @@ export const unpluginFactory = (args) => ({
21
22
  (isProduction ? "message-modules" : "locale-modules");
22
23
  try {
23
24
  previousCompilation = await compile({
24
- fs: wrappedFs,
25
+ fs: trackedFs,
25
26
  previousCompilation,
26
27
  outputStructure,
27
28
  // webpack invokes the `buildStart` api in watch mode,
@@ -41,13 +42,23 @@ export const unpluginFactory = (args) => ({
41
42
  }
42
43
  finally {
43
44
  // in any case add the files to watch
44
- for (const path of Array.from(readFiles)) {
45
- this.addWatchFile(path);
45
+ const targets = getWatchTargets(readFiles, { outdir: args.outdir });
46
+ for (const filePath of targets.files) {
47
+ this.addWatchFile(filePath);
48
+ }
49
+ for (const directoryPath of targets.directories) {
50
+ this.addWatchFile(directoryPath);
46
51
  }
47
52
  }
48
53
  },
49
54
  async watchChange(path) {
50
- const shouldCompile = readFiles.has(path) && !path.includes("cache");
55
+ const normalizedPath = nodeNormalizePath(path);
56
+ const targets = getWatchTargets(readFiles, { outdir: args.outdir });
57
+ if (targets.isIgnoredPath(normalizedPath)) {
58
+ return;
59
+ }
60
+ const shouldCompile = targets.files.has(normalizedPath) ||
61
+ isPathWithinDirectories(normalizedPath, targets.directories);
51
62
  if (shouldCompile === false) {
52
63
  return;
53
64
  }
@@ -60,9 +71,9 @@ export const unpluginFactory = (args) => ({
60
71
  try {
61
72
  logger.info(`Re-compiling inlang project... File "${relative(process.cwd(), path)}" has changed.`);
62
73
  // Clear readFiles to track fresh file reads
63
- readFiles.clear();
74
+ clearReadFiles();
64
75
  previousCompilation = await compile({
65
- fs: wrappedFs,
76
+ fs: trackedFs,
66
77
  previousCompilation,
67
78
  outputStructure,
68
79
  cleanOutdir: false,
@@ -71,12 +82,19 @@ export const unpluginFactory = (args) => ({
71
82
  });
72
83
  logger.success(`Re-compilation complete (${outputStructure})`);
73
84
  // Add any new files to watch
74
- for (const filePath of Array.from(readFiles)) {
85
+ const nextTargets = getWatchTargets(readFiles, { outdir: args.outdir });
86
+ for (const filePath of nextTargets.files) {
75
87
  this.addWatchFile(filePath);
76
88
  }
89
+ for (const directoryPath of nextTargets.directories) {
90
+ this.addWatchFile(directoryPath);
91
+ }
77
92
  }
78
93
  catch (e) {
79
- readFiles = previouslyReadFiles;
94
+ clearReadFiles();
95
+ for (const filePath of previouslyReadFiles) {
96
+ readFiles.add(filePath);
97
+ }
80
98
  // Reset compilation result on error
81
99
  previousCompilation = undefined;
82
100
  logger.warn("Failed to re-compile project:", e.message);
@@ -106,7 +124,7 @@ export const unpluginFactory = (args) => ({
106
124
  (isProduction ? "message-modules" : "locale-modules");
107
125
  try {
108
126
  previousCompilation = await compile({
109
- fs: wrappedFs,
127
+ fs: trackedFs,
110
128
  previousCompilation,
111
129
  outputStructure,
112
130
  // clean dir needs to be false. otherwise webpack get's into a race condition
@@ -126,28 +144,4 @@ export const unpluginFactory = (args) => ({
126
144
  });
127
145
  },
128
146
  });
129
- let readFiles = new Set();
130
- // Create a wrapper around the fs object to intercept and store read files
131
- const wrappedFs = {
132
- ...fs,
133
- // @ts-expect-error - Node's fs has too many overloads
134
- readFile: (path, options, callback) => {
135
- readFiles.add(nodeNormalizePath(resolve(process.cwd(), path.toString())));
136
- return fs.readFile(path, options, callback);
137
- },
138
- // @ts-expect-error - Node's fs has too many overloads
139
- readFileSync: (path, options) => {
140
- readFiles.add(nodeNormalizePath(resolve(process.cwd(), path.toString())));
141
- return fs.readFileSync(path, options);
142
- },
143
- promises: {
144
- ...fs.promises,
145
- // @ts-expect-error - Node's fs.promises has too many overloads
146
- readFile: async (path, options) => {
147
- readFiles.add(nodeNormalizePath(resolve(process.cwd(), path.toString())));
148
- return fs.promises.readFile(path, options);
149
- },
150
- },
151
- // Add other fs methods as needed
152
- };
153
147
  //# sourceMappingURL=unplugin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"unplugin.js","sourceRoot":"","sources":["../../src/bundler-plugins/unplugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"unplugin.js","sourceRoot":"","sources":["../../src/bundler-plugins/unplugin.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/compile/command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC,eAAO,MAAM,cAAc,SA4DzB,CAAC"}
1
+ {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/compile/command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAepC,eAAO,MAAM,cAAc,SAoOzB,CAAC"}
@@ -1,9 +1,11 @@
1
1
  import { Command } from "commander";
2
- import { resolve } from "node:path";
2
+ import fs from "node:fs";
3
+ import { resolve, relative } from "node:path";
3
4
  import { Logger } from "../../../services/logger/index.js";
4
5
  import { DEFAULT_OUTDIR, DEFAULT_PROJECT_PATH } from "../../defaults.js";
5
6
  import { compile } from "../../../compiler/compile.js";
6
7
  import { defaultCompilerOptions, } from "../../../compiler/compiler-options.js";
8
+ import { createTrackedFs, getWatchTargets, } from "../../../services/file-watching/tracked-fs.js";
7
9
  export const compileCommand = new Command()
8
10
  .name("compile")
9
11
  .summary("Compiles inlang Paraglide-JS")
@@ -17,25 +19,166 @@ export const compileCommand = new Command()
17
19
  ].join("\n"))
18
20
  .requiredOption("--silent", "Only log errors to the console", false)
19
21
  .option("--emit-ts-declarations", "Emit .d.ts files for the generated output (requires the typescript package)", defaultCompilerOptions.emitTsDeclarations)
22
+ .option("--watch", "Watch project files and recompile on change", false)
20
23
  .action(async (options) => {
21
24
  const logger = new Logger({ silent: options.silent, prefix: true });
22
25
  const path = resolve(process.cwd(), options.project);
23
- logger.info(`Compiling inlang project ...`);
24
- try {
25
- await compile({
26
- project: path,
27
- outdir: options.outdir,
28
- strategy: options.strategy ?? defaultCompilerOptions.strategy,
29
- emitTsDeclarations: options.emitTsDeclarations ??
30
- defaultCompilerOptions.emitTsDeclarations,
31
- });
26
+ const compileOptions = {
27
+ project: path,
28
+ outdir: options.outdir,
29
+ strategy: options.strategy ?? defaultCompilerOptions.strategy,
30
+ emitTsDeclarations: options.emitTsDeclarations ??
31
+ defaultCompilerOptions.emitTsDeclarations,
32
+ };
33
+ if (!options.watch) {
34
+ logger.info(`Compiling inlang project ...`);
35
+ try {
36
+ await compile(compileOptions);
37
+ }
38
+ catch (e) {
39
+ logger.error("Error while compiling inlang project.");
40
+ logger.error(e);
41
+ process.exit(1);
42
+ }
43
+ logger.success(`Successfully compiled inlang project.`);
44
+ process.exit(0);
32
45
  }
33
- catch (e) {
34
- logger.error("Error while compiling inlang project.");
35
- logger.error(e);
36
- process.exit(1);
37
- }
38
- logger.success(`Successfully compiled inlang project.`);
39
- process.exit(0);
46
+ const { fs: trackedFs, readFiles, clearReadFiles } = createTrackedFs();
47
+ const fileWatchers = new Map();
48
+ const directoryWatchers = new Map();
49
+ let previousCompilation;
50
+ let compileTimer;
51
+ let compileInProgress = false;
52
+ let compileRequested = false;
53
+ const updateWatchers = (files) => {
54
+ const { files: nextFiles, directories: nextDirectories, isIgnoredPath, } = getWatchTargets(files, { outdir: options.outdir });
55
+ for (const [filePath, watcher] of fileWatchers) {
56
+ if (!nextFiles.has(filePath)) {
57
+ watcher.close();
58
+ fileWatchers.delete(filePath);
59
+ }
60
+ }
61
+ for (const [directoryPath, watcher] of directoryWatchers) {
62
+ if (!nextDirectories.has(directoryPath)) {
63
+ watcher.close();
64
+ directoryWatchers.delete(directoryPath);
65
+ }
66
+ }
67
+ const attachWatcherErrorHandler = (watcher, targetPath, targetType) => {
68
+ watcher.on("error", (error) => {
69
+ logger.warn(`Watch ${targetType} error for ${targetPath}: ${error.message}`);
70
+ });
71
+ };
72
+ for (const filePath of nextFiles) {
73
+ if (fileWatchers.has(filePath)) {
74
+ continue;
75
+ }
76
+ try {
77
+ const watcher = fs.watch(filePath, () => {
78
+ scheduleCompile(filePath);
79
+ });
80
+ attachWatcherErrorHandler(watcher, filePath, "file");
81
+ fileWatchers.set(filePath, watcher);
82
+ }
83
+ catch (error) {
84
+ logger.warn(`Failed to watch file: ${filePath}`);
85
+ }
86
+ }
87
+ for (const directoryPath of nextDirectories) {
88
+ if (directoryWatchers.has(directoryPath)) {
89
+ continue;
90
+ }
91
+ try {
92
+ const watcher = fs.watch(directoryPath, (eventType, filename) => {
93
+ if (!filename) {
94
+ scheduleCompile(directoryPath);
95
+ return;
96
+ }
97
+ const changedPath = resolve(directoryPath, filename.toString());
98
+ if (isIgnoredPath(changedPath)) {
99
+ return;
100
+ }
101
+ scheduleCompile(changedPath);
102
+ });
103
+ attachWatcherErrorHandler(watcher, directoryPath, "directory");
104
+ directoryWatchers.set(directoryPath, watcher);
105
+ }
106
+ catch (error) {
107
+ logger.warn(`Failed to watch directory: ${directoryPath}`);
108
+ }
109
+ }
110
+ };
111
+ const runCompile = async (changedPath) => {
112
+ if (compileInProgress) {
113
+ compileRequested = true;
114
+ return;
115
+ }
116
+ compileInProgress = true;
117
+ const previouslyReadFiles = new Set(readFiles);
118
+ clearReadFiles();
119
+ if (changedPath) {
120
+ logger.info(`Re-compiling inlang project... File "${relative(process.cwd(), changedPath)}" has changed.`);
121
+ }
122
+ else {
123
+ logger.info("Compiling inlang project ...");
124
+ }
125
+ try {
126
+ previousCompilation = await compile({
127
+ ...compileOptions,
128
+ fs: trackedFs,
129
+ previousCompilation,
130
+ cleanOutdir: previousCompilation === undefined,
131
+ });
132
+ if (changedPath) {
133
+ logger.success("Re-compilation complete.");
134
+ }
135
+ else {
136
+ logger.success("Successfully compiled inlang project.");
137
+ }
138
+ }
139
+ catch (e) {
140
+ if (previouslyReadFiles.size > 0) {
141
+ clearReadFiles();
142
+ for (const filePath of previouslyReadFiles) {
143
+ readFiles.add(filePath);
144
+ }
145
+ }
146
+ previousCompilation = undefined;
147
+ logger.error("Error while compiling inlang project.");
148
+ logger.error(e);
149
+ }
150
+ finally {
151
+ updateWatchers(readFiles);
152
+ compileInProgress = false;
153
+ if (compileRequested) {
154
+ compileRequested = false;
155
+ runCompile();
156
+ }
157
+ }
158
+ };
159
+ const scheduleCompile = (changedPath) => {
160
+ if (compileTimer) {
161
+ clearTimeout(compileTimer);
162
+ }
163
+ compileTimer = setTimeout(() => {
164
+ runCompile(changedPath);
165
+ }, 100);
166
+ };
167
+ const closeWatchers = () => {
168
+ for (const watcher of fileWatchers.values()) {
169
+ watcher.close();
170
+ }
171
+ for (const watcher of directoryWatchers.values()) {
172
+ watcher.close();
173
+ }
174
+ fileWatchers.clear();
175
+ directoryWatchers.clear();
176
+ };
177
+ process.on("SIGINT", () => {
178
+ closeWatchers();
179
+ process.exit(0);
180
+ });
181
+ await runCompile();
182
+ logger.info("Watching for changes...");
40
183
  });
41
184
  //# sourceMappingURL=command.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"command.js","sourceRoot":"","sources":["../../../../src/cli/commands/compile/command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AACvD,OAAO,EACN,sBAAsB,GAEtB,MAAM,uCAAuC,CAAC;AAE/C,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,OAAO,EAAE;KACzC,IAAI,CAAC,SAAS,CAAC;KACf,OAAO,CAAC,8BAA8B,CAAC;KACvC,cAAc,CACd,kBAAkB,EAClB,6DAA6D,EAC7D,oBAAoB,CACpB;KACA,cAAc,CACd,iBAAiB,EACjB,8DAA8D,EAC9D,cAAc,CACd;KACA,MAAM,CACN,uBAAuB,EACvB;IACC,0BAA0B;IAC1B,EAAE;IACF,sDAAsD;IACtD,gFAAgF;CAChF,CAAC,IAAI,CAAC,IAAI,CAAC,CACZ;KACA,cAAc,CAAC,UAAU,EAAE,gCAAgC,EAAE,KAAK,CAAC;KACnE,MAAM,CACN,wBAAwB,EACxB,6EAA6E,EAC7E,sBAAsB,CAAC,kBAAkB,CACzC;KACA,MAAM,CACN,KAAK,EAAE,OAMN,EAAE,EAAE;IACJ,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IACpE,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAErD,MAAM,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;IAE5C,IAAI,CAAC;QACJ,MAAM,OAAO,CAAC;YACb,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,sBAAsB,CAAC,QAAQ;YAC7D,kBAAkB,EACjB,OAAO,CAAC,kBAAkB;gBAC1B,sBAAsB,CAAC,kBAAkB;SAC1C,CAAC,CAAC;IACJ,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACZ,MAAM,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;QACtD,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,uCAAuC,CAAC,CAAC;IAExD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CACD,CAAC"}
1
+ {"version":3,"file":"command.js","sourceRoot":"","sources":["../../../../src/cli/commands/compile/command.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/init/command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkBpC,eAAO,MAAM,WAAW,SAwDrB,CAAC"}
1
+ {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/init/command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkBpC,eAAO,MAAM,WAAW,SAqDrB,CAAC"}
@@ -16,10 +16,10 @@ import { compile } from "../../../compiler/compile.js";
16
16
  import { maybeAddMachineTranslation } from "../../steps/maybe-add-machine-translation.js";
17
17
  export const initCommand = new Command()
18
18
  .name("init")
19
- .summary("Initializes inlang Paraglide-JS.")
19
+ .summary("Initializes Paraglide-JS.")
20
20
  .action(async () => {
21
21
  const logger = new Logger({ silent: false, prefix: false });
22
- logger.box("Welcome to inlang Paraglide JS 🪂");
22
+ logger.box("Welcome to Paraglide JS 🪂");
23
23
  const ctx = {
24
24
  logger,
25
25
  fs: nodeFs.promises,
@@ -52,14 +52,11 @@ export const initCommand = new Command()
52
52
  ctx.logger.warn("Failed to compile project automatically. You will need to run the compiler manually");
53
53
  }
54
54
  const successMessage = [
55
- `inlang Paraglide-JS has been set up sucessfully.`,
55
+ "Setup complete! Run `npm install` and then `npm run build`.",
56
+ `Docs: https://inlang.com/m/gerre34r/library-inlang-paraglideJs/basics`,
56
57
  "\n",
57
- `1. Run your install command (npm i, yarn install, etc)`,
58
- `2. Run the build script (npm run build, or similar.)`,
59
- `3. Visit https://inlang.com/m/gerre34r/library-inlang-paraglideJs/basics to get started.`,
60
- "\n",
61
- `For questions and feedback, visit`,
62
- `https://github.com/opral/inlang-paraglide-js/issues`,
58
+ "For questions and feedback, visit",
59
+ "https://github.com/opral/paraglide-js/issues",
63
60
  ].join("\n");
64
61
  ctx.logger.box(successMessage);
65
62
  process.exit(0);
@@ -68,7 +65,7 @@ const addParaglideJsToDevDependencies = async (ctx) => {
68
65
  const ctx1 = await updatePackageJson({
69
66
  devDependencies: async (devDeps) => ({
70
67
  ...devDeps,
71
- "@inlang/paraglide-js": ENV_VARIABLES.PARJS_PACKAGE_VERSION,
68
+ "@inlang/paraglide-js": `^${ENV_VARIABLES.PARJS_PACKAGE_VERSION}`,
72
69
  }),
73
70
  })(ctx);
74
71
  ctx.logger.success("Added @inlang/paraglide-js to the devDependencies in package.json.");
@@ -97,7 +94,6 @@ const addCompileStepToPackageJSON = async (ctx) => {
97
94
  return scripts;
98
95
  }
99
96
  ctx.logger.success("Added the compile command to the build step in package.json.");
100
- ctx.logger.info(`If you use a bundler like Vite, Rolldown, or Webpack, you can use a bundler plugin instead and remove the compile command from the build script.`);
101
97
  ctx.logger.info(`Visit https://inlang.com/m/gerre34r/library-inlang-paraglideJs/compiling-messages for more information.`);
102
98
  return scripts;
103
99
  },
@@ -1 +1 @@
1
- {"version":3,"file":"command.js","sourceRoot":"","sources":["../../../../src/cli/commands/init/command.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"command.js","sourceRoot":"","sources":["../../../../src/cli/commands/init/command.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"check-for-uncomitted-changes.d.ts","sourceRoot":"","sources":["../../../src/cli/steps/check-for-uncomitted-changes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAI3C,eAAO,MAAM,0BAA0B,EAAE,OAAO,CAC/C;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,EAClB,OAAO,CA0BP,CAAC"}
1
+ {"version":3,"file":"check-for-uncomitted-changes.d.ts","sourceRoot":"","sources":["../../../src/cli/steps/check-for-uncomitted-changes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAI3C,eAAO,MAAM,0BAA0B,EAAE,OAAO,CAC/C;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,EAClB,OAAO,CAuBP,CAAC"}
@@ -5,8 +5,8 @@ export const checkForUncommittedChanges = async (ctx) => {
5
5
  if ((await execAsync("git status --porcelain")).toString().length === 0) {
6
6
  return ctx;
7
7
  }
8
- ctx.logger.info(`You have uncommitted changes.\n\nPlease commit your changes before initializing inlang Paraglide-JS. Committing outstanding changes ensures that you don't lose any work, and see the changes the paraglide-js init command introduces.`);
9
- const response = await prompt("Do you want to initialize inlang Paraglide-JS without committing your current changes?", {
8
+ ctx.logger.info(`You have uncommitted changes.\n\nCommitting outstanding changes ensures that you don't lose any work, and see the changes the paraglide-js init command introduces.`);
9
+ const response = await prompt("Continue without committing?", {
10
10
  type: "confirm",
11
11
  initial: false,
12
12
  });