@generaltranslation/compiler 1.3.30 → 1.3.31

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 (23) hide show
  1. package/dist/processing/collection/processCallExpression.d.ts.map +1 -1
  2. package/dist/processing/collection/processCallExpression.js +4 -8
  3. package/dist/processing/collection/processCallExpression.js.map +1 -1
  4. package/dist/processing/injection/processCallExpression.d.ts.map +1 -1
  5. package/dist/processing/injection/processCallExpression.js +2 -21
  6. package/dist/processing/injection/processCallExpression.js.map +1 -1
  7. package/package.json +2 -2
  8. package/dist/transform/injection/callbacks/injectUseMessagesCallbackParameters.d.ts +0 -8
  9. package/dist/transform/injection/callbacks/injectUseMessagesCallbackParameters.d.ts.map +0 -1
  10. package/dist/transform/injection/callbacks/injectUseMessagesCallbackParameters.js +0 -10
  11. package/dist/transform/injection/callbacks/injectUseMessagesCallbackParameters.js.map +0 -1
  12. package/dist/transform/injection/callbacks/injectUseTranslationsCallbackParameters.d.ts +0 -8
  13. package/dist/transform/injection/callbacks/injectUseTranslationsCallbackParameters.d.ts.map +0 -1
  14. package/dist/transform/injection/callbacks/injectUseTranslationsCallbackParameters.js +0 -10
  15. package/dist/transform/injection/callbacks/injectUseTranslationsCallbackParameters.js.map +0 -1
  16. package/dist/transform/registration/callbacks/registerUseMessagesCallback.d.ts +0 -10
  17. package/dist/transform/registration/callbacks/registerUseMessagesCallback.d.ts.map +0 -1
  18. package/dist/transform/registration/callbacks/registerUseMessagesCallback.js +0 -11
  19. package/dist/transform/registration/callbacks/registerUseMessagesCallback.js.map +0 -1
  20. package/dist/transform/registration/callbacks/registerUseTranslationsCallback.d.ts +0 -10
  21. package/dist/transform/registration/callbacks/registerUseTranslationsCallback.d.ts.map +0 -1
  22. package/dist/transform/registration/callbacks/registerUseTranslationsCallback.js +0 -11
  23. package/dist/transform/registration/callbacks/registerUseTranslationsCallback.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"processCallExpression.d.ts","sourceRoot":"","sources":["../../../src/processing/collection/processCallExpression.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AA4BnD;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,cAAc,GACpB,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,cAAc,CAAC,CAoDrC"}
