@intlayer/svelte-transformer 8.0.4 → 8.0.5

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.
@@ -0,0 +1,29 @@
1
+ //#region \0rolldown/runtime.js
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __copyProps = (to, from, except, desc) => {
9
+ if (from && typeof from === "object" || typeof from === "function") {
10
+ for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
11
+ key = keys[i];
12
+ if (!__hasOwnProp.call(to, key) && key !== except) {
13
+ __defProp(to, key, {
14
+ get: ((k) => from[k]).bind(null, key),
15
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
16
+ });
17
+ }
18
+ }
19
+ }
20
+ return to;
21
+ };
22
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
23
+ value: mod,
24
+ enumerable: true
25
+ }) : target, mod));
26
+
27
+ //#endregion
28
+
29
+ exports.__toESM = __toESM;
@@ -1,9 +1,10 @@
1
- const require_rolldown_runtime = require('./_virtual/rolldown_runtime.cjs');
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+ const require_runtime = require('./_virtual/_rolldown/runtime.cjs');
2
3
  let node_fs_promises = require("node:fs/promises");
3
4
  let magic_string = require("magic-string");
4
- magic_string = require_rolldown_runtime.__toESM(magic_string);
5
+ magic_string = require_runtime.__toESM(magic_string);
5
6
  let svelte_compiler = require("svelte/compiler");
6
- svelte_compiler = require_rolldown_runtime.__toESM(svelte_compiler);
7
+ svelte_compiler = require_runtime.__toESM(svelte_compiler);
7
8
  let ts_morph = require("ts-morph");
8
9
 
