@tolgee/cli 2.10.1 → 2.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -11,7 +11,7 @@ import createClient from 'openapi-fetch';
11
11
  import base32Decode from 'base32-decode';
12
12
  import { API_KEY_PAK_PREFIX, USER_AGENT } from '../constants.js';
13
13
  import { getApiKeyInformation } from './getApiKeyInformation.js';
14
- import { debug } from '../utils/logger.js';
14
+ import { debug, isDebugEnabled } from '../utils/logger.js';
15
15
  import { errorFromLoadable } from './errorFromLoadable.js';
16
16
  function parseResponse(response, parseAs) {
17
17
  return __awaiter(this, void 0, void 0, function* () {
@@ -62,7 +62,18 @@ export function createApiClient({ baseUrl, apiKey, projectId, autoThrow = false,
62
62
  debug(`[HTTP] Requesting: ${request.method} ${request.url}`);
63
63
  },
64
64
  onResponse: (_a) => __awaiter(this, [_a], void 0, function* ({ response, options }) {
65
- debug(`[HTTP] Response: ${response.url} [${response.status}]`);
65
+ let responseText = `[HTTP] Response: ${response.url} [${response.status}]`;
66
+ const apiVersion = response.headers.get('x-tolgee-version');
67
+ if (apiVersion) {
68
+ responseText += ` [${response.headers.get('x-tolgee-version')}]`;
69
+ }
70
+ if (!response.ok && isDebugEnabled()) {
71
+ const clonedBody = yield response.clone().text();
72
+ if (clonedBody) {
73
+ responseText += ` [${clonedBody}]`;
74
+ }
75
+ }
76
+ debug(responseText);
66
77
  if (autoThrow && !response.ok) {
67
78
  const loadable = yield parseResponse(response, options.parseAs);
68
79
  throw new Error(`Tolgee request error ${response.url} ${errorFromLoadable(loadable)}`);
@@ -7,8 +7,9 @@ import { createMachine } from './mergerMachine.js';
7
7
  import { stringMerger } from './tokenMergers/stringMerger.js';
8
8
  import { templateStringMerger } from './tokenMergers/templateStringMerger.js';
9
9
  import { closingTagMerger } from './tokenMergers/closingTagMerger.js';
10
- import { typesAsMergerer } from './tokenMergers/typesAsMergerer.js';
11
- import { typesCastMergerer } from './tokenMergers/typesCastMerger.js';
10
+ import { typesAsMerger } from './tokenMergers/typesAsMerger.js';
11
+ import { typesCastMerger } from './tokenMergers/typesCastMerger.js';
12
+ import { customTCallMerger } from './tokenMergers/customTCallMerger.js';
12
13
  export const DEFAULT_BLOCKS = {
13
14
  'block.begin': ['block.end'],
14
15
  'expression.begin': ['expression.end'],
@@ -19,12 +20,13 @@ export const DEFAULT_BLOCKS = {
19
20
  'tag.closing.begin',
20
21
  ],
21
22
  };
22
- export const DEFAULT_MERGERERS = [
23
+ export const DEFAULT_MERGERS = [
23
24
  stringMerger,
24
25
  templateStringMerger,
25
26
  closingTagMerger,
26
- typesAsMergerer,
27
- typesCastMergerer,
27
+ typesAsMerger,
28
+ typesCastMerger,
29
+ customTCallMerger(['tolgee.t']),
28
30
  ];
29
31
  export const Parser = ({ mappers, blocks, rules, merger, treeTransform, }) => {
30
32
  const ruleMap = new Map();
@@ -1,4 +1,4 @@
1
- import { tFunctionGeneral } from '../../parser/rules/tFunctionGeneral.js';
1
+ import { tFunctionGeneral } from './tFunctionGeneral.js';
2
2
  export const globalTFunction = {
3
3
  trigger: 'trigger.global.t.function',
4
4
  call(context) {
@@ -0,0 +1,23 @@
1
+ export const customTCallMerger = (customExpressions) => {
2
+ return {
3
+ initial: '',
4
+ step: (state, t, end) => {
5
+ const type = t.customType;
6
+ const token = t.token;
7
+ if (type === 'variable' || type === 'function.call') {
8
+ if (customExpressions.find((e) => e.startsWith(state + token))) {
9
+ return state + token;
10
+ }
11
+ }
12
+ else if (type === 'acessor.dot') {
13
+ return state + '.';
14
+ }
15
+ else if (state !== '' && type === 'expression.begin') {
16
+ if (customExpressions.includes(state)) {
17
+ return end.MERGE_ALL;
18
+ }
19
+ }
20
+ },
21
+ customType: 'trigger.global.t.function',
22
+ };
23
+ };
@@ -1,6 +1,6 @@
1
1
  const INITIAL_DEPTH = -1;
2
2
  // in ts files we want to ignore stuff after 'as' `[count as number]`
3
- export const typesAsMergerer = {
3
+ export const typesAsMerger = {
4
4
  initial: INITIAL_DEPTH,
5
5
  step: (depth, token, end) => {
6
6
  const type = token.customType;
@@ -1,6 +1,6 @@
1
1
  const INITIAL_DEPTH = 0;
2
2
  // in ts files we want to ignore type casting (<number> count)
3
- export const typesCastMergerer = {
3
+ export const typesCastMerger = {
4
4
  initial: INITIAL_DEPTH,
5
5
  step: (depth, token, end) => {
6
6
  const type = token.customType;
@@ -1,5 +1,5 @@
1
1
  import { pipeMachines } from '../parser/mergerMachine.js';
2
- import { DEFAULT_BLOCKS, DEFAULT_MERGERERS, Parser } from '../parser/parser.js';
2
+ import { DEFAULT_BLOCKS, DEFAULT_MERGERS, Parser } from '../parser/parser.js';
3
3
  import { generalMapper } from '../parser/generalMapper.js';
4
4
  import { ngxMapper } from './ngxMapper.js';
5
5
  import { ngxTreeTransform } from './ngxTreeTransform.js';
@@ -9,9 +9,10 @@ import { pipeMerger } from './tokenMergers/pipeMerger.js';
9
9
  import { componentWithT } from './rules/componentWithT.js';
10
10
  import { translatePipe } from './rules/translatePipe.js';
11
11
  import { translateFunction } from './rules/translateFunction.js';
12
+ import { globalTFunction } from '../parser/rules/globalTFunction.js';
12
13
  const ngxMappers = [ngxMapper, generalMapper];
13
14
  export const ngxMergers = pipeMachines([
14
- ...DEFAULT_MERGERERS,
15
+ ...DEFAULT_MERGERS,
15
16
  componentWithTMerger,
16
17
  pipeMerger,
17
18
  translateMerger,
@@ -20,7 +21,7 @@ export const ParserNgx = () => {
20
21
  return Parser({
21
22
  mappers: ngxMappers,
22
23
  blocks: Object.assign({}, DEFAULT_BLOCKS),
23
- rules: [componentWithT, translatePipe, translateFunction],
24
+ rules: [globalTFunction, componentWithT, translatePipe, translateFunction],
24
25
  merger: ngxMergers,
25
26
  treeTransform: ngxTreeTransform,
26
27
  });
@@ -1,5 +1,5 @@
1
1
  import { pipeMachines } from '../parser/mergerMachine.js';
2
- import { DEFAULT_BLOCKS, DEFAULT_MERGERERS, Parser } from '../parser/parser.js';
2
+ import { DEFAULT_BLOCKS, DEFAULT_MERGERS, Parser } from '../parser/parser.js';
3
3
  import { generalMapper } from '../parser/generalMapper.js';
4
4
  import { reactMapper } from './jsxMapper.js';
5
5
  import { createElementMerger } from './tokenMergers/createElementMerger.js';
@@ -10,9 +10,10 @@ import { reactCreateElement } from './rules/createElement.js';
10
10
  import { tComponent } from './rules/tComponent.js';
11
11
  import { tFunction } from './rules/tFunction.js';
12
12
  import { useTranslate } from './rules/useTranslate.js';
13
+ import { globalTFunction } from '../parser/rules/globalTFunction.js';
13
14
  const reactMappers = [generalMapper, reactMapper];
14
15
  export const reactMergers = pipeMachines([
15
- ...DEFAULT_MERGERERS,
16
+ ...DEFAULT_MERGERS,
16
17
  createElementMerger,
17
18
  useTranslateMerger,
18
19
  tFunctionMerger,
@@ -22,7 +23,13 @@ export const ParserReact = () => {
22
23
  return Parser({
23
24
  mappers: reactMappers,
24
25
  blocks: Object.assign({}, DEFAULT_BLOCKS),
25
- rules: [reactCreateElement, tComponent, tFunction, useTranslate],
26
+ rules: [
27
+ globalTFunction,
28
+ reactCreateElement,
29
+ tComponent,
30
+ tFunction,
31
+ useTranslate,
32
+ ],
26
33
  merger: reactMergers,
27
34
  });
28
35
  };
@@ -1,5 +1,5 @@
1
1
  import { pipeMachines } from '../parser/mergerMachine.js';
2
- import { DEFAULT_BLOCKS, DEFAULT_MERGERERS, Parser } from '../parser/parser.js';
2
+ import { DEFAULT_BLOCKS, DEFAULT_MERGERS, Parser } from '../parser/parser.js';
3
3
  import { svelteMapper } from './svelteMapper.js';
4
4
  import { generalMapper } from '../parser/generalMapper.js';
5
5
  import { tFunctionMerger } from './tokenMergers/tFunctionMerger.js';
@@ -11,9 +11,10 @@ import { getTranslate } from './rules/useTranslate.js';
11
11
  import { tComponent } from './rules/tComponent.js';
12
12
  import { scriptTag } from './rules/scriptTag.js';
13
13
  import { svelteTreeTransform } from './svelteTreeTransform.js';
14
+ import { globalTFunction } from '../parser/rules/globalTFunction.js';
14
15
  const svelteMappers = [generalMapper, svelteMapper];
15
16
  export const svelteMergers = pipeMachines([
16
- ...DEFAULT_MERGERERS,
17
+ ...DEFAULT_MERGERS,
17
18
  tFunctionMerger,
18
19
  getTranslateMerger,
19
20
  tComponentMerger,
@@ -23,7 +24,7 @@ export const ParserSvelte = () => {
23
24
  return Parser({
24
25
  mappers: svelteMappers,
25
26
  blocks: Object.assign({}, DEFAULT_BLOCKS),
26
- rules: [tFunction, getTranslate, tComponent, scriptTag],
27
+ rules: [globalTFunction, tFunction, getTranslate, tComponent, scriptTag],
27
28
  treeTransform: svelteTreeTransform,
28
29
  merger: svelteMergers,
29
30
  });
@@ -1,26 +1,26 @@
1
1
  import { pipeMachines } from '../parser/mergerMachine.js';
2
- import { DEFAULT_BLOCKS, DEFAULT_MERGERERS, Parser } from '../parser/parser.js';
2
+ import { DEFAULT_BLOCKS, DEFAULT_MERGERS, Parser } from '../parser/parser.js';
3
3
  import { generalMapper } from '../parser/generalMapper.js';
4
4
  import { vueMapper } from './vueMapper.js';
5
5
  import { vueTreeTransform } from './vueTreeTransform.js';
6
- import { globalTFunctionMerger } from './tokenMergers/globalTFunctionMerger.js';
7
6
  import { tFunctionMerger } from './tokenMergers/tFunctionMerger.js';
8
7
  import { useTranslateMerger } from './tokenMergers/useTranslateMerger.js';
9
8
  import { exportDefaultObjectMerger } from './tokenMergers/exportDefaultObjectMerger.js';
10
9
  import { scriptTagMerger } from './tokenMergers/scriptTagMerger.js';
11
10
  import { tComponentMerger } from './tokenMergers/tComponentMerger.js';
12
- import { globalTFunction } from './rules/globalTFunction.js';
11
+ import { globalTFunction } from '../parser/rules/globalTFunction.js';
13
12
  import { tFunction } from './rules/tFunction.js';
14
13
  import { useTranslate } from './rules/useTranslate.js';
15
14
  import { tComponent } from './rules/tComponent.js';
16
15
  import { scriptTag } from './rules/scriptTag.js';
17
16
  import { exportDefaultObject } from './rules/exportDefaultObject.js';
18
17
  import { hyphenPropsMerger } from './tokenMergers/hyphenPropsMerger.js';
18
+ import { customTCallMerger } from '../parser/tokenMergers/customTCallMerger.js';
19
19
  const vueMappers = [generalMapper, vueMapper];
20
20
  export const vueMergers = pipeMachines([
21
- ...DEFAULT_MERGERERS,
21
+ ...DEFAULT_MERGERS,
22
22
  hyphenPropsMerger,
23
- globalTFunctionMerger,
23
+ customTCallMerger(['$t', 'this.$t']),
24
24
  tFunctionMerger,
25
25
  useTranslateMerger,
26
26
  tComponentMerger,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tolgee/cli",
3
- "version": "2.10.1",
3
+ "version": "2.11.0",
4
4
  "type": "module",
5
5
  "description": "A tool to interact with the Tolgee Platform through CLI",
6
6
  "repository": {
@@ -1,36 +0,0 @@
1
- // $t(
2
- export const globalTFunctionMerger = {
3
- initial: 0 /* S.Idle */,
4
- step: (state, t, end) => {
5
- const type = t.customType;
6
- const token = t.token;
7
- switch (state) {
8
- case 0 /* S.Idle */:
9
- if (type === 'function.call' && token === '$t') {
10
- return 1 /* S.ExpectBracket */;
11
- }
12
- else if (type === 'variable' && token === 'this') {
13
- return 2 /* S.ExpectDot */;
14
- }
15
- else if (type === 'acessor.dot') {
16
- return 4 /* S.Ignore */;
17
- }
18
- break;
19
- case 2 /* S.ExpectDot */:
20
- if (type === 'acessor.dot') {
21
- return 3 /* S.ExpectCall */;
22
- }
23
- break;
24
- case 3 /* S.ExpectCall */:
25
- if (type === 'function.call' && token === '$t') {
26
- return 1 /* S.ExpectBracket */;
27
- }
28
- break;
29
- case 1 /* S.ExpectBracket */:
30
- if (type === 'expression.begin') {
31
- return end.MERGE_ALL;
32
- }
33
- }
34
- },
35
- customType: 'trigger.global.t.function',
36
- };