1
+ {"version":3,"file":"processCallExpression.d.ts","sourceRoot":"","sources":["../../../src/processing/collection/processCallExpression.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AA0BnD;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,cAAc,GACpB,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,cAAc,CAAC,CAoDrC"}
@@ -8,8 +8,6 @@ const require_transform_getTrackedVariable = require("../../transform/getTracked
8
8
  const require_transform_validation_validateTranslationFunction = require("../../transform/validation/validateTranslationFunction.js");
9
9
  const require_utils_calculateHash = require("../../utils/calculateHash.js");
10
10
  const require_transform_registration_callbacks_registerUseGTCallback = require("../../transform/registration/callbacks/registerUseGTCallback.js");
11
- require("../../transform/registration/callbacks/registerUseTranslationsCallback.js");
12
- require("../../transform/registration/callbacks/registerUseMessagesCallback.js");
13
11
  const require_utils_errors = require("../../utils/errors.js");
14
12
  const require_transform_jsx_children_utils_getCalleeNameFromJsxExpressionParam = require("../../transform/jsx-children/utils/getCalleeNameFromJsxExpressionParam.js");
15
13
  const require_transform_validation_validateTranslationComponentArgs = require("../../transform/validation/validateTranslationComponentArgs.js");
@@ -50,11 +48,11 @@ function handleTranslationCallbackInvocation(callExprPath, state, canonicalName,
50
48
  break;
51
49
  case "useTranslations_callback":
52
50
  case "getTranslations_callback":
53
- handleUseTranslationsCallback(callExprPath, state, identifier);
51
+ handleUseTranslationsCallback(callExprPath, state);
54
52
  break;
55
53
  case "useMessages_callback":
56
54
  case "getMessages_callback":
57
- handleUseMessagesCallback(callExprPath, state, identifier);
55
+ handleUseMessagesCallback(callExprPath, state);
58
56
  break;
59
57
  default: return;
60
58
  }
@@ -85,20 +83,18 @@ function handleUseGTCallback(callExprPath, state, identifier) {
85
83
  /**
86
84
  * Handle useTranslations_callback / getTranslations_callback
87
85
  */
88
- function handleUseTranslationsCallback(callExprPath, state, identifier) {
86
+ function handleUseTranslationsCallback(callExprPath, state) {
89
87
  const callExpr = callExprPath.node;
90
88
  const useTranslationsCallbackParams = require_transform_validation_validateTranslationFunction.validateUseTranslationsCallback(callExpr);
91
89
  state.errorTracker.addErrors(useTranslationsCallbackParams.errors);
92
- if (useTranslationsCallbackParams.errors.length > 0) return;
93
90
  }
94
91
  /**
95
92
  * Handle useMessages_callback / getMessages_callback
96
93
  */
97
- function handleUseMessagesCallback(callExprPath, state, identifier) {
94
+ function handleUseMessagesCallback(callExprPath, state) {
98
95
  const callExpr = callExprPath.node;
99
96
  const useMessagesCallbackParams = require_transform_validation_validateTranslationFunction.validateUseMessagesCallback(callExpr);
100
97
  state.errorTracker.addErrors(useMessagesCallbackParams.errors);
101
- if (useMessagesCallbackParams.errors.length > 0) return;
102
98
  }
103
99
  /**
104
100
  * Handle react function invocations
@@ -1 +1 @@
1
- {"version":3,"file":"processCallExpression.js","names":["getCalleeNameFromExpression","getTrackedVariable","isTranslationFunctionCallback","isReactFunction","validateTranslationFunction","validateUseTranslationsCallback","validateUseMessagesCallback","createErrorLocation","t","getCalleeNameFromJsxExpressionParam","isTranslationComponent","validateTranslationComponentArgs","hashSource"],"sources":["../../../src/processing/collection/processCallExpression.ts"],"sourcesContent":["import { NodePath, VisitNode } from '@babel/traverse';\nimport * as t from '@babel/types';\nimport { TransformState } from '../../state/types';\nimport {\n isTranslationComponent,\n isTranslationFunctionCallback,\n} from '../../utils/constants/gt/helpers';\nimport { getCalleeNameFromExpression } from '../../utils/parsing/getCalleeNameFromExpression';\nimport {\n GT_ALL_FUNCTIONS,\n GT_CALLBACK_FUNCTIONS,\n GT_OTHER_FUNCTIONS,\n} from '../../utils/constants/gt/constants';\nimport {\n validateTranslationFunction,\n validateUseMessagesCallback,\n validateUseTranslationsCallback,\n} from '../../transform/validation/validateTranslationFunction';\nimport { registerUseGTCallback } from '../../transform/registration/callbacks/registerUseGTCallback';\nimport { registerUseTranslationsCallback } from '../../transform/registration/callbacks/registerUseTranslationsCallback';\nimport { registerUseMessagesCallback } from '../../transform/registration/callbacks/registerUseMessagesCallback';\nimport { getTrackedVariable } from '../../transform/getTrackedVariable';\nimport { isReactFunction } from '../../utils/constants/react/helpers';\nimport { validateTranslationComponentArgs } from '../../transform/validation/validateTranslationComponentArgs';\nimport { registerTranslationComponent } from '../../transform/registration/registerTranslationComponent';\nimport { getCalleeNameFromJsxExpressionParam } from '../../transform/jsx-children/utils/getCalleeNameFromJsxExpressionParam';\nimport { createErrorLocation } from '../../utils/errors';\nimport hashSource from '../../utils/calculateHash';\nimport { registerStandaloneTranslation } from '../../transform/registration/registerStandaloneTranslation';\n\n/**\n * Process call expressions\n * - register content from GT callback functions invocations (useGT_callback, etc.)\n * - register <T> + other component content (via jsxDev, jsx, jsxs invocations)\n * - register msg() function invocations?\n * - generally validate content\n */\nexport function processCallExpression(\n state: TransformState\n): VisitNode<t.Node, t.CallExpression> {\n return (callExprPath) => {\n // Get the call expression\n const callExpr = callExprPath.node;\n\n // Get function name from callee\n const { namespaceName, functionName } =\n getCalleeNameFromExpression(callExpr);\n if (!functionName) {\n return;\n }\n\n // Get the canonical function name\n const { canonicalName, identifier, type } = getTrackedVariable(\n state.scopeTracker,\n namespaceName,\n functionName\n );\n if (!canonicalName) {\n return;\n }\n\n // Handle each respective case\n if (\n type === 'generaltranslation' &&\n isTranslationFunctionCallback(canonicalName)\n ) {\n // Handle translation function callbacks (useGT_callback, etc.)\n handleTranslationCallbackInvocation(\n callExprPath,\n state,\n canonicalName,\n identifier!\n );\n } else if (type === 'react' && isReactFunction(canonicalName)) {\n // Handle react variables (jsxDEV, etc.)\n handleReactInvocation(callExprPath, state);\n } else if (\n type === 'generaltranslation' &&\n canonicalName === GT_OTHER_FUNCTIONS.msg\n ) {\n // msg() is runtime-only content; it must not advance the injection counter.\n handleStandaloneTranslation(callExprPath, state, { injectHash: false });\n } else if (\n type === 'generaltranslation' &&\n canonicalName === GT_OTHER_FUNCTIONS.t\n ) {\n // Standalone t() receives an injected $_hash, so collection reserves a\n // matching counter slot for the injection pass.\n handleStandaloneTranslation(callExprPath, state, { injectHash: true });\n }\n };\n}\n\n/* =============================== */\n/* Handlers */\n/* =============================== */\n\n/**\n * Handle general translation variables\n * useGTCallback(), useTranslationsCallback(), useMessagesCallback(), etc.\n */\nfunction handleTranslationCallbackInvocation(\n callExprPath: NodePath<t.CallExpression>,\n state: TransformState,\n canonicalName: GT_ALL_FUNCTIONS,\n identifier: number\n) {\n // Handle translation function callbacks ()\n switch (canonicalName) {\n case GT_CALLBACK_FUNCTIONS.useGT_callback:\n case GT_CALLBACK_FUNCTIONS.getGT_callback:\n handleUseGTCallback(callExprPath, state, identifier);\n break;\n case GT_CALLBACK_FUNCTIONS.useTranslations_callback:\n case GT_CALLBACK_FUNCTIONS.getTranslations_callback:\n handleUseTranslationsCallback(callExprPath, state, identifier);\n break;\n case GT_CALLBACK_FUNCTIONS.useMessages_callback:\n case GT_CALLBACK_FUNCTIONS.getMessages_callback:\n handleUseMessagesCallback(callExprPath, state, identifier);\n break;\n default:\n return;\n }\n}\n\n/**\n * Handle useGT_callback / getGT_callback\n */\nfunction handleUseGTCallback(\n callExprPath: NodePath<t.CallExpression>,\n state: TransformState,\n identifier: number\n) {\n // Check for violations\n const useGTCallbackParams = validateTranslationFunction(callExprPath, state);\n state.errorTracker.addErrors(useGTCallbackParams.errors);\n if (useGTCallbackParams.errors.length > 0) {\n return;\n }\n\n // Derive content (explicit derive() in the message, autoderive dynamic\n // content) and derive $context cannot be hashed at compile time — the CLI\n // resolves the variants and the runtime hashes the resolved values.\n // Reserve the counter slot without a hash so the injection pass stays\n // aligned and skips this call; register no prefetch entry.\n if (\n useGTCallbackParams.content === undefined ||\n useGTCallbackParams.hasDeriveContext\n ) {\n state.stringCollector.incrementCounter();\n return;\n }\n\n // Track the function call\n registerUseGTCallback({\n identifier,\n state,\n content: useGTCallbackParams.content,\n context: useGTCallbackParams.context,\n id: useGTCallbackParams.id,\n maxChars: useGTCallbackParams.maxChars,\n requiresReview: useGTCallbackParams.requiresReview,\n hash: useGTCallbackParams.hash,\n format: useGTCallbackParams.format,\n });\n}\n\n/**\n * Handle useTranslations_callback / getTranslations_callback\n */\nfunction handleUseTranslationsCallback(\n callExprPath: NodePath<t.CallExpression>,\n state: TransformState,\n identifier: number\n) {\n // Check for violations\n const callExpr = callExprPath.node;\n const useTranslationsCallbackParams =\n validateUseTranslationsCallback(callExpr);\n state.errorTracker.addErrors(useTranslationsCallbackParams.errors);\n if (useTranslationsCallbackParams.errors.length > 0) {\n return;\n }\n\n // Track the function call\n registerUseTranslationsCallback({\n identifier,\n state,\n });\n}\n\n/**\n * Handle useMessages_callback / getMessages_callback\n */\nfunction handleUseMessagesCallback(\n callExprPath: NodePath<t.CallExpression>,\n state: TransformState,\n identifier: number\n) {\n // Validate parameters\n const callExpr = callExprPath.node;\n const useMessagesCallbackParams = validateUseMessagesCallback(callExpr);\n\n // Check for violations\n state.errorTracker.addErrors(useMessagesCallbackParams.errors);\n if (useMessagesCallbackParams.errors.length > 0) {\n return;\n }\n\n // Track the function call\n registerUseMessagesCallback({\n identifier,\n state,\n });\n}\n\n/**\n * Handle react function invocations\n * jsxDEV, jsx, jsxs, ...\n *\n * We want to check these because they wrap <T> and other components\n */\nfunction handleReactInvocation(\n callExprPath: NodePath<t.CallExpression>,\n state: TransformState\n) {\n const callExpr = callExprPath.node;\n // Check if it contains a GT component (first argument)\n if (callExpr.arguments.length === 0) {\n state.errorTracker.addError(\n 'React invocation must have at least one argument' +\n createErrorLocation(callExpr)\n );\n return;\n }\n const firstArg = callExpr.arguments[0];\n if (!t.isExpression(firstArg)) {\n state.errorTracker.addError(\n 'React invocation first argument must be an expression' +\n createErrorLocation(callExpr)\n );\n return;\n }\n\n // Get function name from callee\n const { namespaceName, functionName } =\n getCalleeNameFromJsxExpressionParam(firstArg);\n if (!functionName) {\n state.errorTracker.addError(\n 'React invocation first argument must be a function' +\n createErrorLocation(callExpr)\n );\n return;\n }\n // Get the canonical function name\n const { canonicalName, type } = getTrackedVariable(\n state.scopeTracker,\n namespaceName,\n functionName\n );\n if (!canonicalName) {\n return;\n }\n\n // Filter out non-GT components\n if (type !== 'generaltranslation' || !isTranslationComponent(canonicalName)) {\n return;\n }\n\n // Validate the arguments\n const {\n errors,\n _hash,\n id,\n context,\n children,\n maxChars,\n requiresReview,\n hasDeriveContext,\n hasDeriveChildren,\n } = validateTranslationComponentArgs(callExprPath, canonicalName, state);\n\n if (errors.length > 0) {\n state.errorTracker.addErrors(errors);\n return;\n }\n\n // Calculate hash (skip when context contains derive or children contain a\n // <Derive> element — one hash per resolved variant, so the runtime computes\n // it; the CLI handles variant resolution)\n const hash =\n hasDeriveContext || hasDeriveChildren\n ? ''\n : _hash ||\n hashSource({\n source: children!,\n ...(context && { context }),\n ...(maxChars != null && { maxChars }),\n ...(requiresReview === true && { requiresReview: true }),\n dataFormat: 'JSX',\n });\n\n // Debug: record hash → children mapping\n // Note: children may be undefined when autoderive filters all dynamic-content\n // errors (the early return in constructJsxChildren means value is never set).\n // This is intentional — the compiler signals CLI resolution via hash=''.\n if (state.debugManifest) {\n state.debugManifest.set(hash, children ?? null);\n }\n\n // Track the component (increment counter, initialize aggregator, set hash)\n registerTranslationComponent(state, hash, {\n children,\n id,\n context,\n requiresReview,\n });\n}\n\n/**\n * Handle standalone translation functions: t() and msg()\n * Same argument structure as useGT_callback (message string + options object).\n */\nfunction handleStandaloneTranslation(\n callExprPath: NodePath<t.CallExpression>,\n state: TransformState,\n { injectHash }: { injectHash: boolean }\n) {\n // Reuse the same validation as useGT_callback (identical argument structure)\n const params = validateTranslationFunction(callExprPath, state);\n state.errorTracker.addErrors(params.errors);\n if (params.errors.length > 0 || params.content === undefined) {\n return;\n }\n\n // Skip derive content\n if (params.hasDeriveContext) {\n return;\n }\n\n registerStandaloneTranslation({\n state,\n content: params.content,\n hash: params.hash,\n id: params.id,\n context: params.context,\n maxChars: params.maxChars,\n requiresReview: params.requiresReview,\n format: params.format,\n injectHash,\n });\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"processCallExpression.js","names":["getCalleeNameFromExpression","getTrackedVariable","isTranslationFunctionCallback","isReactFunction","validateTranslationFunction","validateUseTranslationsCallback","validateUseMessagesCallback","createErrorLocation","t","getCalleeNameFromJsxExpressionParam","isTranslationComponent","validateTranslationComponentArgs","hashSource"],"sources":["../../../src/processing/collection/processCallExpression.ts"],"sourcesContent":["import { NodePath, VisitNode } from '@babel/traverse';\nimport * as t from '@babel/types';\nimport { TransformState } from '../../state/types';\nimport {\n isTranslationComponent,\n isTranslationFunctionCallback,\n} from '../../utils/constants/gt/helpers';\nimport { getCalleeNameFromExpression } from '../../utils/parsing/getCalleeNameFromExpression';\nimport {\n GT_ALL_FUNCTIONS,\n GT_CALLBACK_FUNCTIONS,\n GT_OTHER_FUNCTIONS,\n} from '../../utils/constants/gt/constants';\nimport {\n validateTranslationFunction,\n validateUseMessagesCallback,\n validateUseTranslationsCallback,\n} from '../../transform/validation/validateTranslationFunction';\nimport { registerUseGTCallback } from '../../transform/registration/callbacks/registerUseGTCallback';\nimport { getTrackedVariable } from '../../transform/getTrackedVariable';\nimport { isReactFunction } from '../../utils/constants/react/helpers';\nimport { validateTranslationComponentArgs } from '../../transform/validation/validateTranslationComponentArgs';\nimport { registerTranslationComponent } from '../../transform/registration/registerTranslationComponent';\nimport { getCalleeNameFromJsxExpressionParam } from '../../transform/jsx-children/utils/getCalleeNameFromJsxExpressionParam';\nimport { createErrorLocation } from '../../utils/errors';\nimport hashSource from '../../utils/calculateHash';\nimport { registerStandaloneTranslation } from '../../transform/registration/registerStandaloneTranslation';\n\n/**\n * Process call expressions\n * - register content from GT callback functions invocations (useGT_callback, etc.)\n * - register <T> + other component content (via jsxDev, jsx, jsxs invocations)\n * - register msg() function invocations?\n * - generally validate content\n */\nexport function processCallExpression(\n state: TransformState\n): VisitNode<t.Node, t.CallExpression> {\n return (callExprPath) => {\n // Get the call expression\n const callExpr = callExprPath.node;\n\n // Get function name from callee\n const { namespaceName, functionName } =\n getCalleeNameFromExpression(callExpr);\n if (!functionName) {\n return;\n }\n\n // Get the canonical function name\n const { canonicalName, identifier, type } = getTrackedVariable(\n state.scopeTracker,\n namespaceName,\n functionName\n );\n if (!canonicalName) {\n return;\n }\n\n // Handle each respective case\n if (\n type === 'generaltranslation' &&\n isTranslationFunctionCallback(canonicalName)\n ) {\n // Handle translation function callbacks (useGT_callback, etc.)\n handleTranslationCallbackInvocation(\n callExprPath,\n state,\n canonicalName,\n identifier!\n );\n } else if (type === 'react' && isReactFunction(canonicalName)) {\n // Handle react variables (jsxDEV, etc.)\n handleReactInvocation(callExprPath, state);\n } else if (\n type === 'generaltranslation' &&\n canonicalName === GT_OTHER_FUNCTIONS.msg\n ) {\n // msg() is runtime-only content; it must not advance the injection counter.\n handleStandaloneTranslation(callExprPath, state, { injectHash: false });\n } else if (\n type === 'generaltranslation' &&\n canonicalName === GT_OTHER_FUNCTIONS.t\n ) {\n // Standalone t() receives an injected $_hash, so collection reserves a\n // matching counter slot for the injection pass.\n handleStandaloneTranslation(callExprPath, state, { injectHash: true });\n }\n };\n}\n\n/* =============================== */\n/* Handlers */\n/* =============================== */\n\n/**\n * Handle general translation variables\n * useGTCallback(), useTranslationsCallback(), useMessagesCallback(), etc.\n */\nfunction handleTranslationCallbackInvocation(\n callExprPath: NodePath<t.CallExpression>,\n state: TransformState,\n canonicalName: GT_ALL_FUNCTIONS,\n identifier: number\n) {\n // Handle translation function callbacks ()\n switch (canonicalName) {\n case GT_CALLBACK_FUNCTIONS.useGT_callback:\n case GT_CALLBACK_FUNCTIONS.getGT_callback:\n handleUseGTCallback(callExprPath, state, identifier);\n break;\n case GT_CALLBACK_FUNCTIONS.useTranslations_callback:\n case GT_CALLBACK_FUNCTIONS.getTranslations_callback:\n handleUseTranslationsCallback(callExprPath, state);\n break;\n case GT_CALLBACK_FUNCTIONS.useMessages_callback:\n case GT_CALLBACK_FUNCTIONS.getMessages_callback:\n handleUseMessagesCallback(callExprPath, state);\n break;\n default:\n return;\n }\n}\n\n/**\n * Handle useGT_callback / getGT_callback\n */\nfunction handleUseGTCallback(\n callExprPath: NodePath<t.CallExpression>,\n state: TransformState,\n identifier: number\n) {\n // Check for violations\n const useGTCallbackParams = validateTranslationFunction(callExprPath, state);\n state.errorTracker.addErrors(useGTCallbackParams.errors);\n if (useGTCallbackParams.errors.length > 0) {\n return;\n }\n\n // Derive content (explicit derive() in the message, autoderive dynamic\n // content) and derive $context cannot be hashed at compile time — the CLI\n // resolves the variants and the runtime hashes the resolved values.\n // Reserve the counter slot without a hash so the injection pass stays\n // aligned and skips this call; register no prefetch entry.\n if (\n useGTCallbackParams.content === undefined ||\n useGTCallbackParams.hasDeriveContext\n ) {\n state.stringCollector.incrementCounter();\n return;\n }\n\n // Track the function call\n registerUseGTCallback({\n identifier,\n state,\n content: useGTCallbackParams.content,\n context: useGTCallbackParams.context,\n id: useGTCallbackParams.id,\n maxChars: useGTCallbackParams.maxChars,\n requiresReview: useGTCallbackParams.requiresReview,\n hash: useGTCallbackParams.hash,\n format: useGTCallbackParams.format,\n });\n}\n\n/**\n * Handle useTranslations_callback / getTranslations_callback\n */\nfunction handleUseTranslationsCallback(\n callExprPath: NodePath<t.CallExpression>,\n state: TransformState\n) {\n const callExpr = callExprPath.node;\n const useTranslationsCallbackParams =\n validateUseTranslationsCallback(callExpr);\n state.errorTracker.addErrors(useTranslationsCallbackParams.errors);\n}\n\n/**\n * Handle useMessages_callback / getMessages_callback\n */\nfunction handleUseMessagesCallback(\n callExprPath: NodePath<t.CallExpression>,\n state: TransformState\n) {\n const callExpr = callExprPath.node;\n const useMessagesCallbackParams = validateUseMessagesCallback(callExpr);\n state.errorTracker.addErrors(useMessagesCallbackParams.errors);\n}\n\n/**\n * Handle react function invocations\n * jsxDEV, jsx, jsxs, ...\n *\n * We want to check these because they wrap <T> and other components\n */\nfunction handleReactInvocation(\n callExprPath: NodePath<t.CallExpression>,\n state: TransformState\n) {\n const callExpr = callExprPath.node;\n // Check if it contains a GT component (first argument)\n if (callExpr.arguments.length === 0) {\n state.errorTracker.addError(\n 'React invocation must have at least one argument' +\n createErrorLocation(callExpr)\n );\n return;\n }\n const firstArg = callExpr.arguments[0];\n if (!t.isExpression(firstArg)) {\n state.errorTracker.addError(\n 'React invocation first argument must be an expression' +\n createErrorLocation(callExpr)\n );\n return;\n }\n\n // Get function name from callee\n const { namespaceName, functionName } =\n getCalleeNameFromJsxExpressionParam(firstArg);\n if (!functionName) {\n state.errorTracker.addError(\n 'React invocation first argument must be a function' +\n createErrorLocation(callExpr)\n );\n return;\n }\n // Get the canonical function name\n const { canonicalName, type } = getTrackedVariable(\n state.scopeTracker,\n namespaceName,\n functionName\n );\n if (!canonicalName) {\n return;\n }\n\n // Filter out non-GT components\n if (type !== 'generaltranslation' || !isTranslationComponent(canonicalName)) {\n return;\n }\n\n // Validate the arguments\n const {\n errors,\n _hash,\n id,\n context,\n children,\n maxChars,\n requiresReview,\n hasDeriveContext,\n hasDeriveChildren,\n } = validateTranslationComponentArgs(callExprPath, canonicalName, state);\n\n if (errors.length > 0) {\n state.errorTracker.addErrors(errors);\n return;\n }\n\n // Calculate hash (skip when context contains derive or children contain a\n // <Derive> element — one hash per resolved variant, so the runtime computes\n // it; the CLI handles variant resolution)\n const hash =\n hasDeriveContext || hasDeriveChildren\n ? ''\n : _hash ||\n hashSource({\n source: children!,\n ...(context && { context }),\n ...(maxChars != null && { maxChars }),\n ...(requiresReview === true && { requiresReview: true }),\n dataFormat: 'JSX',\n });\n\n // Debug: record hash → children mapping\n // Note: children may be undefined when autoderive filters all dynamic-content\n // errors (the early return in constructJsxChildren means value is never set).\n // This is intentional — the compiler signals CLI resolution via hash=''.\n if (state.debugManifest) {\n state.debugManifest.set(hash, children ?? null);\n }\n\n // Track the component (increment counter, initialize aggregator, set hash)\n registerTranslationComponent(state, hash, {\n children,\n id,\n context,\n requiresReview,\n });\n}\n\n/**\n * Handle standalone translation functions: t() and msg()\n * Same argument structure as useGT_callback (message string + options object).\n */\nfunction handleStandaloneTranslation(\n callExprPath: NodePath<t.CallExpression>,\n state: TransformState,\n { injectHash }: { injectHash: boolean }\n) {\n // Reuse the same validation as useGT_callback (identical argument structure)\n const params = validateTranslationFunction(callExprPath, state);\n state.errorTracker.addErrors(params.errors);\n if (params.errors.length > 0 || params.content === undefined) {\n return;\n }\n\n // Skip derive content\n if (params.hasDeriveContext) {\n return;\n }\n\n registerStandaloneTranslation({\n state,\n content: params.content,\n hash: params.hash,\n id: params.id,\n context: params.context,\n maxChars: params.maxChars,\n requiresReview: params.requiresReview,\n format: params.format,\n injectHash,\n });\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"processCallExpression.d.ts","sourceRoot":"","sources":["../../../src/processing/injection/processCallExpression.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAsBlC;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,cAAc,GACpB,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,cAAc,CAAC,CA6CrC"}
1
+ {"version":3,"file":"processCallExpression.d.ts","sourceRoot":"","sources":["../../../src/processing/injection/processCallExpression.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAelC;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,cAAc,GACpB,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,cAAc,CAAC,CAuCrC"}
@@ -9,8 +9,6 @@ const require_utils_errors = require("../../utils/errors.js");
9
9
  const require_transform_jsx_children_utils_getCalleeNameFromJsxExpressionParam = require("../../transform/jsx-children/utils/getCalleeNameFromJsxExpressionParam.js");
10
10
  const require_transform_injection_injectTComponentParameters = require("../../transform/injection/injectTComponentParameters.js");
11
11
  const require_transform_injection_callbacks_injectUseGTCallbackParameters = require("../../transform/injection/callbacks/injectUseGTCallbackParameters.js");
12
- require("../../transform/injection/callbacks/injectUseTranslationsCallbackParameters.js");
13
- require("../../transform/injection/callbacks/injectUseMessagesCallbackParameters.js");
14
12
  const require_transform_injection_injectStandaloneTFunctionParameters = require("../../transform/injection/injectStandaloneTFunctionParameters.js");
15
13
  let _babel_types = require("@babel/types");
16
14
  _babel_types = require_runtime.__toESM(_babel_types);
@@ -25,29 +23,12 @@ function processCallExpression(state) {
25
23
  if (!functionName) return;
26
24
  const { canonicalName, type } = require_transform_getTrackedVariable.getTrackedVariable(state.scopeTracker, namespaceName, functionName);
27
25
  if (!canonicalName) return;
28
- if (type === "generaltranslation" && require_utils_constants_gt_helpers.isTranslationFunctionCallback(canonicalName)) handleTranslationCallbackInvocation(callExprPath, state, canonicalName);
26
+ if (type === "generaltranslation" && (canonicalName === "useGT_callback" || canonicalName === "getGT_callback")) require_transform_injection_callbacks_injectUseGTCallbackParameters.injectUseGTCallbackParameters(callExprPath, state);
29
27
  else if (type === "react" && require_utils_constants_react_helpers.isReactFunction(canonicalName)) handleReactInvocation(callExpr, state);
30
- else if (type === "generaltranslation" && canonicalName === "msg") {} else if (type === "generaltranslation" && canonicalName === "t") require_transform_injection_injectStandaloneTFunctionParameters.injectStandaloneTFunctionParameters(callExprPath, state);
28
+ else if (type === "generaltranslation" && canonicalName === "t") require_transform_injection_injectStandaloneTFunctionParameters.injectStandaloneTFunctionParameters(callExprPath, state);
31
29
  };
32
30
  }
33
31
  /**
34
- * Handle general translation variables
35
- * useGTCallback(), useTranslationsCallback(), useMessagesCallback(), etc.
36
- */
37
- function handleTranslationCallbackInvocation(callExprPath, state, canonicalName) {
38
- switch (canonicalName) {
39
- case "useGT_callback":
40
- case "getGT_callback":
41
- require_transform_injection_callbacks_injectUseGTCallbackParameters.injectUseGTCallbackParameters(callExprPath, state);
42
- break;
43
- case "useTranslations_callback":
44
- case "getTranslations_callback": break;
45
- case "useMessages_callback":
46
- case "getMessages_callback": break;
47
- default: return;
48
- }
49
- }
50
- /**
51
32
  * Handle react function invocations
52
33
  * jsxDEV, jsx, jsxs, ...
53
34
  *
@@ -1 +1 @@
1
- {"version":3,"file":"processCallExpression.js","names":["getCalleeNameFromExpression","getTrackedVariable","isTranslationFunctionCallback","isReactFunction","createErrorLocation","t","getCalleeNameFromJsxExpressionParam","isTranslationComponent"],"sources":["../../../src/processing/injection/processCallExpression.ts"],"sourcesContent":["import { VisitNode } from '@babel/traverse';\nimport { TransformState } from '../../state/types';\nimport * as t from '@babel/types';\nimport {\n GT_ALL_FUNCTIONS,\n GT_CALLBACK_FUNCTIONS,\n GT_OTHER_FUNCTIONS,\n} from '../../utils/constants/gt/constants';\nimport { getCalleeNameFromExpression } from '../../utils/parsing/getCalleeNameFromExpression';\nimport { getTrackedVariable } from '../../transform/getTrackedVariable';\nimport {\n isTranslationComponent,\n isTranslationFunctionCallback,\n} from '../../utils/constants/gt/helpers';\nimport { isReactFunction } from '../../utils/constants/react/helpers';\nimport { getCalleeNameFromJsxExpressionParam } from '../../transform/jsx-children/utils/getCalleeNameFromJsxExpressionParam';\nimport { injectTComponentParameters } from '../../transform/injection/injectTComponentParameters';\nimport { createErrorLocation } from '../../utils/errors';\nimport { injectUseGTCallbackParameters } from '../../transform/injection/callbacks/injectUseGTCallbackParameters';\nimport { injectUseTranslationsCallbackParameters } from '../../transform/injection/callbacks/injectUseTranslationsCallbackParameters';\nimport { injectUseMessagesCallbackParameters } from '../../transform/injection/callbacks/injectUseMessagesCallbackParameters';\nimport { injectStandaloneTFunctionParameters } from '../../transform/injection/injectStandaloneTFunctionParameters';\nimport { NodePath } from '@babel/traverse';\n\n/**\n * Process call expression:\n */\nexport function processCallExpression(\n state: TransformState\n): VisitNode<t.Node, t.CallExpression> {\n return (callExprPath) => {\n // Get the call expression\n const callExpr = callExprPath.node;\n\n // Get function name from callee\n const { namespaceName, functionName } =\n getCalleeNameFromExpression(callExpr);\n if (!functionName) {\n return;\n }\n\n // Get the canonical function name\n const { canonicalName, type } = getTrackedVariable(\n state.scopeTracker,\n namespaceName,\n functionName\n );\n if (!canonicalName) {\n return;\n }\n\n // Handle each respective case\n if (\n type === 'generaltranslation' &&\n isTranslationFunctionCallback(canonicalName)\n ) {\n // Handle translation function callbacks (useGT_callback, etc.)\n handleTranslationCallbackInvocation(callExprPath, state, canonicalName);\n } else if (type === 'react' && isReactFunction(canonicalName)) {\n // Handle react variables (jsxDEV, etc.)\n handleReactInvocation(callExpr, state);\n } else if (\n type === 'generaltranslation' &&\n canonicalName === GT_OTHER_FUNCTIONS.msg\n ) {\n // TODO: Handle msg() function\n // handleMsgFunction(callExpr, state);\n } else if (\n type === 'generaltranslation' &&\n canonicalName === GT_OTHER_FUNCTIONS.t\n ) {\n injectStandaloneTFunctionParameters(callExprPath, state);\n }\n };\n}\n\n/* =============================== */\n/* Handlers */\n/* =============================== */\n\n/**\n * Handle general translation variables\n * useGTCallback(), useTranslationsCallback(), useMessagesCallback(), etc.\n */\nfunction handleTranslationCallbackInvocation(\n callExprPath: NodePath<t.CallExpression>,\n state: TransformState,\n canonicalName: GT_ALL_FUNCTIONS\n) {\n // Handle translation function callbacks ()\n switch (canonicalName) {\n case GT_CALLBACK_FUNCTIONS.useGT_callback:\n case GT_CALLBACK_FUNCTIONS.getGT_callback:\n injectUseGTCallbackParameters(callExprPath, state);\n break;\n case GT_CALLBACK_FUNCTIONS.useTranslations_callback:\n case GT_CALLBACK_FUNCTIONS.getTranslations_callback:\n injectUseTranslationsCallbackParameters(callExprPath, state);\n break;\n case GT_CALLBACK_FUNCTIONS.useMessages_callback:\n case GT_CALLBACK_FUNCTIONS.getMessages_callback:\n injectUseMessagesCallbackParameters(callExprPath, state);\n break;\n default:\n return;\n }\n}\n\n/**\n * Handle react function invocations\n * jsxDEV, jsx, jsxs, ...\n *\n * We want to check these because they wrap <T> and other components\n */\nfunction handleReactInvocation(\n callExpr: t.CallExpression,\n state: TransformState\n) {\n // Check if it contains a GT component (first argument)\n if (callExpr.arguments.length === 0) {\n state.logger.logError(\n 'React invocation must have at least one argument. Parameter injection failed.' +\n createErrorLocation(callExpr)\n );\n return;\n }\n const firstArg = callExpr.arguments[0];\n if (!t.isExpression(firstArg)) {\n state.logger.logError(\n 'React invocation first argument must be an expression. Parameter injection failed.' +\n createErrorLocation(callExpr)\n );\n return;\n }\n\n // Get function name from callee\n const { namespaceName, functionName } =\n getCalleeNameFromJsxExpressionParam(firstArg);\n if (!functionName) {\n state.logger.logError(\n 'React invocation first argument must be a function. Parameter injection failed.' +\n createErrorLocation(callExpr)\n );\n return;\n }\n // Get the canonical function name\n const { canonicalName, type } = getTrackedVariable(\n state.scopeTracker,\n namespaceName,\n functionName\n );\n if (!canonicalName) {\n return;\n }\n\n // Filter out non-GT components\n if (type !== 'generaltranslation' || !isTranslationComponent(canonicalName)) {\n return;\n }\n\n // Track the component (increment counter, initialize aggregator, set hash)\n injectTComponentParameters(callExpr, state);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AA2BA,SAAgB,sBACd,OACqC;AACrC,SAAQ,iBAAiB;EAEvB,MAAM,WAAW,aAAa;EAG9B,MAAM,EAAE,eAAe,iBACrBA,kDAAAA,4BAA4B,SAAS;AACvC,MAAI,CAAC,aACH;EAIF,MAAM,EAAE,eAAe,SAASC,qCAAAA,mBAC9B,MAAM,cACN,eACA,aACD;AACD,MAAI,CAAC,cACH;AAIF,MACE,SAAS,wBACTC,mCAAAA,8BAA8B,cAAc,CAG5C,qCAAoC,cAAc,OAAO,cAAc;WAC9D,SAAS,WAAWC,sCAAAA,gBAAgB,cAAc,CAE3D,uBAAsB,UAAU,MAAM;WAEtC,SAAS,wBACT,kBAAA,OACA,YAIA,SAAS,wBACT,kBAAA,IAEA,iEAAA,oCAAoC,cAAc,MAAM;;;;;;;AAa9D,SAAS,oCACP,cACA,OACA,eACA;AAEA,SAAQ,eAAR;EACE,KAAA;EACA,KAAA;AACE,uEAAA,8BAA8B,cAAc,MAAM;AAClD;EACF,KAAA;EACA,KAAA,2BAEE;EACF,KAAA;EACA,KAAA,uBAEE;EACF,QACE;;;;;;;;;AAUN,SAAS,sBACP,UACA,OACA;AAEA,KAAI,SAAS,UAAU,WAAW,GAAG;AACnC,QAAM,OAAO,SACX,kFACEC,qBAAAA,oBAAoB,SAAS,CAChC;AACD;;CAEF,MAAM,WAAW,SAAS,UAAU;AACpC,KAAI,CAACC,aAAE,aAAa,SAAS,EAAE;AAC7B,QAAM,OAAO,SACX,uFACED,qBAAAA,oBAAoB,SAAS,CAChC;AACD;;CAIF,MAAM,EAAE,eAAe,iBACrBE,yEAAAA,oCAAoC,SAAS;AAC/C,KAAI,CAAC,cAAc;AACjB,QAAM,OAAO,SACX,oFACEF,qBAAAA,oBAAoB,SAAS,CAChC;AACD;;CAGF,MAAM,EAAE,eAAe,SAASH,qCAAAA,mBAC9B,MAAM,cACN,eACA,aACD;AACD,KAAI,CAAC,cACH;AAIF,KAAI,SAAS,wBAAwB,CAACM,mCAAAA,uBAAuB,cAAc,CACzE;AAIF,wDAAA,2BAA2B,UAAU,MAAM"}
1
+ {"version":3,"file":"processCallExpression.js","names":["getCalleeNameFromExpression","getTrackedVariable","isReactFunction","createErrorLocation","t","getCalleeNameFromJsxExpressionParam","isTranslationComponent"],"sources":["../../../src/processing/injection/processCallExpression.ts"],"sourcesContent":["import { VisitNode } from '@babel/traverse';\nimport { TransformState } from '../../state/types';\nimport * as t from '@babel/types';\nimport {\n GT_CALLBACK_FUNCTIONS,\n GT_OTHER_FUNCTIONS,\n} from '../../utils/constants/gt/constants';\nimport { getCalleeNameFromExpression } from '../../utils/parsing/getCalleeNameFromExpression';\nimport { getTrackedVariable } from '../../transform/getTrackedVariable';\nimport { isTranslationComponent } from '../../utils/constants/gt/helpers';\nimport { isReactFunction } from '../../utils/constants/react/helpers';\nimport { getCalleeNameFromJsxExpressionParam } from '../../transform/jsx-children/utils/getCalleeNameFromJsxExpressionParam';\nimport { injectTComponentParameters } from '../../transform/injection/injectTComponentParameters';\nimport { createErrorLocation } from '../../utils/errors';\nimport { injectUseGTCallbackParameters } from '../../transform/injection/callbacks/injectUseGTCallbackParameters';\nimport { injectStandaloneTFunctionParameters } from '../../transform/injection/injectStandaloneTFunctionParameters';\n\n/**\n * Process call expression:\n */\nexport function processCallExpression(\n state: TransformState\n): VisitNode<t.Node, t.CallExpression> {\n return (callExprPath) => {\n // Get the call expression\n const callExpr = callExprPath.node;\n\n // Get function name from callee\n const { namespaceName, functionName } =\n getCalleeNameFromExpression(callExpr);\n if (!functionName) {\n return;\n }\n\n // Get the canonical function name\n const { canonicalName, type } = getTrackedVariable(\n state.scopeTracker,\n namespaceName,\n functionName\n );\n if (!canonicalName) {\n return;\n }\n\n // Handle each respective case\n if (\n type === 'generaltranslation' &&\n (canonicalName === GT_CALLBACK_FUNCTIONS.useGT_callback ||\n canonicalName === GT_CALLBACK_FUNCTIONS.getGT_callback)\n ) {\n injectUseGTCallbackParameters(callExprPath, state);\n } else if (type === 'react' && isReactFunction(canonicalName)) {\n // Handle react variables (jsxDEV, etc.)\n handleReactInvocation(callExpr, state);\n } else if (\n type === 'generaltranslation' &&\n canonicalName === GT_OTHER_FUNCTIONS.t\n ) {\n injectStandaloneTFunctionParameters(callExprPath, state);\n }\n };\n}\n\n/* =============================== */\n/* Handlers */\n/* =============================== */\n\n/**\n * Handle react function invocations\n * jsxDEV, jsx, jsxs, ...\n *\n * We want to check these because they wrap <T> and other components\n */\nfunction handleReactInvocation(\n callExpr: t.CallExpression,\n state: TransformState\n) {\n // Check if it contains a GT component (first argument)\n if (callExpr.arguments.length === 0) {\n state.logger.logError(\n 'React invocation must have at least one argument. Parameter injection failed.' +\n createErrorLocation(callExpr)\n );\n return;\n }\n const firstArg = callExpr.arguments[0];\n if (!t.isExpression(firstArg)) {\n state.logger.logError(\n 'React invocation first argument must be an expression. Parameter injection failed.' +\n createErrorLocation(callExpr)\n );\n return;\n }\n\n // Get function name from callee\n const { namespaceName, functionName } =\n getCalleeNameFromJsxExpressionParam(firstArg);\n if (!functionName) {\n state.logger.logError(\n 'React invocation first argument must be a function. Parameter injection failed.' +\n createErrorLocation(callExpr)\n );\n return;\n }\n // Get the canonical function name\n const { canonicalName, type } = getTrackedVariable(\n state.scopeTracker,\n namespaceName,\n functionName\n );\n if (!canonicalName) {\n return;\n }\n\n // Filter out non-GT components\n if (type !== 'generaltranslation' || !isTranslationComponent(canonicalName)) {\n return;\n }\n\n // Track the component (increment counter, initialize aggregator, set hash)\n injectTComponentParameters(callExpr, state);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAoBA,SAAgB,sBACd,OACqC;AACrC,SAAQ,iBAAiB;EAEvB,MAAM,WAAW,aAAa;EAG9B,MAAM,EAAE,eAAe,iBACrBA,kDAAAA,4BAA4B,SAAS;AACvC,MAAI,CAAC,aACH;EAIF,MAAM,EAAE,eAAe,SAASC,qCAAAA,mBAC9B,MAAM,cACN,eACA,aACD;AACD,MAAI,CAAC,cACH;AAIF,MACE,SAAS,yBACR,kBAAA,oBACC,kBAAA,kBAEF,qEAAA,8BAA8B,cAAc,MAAM;WACzC,SAAS,WAAWC,sCAAAA,gBAAgB,cAAc,CAE3D,uBAAsB,UAAU,MAAM;WAEtC,SAAS,wBACT,kBAAA,IAEA,iEAAA,oCAAoC,cAAc,MAAM;;;;;;;;;AAe9D,SAAS,sBACP,UACA,OACA;AAEA,KAAI,SAAS,UAAU,WAAW,GAAG;AACnC,QAAM,OAAO,SACX,kFACEC,qBAAAA,oBAAoB,SAAS,CAChC;AACD;;CAEF,MAAM,WAAW,SAAS,UAAU;AACpC,KAAI,CAACC,aAAE,aAAa,SAAS,EAAE;AAC7B,QAAM,OAAO,SACX,uFACED,qBAAAA,oBAAoB,SAAS,CAChC;AACD;;CAIF,MAAM,EAAE,eAAe,iBACrBE,yEAAAA,oCAAoC,SAAS;AAC/C,KAAI,CAAC,cAAc;AACjB,QAAM,OAAO,SACX,oFACEF,qBAAAA,oBAAoB,SAAS,CAChC;AACD;;CAGF,MAAM,EAAE,eAAe,SAASF,qCAAAA,mBAC9B,MAAM,cACN,eACA,aACD;AACD,KAAI,CAAC,cACH;AAIF,KAAI,SAAS,wBAAwB,CAACK,mCAAAA,uBAAuB,cAAc,CACzE;AAIF,wDAAA,2BAA2B,UAAU,MAAM"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@generaltranslation/compiler",
3
- "version": "1.3.30",
3
+ "version": "1.3.31",
4
4
  "description": "Universal plugin for compile-time optimization of GT translation components",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -25,7 +25,7 @@
25
25
  "@babel/types": "^7.23.0",
26
26
  "unplugin": "^2.3.10",
27
27
  "@generaltranslation/format": "0.1.2",
28
- "generaltranslation": "9.0.1"
28
+ "generaltranslation": "9.0.2"
29
29
  },
30
30
  "devDependencies": {
31
31
  "@types/babel__core": "^7.20.0",
@@ -1,8 +0,0 @@
1
- import { TransformState } from '../../../state/types';
2
- import * as t from '@babel/types';
3
- import { NodePath } from '@babel/traverse';
4
- /**
5
- * Injects parameters into invocation of useMessages_callback(..., { $_hash })
6
- */
7
- export declare function injectUseMessagesCallbackParameters(_callExprPath: NodePath<t.CallExpression>, _state: TransformState): void;
8
- //# sourceMappingURL=injectUseMessagesCallbackParameters.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"injectUseMessagesCallbackParameters.d.ts","sourceRoot":"","sources":["../../../../src/transform/injection/callbacks/injectUseMessagesCallbackParameters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C;;GAEG;AACH,wBAAgB,mCAAmC,CACjD,aAAa,EAAE,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,EACzC,MAAM,EAAE,cAAc,QACpB"}
@@ -1,10 +0,0 @@
1
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- //#region src/transform/injection/callbacks/injectUseMessagesCallbackParameters.ts
3
- /**
4
- * Injects parameters into invocation of useMessages_callback(..., { $_hash })
5
- */
6
- function injectUseMessagesCallbackParameters(_callExprPath, _state) {}
7
- //#endregion
8
- exports.injectUseMessagesCallbackParameters = injectUseMessagesCallbackParameters;
9
-
10
- //# sourceMappingURL=injectUseMessagesCallbackParameters.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"injectUseMessagesCallbackParameters.js","names":[],"sources":["../../../../src/transform/injection/callbacks/injectUseMessagesCallbackParameters.ts"],"sourcesContent":["import { TransformState } from '../../../state/types';\nimport * as t from '@babel/types';\nimport { NodePath } from '@babel/traverse';\n\n/**\n * Injects parameters into invocation of useMessages_callback(..., { $_hash })\n */\nexport function injectUseMessagesCallbackParameters(\n _callExprPath: NodePath<t.CallExpression>,\n _state: TransformState\n) {}\n"],"mappings":";;;;;AAOA,SAAgB,oCACd,eACA,QACA"}
@@ -1,8 +0,0 @@
1
- import { TransformState } from '../../../state/types';
2
- import * as t from '@babel/types';
3
- import { NodePath } from '@babel/traverse';
4
- /**
5
- * Injects parameters into invocation of useTranslations_callback(..., { $_hash })
6
- */
7
- export declare function injectUseTranslationsCallbackParameters(_callExprPath: NodePath<t.CallExpression>, _state: TransformState): void;
8
- //# sourceMappingURL=injectUseTranslationsCallbackParameters.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"injectUseTranslationsCallbackParameters.d.ts","sourceRoot":"","sources":["../../../../src/transform/injection/callbacks/injectUseTranslationsCallbackParameters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C;;GAEG;AACH,wBAAgB,uCAAuC,CACrD,aAAa,EAAE,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,EACzC,MAAM,EAAE,cAAc,QACpB"}
@@ -1,10 +0,0 @@
1
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- //#region src/transform/injection/callbacks/injectUseTranslationsCallbackParameters.ts
3
- /**
4
- * Injects parameters into invocation of useTranslations_callback(..., { $_hash })
5
- */
6
- function injectUseTranslationsCallbackParameters(_callExprPath, _state) {}
7
- //#endregion
8
- exports.injectUseTranslationsCallbackParameters = injectUseTranslationsCallbackParameters;
9
-
10
- //# sourceMappingURL=injectUseTranslationsCallbackParameters.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"injectUseTranslationsCallbackParameters.js","names":[],"sources":["../../../../src/transform/injection/callbacks/injectUseTranslationsCallbackParameters.ts"],"sourcesContent":["import { TransformState } from '../../../state/types';\nimport * as t from '@babel/types';\nimport { NodePath } from '@babel/traverse';\n\n/**\n * Injects parameters into invocation of useTranslations_callback(..., { $_hash })\n */\nexport function injectUseTranslationsCallbackParameters(\n _callExprPath: NodePath<t.CallExpression>,\n _state: TransformState\n) {}\n"],"mappings":";;;;;AAOA,SAAgB,wCACd,eACA,QACA"}
@@ -1,10 +0,0 @@
1
- import { TransformState } from '../../../state/types';
2
- /**
3
- * Track gt() function invocations
4
- * - Adds the translation content to the string collector
5
- */
6
- export declare function registerUseMessagesCallback(_params: {
7
- identifier: number;
8
- state: TransformState;
9
- }): void;
10
- //# sourceMappingURL=registerUseMessagesCallback.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"registerUseMessagesCallback.d.ts","sourceRoot":"","sources":["../../../../src/transform/registration/callbacks/registerUseMessagesCallback.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,EAAE;IACnD,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,cAAc,CAAC;CACvB,GAAG,IAAI,CAEP"}
@@ -1,11 +0,0 @@
1
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- //#region src/transform/registration/callbacks/registerUseMessagesCallback.ts
3
- /**
4
- * Track gt() function invocations
5
- * - Adds the translation content to the string collector
6
- */
7
- function registerUseMessagesCallback(_params) {}
8
- //#endregion
9
- exports.registerUseMessagesCallback = registerUseMessagesCallback;
10
-
11
- //# sourceMappingURL=registerUseMessagesCallback.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"registerUseMessagesCallback.js","names":[],"sources":["../../../../src/transform/registration/callbacks/registerUseMessagesCallback.ts"],"sourcesContent":["import { TransformState } from '../../../state/types';\n\n/**\n * Track gt() function invocations\n * - Adds the translation content to the string collector\n */\nexport function registerUseMessagesCallback(_params: {\n identifier: number;\n state: TransformState;\n}): void {\n // For future useMessagesCallback implementation\n}\n"],"mappings":";;;;;;AAMA,SAAgB,4BAA4B,SAGnC"}
@@ -1,10 +0,0 @@
1
- import { TransformState } from '../../../state/types';
2
- /**
3
- * Track t() function invocations
4
- * - Adds the translation content to the string collector
5
- */
6
- export declare function registerUseTranslationsCallback(_params: {
7
- identifier: number;
8
- state: TransformState;
9
- }): void;
10
- //# sourceMappingURL=registerUseTranslationsCallback.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"registerUseTranslationsCallback.d.ts","sourceRoot":"","sources":["../../../../src/transform/registration/callbacks/registerUseTranslationsCallback.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD;;;GAGG;AACH,wBAAgB,+BAA+B,CAAC,OAAO,EAAE;IACvD,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,cAAc,CAAC;CACvB,GAAG,IAAI,CAEP"}
@@ -1,11 +0,0 @@
1
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- //#region src/transform/registration/callbacks/registerUseTranslationsCallback.ts
3
- /**
4
- * Track t() function invocations
5
- * - Adds the translation content to the string collector
6
- */
7
- function registerUseTranslationsCallback(_params) {}
8
- //#endregion
9
- exports.registerUseTranslationsCallback = registerUseTranslationsCallback;
10
-
11
- //# sourceMappingURL=registerUseTranslationsCallback.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"registerUseTranslationsCallback.js","names":[],"sources":["../../../../src/transform/registration/callbacks/registerUseTranslationsCallback.ts"],"sourcesContent":["import { TransformState } from '../../../state/types';\n\n/**\n * Track t() function invocations\n * - Adds the translation content to the string collector\n */\nexport function registerUseTranslationsCallback(_params: {\n identifier: number;\n state: TransformState;\n}): void {\n // For future useTranslationsCallback implementation\n}\n"],"mappings":";;;;;;AAMA,SAAgB,gCAAgC,SAGvC"}