9
10
  //#region src/index.ts
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["svelteCompiler","MagicString","Project"],"sources":["../../src/index.ts"],"sourcesContent":["import { readFile, writeFile } from 'node:fs/promises';\nimport MagicString from 'magic-string';\nimport * as svelteCompiler from 'svelte/compiler'; // Works for Svelte 3/4/5\nimport { type Node, Project, type SourceFile } from 'ts-morph';\n\ntype TsReplacement = {\n node: Node;\n key: string;\n type: 'jsx-text' | 'jsx-attribute' | 'string-literal';\n};\n\ntype Tools = {\n generateKey: (text: string, existingKeys: Set<string>) => string;\n shouldExtract: (text: string) => boolean;\n extractTsContent: (\n sourceFile: SourceFile,\n existingKeys: Set<string>\n ) => {\n extractedContent: Record<string, string>;\n replacements: TsReplacement[];\n };\n};\n\nconst ATTRIBUTES_TO_EXTRACT = [\n 'title',\n 'placeholder',\n 'alt',\n 'aria-label',\n 'label',\n];\n\nexport const processSvelteFile = async (\n filePath: string,\n componentKey: string,\n packageName: string,\n tools: Tools,\n save: boolean = true\n) => {\n const { generateKey, shouldExtract, extractTsContent } = tools;\n const code = await readFile(filePath, 'utf-8');\n\n const ast = svelteCompiler.parse(code);\n const magic = new MagicString(code);\n\n const extractedContent: Record<string, string> = {};\n const existingKeys = new Set<string>();\n\n const walkSvelte = (node: any) => {\n if (node.type === 'Text') {\n const text = node.data;\n if (shouldExtract(text)) {\n const key = generateKey(text, existingKeys);\n existingKeys.add(key);\n extractedContent[key] = text.replace(/\\s+/g, ' ').trim();\n magic.overwrite(node.start, node.end, `{$content.${key}}`);\n }\n } else if (\n node.type === 'Attribute' &&\n ATTRIBUTES_TO_EXTRACT.includes(node.name)\n ) {\n if (\n node.value &&\n node.value.length === 1 &&\n node.value[0].type === 'Text'\n ) {\n const text = node.value[0].data;\n if (shouldExtract(text)) {\n const key = generateKey(text, existingKeys);\n existingKeys.add(key);\n extractedContent[key] = text.trim();\n magic.overwrite(\n node.start,\n node.end,\n `${node.name}={$content.${key}}`\n );\n }\n }\n }\n\n if (node.children) node.children.forEach(walkSvelte);\n else if (node.fragment?.children)\n node.fragment.children.forEach(walkSvelte);\n if (node.attributes) node.attributes.forEach(walkSvelte);\n };\n\n walkSvelte(ast.html);\n\n const scriptRegex = /<script[^>]*>([\\s\\S]*?)<\\/script>/;\n const match = scriptRegex.exec(code);\n let scriptExtractedKeys = 0;\n\n if (match) {\n const scriptContent = match[1];\n // Offset: index + length of opening tag. match[0] is whole tag, match[1] is content.\n // match.index is start of <script...\n const openTagLength = match[0].indexOf(scriptContent);\n const scriptOffset = match.index + openTagLength;\n\n const project = new Project({ skipAddingFilesFromTsConfig: true });\n const sourceFile = project.createSourceFile('temp.ts', scriptContent);\n\n const { extractedContent: scriptExtracted, replacements } =\n extractTsContent(sourceFile, existingKeys);\n Object.assign(extractedContent, scriptExtracted);\n scriptExtractedKeys = Object.keys(scriptExtracted).length;\n\n for (const { node, key } of replacements) {\n const start = scriptOffset + node.getStart();\n const end = scriptOffset + node.getEnd();\n magic.overwrite(start, end, `get(content).${key}`);\n }\n }\n\n if (Object.keys(extractedContent).length === 0) return null;\n\n // Inject Script\n const importStmt = `import { useIntlayer } from '${packageName}';`;\n const getImportStmt = `import { get } from 'svelte/store';`;\n const callStmt = `const content = useIntlayer('${componentKey}');`;\n\n if (match) {\n const scriptContentStart = match.index + match[0].indexOf('>') + 1;\n magic.appendLeft(\n scriptContentStart,\n `\\n ${importStmt}\\n ${scriptExtractedKeys > 0 ? getImportStmt : ''}\\n ${callStmt}\\n`\n );\n } else {\n magic.prepend(`<script>\\n ${importStmt}\\n ${callStmt}\\n</script>\\n`);\n }\n\n if (save) {\n await writeFile(filePath, magic.toString());\n }\n return extractedContent;\n};\n"],"mappings":";;;;;;;;;AAuBA,MAAM,wBAAwB;CAC5B;CACA;CACA;CACA;CACA;CACD;AAED,MAAa,oBAAoB,OAC/B,UACA,cACA,aACA,OACA,OAAgB,SACb;CACH,MAAM,EAAE,aAAa,eAAe,qBAAqB;CACzD,MAAM,OAAO,qCAAe,UAAU,QAAQ;CAE9C,MAAM,MAAMA,gBAAe,MAAM,KAAK;CACtC,MAAM,QAAQ,IAAIC,qBAAY,KAAK;CAEnC,MAAM,mBAA2C,EAAE;CACnD,MAAM,+BAAe,IAAI,KAAa;CAEtC,MAAM,cAAc,SAAc;AAChC,MAAI,KAAK,SAAS,QAAQ;GACxB,MAAM,OAAO,KAAK;AAClB,OAAI,cAAc,KAAK,EAAE;IACvB,MAAM,MAAM,YAAY,MAAM,aAAa;AAC3C,iBAAa,IAAI,IAAI;AACrB,qBAAiB,OAAO,KAAK,QAAQ,QAAQ,IAAI,CAAC,MAAM;AACxD,UAAM,UAAU,KAAK,OAAO,KAAK,KAAK,aAAa,IAAI,GAAG;;aAG5D,KAAK,SAAS,eACd,sBAAsB,SAAS,KAAK,KAAK,EAEzC;OACE,KAAK,SACL,KAAK,MAAM,WAAW,KACtB,KAAK,MAAM,GAAG,SAAS,QACvB;IACA,MAAM,OAAO,KAAK,MAAM,GAAG;AAC3B,QAAI,cAAc,KAAK,EAAE;KACvB,MAAM,MAAM,YAAY,MAAM,aAAa;AAC3C,kBAAa,IAAI,IAAI;AACrB,sBAAiB,OAAO,KAAK,MAAM;AACnC,WAAM,UACJ,KAAK,OACL,KAAK,KACL,GAAG,KAAK,KAAK,aAAa,IAAI,GAC/B;;;;AAKP,MAAI,KAAK,SAAU,MAAK,SAAS,QAAQ,WAAW;WAC3C,KAAK,UAAU,SACtB,MAAK,SAAS,SAAS,QAAQ,WAAW;AAC5C,MAAI,KAAK,WAAY,MAAK,WAAW,QAAQ,WAAW;;AAG1D,YAAW,IAAI,KAAK;CAGpB,MAAM,QADc,oCACM,KAAK,KAAK;CACpC,IAAI,sBAAsB;AAE1B,KAAI,OAAO;EACT,MAAM,gBAAgB,MAAM;EAG5B,MAAM,gBAAgB,MAAM,GAAG,QAAQ,cAAc;EACrD,MAAM,eAAe,MAAM,QAAQ;EAKnC,MAAM,EAAE,kBAAkB,iBAAiB,iBACzC,iBAJc,IAAIC,iBAAQ,EAAE,6BAA6B,MAAM,CAAC,CACvC,iBAAiB,WAAW,cAAc,EAGtC,aAAa;AAC5C,SAAO,OAAO,kBAAkB,gBAAgB;AAChD,wBAAsB,OAAO,KAAK,gBAAgB,CAAC;AAEnD,OAAK,MAAM,EAAE,MAAM,SAAS,cAAc;GACxC,MAAM,QAAQ,eAAe,KAAK,UAAU;GAC5C,MAAM,MAAM,eAAe,KAAK,QAAQ;AACxC,SAAM,UAAU,OAAO,KAAK,gBAAgB,MAAM;;;AAItD,KAAI,OAAO,KAAK,iBAAiB,CAAC,WAAW,EAAG,QAAO;CAGvD,MAAM,aAAa,gCAAgC,YAAY;CAC/D,MAAM,gBAAgB;CACtB,MAAM,WAAW,gCAAgC,aAAa;AAE9D,KAAI,OAAO;EACT,MAAM,qBAAqB,MAAM,QAAQ,MAAM,GAAG,QAAQ,IAAI,GAAG;AACjE,QAAM,WACJ,oBACA,OAAO,WAAW,MAAM,sBAAsB,IAAI,gBAAgB,GAAG,MAAM,SAAS,IACrF;OAED,OAAM,QAAQ,eAAe,WAAW,MAAM,SAAS,gBAAe;AAGxE,KAAI,KACF,uCAAgB,UAAU,MAAM,UAAU,CAAC;AAE7C,QAAO"}
1
+ {"version":3,"file":"index.cjs","names":["svelteCompiler","MagicString","Project"],"sources":["../../src/index.ts"],"sourcesContent":["import { readFile, writeFile } from 'node:fs/promises';\nimport MagicString from 'magic-string';\nimport * as svelteCompiler from 'svelte/compiler'; // Works for Svelte 3/4/5\nimport { type Node, Project, type SourceFile } from 'ts-morph';\n\ntype TsReplacement = {\n node: Node;\n key: string;\n type: 'jsx-text' | 'jsx-attribute' | 'string-literal';\n};\n\ntype Tools = {\n generateKey: (text: string, existingKeys: Set<string>) => string;\n shouldExtract: (text: string) => boolean;\n extractTsContent: (\n sourceFile: SourceFile,\n existingKeys: Set<string>\n ) => {\n extractedContent: Record<string, string>;\n replacements: TsReplacement[];\n };\n};\n\nconst ATTRIBUTES_TO_EXTRACT = [\n 'title',\n 'placeholder',\n 'alt',\n 'aria-label',\n 'label',\n];\n\nexport const processSvelteFile = async (\n filePath: string,\n componentKey: string,\n packageName: string,\n tools: Tools,\n save: boolean = true\n) => {\n const { generateKey, shouldExtract, extractTsContent } = tools;\n const code = await readFile(filePath, 'utf-8');\n\n const ast = svelteCompiler.parse(code);\n const magic = new MagicString(code);\n\n const extractedContent: Record<string, string> = {};\n const existingKeys = new Set<string>();\n\n const walkSvelte = (node: any) => {\n if (node.type === 'Text') {\n const text = node.data;\n if (shouldExtract(text)) {\n const key = generateKey(text, existingKeys);\n existingKeys.add(key);\n extractedContent[key] = text.replace(/\\s+/g, ' ').trim();\n magic.overwrite(node.start, node.end, `{$content.${key}}`);\n }\n } else if (\n node.type === 'Attribute' &&\n ATTRIBUTES_TO_EXTRACT.includes(node.name)\n ) {\n if (\n node.value &&\n node.value.length === 1 &&\n node.value[0].type === 'Text'\n ) {\n const text = node.value[0].data;\n if (shouldExtract(text)) {\n const key = generateKey(text, existingKeys);\n existingKeys.add(key);\n extractedContent[key] = text.trim();\n magic.overwrite(\n node.start,\n node.end,\n `${node.name}={$content.${key}}`\n );\n }\n }\n }\n\n if (node.children) node.children.forEach(walkSvelte);\n else if (node.fragment?.children)\n node.fragment.children.forEach(walkSvelte);\n if (node.attributes) node.attributes.forEach(walkSvelte);\n };\n\n walkSvelte(ast.html);\n\n const scriptRegex = /<script[^>]*>([\\s\\S]*?)<\\/script>/;\n const match = scriptRegex.exec(code);\n let scriptExtractedKeys = 0;\n\n if (match) {\n const scriptContent = match[1];\n // Offset: index + length of opening tag. match[0] is whole tag, match[1] is content.\n // match.index is start of <script...\n const openTagLength = match[0].indexOf(scriptContent);\n const scriptOffset = match.index + openTagLength;\n\n const project = new Project({ skipAddingFilesFromTsConfig: true });\n const sourceFile = project.createSourceFile('temp.ts', scriptContent);\n\n const { extractedContent: scriptExtracted, replacements } =\n extractTsContent(sourceFile, existingKeys);\n Object.assign(extractedContent, scriptExtracted);\n scriptExtractedKeys = Object.keys(scriptExtracted).length;\n\n for (const { node, key } of replacements) {\n const start = scriptOffset + node.getStart();\n const end = scriptOffset + node.getEnd();\n magic.overwrite(start, end, `get(content).${key}`);\n }\n }\n\n if (Object.keys(extractedContent).length === 0) return null;\n\n // Inject Script\n const importStmt = `import { useIntlayer } from '${packageName}';`;\n const getImportStmt = `import { get } from 'svelte/store';`;\n const callStmt = `const content = useIntlayer('${componentKey}');`;\n\n if (match) {\n const scriptContentStart = match.index + match[0].indexOf('>') + 1;\n magic.appendLeft(\n scriptContentStart,\n `\\n ${importStmt}\\n ${scriptExtractedKeys > 0 ? getImportStmt : ''}\\n ${callStmt}\\n`\n );\n } else {\n magic.prepend(`<script>\\n ${importStmt}\\n ${callStmt}\\n</script>\\n`);\n }\n\n if (save) {\n await writeFile(filePath, magic.toString());\n }\n return extractedContent;\n};\n"],"mappings":";;;;;;;;;;AAuBA,MAAM,wBAAwB;CAC5B;CACA;CACA;CACA;CACA;CACD;AAED,MAAa,oBAAoB,OAC/B,UACA,cACA,aACA,OACA,OAAgB,SACb;CACH,MAAM,EAAE,aAAa,eAAe,qBAAqB;CACzD,MAAM,OAAO,qCAAe,UAAU,QAAQ;CAE9C,MAAM,MAAMA,gBAAe,MAAM,KAAK;CACtC,MAAM,QAAQ,IAAIC,qBAAY,KAAK;CAEnC,MAAM,mBAA2C,EAAE;CACnD,MAAM,+BAAe,IAAI,KAAa;CAEtC,MAAM,cAAc,SAAc;AAChC,MAAI,KAAK,SAAS,QAAQ;GACxB,MAAM,OAAO,KAAK;AAClB,OAAI,cAAc,KAAK,EAAE;IACvB,MAAM,MAAM,YAAY,MAAM,aAAa;AAC3C,iBAAa,IAAI,IAAI;AACrB,qBAAiB,OAAO,KAAK,QAAQ,QAAQ,IAAI,CAAC,MAAM;AACxD,UAAM,UAAU,KAAK,OAAO,KAAK,KAAK,aAAa,IAAI,GAAG;;aAG5D,KAAK,SAAS,eACd,sBAAsB,SAAS,KAAK,KAAK,EAEzC;OACE,KAAK,SACL,KAAK,MAAM,WAAW,KACtB,KAAK,MAAM,GAAG,SAAS,QACvB;IACA,MAAM,OAAO,KAAK,MAAM,GAAG;AAC3B,QAAI,cAAc,KAAK,EAAE;KACvB,MAAM,MAAM,YAAY,MAAM,aAAa;AAC3C,kBAAa,IAAI,IAAI;AACrB,sBAAiB,OAAO,KAAK,MAAM;AACnC,WAAM,UACJ,KAAK,OACL,KAAK,KACL,GAAG,KAAK,KAAK,aAAa,IAAI,GAC/B;;;;AAKP,MAAI,KAAK,SAAU,MAAK,SAAS,QAAQ,WAAW;WAC3C,KAAK,UAAU,SACtB,MAAK,SAAS,SAAS,QAAQ,WAAW;AAC5C,MAAI,KAAK,WAAY,MAAK,WAAW,QAAQ,WAAW;;AAG1D,YAAW,IAAI,KAAK;CAGpB,MAAM,QADc,oCACM,KAAK,KAAK;CACpC,IAAI,sBAAsB;AAE1B,KAAI,OAAO;EACT,MAAM,gBAAgB,MAAM;EAG5B,MAAM,gBAAgB,MAAM,GAAG,QAAQ,cAAc;EACrD,MAAM,eAAe,MAAM,QAAQ;EAKnC,MAAM,EAAE,kBAAkB,iBAAiB,iBACzC,iBAJc,IAAIC,iBAAQ,EAAE,6BAA6B,MAAM,CAAC,CACvC,iBAAiB,WAAW,cAAc,EAGtC,aAAa;AAC5C,SAAO,OAAO,kBAAkB,gBAAgB;AAChD,wBAAsB,OAAO,KAAK,gBAAgB,CAAC;AAEnD,OAAK,MAAM,EAAE,MAAM,SAAS,cAAc;GACxC,MAAM,QAAQ,eAAe,KAAK,UAAU;GAC5C,MAAM,MAAM,eAAe,KAAK,QAAQ;AACxC,SAAM,UAAU,OAAO,KAAK,gBAAgB,MAAM;;;AAItD,KAAI,OAAO,KAAK,iBAAiB,CAAC,WAAW,EAAG,QAAO;CAGvD,MAAM,aAAa,gCAAgC,YAAY;CAC/D,MAAM,gBAAgB;CACtB,MAAM,WAAW,gCAAgC,aAAa;AAE9D,KAAI,OAAO;EACT,MAAM,qBAAqB,MAAM,QAAQ,MAAM,GAAG,QAAQ,IAAI,GAAG;AACjE,QAAM,WACJ,oBACA,OAAO,WAAW,MAAM,sBAAsB,IAAI,gBAAgB,GAAG,MAAM,SAAS,IACrF;OAED,OAAM,QAAQ,eAAe,WAAW,MAAM,SAAS,gBAAe;AAGxE,KAAI,KACF,uCAAgB,UAAU,MAAM,UAAU,CAAC;AAE7C,QAAO"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@intlayer/svelte-transformer",
3
- "version": "8.0.4",
3
+ "version": "8.0.5",
4
4
  "private": false,
5
5
  "description": "A transformer for Intlayer that extract strings from Svelte components.",
6
6
  "keywords": [
@@ -76,12 +76,12 @@
76
76
  "ts-morph": "27.0.0"
77
77
  },
78
78
  "devDependencies": {
79
- "@types/node": "25.0.10",
79
+ "@types/node": "25.2.2",
80
80
  "@utils/ts-config": "1.0.4",
81
81
  "@utils/ts-config-types": "1.0.4",
82
82
  "@utils/tsdown-config": "1.0.4",
83
83
  "rimraf": "6.1.2",
84
- "tsdown": "0.20.1",
84
+ "tsdown": "0.20.3",
85
85
  "typescript": "5.9.3",
86
86
  "vitest": "4.0.18"
87
87
  },