lingo.dev 0.74.0 → 0.74.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.
- package/README.md +13 -1
- package/build/{chunk-MZS2TO4G.cjs → chunk-JZIJPDHI.cjs} +1 -1
- package/build/chunk-JZIJPDHI.cjs.map +1 -0
- package/build/{chunk-D7CRCYTW.mjs → chunk-XU7ZJKQ2.mjs} +1 -1
- package/build/chunk-XU7ZJKQ2.mjs.map +1 -0
- package/build/cli.cjs +8 -5
- package/build/cli.cjs.map +1 -1
- package/build/cli.mjs +7 -4
- package/build/cli.mjs.map +1 -1
- package/build/sdk.cjs +2 -2
- package/build/sdk.d.cts +2 -2
- package/build/sdk.d.ts +2 -2
- package/build/sdk.mjs +1 -1
- package/build/spec.d.cts +1 -1
- package/build/spec.d.ts +1 -1
- package/package.json +6 -3
- package/build/chunk-D7CRCYTW.mjs.map +0 -1
- package/build/chunk-MZS2TO4G.cjs.map +0 -1
package/README.md
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/lingo.dev/lingo.dev/packages/cli/build/chunk-JZIJPDHI.cjs","../../sdk/build/index.mjs"],"names":[],"mappings":"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ACD,MAAA;AACC,QAAA;AACF,QAAA;AACE,QAAA;AACA,UAAA;AACb,UAAA;AACF,QAAA;AACiB,QAAA;AACN,UAAA;AACX,QAAA;AACc,QAAA;AACI,QAAA;AACA,UAAA;AAClB,QAAA;AACU,QAAA;AACZ,MAAA;AACiB,MAAA;AACK,MAAA;AACxB,IAAA;AACqB,IAAA;AACD,MAAA;AACH,MAAA;AACT,QAAA;AACF,UAAA;AACF,QAAA;AACgB,QAAA;AAClB,MAAA;AACsB,MAAA;AACF,QAAA;AACR,QAAA;AACS,UAAA;AACnB,QAAA;AACc,MAAA;AACE,QAAA;AACA,QAAA;AACG,QAAA;AACC,QAAA;AACJ,UAAA;AACH,UAAA;AACQ,YAAA;AACnB,UAAA;AACD,QAAA;AACkB,QAAA;AACrB,MAAA;AACF,IAAA;AACyB,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACV,IAAA;AACI,MAAA;AACE,MAAA;AACN,MAAA;AACC,MAAA;AACM,MAAA;AACD,QAAA;AACN,UAAA;AACX,QAAA;AACmB,QAAA;AACN,QAAA;AACF,UAAA;AACX,QAAA;AACF,MAAA;AACa,MAAA;AACI,QAAA;AACL,UAAA;AACH,QAAA;AACG,UAAA;AACV,QAAA;AACF,MAAA;AACD,IAAA;AACoB,IAAA;AACvB,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMsB,EAAA;AACG,IAAA;AACb,MAAA;AACC,MAAA;AACS,QAAA;AACD,QAAA;AACjB,MAAA;AACuB,MAAA;AACxB,IAAA;AACiB,IAAA;AACA,MAAA;AAClB,IAAA;AACqB,IAAA;AACD,IAAA;AACtB,EAAA;AACF;ADI6B;AACA;AACA;AACA","file":"/home/runner/work/lingo.dev/lingo.dev/packages/cli/build/chunk-JZIJPDHI.cjs","sourcesContent":[null,"// src/index.ts\nimport Z from \"zod\";\nimport { localeCodeSchema } from \"@lingo.dev/_spec\";\nimport { createId } from \"@paralleldrive/cuid2\";\nvar engineParamsSchema = Z.object({\n apiKey: Z.string(),\n apiUrl: Z.string().url().default(\"https://engine.lingo.dev\"),\n batchSize: Z.number().int().gt(0).lte(250).default(25),\n idealBatchItemSize: Z.number().int().gt(0).lte(2500).default(250)\n}).passthrough();\nvar payloadSchema = Z.record(Z.string(), Z.any());\nvar localizationParamsSchema = Z.object({\n sourceLocale: localeCodeSchema,\n targetLocale: localeCodeSchema,\n fast: Z.boolean().optional()\n});\nvar referenceSchema = Z.record(localeCodeSchema, payloadSchema);\nvar ReplexicaEngine = class {\n config;\n /**\n * Create a new ReplexicaEngine instance\n * @param config - Configuration options for the Engine\n */\n constructor(config) {\n this.config = engineParamsSchema.parse(config);\n }\n /**\n * Localize content using the Lingo.dev API\n * @param payload - The content to be localized\n * @param params - Localization parameters including source/target locales and fast mode option\n * @param reference - Optional reference translations to maintain consistency\n * @param progressCallback - Optional callback function to report progress (0-100)\n * @returns Localized content\n * @internal\n */\n async _localizeRaw(payload, params, reference, progressCallback) {\n const finalPayload = payloadSchema.parse(payload);\n const finalParams = localizationParamsSchema.parse(params);\n const chunkedPayload = this.extractPayloadChunks(finalPayload);\n const processedPayloadChunks = [];\n const workflowId = createId();\n for (let i = 0; i < chunkedPayload.length; i++) {\n const chunk = chunkedPayload[i];\n const percentageCompleted = Math.round((i + 1) / chunkedPayload.length * 100);\n const processedPayloadChunk = await this.localizeChunk(\n finalParams.sourceLocale,\n finalParams.targetLocale,\n { data: chunk, reference },\n workflowId,\n params.fast || false\n );\n if (progressCallback) {\n progressCallback(percentageCompleted, chunk, processedPayloadChunk);\n }\n processedPayloadChunks.push(processedPayloadChunk);\n }\n return Object.assign({}, ...processedPayloadChunks);\n }\n /**\n * Localize a single chunk of content\n * @param sourceLocale - Source locale\n * @param targetLocale - Target locale\n * @param payload - Payload containing the chunk to be localized\n * @returns Localized chunk\n */\n async localizeChunk(sourceLocale, targetLocale, payload, workflowId, fast) {\n const res = await fetch(`${this.config.apiUrl}/i18n`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${this.config.apiKey}`\n },\n body: JSON.stringify(\n {\n params: { workflowId, fast },\n locale: {\n source: sourceLocale,\n target: targetLocale\n },\n data: payload.data,\n reference: payload.reference\n },\n null,\n 2\n )\n });\n if (!res.ok) {\n if (res.status === 400) {\n throw new Error(`Invalid request: ${res.statusText}`);\n } else {\n const errorText = await res.text();\n throw new Error(errorText);\n }\n }\n const jsonResponse = await res.json();\n return jsonResponse.data || {};\n }\n /**\n * Extract payload chunks based on the ideal chunk size\n * @param payload - The payload to be chunked\n * @returns An array of payload chunks\n */\n extractPayloadChunks(payload) {\n const result = [];\n let currentChunk = {};\n let currentChunkItemCount = 0;\n const payloadEntries = Object.entries(payload);\n for (let i = 0; i < payloadEntries.length; i++) {\n const [key, value] = payloadEntries[i];\n currentChunk[key] = value;\n currentChunkItemCount++;\n const currentChunkSize = this.countWordsInRecord(currentChunk);\n if (currentChunkSize > this.config.idealBatchItemSize || currentChunkItemCount >= this.config.batchSize || i === payloadEntries.length - 1) {\n result.push(currentChunk);\n currentChunk = {};\n currentChunkItemCount = 0;\n }\n }\n return result;\n }\n /**\n * Count words in a record or array\n * @param payload - The payload to count words in\n * @returns The total number of words\n */\n countWordsInRecord(payload) {\n if (Array.isArray(payload)) {\n return payload.reduce((acc, item) => acc + this.countWordsInRecord(item), 0);\n } else if (typeof payload === \"object\" && payload !== null) {\n return Object.values(payload).reduce((acc, item) => acc + this.countWordsInRecord(item), 0);\n } else if (typeof payload === \"string\") {\n return payload.trim().split(/\\s+/).filter(Boolean).length;\n } else {\n return 0;\n }\n }\n /**\n * Localize a typical JavaScript object\n * @param obj - The object to be localized (strings will be extracted and translated)\n * @param params - Localization parameters:\n * - sourceLocale: The source language code (e.g., 'en')\n * - targetLocale: The target language code (e.g., 'es')\n * - fast: Optional boolean to enable fast mode (faster but potentially lower quality)\n * @param progressCallback - Optional callback function to report progress (0-100)\n * @returns A new object with the same structure but localized string values\n */\n async localizeObject(obj, params, progressCallback) {\n return this._localizeRaw(obj, params, void 0, progressCallback);\n }\n /**\n * Localize a single text string\n * @param text - The text string to be localized\n * @param params - Localization parameters:\n * - sourceLocale: The source language code (e.g., 'en')\n * - targetLocale: The target language code (e.g., 'es')\n * - fast: Optional boolean to enable fast mode (faster for bigger batches)\n * @param progressCallback - Optional callback function to report progress (0-100)\n * @returns The localized text string\n */\n async localizeText(text, params, progressCallback) {\n const response = await this._localizeRaw({ text }, params, void 0, progressCallback);\n return response.text || \"\";\n }\n /**\n * Localize a text string to multiple target locales\n * @param text - The text string to be localized\n * @param params - Localization parameters:\n * - sourceLocale: The source language code (e.g., 'en')\n * - targetLocales: An array of target language codes (e.g., ['es', 'fr'])\n * - fast: Optional boolean to enable fast mode (for bigger batches)\n * @returns An array of localized text strings\n */\n async batchLocalizeText(text, params) {\n const responses = await Promise.all(\n params.targetLocales.map(\n (targetLocale) => this.localizeText(text, {\n sourceLocale: params.sourceLocale,\n targetLocale,\n fast: params.fast\n })\n )\n );\n return responses;\n }\n /**\n * Localize a chat sequence while preserving speaker names\n * @param chat - Array of chat messages, each with 'name' and 'text' properties\n * @param params - Localization parameters:\n * - sourceLocale: The source language code (e.g., 'en')\n * - targetLocale: The target language code (e.g., 'es')\n * - fast: Optional boolean to enable fast mode (faster but potentially lower quality)\n * @param progressCallback - Optional callback function to report progress (0-100)\n * @returns Array of localized chat messages with preserved structure\n */\n async localizeChat(chat, params, progressCallback) {\n const localized = await this._localizeRaw({ chat }, params, void 0, progressCallback);\n return Object.entries(localized).map(([key, value]) => ({\n name: chat[parseInt(key.split(\"_\")[1])].name,\n text: value\n }));\n }\n /**\n * Localize an HTML document while preserving structure and formatting\n * Handles both text content and localizable attributes (alt, title, placeholder, meta content)\n * @param html - The HTML document string to be localized\n * @param params - Localization parameters:\n * - sourceLocale: The source language code (e.g., 'en')\n * - targetLocale: The target language code (e.g., 'es')\n * - fast: Optional boolean to enable fast mode (faster but potentially lower quality)\n * @param progressCallback - Optional callback function to report progress (0-100)\n * @returns The localized HTML document as a string, with updated lang attribute\n */\n async localizeHtml(html, params, progressCallback) {\n const jsdomPackage = await import(\"jsdom\");\n const { JSDOM } = jsdomPackage;\n const dom = new JSDOM(html);\n const document = dom.window.document;\n const LOCALIZABLE_ATTRIBUTES = {\n meta: [\"content\"],\n img: [\"alt\"],\n input: [\"placeholder\"],\n a: [\"title\"]\n };\n const UNLOCALIZABLE_TAGS = [\"script\", \"style\"];\n const extractedContent = {};\n const getPath = (node, attribute) => {\n const indices = [];\n let current = node;\n let rootParent = \"\";\n while (current) {\n const parent = current.parentElement;\n if (!parent) break;\n if (parent === document.documentElement) {\n rootParent = current.nodeName.toLowerCase();\n break;\n }\n const siblings = Array.from(parent.childNodes).filter(\n (n) => n.nodeType === 1 || n.nodeType === 3 && n.textContent?.trim()\n );\n const index = siblings.indexOf(current);\n if (index !== -1) {\n indices.unshift(index);\n }\n current = parent;\n }\n const basePath = rootParent ? `${rootParent}/${indices.join(\"/\")}` : indices.join(\"/\");\n return attribute ? `${basePath}#${attribute}` : basePath;\n };\n const processNode = (node) => {\n let parent = node.parentElement;\n while (parent) {\n if (UNLOCALIZABLE_TAGS.includes(parent.tagName.toLowerCase())) {\n return;\n }\n parent = parent.parentElement;\n }\n if (node.nodeType === 3) {\n const text = node.textContent?.trim() || \"\";\n if (text) {\n extractedContent[getPath(node)] = text;\n }\n } else if (node.nodeType === 1) {\n const element = node;\n const tagName = element.tagName.toLowerCase();\n const attributes = LOCALIZABLE_ATTRIBUTES[tagName] || [];\n attributes.forEach((attr) => {\n const value = element.getAttribute(attr);\n if (value) {\n extractedContent[getPath(element, attr)] = value;\n }\n });\n Array.from(element.childNodes).filter((n) => n.nodeType === 1 || n.nodeType === 3 && n.textContent?.trim()).forEach(processNode);\n }\n };\n Array.from(document.head.childNodes).filter((n) => n.nodeType === 1 || n.nodeType === 3 && n.textContent?.trim()).forEach(processNode);\n Array.from(document.body.childNodes).filter((n) => n.nodeType === 1 || n.nodeType === 3 && n.textContent?.trim()).forEach(processNode);\n const localizedContent = await this._localizeRaw(extractedContent, params, void 0, progressCallback);\n document.documentElement.setAttribute(\"lang\", params.targetLocale);\n Object.entries(localizedContent).forEach(([path, value]) => {\n const [nodePath, attribute] = path.split(\"#\");\n const [rootTag, ...indices] = nodePath.split(\"/\");\n let parent = rootTag === \"head\" ? document.head : document.body;\n let current = parent;\n for (const index of indices) {\n const siblings = Array.from(parent.childNodes).filter(\n (n) => n.nodeType === 1 || n.nodeType === 3 && n.textContent?.trim()\n );\n current = siblings[parseInt(index)] || null;\n if (current?.nodeType === 1) {\n parent = current;\n }\n }\n if (current) {\n if (attribute) {\n current.setAttribute(attribute, value);\n } else {\n current.textContent = value;\n }\n }\n });\n return dom.serialize();\n }\n /**\n * Detect the language of a given text\n * @param text - The text to analyze\n * @returns Promise resolving to a locale code (e.g., 'en', 'es', 'fr')\n */\n async recognizeLocale(text) {\n const response = await fetch(`${this.config.apiUrl}/recognize`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${this.config.apiKey}`\n },\n body: JSON.stringify({ text })\n });\n if (!response.ok) {\n throw new Error(`Error recognizing locale: ${response.statusText}`);\n }\n const jsonResponse = await response.json();\n return jsonResponse.locale;\n }\n};\nexport {\n ReplexicaEngine\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../sdk/build/index.mjs"],"sourcesContent":["// src/index.ts\nimport Z from \"zod\";\nimport { localeCodeSchema } from \"@lingo.dev/_spec\";\nimport { createId } from \"@paralleldrive/cuid2\";\nvar engineParamsSchema = Z.object({\n apiKey: Z.string(),\n apiUrl: Z.string().url().default(\"https://engine.lingo.dev\"),\n batchSize: Z.number().int().gt(0).lte(250).default(25),\n idealBatchItemSize: Z.number().int().gt(0).lte(2500).default(250)\n}).passthrough();\nvar payloadSchema = Z.record(Z.string(), Z.any());\nvar localizationParamsSchema = Z.object({\n sourceLocale: localeCodeSchema,\n targetLocale: localeCodeSchema,\n fast: Z.boolean().optional()\n});\nvar referenceSchema = Z.record(localeCodeSchema, payloadSchema);\nvar ReplexicaEngine = class {\n config;\n /**\n * Create a new ReplexicaEngine instance\n * @param config - Configuration options for the Engine\n */\n constructor(config) {\n this.config = engineParamsSchema.parse(config);\n }\n /**\n * Localize content using the Lingo.dev API\n * @param payload - The content to be localized\n * @param params - Localization parameters including source/target locales and fast mode option\n * @param reference - Optional reference translations to maintain consistency\n * @param progressCallback - Optional callback function to report progress (0-100)\n * @returns Localized content\n * @internal\n */\n async _localizeRaw(payload, params, reference, progressCallback) {\n const finalPayload = payloadSchema.parse(payload);\n const finalParams = localizationParamsSchema.parse(params);\n const chunkedPayload = this.extractPayloadChunks(finalPayload);\n const processedPayloadChunks = [];\n const workflowId = createId();\n for (let i = 0; i < chunkedPayload.length; i++) {\n const chunk = chunkedPayload[i];\n const percentageCompleted = Math.round((i + 1) / chunkedPayload.length * 100);\n const processedPayloadChunk = await this.localizeChunk(\n finalParams.sourceLocale,\n finalParams.targetLocale,\n { data: chunk, reference },\n workflowId,\n params.fast || false\n );\n if (progressCallback) {\n progressCallback(percentageCompleted, chunk, processedPayloadChunk);\n }\n processedPayloadChunks.push(processedPayloadChunk);\n }\n return Object.assign({}, ...processedPayloadChunks);\n }\n /**\n * Localize a single chunk of content\n * @param sourceLocale - Source locale\n * @param targetLocale - Target locale\n * @param payload - Payload containing the chunk to be localized\n * @returns Localized chunk\n */\n async localizeChunk(sourceLocale, targetLocale, payload, workflowId, fast) {\n const res = await fetch(`${this.config.apiUrl}/i18n`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${this.config.apiKey}`\n },\n body: JSON.stringify(\n {\n params: { workflowId, fast },\n locale: {\n source: sourceLocale,\n target: targetLocale\n },\n data: payload.data,\n reference: payload.reference\n },\n null,\n 2\n )\n });\n if (!res.ok) {\n if (res.status === 400) {\n throw new Error(`Invalid request: ${res.statusText}`);\n } else {\n const errorText = await res.text();\n throw new Error(errorText);\n }\n }\n const jsonResponse = await res.json();\n return jsonResponse.data || {};\n }\n /**\n * Extract payload chunks based on the ideal chunk size\n * @param payload - The payload to be chunked\n * @returns An array of payload chunks\n */\n extractPayloadChunks(payload) {\n const result = [];\n let currentChunk = {};\n let currentChunkItemCount = 0;\n const payloadEntries = Object.entries(payload);\n for (let i = 0; i < payloadEntries.length; i++) {\n const [key, value] = payloadEntries[i];\n currentChunk[key] = value;\n currentChunkItemCount++;\n const currentChunkSize = this.countWordsInRecord(currentChunk);\n if (currentChunkSize > this.config.idealBatchItemSize || currentChunkItemCount >= this.config.batchSize || i === payloadEntries.length - 1) {\n result.push(currentChunk);\n currentChunk = {};\n currentChunkItemCount = 0;\n }\n }\n return result;\n }\n /**\n * Count words in a record or array\n * @param payload - The payload to count words in\n * @returns The total number of words\n */\n countWordsInRecord(payload) {\n if (Array.isArray(payload)) {\n return payload.reduce((acc, item) => acc + this.countWordsInRecord(item), 0);\n } else if (typeof payload === \"object\" && payload !== null) {\n return Object.values(payload).reduce((acc, item) => acc + this.countWordsInRecord(item), 0);\n } else if (typeof payload === \"string\") {\n return payload.trim().split(/\\s+/).filter(Boolean).length;\n } else {\n return 0;\n }\n }\n /**\n * Localize a typical JavaScript object\n * @param obj - The object to be localized (strings will be extracted and translated)\n * @param params - Localization parameters:\n * - sourceLocale: The source language code (e.g., 'en')\n * - targetLocale: The target language code (e.g., 'es')\n * - fast: Optional boolean to enable fast mode (faster but potentially lower quality)\n * @param progressCallback - Optional callback function to report progress (0-100)\n * @returns A new object with the same structure but localized string values\n */\n async localizeObject(obj, params, progressCallback) {\n return this._localizeRaw(obj, params, void 0, progressCallback);\n }\n /**\n * Localize a single text string\n * @param text - The text string to be localized\n * @param params - Localization parameters:\n * - sourceLocale: The source language code (e.g., 'en')\n * - targetLocale: The target language code (e.g., 'es')\n * - fast: Optional boolean to enable fast mode (faster for bigger batches)\n * @param progressCallback - Optional callback function to report progress (0-100)\n * @returns The localized text string\n */\n async localizeText(text, params, progressCallback) {\n const response = await this._localizeRaw({ text }, params, void 0, progressCallback);\n return response.text || \"\";\n }\n /**\n * Localize a text string to multiple target locales\n * @param text - The text string to be localized\n * @param params - Localization parameters:\n * - sourceLocale: The source language code (e.g., 'en')\n * - targetLocales: An array of target language codes (e.g., ['es', 'fr'])\n * - fast: Optional boolean to enable fast mode (for bigger batches)\n * @returns An array of localized text strings\n */\n async batchLocalizeText(text, params) {\n const responses = await Promise.all(\n params.targetLocales.map(\n (targetLocale) => this.localizeText(text, {\n sourceLocale: params.sourceLocale,\n targetLocale,\n fast: params.fast\n })\n )\n );\n return responses;\n }\n /**\n * Localize a chat sequence while preserving speaker names\n * @param chat - Array of chat messages, each with 'name' and 'text' properties\n * @param params - Localization parameters:\n * - sourceLocale: The source language code (e.g., 'en')\n * - targetLocale: The target language code (e.g., 'es')\n * - fast: Optional boolean to enable fast mode (faster but potentially lower quality)\n * @param progressCallback - Optional callback function to report progress (0-100)\n * @returns Array of localized chat messages with preserved structure\n */\n async localizeChat(chat, params, progressCallback) {\n const localized = await this._localizeRaw({ chat }, params, void 0, progressCallback);\n return Object.entries(localized).map(([key, value]) => ({\n name: chat[parseInt(key.split(\"_\")[1])].name,\n text: value\n }));\n }\n /**\n * Localize an HTML document while preserving structure and formatting\n * Handles both text content and localizable attributes (alt, title, placeholder, meta content)\n * @param html - The HTML document string to be localized\n * @param params - Localization parameters:\n * - sourceLocale: The source language code (e.g., 'en')\n * - targetLocale: The target language code (e.g., 'es')\n * - fast: Optional boolean to enable fast mode (faster but potentially lower quality)\n * @param progressCallback - Optional callback function to report progress (0-100)\n * @returns The localized HTML document as a string, with updated lang attribute\n */\n async localizeHtml(html, params, progressCallback) {\n const jsdomPackage = await import(\"jsdom\");\n const { JSDOM } = jsdomPackage;\n const dom = new JSDOM(html);\n const document = dom.window.document;\n const LOCALIZABLE_ATTRIBUTES = {\n meta: [\"content\"],\n img: [\"alt\"],\n input: [\"placeholder\"],\n a: [\"title\"]\n };\n const UNLOCALIZABLE_TAGS = [\"script\", \"style\"];\n const extractedContent = {};\n const getPath = (node, attribute) => {\n const indices = [];\n let current = node;\n let rootParent = \"\";\n while (current) {\n const parent = current.parentElement;\n if (!parent) break;\n if (parent === document.documentElement) {\n rootParent = current.nodeName.toLowerCase();\n break;\n }\n const siblings = Array.from(parent.childNodes).filter(\n (n) => n.nodeType === 1 || n.nodeType === 3 && n.textContent?.trim()\n );\n const index = siblings.indexOf(current);\n if (index !== -1) {\n indices.unshift(index);\n }\n current = parent;\n }\n const basePath = rootParent ? `${rootParent}/${indices.join(\"/\")}` : indices.join(\"/\");\n return attribute ? `${basePath}#${attribute}` : basePath;\n };\n const processNode = (node) => {\n let parent = node.parentElement;\n while (parent) {\n if (UNLOCALIZABLE_TAGS.includes(parent.tagName.toLowerCase())) {\n return;\n }\n parent = parent.parentElement;\n }\n if (node.nodeType === 3) {\n const text = node.textContent?.trim() || \"\";\n if (text) {\n extractedContent[getPath(node)] = text;\n }\n } else if (node.nodeType === 1) {\n const element = node;\n const tagName = element.tagName.toLowerCase();\n const attributes = LOCALIZABLE_ATTRIBUTES[tagName] || [];\n attributes.forEach((attr) => {\n const value = element.getAttribute(attr);\n if (value) {\n extractedContent[getPath(element, attr)] = value;\n }\n });\n Array.from(element.childNodes).filter((n) => n.nodeType === 1 || n.nodeType === 3 && n.textContent?.trim()).forEach(processNode);\n }\n };\n Array.from(document.head.childNodes).filter((n) => n.nodeType === 1 || n.nodeType === 3 && n.textContent?.trim()).forEach(processNode);\n Array.from(document.body.childNodes).filter((n) => n.nodeType === 1 || n.nodeType === 3 && n.textContent?.trim()).forEach(processNode);\n const localizedContent = await this._localizeRaw(extractedContent, params, void 0, progressCallback);\n document.documentElement.setAttribute(\"lang\", params.targetLocale);\n Object.entries(localizedContent).forEach(([path, value]) => {\n const [nodePath, attribute] = path.split(\"#\");\n const [rootTag, ...indices] = nodePath.split(\"/\");\n let parent = rootTag === \"head\" ? document.head : document.body;\n let current = parent;\n for (const index of indices) {\n const siblings = Array.from(parent.childNodes).filter(\n (n) => n.nodeType === 1 || n.nodeType === 3 && n.textContent?.trim()\n );\n current = siblings[parseInt(index)] || null;\n if (current?.nodeType === 1) {\n parent = current;\n }\n }\n if (current) {\n if (attribute) {\n current.setAttribute(attribute, value);\n } else {\n current.textContent = value;\n }\n }\n });\n return dom.serialize();\n }\n /**\n * Detect the language of a given text\n * @param text - The text to analyze\n * @returns Promise resolving to a locale code (e.g., 'en', 'es', 'fr')\n */\n async recognizeLocale(text) {\n const response = await fetch(`${this.config.apiUrl}/recognize`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${this.config.apiKey}`\n },\n body: JSON.stringify({ text })\n });\n if (!response.ok) {\n throw new Error(`Error recognizing locale: ${response.statusText}`);\n }\n const jsonResponse = await response.json();\n return jsonResponse.locale;\n }\n};\nexport {\n ReplexicaEngine\n};\n"],"mappings":";;;;;AACA,OAAO,OAAO;AAEd,SAAS,gBAAgB;AACzB,IAAI,qBAAqB,EAAE,OAAO;AAAA,EAChC,QAAQ,EAAE,OAAO;AAAA,EACjB,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,0BAA0B;AAAA,EAC3D,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,IAAI,GAAG,EAAE,QAAQ,EAAE;AAAA,EACrD,oBAAoB,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,IAAI,IAAI,EAAE,QAAQ,GAAG;AAClE,CAAC,EAAE,YAAY;AACf,IAAI,gBAAgB,EAAE,OAAO,EAAE,OAAO,GAAG,EAAE,IAAI,CAAC;AAChD,IAAI,2BAA2B,EAAE,OAAO;AAAA,EACtC,cAAc;AAAA,EACd,cAAc;AAAA,EACd,MAAM,EAAE,QAAQ,EAAE,SAAS;AAC7B,CAAC;AACD,IAAI,kBAAkB,EAAE,OAAO,kBAAkB,aAAa;AAC9D,IAAI,kBAAkB,MAAM;AAAA,EAC1B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,YAAY,QAAQ;AAClB,SAAK,SAAS,mBAAmB,MAAM,MAAM;AAAA,EAC/C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAM,aAAa,SAAS,QAAQ,WAAW,kBAAkB;AAC/D,UAAM,eAAe,cAAc,MAAM,OAAO;AAChD,UAAM,cAAc,yBAAyB,MAAM,MAAM;AACzD,UAAM,iBAAiB,KAAK,qBAAqB,YAAY;AAC7D,UAAM,yBAAyB,CAAC;AAChC,UAAM,aAAa,SAAS;AAC5B,aAAS,IAAI,GAAG,IAAI,eAAe,QAAQ,KAAK;AAC9C,YAAM,QAAQ,eAAe,CAAC;AAC9B,YAAM,sBAAsB,KAAK,OAAO,IAAI,KAAK,eAAe,SAAS,GAAG;AAC5E,YAAM,wBAAwB,MAAM,KAAK;AAAA,QACvC,YAAY;AAAA,QACZ,YAAY;AAAA,QACZ,EAAE,MAAM,OAAO,UAAU;AAAA,QACzB;AAAA,QACA,OAAO,QAAQ;AAAA,MACjB;AACA,UAAI,kBAAkB;AACpB,yBAAiB,qBAAqB,OAAO,qBAAqB;AAAA,MACpE;AACA,6BAAuB,KAAK,qBAAqB;AAAA,IACnD;AACA,WAAO,OAAO,OAAO,CAAC,GAAG,GAAG,sBAAsB;AAAA,EACpD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,cAAc,cAAc,cAAc,SAAS,YAAY,MAAM;AACzE,UAAM,MAAM,MAAM,MAAM,GAAG,KAAK,OAAO,MAAM,SAAS;AAAA,MACpD,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,gBAAgB;AAAA,QAChB,eAAe,UAAU,KAAK,OAAO,MAAM;AAAA,MAC7C;AAAA,MACA,MAAM,KAAK;AAAA,QACT;AAAA,UACE,QAAQ,EAAE,YAAY,KAAK;AAAA,UAC3B,QAAQ;AAAA,YACN,QAAQ;AAAA,YACR,QAAQ;AAAA,UACV;AAAA,UACA,MAAM,QAAQ;AAAA,UACd,WAAW,QAAQ;AAAA,QACrB;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF,CAAC;AACD,QAAI,CAAC,IAAI,IAAI;AACX,UAAI,IAAI,WAAW,KAAK;AACtB,cAAM,IAAI,MAAM,oBAAoB,IAAI,UAAU,EAAE;AAAA,MACtD,OAAO;AACL,cAAM,YAAY,MAAM,IAAI,KAAK;AACjC,cAAM,IAAI,MAAM,SAAS;AAAA,MAC3B;AAAA,IACF;AACA,UAAM,eAAe,MAAM,IAAI,KAAK;AACpC,WAAO,aAAa,QAAQ,CAAC;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,qBAAqB,SAAS;AAC5B,UAAM,SAAS,CAAC;AAChB,QAAI,eAAe,CAAC;AACpB,QAAI,wBAAwB;AAC5B,UAAM,iBAAiB,OAAO,QAAQ,OAAO;AAC7C,aAAS,IAAI,GAAG,IAAI,eAAe,QAAQ,KAAK;AAC9C,YAAM,CAAC,KAAK,KAAK,IAAI,eAAe,CAAC;AACrC,mBAAa,GAAG,IAAI;AACpB;AACA,YAAM,mBAAmB,KAAK,mBAAmB,YAAY;AAC7D,UAAI,mBAAmB,KAAK,OAAO,sBAAsB,yBAAyB,KAAK,OAAO,aAAa,MAAM,eAAe,SAAS,GAAG;AAC1I,eAAO,KAAK,YAAY;AACxB,uBAAe,CAAC;AAChB,gCAAwB;AAAA,MAC1B;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,mBAAmB,SAAS;AAC1B,QAAI,MAAM,QAAQ,OAAO,GAAG;AAC1B,aAAO,QAAQ,OAAO,CAAC,KAAK,SAAS,MAAM,KAAK,mBAAmB,IAAI,GAAG,CAAC;AAAA,IAC7E,WAAW,OAAO,YAAY,YAAY,YAAY,MAAM;AAC1D,aAAO,OAAO,OAAO,OAAO,EAAE,OAAO,CAAC,KAAK,SAAS,MAAM,KAAK,mBAAmB,IAAI,GAAG,CAAC;AAAA,IAC5F,WAAW,OAAO,YAAY,UAAU;AACtC,aAAO,QAAQ,KAAK,EAAE,MAAM,KAAK,EAAE,OAAO,OAAO,EAAE;AAAA,IACrD,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAM,eAAe,KAAK,QAAQ,kBAAkB;AAClD,WAAO,KAAK,aAAa,KAAK,QAAQ,QAAQ,gBAAgB;AAAA,EAChE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAM,aAAa,MAAM,QAAQ,kBAAkB;AACjD,UAAM,WAAW,MAAM,KAAK,aAAa,EAAE,KAAK,GAAG,QAAQ,QAAQ,gBAAgB;AACnF,WAAO,SAAS,QAAQ;AAAA,EAC1B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAM,kBAAkB,MAAM,QAAQ;AACpC,UAAM,YAAY,MAAM,QAAQ;AAAA,MAC9B,OAAO,cAAc;AAAA,QACnB,CAAC,iBAAiB,KAAK,aAAa,MAAM;AAAA,UACxC,cAAc,OAAO;AAAA,UACrB;AAAA,UACA,MAAM,OAAO;AAAA,QACf,CAAC;AAAA,MACH;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAM,aAAa,MAAM,QAAQ,kBAAkB;AACjD,UAAM,YAAY,MAAM,KAAK,aAAa,EAAE,KAAK,GAAG,QAAQ,QAAQ,gBAAgB;AACpF,WAAO,OAAO,QAAQ,SAAS,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,OAAO;AAAA,MACtD,MAAM,KAAK,SAAS,IAAI,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE;AAAA,MACxC,MAAM;AAAA,IACR,EAAE;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,MAAM,aAAa,MAAM,QAAQ,kBAAkB;AACjD,UAAM,eAAe,MAAM,OAAO,OAAO;AACzC,UAAM,EAAE,MAAM,IAAI;AAClB,UAAM,MAAM,IAAI,MAAM,IAAI;AAC1B,UAAM,WAAW,IAAI,OAAO;AAC5B,UAAM,yBAAyB;AAAA,MAC7B,MAAM,CAAC,SAAS;AAAA,MAChB,KAAK,CAAC,KAAK;AAAA,MACX,OAAO,CAAC,aAAa;AAAA,MACrB,GAAG,CAAC,OAAO;AAAA,IACb;AACA,UAAM,qBAAqB,CAAC,UAAU,OAAO;AAC7C,UAAM,mBAAmB,CAAC;AAC1B,UAAM,UAAU,CAAC,MAAM,cAAc;AACnC,YAAM,UAAU,CAAC;AACjB,UAAI,UAAU;AACd,UAAI,aAAa;AACjB,aAAO,SAAS;AACd,cAAM,SAAS,QAAQ;AACvB,YAAI,CAAC,OAAQ;AACb,YAAI,WAAW,SAAS,iBAAiB;AACvC,uBAAa,QAAQ,SAAS,YAAY;AAC1C;AAAA,QACF;AACA,cAAM,WAAW,MAAM,KAAK,OAAO,UAAU,EAAE;AAAA,UAC7C,CAAC,MAAM,EAAE,aAAa,KAAK,EAAE,aAAa,KAAK,EAAE,aAAa,KAAK;AAAA,QACrE;AACA,cAAM,QAAQ,SAAS,QAAQ,OAAO;AACtC,YAAI,UAAU,IAAI;AAChB,kBAAQ,QAAQ,KAAK;AAAA,QACvB;AACA,kBAAU;AAAA,MACZ;AACA,YAAM,WAAW,aAAa,GAAG,UAAU,IAAI,QAAQ,KAAK,GAAG,CAAC,KAAK,QAAQ,KAAK,GAAG;AACrF,aAAO,YAAY,GAAG,QAAQ,IAAI,SAAS,KAAK;AAAA,IAClD;AACA,UAAM,cAAc,CAAC,SAAS;AAC5B,UAAI,SAAS,KAAK;AAClB,aAAO,QAAQ;AACb,YAAI,mBAAmB,SAAS,OAAO,QAAQ,YAAY,CAAC,GAAG;AAC7D;AAAA,QACF;AACA,iBAAS,OAAO;AAAA,MAClB;AACA,UAAI,KAAK,aAAa,GAAG;AACvB,cAAM,OAAO,KAAK,aAAa,KAAK,KAAK;AACzC,YAAI,MAAM;AACR,2BAAiB,QAAQ,IAAI,CAAC,IAAI;AAAA,QACpC;AAAA,MACF,WAAW,KAAK,aAAa,GAAG;AAC9B,cAAM,UAAU;AAChB,cAAM,UAAU,QAAQ,QAAQ,YAAY;AAC5C,cAAM,aAAa,uBAAuB,OAAO,KAAK,CAAC;AACvD,mBAAW,QAAQ,CAAC,SAAS;AAC3B,gBAAM,QAAQ,QAAQ,aAAa,IAAI;AACvC,cAAI,OAAO;AACT,6BAAiB,QAAQ,SAAS,IAAI,CAAC,IAAI;AAAA,UAC7C;AAAA,QACF,CAAC;AACD,cAAM,KAAK,QAAQ,UAAU,EAAE,OAAO,CAAC,MAAM,EAAE,aAAa,KAAK,EAAE,aAAa,KAAK,EAAE,aAAa,KAAK,CAAC,EAAE,QAAQ,WAAW;AAAA,MACjI;AAAA,IACF;AACA,UAAM,KAAK,SAAS,KAAK,UAAU,EAAE,OAAO,CAAC,MAAM,EAAE,aAAa,KAAK,EAAE,aAAa,KAAK,EAAE,aAAa,KAAK,CAAC,EAAE,QAAQ,WAAW;AACrI,UAAM,KAAK,SAAS,KAAK,UAAU,EAAE,OAAO,CAAC,MAAM,EAAE,aAAa,KAAK,EAAE,aAAa,KAAK,EAAE,aAAa,KAAK,CAAC,EAAE,QAAQ,WAAW;AACrI,UAAM,mBAAmB,MAAM,KAAK,aAAa,kBAAkB,QAAQ,QAAQ,gBAAgB;AACnG,aAAS,gBAAgB,aAAa,QAAQ,OAAO,YAAY;AACjE,WAAO,QAAQ,gBAAgB,EAAE,QAAQ,CAAC,CAAC,MAAM,KAAK,MAAM;AAC1D,YAAM,CAAC,UAAU,SAAS,IAAI,KAAK,MAAM,GAAG;AAC5C,YAAM,CAAC,SAAS,GAAG,OAAO,IAAI,SAAS,MAAM,GAAG;AAChD,UAAI,SAAS,YAAY,SAAS,SAAS,OAAO,SAAS;AAC3D,UAAI,UAAU;AACd,iBAAW,SAAS,SAAS;AAC3B,cAAM,WAAW,MAAM,KAAK,OAAO,UAAU,EAAE;AAAA,UAC7C,CAAC,MAAM,EAAE,aAAa,KAAK,EAAE,aAAa,KAAK,EAAE,aAAa,KAAK;AAAA,QACrE;AACA,kBAAU,SAAS,SAAS,KAAK,CAAC,KAAK;AACvC,YAAI,SAAS,aAAa,GAAG;AAC3B,mBAAS;AAAA,QACX;AAAA,MACF;AACA,UAAI,SAAS;AACX,YAAI,WAAW;AACb,kBAAQ,aAAa,WAAW,KAAK;AAAA,QACvC,OAAO;AACL,kBAAQ,cAAc;AAAA,QACxB;AAAA,MACF;AAAA,IACF,CAAC;AACD,WAAO,IAAI,UAAU;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,gBAAgB,MAAM;AAC1B,UAAM,WAAW,MAAM,MAAM,GAAG,KAAK,OAAO,MAAM,cAAc;AAAA,MAC9D,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,gBAAgB;AAAA,QAChB,eAAe,UAAU,KAAK,OAAO,MAAM;AAAA,MAC7C;AAAA,MACA,MAAM,KAAK,UAAU,EAAE,KAAK,CAAC;AAAA,IAC/B,CAAC;AACD,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,IAAI,MAAM,6BAA6B,SAAS,UAAU,EAAE;AAAA,IACpE;AACA,UAAM,eAAe,MAAM,SAAS,KAAK;AACzC,WAAO,aAAa;AAAA,EACtB;AACF;","names":[]}
|
package/build/cli.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunkJZIJPDHIcjs = require('./chunk-JZIJPDHI.cjs');
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
|
|
@@ -2885,7 +2885,7 @@ async function retryWithExponentialBackoff(operation, maxAttempts, baseDelay = 1
|
|
|
2885
2885
|
throw new Error("Unreachable code");
|
|
2886
2886
|
}
|
|
2887
2887
|
function createLocalizationEngineConnection(params) {
|
|
2888
|
-
const replexicaEngine = new (0,
|
|
2888
|
+
const replexicaEngine = new (0, _chunkJZIJPDHIcjs.ReplexicaEngine)({
|
|
2889
2889
|
apiKey: params.apiKey,
|
|
2890
2890
|
apiUrl: params.apiUrl
|
|
2891
2891
|
});
|
|
@@ -3180,9 +3180,12 @@ function displaySummary(results) {
|
|
|
3180
3180
|
// package.json
|
|
3181
3181
|
var package_default = {
|
|
3182
3182
|
name: "lingo.dev",
|
|
3183
|
-
version: "0.74.
|
|
3183
|
+
version: "0.74.2",
|
|
3184
3184
|
description: "Lingo.dev CLI",
|
|
3185
3185
|
private: false,
|
|
3186
|
+
publishConfig: {
|
|
3187
|
+
access: "public"
|
|
3188
|
+
},
|
|
3186
3189
|
type: "module",
|
|
3187
3190
|
sideEffects: false,
|
|
3188
3191
|
exports: {
|
|
@@ -3270,8 +3273,8 @@ var package_default = {
|
|
|
3270
3273
|
zod: "^3.24.1"
|
|
3271
3274
|
},
|
|
3272
3275
|
devDependencies: {
|
|
3273
|
-
"@lingo.dev/
|
|
3274
|
-
"@lingo.dev/
|
|
3276
|
+
"@lingo.dev/_sdk": "workspace:*",
|
|
3277
|
+
"@lingo.dev/_spec": "workspace:*",
|
|
3275
3278
|
"@types/cors": "^2.8.17",
|
|
3276
3279
|
"@types/diff": "^7.0.0",
|
|
3277
3280
|
"@types/express": "^5.0.0",
|