svelte-django-gettext 1.0.2 → 1.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 (3) hide show
  1. package/build.js +26 -9
  2. package/package.json +14 -56
  3. package/vite.config.js +0 -8
package/build.js CHANGED
@@ -4,6 +4,11 @@ import { writeFileSync } from 'fs';
4
4
  *
5
5
  * Strings are collected per file, and written to the (.gitignored) `_svelte_extracted_msgids.js`
6
6
  * which is parsable by vanilla django `./manage.py makemessages`.
7
+ *
8
+ * This preprocessor only reads the markup, it never rewrites it. It still has to return the
9
+ * content together with an identity sourcemap: a svelte preprocessor returning `undefined` is
10
+ * treated as "transformed, but no sourcemap available" by the build tooling, which makes
11
+ * bundlers (vite >= 8.3) emit SOURCEMAP_BROKEN warnings and degrades sourcemaps downstream.
7
12
  */
8
13
  const GETTEXT_REGEXP = /((n|p)?gettext\(.*?\))/g;
9
14
  const extracts = {};
@@ -22,13 +27,25 @@ export function writeGettextExtracts(extractsFile = '_svelte_django_extracted_me
22
27
  }
23
28
 
24
29
  export async function gettextStringExtractor({ content, filename }) {
25
- if (content.indexOf('gettext') === -1) {
26
- return;
27
- }
28
- let fileExtracts = content.match(GETTEXT_REGEXP);
29
- if (fileExtracts === null) {
30
- return;
30
+ if (content.indexOf('gettext') !== -1) {
31
+ let fileExtracts = content.match(GETTEXT_REGEXP);
32
+ if (fileExtracts !== null) {
33
+ extracts[filename] = fileExtracts.map((x) => x.replace(', true)', ')') + ';');
34
+ }
31
35
  }
32
- extracts[filename] = fileExtracts.map((x) => x.replace(', true)', ')') + ';');
33
- return;
34
- }
36
+
37
+ // Content is returned unchanged, so an empty mappings string is a valid identity sourcemap.
38
+ return { code: content, map: identitySourcemap(filename) };
39
+ }
40
+
41
+ /* An identity sourcemap for an unmodified file: every position maps to itself, which is what
42
+ * an empty `mappings` string means. `names`/`sourcesContent` are left empty deliberately.
43
+ */
44
+ function identitySourcemap(filename) {
45
+ return {
46
+ version: 3,
47
+ sources: [filename],
48
+ names: [],
49
+ mappings: '',
50
+ };
51
+ }
package/package.json CHANGED
@@ -1,14 +1,15 @@
1
1
  {
2
2
  "name": "svelte-django-gettext",
3
- "version": "1.0.2",
3
+ "version": "1.1.0",
4
4
  "description": "Use django gettext in Svelte",
5
5
  "author": "Jan Pieter Waagmeester",
6
6
  "license": "ISC",
7
7
  "main": "index.js",
8
8
  "type": "module",
9
9
  "scripts": {
10
- "test": "vitest",
11
- "eslint": "eslint -c package.json --fix *.js test/"
10
+ "test": "vitest run",
11
+ "eslint": "eslint --fix .",
12
+ "test:watch": "vitest"
12
13
  },
13
14
  "keywords": [
14
15
  "Svelte",
@@ -20,59 +21,16 @@
20
21
  ".": "./index.js",
21
22
  "./build": "./build.js"
22
23
  },
24
+ "files": [
25
+ "build.js",
26
+ "index.js",
27
+ "README.md"
28
+ ],
23
29
  "devDependencies": {
24
- "eslint": "^8.3.0",
25
- "eslint-plugin-import": "^2.25.3",
26
- "jsdom": "^23.2.0",
27
- "vitest": "^1.2.1"
28
- },
29
- "jest": {
30
- "testEnvironment": "jsdom"
31
- },
32
- "eslintConfig": {
33
- "env": {
34
- "browser": true,
35
- "es2021": true
36
- },
37
- "extends": "eslint:recommended",
38
- "parserOptions": {
39
- "ecmaVersion": 13,
40
- "sourceType": "module"
41
- },
42
- "plugins": [
43
- "import"
44
- ],
45
- "rules": {
46
- "indent": [
47
- "error",
48
- 4,
49
- {
50
- "SwitchCase": 1
51
- }
52
- ],
53
- "quotes": [
54
- "error",
55
- "single"
56
- ],
57
- "import/order": [
58
- "error",
59
- {
60
- "groups": [
61
- "builtin",
62
- "external",
63
- "internal",
64
- [
65
- "parent",
66
- "sibling"
67
- ]
68
- ],
69
- "newlines-between": "always",
70
- "alphabetize": {
71
- "order": "asc",
72
- "caseInsensitive": true
73
- }
74
- }
75
- ]
76
- }
30
+ "@eslint/js": "^10.0.1",
31
+ "eslint": "^10.10.0",
32
+ "globals": "^17.12.0",
33
+ "jsdom": "^30.1.0",
34
+ "vitest": "^5.0.1"
77
35
  }
78
36
  }
package/vite.config.js DELETED
@@ -1,8 +0,0 @@
1
- import { defineConfig } from 'vite';
2
-
3
- export default defineConfig({
4
- test: {
5
- globals: true,
6
- environment: 'jsdom',
7
- }
8
- });