@crowdin/app-project-module 0.98.0-cf-1 → 0.98.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (134) hide show
  1. package/out/index.js +10 -25
  2. package/out/middlewares/crowdin-client.d.ts +1 -1
  3. package/out/middlewares/integration-credentials.d.ts +1 -1
  4. package/out/middlewares/integration-credentials.js +1 -4
  5. package/out/middlewares/render-ui-module.d.ts +3 -3
  6. package/out/middlewares/render-ui-module.js +13 -9
  7. package/out/middlewares/ui-module.d.ts +1 -1
  8. package/out/middlewares/ui-module.js +1 -4
  9. package/out/modules/about.d.ts +1 -1
  10. package/out/modules/about.js +2 -8
  11. package/out/modules/ai-prompt-provider/handlers/compile.d.ts +1 -1
  12. package/out/modules/ai-prompt-provider/index.js +2 -4
  13. package/out/modules/ai-provider/handlers/chat-completions.d.ts +1 -1
  14. package/out/modules/ai-provider/handlers/get-model-list.d.ts +1 -1
  15. package/out/modules/ai-provider/index.js +2 -4
  16. package/out/modules/ai-request-processors/handler.d.ts +1 -1
  17. package/out/modules/ai-tools/handlers/tool-calls.d.ts +1 -1
  18. package/out/modules/ai-tools/index.js +1 -1
  19. package/out/modules/context-menu/index.js +2 -2
  20. package/out/modules/custom-mt/handlers/translate.d.ts +1 -1
  21. package/out/modules/custom-mt/index.js +1 -3
  22. package/out/modules/custom-spell-check/handlers/get-languages-list.d.ts +1 -1
  23. package/out/modules/custom-spell-check/handlers/spell-check.d.ts +1 -1
  24. package/out/modules/custom-spell-check/index.js +4 -4
  25. package/out/modules/editor-right-panel/index.js +1 -1
  26. package/out/modules/external-qa-check/handlers/validate.d.ts +1 -1
  27. package/out/modules/external-qa-check/index.js +2 -2
  28. package/out/modules/file-processing/handlers/custom-file-format.d.ts +1 -1
  29. package/out/modules/file-processing/handlers/file-download.d.ts +1 -1
  30. package/out/modules/file-processing/handlers/pre-post-process.d.ts +1 -1
  31. package/out/modules/form-data-display.d.ts +1 -1
  32. package/out/modules/form-data-save.d.ts +1 -1
  33. package/out/modules/install.d.ts +1 -1
  34. package/out/modules/integration/handlers/crowdin-file-progress.d.ts +1 -1
  35. package/out/modules/integration/handlers/crowdin-files.d.ts +1 -1
  36. package/out/modules/integration/handlers/crowdin-files.js +6 -4
  37. package/out/modules/integration/handlers/crowdin-project.d.ts +1 -1
  38. package/out/modules/integration/handlers/crowdin-update.d.ts +1 -1
  39. package/out/modules/integration/handlers/crowdin-update.js +18 -4
  40. package/out/modules/integration/handlers/crowdin-webhook.d.ts +1 -1
  41. package/out/modules/integration/handlers/integration-data.d.ts +1 -1
  42. package/out/modules/integration/handlers/integration-data.js +17 -13
  43. package/out/modules/integration/handlers/integration-login.d.ts +1 -1
  44. package/out/modules/integration/handlers/integration-logout.d.ts +1 -1
  45. package/out/modules/integration/handlers/integration-update.d.ts +1 -1
  46. package/out/modules/integration/handlers/integration-webhook.d.ts +1 -1
  47. package/out/modules/integration/handlers/invite-users.d.ts +1 -1
  48. package/out/modules/integration/handlers/job-cancel.d.ts +1 -1
  49. package/out/modules/integration/handlers/job-info.d.ts +1 -1
  50. package/out/modules/integration/handlers/main.d.ts +1 -1
  51. package/out/modules/integration/handlers/main.js +3 -13
  52. package/out/modules/integration/handlers/oauth-login.d.ts +1 -1
  53. package/out/modules/integration/handlers/oauth-login.js +2 -10
  54. package/out/modules/integration/handlers/oauth-polling.d.ts +1 -1
  55. package/out/modules/integration/handlers/oauth-url.d.ts +1 -1
  56. package/out/modules/integration/handlers/settings-save.d.ts +1 -1
  57. package/out/modules/integration/handlers/settings.d.ts +1 -1
  58. package/out/modules/integration/handlers/sync-settings-save.d.ts +1 -1
  59. package/out/modules/integration/handlers/sync-settings.d.ts +1 -1
  60. package/out/modules/integration/handlers/user-errors.d.ts +1 -1
  61. package/out/modules/integration/handlers/users.d.ts +1 -1
  62. package/out/modules/integration/index.js +21 -27
  63. package/out/modules/integration/types.d.ts +11 -1
  64. package/out/modules/integration/util/defaults.js +51 -45
  65. package/out/modules/integration/util/files.d.ts +1 -0
  66. package/out/modules/integration/util/files.js +52 -4
  67. package/out/modules/integration/util/job.d.ts +1 -1
  68. package/out/modules/integration/util/job.js +3 -2
  69. package/out/modules/integration/util/types.d.ts +2 -0
  70. package/out/modules/modal/index.js +2 -2
  71. package/out/modules/organization-menu/index.js +4 -6
  72. package/out/modules/organization-settings-menu/index.js +4 -6
  73. package/out/modules/profile-resources-menu/index.js +4 -6
  74. package/out/modules/profile-settings-menu/index.js +4 -6
  75. package/out/modules/project-menu/index.js +1 -1
  76. package/out/modules/project-menu-crowdsource/index.js +1 -1
  77. package/out/modules/project-reports/index.js +2 -4
  78. package/out/modules/project-tools/index.js +2 -4
  79. package/out/modules/status.d.ts +1 -1
  80. package/out/modules/subscription-paid.d.ts +1 -1
  81. package/out/modules/uninstall.d.ts +1 -1
  82. package/out/modules/webhooks/handlers/webhook-handler.d.ts +1 -1
  83. package/out/modules/workflow-step-type/handlers/delete-step.d.ts +1 -1
  84. package/out/modules/workflow-step-type/handlers/step-settings-save.d.ts +1 -1
  85. package/out/modules/workflow-step-type/index.js +2 -3
  86. package/out/storage/index.js +1 -8
  87. package/out/storage/mysql.d.ts +1 -1
  88. package/out/storage/mysql.js +9 -1
  89. package/out/storage/postgre.d.ts +1 -1
  90. package/out/storage/postgre.js +11 -4
  91. package/out/storage/sqlite.d.ts +1 -1
  92. package/out/storage/sqlite.js +10 -4
  93. package/out/types.d.ts +1 -11
  94. package/out/util/credentials-masker.d.ts +1 -1
  95. package/out/util/handlebars.d.ts +1 -0
  96. package/out/util/handlebars.js +46 -0
  97. package/out/util/index.d.ts +0 -2
  98. package/out/util/index.js +2 -14
  99. package/out/views/about.handlebars +102 -0
  100. package/out/views/error.handlebars +54 -0
  101. package/out/views/form.handlebars +30 -0
  102. package/out/views/install.handlebars +16 -0
  103. package/out/views/login.handlebars +331 -0
  104. package/out/views/main.handlebars +1901 -0
  105. package/out/views/oauth.handlebars +11 -0
  106. package/out/views/partials/head.handlebars +53 -0
  107. package/out/views/subscription.handlebars +26 -0
  108. package/package.json +11 -12
  109. package/out/storage/d1.d.ts +0 -99
  110. package/out/storage/d1.js +0 -769
  111. package/out/util/jsx-renderer.d.ts +0 -6
  112. package/out/util/jsx-renderer.js +0 -13
  113. package/out/util/static-files.d.ts +0 -19
  114. package/out/util/static-files.js +0 -80
  115. package/out/views/AboutPage.d.ts +0 -9
  116. package/out/views/AboutPage.js +0 -79
  117. package/out/views/ErrorPage.d.ts +0 -18
  118. package/out/views/ErrorPage.js +0 -56
  119. package/out/views/FormPage.d.ts +0 -13
  120. package/out/views/FormPage.js +0 -27
  121. package/out/views/InstallPage.d.ts +0 -10
  122. package/out/views/InstallPage.js +0 -22
  123. package/out/views/LoginPage.d.ts +0 -33
  124. package/out/views/LoginPage.js +0 -199
  125. package/out/views/MainPage.d.ts +0 -79
  126. package/out/views/MainPage.js +0 -1613
  127. package/out/views/OAuthPage.d.ts +0 -7
  128. package/out/views/OAuthPage.js +0 -17
  129. package/out/views/SubscriptionPage.d.ts +0 -7
  130. package/out/views/SubscriptionPage.js +0 -26
  131. package/out/views/index.d.ts +0 -13
  132. package/out/views/index.js +0 -25
  133. package/out/views/layout/Head.d.ts +0 -9
  134. package/out/views/layout/Head.js +0 -54
@@ -0,0 +1,11 @@
1
+ <script type="text/javascript">
2
+ {{#if oauthMode}}
3
+ const oauthMode = '{{{ oauthMode }}}';
4
+ {{else}}
5
+ const oauthMode = undefined;
6
+ {{/if}}
7
+ if (oauthMode !== 'polling') {
8
+ window.opener.postMessage('{{{message}}}');
9
+ }
10
+ window.close();
11
+ </script>
@@ -0,0 +1,53 @@
1
+ <head>
2
+ <meta charset="UTF-8">
3
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
4
+ <meta http-equiv="X-UA-Compatible" content="ie=edge">
5
+ <title></title>
6
+ <link rel="stylesheet" href="/assets/css/styles.css">
7
+ <link rel="stylesheet" href="/assets/css/crowdin-ui-colors.css">
8
+ <script type="module"
9
+ src="https://crowdin-web-components.s3.amazonaws.com/crowdin-web-components/crowdin-web-components.esm.js"></script>
10
+ <script nomodule=""
11
+ src="https://crowdin-web-components.s3.amazonaws.com/crowdin-web-components/crowdin-web-components.js"></script>
12
+ <script type="text/javascript" src="https://cdn.crowdin.com/apps/dist/iframe.js"></script>
13
+ <script type="text/javascript" src="/assets/js/polyfills/promise.js"></script>
14
+ <script type="text/javascript" src="/assets/js/polyfills/fetch.js"></script>
15
+ <script type="text/javascript" src="/assets/js/main.js"></script>
16
+ <script type="text/javascript" src="/assets/js/dependent.js"></script>
17
+ <style>
18
+ .ml-10 {
19
+ margin-left: 10px;
20
+ }
21
+ </style>
22
+ {{#if sentryData}}
23
+ <script
24
+ src="https://browser.sentry-cdn.com/7.60.0/bundle.replay.min.js"
25
+ integrity="sha384-N+VZps2PwFdv9LugkPA8nw+SMI1mGJG7IDe49jaxZlWDDJhHQ+SHakMpwhLQLAka"
26
+ crossorigin="anonymous"
27
+ ></script>
28
+ <script>
29
+ if (typeof Sentry !== 'undefined') {
30
+ Sentry.init({
31
+ dsn: "{{sentryData.dsn}}",
32
+ environment: "frontend",
33
+ replaysSessionSampleRate: 0,
34
+ replaysOnErrorSampleRate: 1.0,
35
+ integrations: [new Sentry.Replay()],
36
+ });
37
+
38
+ Sentry.configureScope(function(scope) {
39
+ scope.setTag("identifier", "{{sentryData.appIdentifier}}");
40
+
41
+ AP.getContext(contextData => {
42
+ const { user_id, ...rest } = contextData;
43
+
44
+ user_id && scope.setUser({ id: user_id });
45
+ scope.setTags(rest);
46
+ });
47
+ });
48
+ } else {
49
+ console.warn('Sentry is not available. This might be due to ad/tracking blockers or network issues.');
50
+ }
51
+ </script>
52
+ {{/if}}
53
+ </head>
@@ -0,0 +1,26 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+
4
+ <head>
5
+ <meta charset="UTF-8">
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
+ <meta http-equiv="X-UA-Compatible" content="ie=edge">
8
+ <title></title>
9
+ <script type="module"
10
+ src="https://crowdin-web-components.s3.amazonaws.com/crowdin-web-components/crowdin-web-components.esm.js"></script>
11
+ <script nomodule=""
12
+ src="https://crowdin-web-components.s3.amazonaws.com/crowdin-web-components/crowdin-web-components.js"></script>
13
+ <script type="text/javascript" src="https://cdn.crowdin.com/apps/dist/iframe.js"></script>
14
+ </head>
15
+
16
+ <body>
17
+ <div class="i_w center">
18
+ <crowdin-alert type="warning">Subscribe to continue using the {{name}} app.</crowdin-alert>
19
+ <br/>
20
+ <crowdin-button primary onclick="window.open('{{subscribeLink}}','_blank')">Subscribe</crowdin-button>
21
+ <crowdin-button outlined onclick="window.open('https://crowdin.com/contacts','_blank')">Contact us
22
+ </crowdin-button>
23
+ </div>
24
+ </body>
25
+
26
+ </html>
package/package.json CHANGED
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "@crowdin/app-project-module",
3
- "version": "0.98.0-cf-1",
3
+ "version": "0.98.0",
4
4
  "description": "Module that generates for you all common endpoints for serving standalone Crowdin App",
5
5
  "main": "out/index.js",
6
6
  "types": "out/index.d.ts",
7
7
  "scripts": {
8
- "build": "tsc -p ./ && cp -R static out && cp logo.png out && rollup -c rollup.config.mjs",
9
- "build-main": "tsc -p ./ && cp -R static out && cp logo.png out",
8
+ "build": "tsc -p ./ && cp -R views out && cp -R static out && cp logo.png out && rollup -c rollup.config.mjs",
9
+ "build-main": "tsc -p ./ && cp -R views out && cp -R static out && cp logo.png out",
10
10
  "build-form": "tsc -p ./ && cp -R static/js/form out/static/js && rollup -c rollup.config.mjs",
11
- "watch-main": "tsc --watch -p ./ && cp -R static out && cp logo.png out",
11
+ "watch-main": "tsc --watch -p ./ && cp -R views out && cp -R static out && cp logo.png out",
12
12
  "lint": "eslint --fix \"{src,tests}/**/*.{js,ts}\"",
13
13
  "prettier": "prettier --config .prettierrc src/**/*.ts --write",
14
14
  "lint-ci": "eslint \"{src,tests}/**/*.{js,ts}\"",
@@ -26,7 +26,8 @@
26
26
  "@godaddy/terminus": "^4.12.1",
27
27
  "amqplib": "^0.10.8",
28
28
  "crypto-js": "^4.2.0",
29
- "express": "^5.1.0",
29
+ "express": "^4.21.2",
30
+ "express-handlebars": "^5.3.5",
30
31
  "express-rate-limit": "^7.5.0",
31
32
  "lodash.get": "^4.4.2",
32
33
  "lodash.isstring": "^4.0.1",
@@ -36,19 +37,16 @@
36
37
  "mysql2": "^3.12.0",
37
38
  "node-cron": "^3.0.3",
38
39
  "pg": "^8.13.3",
39
- "react": "^18.3.1",
40
- "react-dom": "^18.3.1",
41
40
  "redoc-express": "^2.1.0",
42
41
  "sqlite3": "^5.1.7",
43
42
  "swagger-jsdoc": "^6.2.8",
44
43
  "uuid": "^8.3.2"
45
44
  },
46
45
  "devDependencies": {
46
+ "@monaco-editor/react": "^4.7.0",
47
47
  "@babel/preset-react": "^7.26.3",
48
- "@cloudflare/workers-types": "^4.20251011.0",
49
48
  "@emotion/react": "^11.14.0",
50
49
  "@emotion/styled": "^11.14.0",
51
- "@monaco-editor/react": "^4.7.0",
52
50
  "@mui/icons-material": "^5.16.14",
53
51
  "@mui/material": "^5.16.14",
54
52
  "@rjsf/core": "^5.24.3",
@@ -64,7 +62,8 @@
64
62
  "@rollup/plugin-terser": "^0.4.4",
65
63
  "@types/amqplib": "^0.10.7",
66
64
  "@types/crypto-js": "^4.2.2",
67
- "@types/express": "^5.0.3",
65
+ "@types/express": "4.17.21",
66
+ "@types/express-handlebars": "^5.3.1",
68
67
  "@types/jest": "^29.5.14",
69
68
  "@types/lodash.get": "^4.4.9",
70
69
  "@types/lodash.isstring": "^4.0.9",
@@ -74,8 +73,6 @@
74
73
  "@types/node": "^16.18.126",
75
74
  "@types/node-cron": "^3.0.11",
76
75
  "@types/pg": "^8.11.11",
77
- "@types/react": "^18.3.18",
78
- "@types/react-dom": "^18.3.5",
79
76
  "@types/swagger-jsdoc": "^6.0.4",
80
77
  "@types/uuid": "^9.0.7",
81
78
  "@typescript-eslint/eslint-plugin": "^2.3.1",
@@ -87,6 +84,8 @@
87
84
  "jest": "^29.7.0",
88
85
  "jest-junit": "^15.0.0",
89
86
  "prettier": "^2.8.8",
87
+ "react": "^18.3.1",
88
+ "react-dom": "^18.3.1",
90
89
  "rollup": "^3.29.4",
91
90
  "rollup-plugin-delete": "^2.1.0",
92
91
  "ts-jest": "^29.2.5",
@@ -1,99 +0,0 @@
1
- import type { D1Database } from '@cloudflare/workers-types';
2
- import { Storage } from '.';
3
- import { CrowdinCredentials } from '../types';
4
- import { IntegrationConfig, IntegrationCredentials, IntegrationFilesSnapshot, IntegrationSyncSettings, IntegrationWebhooks } from '../modules/integration/types';
5
- import { CreateJobParams, GetActiveJobsParams, GetJobParams, GetFileTranslationCacheByLanguageParams, Job, TranslationCache, UpdateJobParams, UpdateTranslationCacheParams, GetFileTranslationCache, UnsyncedFiles, GetUnsyncedFiles, IntegrationSyncedData } from '../modules/integration/util/types';
6
- import { UserErrors } from './types';
7
- export interface D1StorageConfig {
8
- /**
9
- * Cloudflare D1 database binding
10
- * This should be passed from env.DB in Workers/Pages Functions
11
- */
12
- database: D1Database;
13
- }
14
- export declare class D1Storage implements Storage {
15
- private db;
16
- private migrated;
17
- tables: {
18
- crowdin_credentials: string;
19
- integration_credentials: string;
20
- sync_settings: string;
21
- app_metadata: string;
22
- files_snapshot: string;
23
- webhooks: string;
24
- user_errors: string;
25
- integration_settings: string;
26
- job: string;
27
- translation_file_cache: string;
28
- unsynced_files: string;
29
- synced_data: string;
30
- };
31
- constructor(config: D1StorageConfig);
32
- ensureMigrated(): Promise<void>;
33
- migrate(): Promise<void>;
34
- saveCrowdinCredentials(credentials: CrowdinCredentials): Promise<void>;
35
- updateCrowdinCredentials(credentials: CrowdinCredentials): Promise<void>;
36
- getCrowdinCredentials(id: string): Promise<CrowdinCredentials | undefined>;
37
- getAllCrowdinCredentials(): Promise<CrowdinCredentials[]>;
38
- deleteCrowdinCredentials(id: string): Promise<void>;
39
- saveIntegrationCredentials(id: string, credentials: any, crowdinId: string): Promise<void>;
40
- updateIntegrationCredentials(id: string, credentials: any): Promise<void>;
41
- updateIntegrationManagers(id: string, managers: any): Promise<void>;
42
- getIntegrationCredentials(id: string): Promise<IntegrationCredentials | undefined>;
43
- getAllIntegrationCredentials(crowdinId: string): Promise<IntegrationCredentials[]>;
44
- deleteIntegrationCredentials(id: string): Promise<void>;
45
- deleteAllIntegrationCredentials(crowdinId: string): Promise<void>;
46
- saveMetadata(id: string, metadata: any, crowdinId: string): Promise<void>;
47
- updateMetadata(id: string, metadata: any, crowdinId: string): Promise<void>;
48
- getMetadata(id: string): Promise<any>;
49
- getAllMetadata(): Promise<any[]>;
50
- deleteMetadata(id: string): Promise<void>;
51
- getSyncSettingsByProvider(integrationId: string, provider: string): Promise<IntegrationSyncSettings | undefined>;
52
- getSyncSettingsBySchedule(type: string, schedule: string): Promise<IntegrationSyncSettings[]>;
53
- saveSyncSettings(files: any, integrationId: string, crowdinId: string, type: string, provider: string): Promise<void>;
54
- updateSyncSettings(files: any, integrationId: string, crowdinId: string, type: string, provider: string): Promise<void>;
55
- getSyncSettings(integrationId: string, crowdinId: string, type: string, provider: string): Promise<IntegrationSyncSettings | undefined>;
56
- saveFilesSnapshot(files: any, integrationId: string, crowdinId: string, provider: string): Promise<void>;
57
- updateFilesSnapshot(files: any, integrationId: string, crowdinId: string, provider: string): Promise<void>;
58
- getFilesSnapshot(integrationId: string, crowdinId: string, provider: string): Promise<IntegrationFilesSnapshot | undefined>;
59
- getAllWebhooks(integrationId: string, crowdinId: string, provider: string): Promise<IntegrationWebhooks[] | undefined>;
60
- getWebhooks(fileId: string, integrationId: string, crowdinId: string, provider: string): Promise<IntegrationWebhooks | undefined>;
61
- saveWebhooks(fileId: string, integrationId: string, crowdinId: string, provider: string): Promise<void>;
62
- deleteWebhooks(fileIds: any[], integrationId: string, crowdinId: string, provider: string): Promise<void>;
63
- getAllUserErrors(crowdinId: string, integrationId?: string): Promise<UserErrors[] | undefined>;
64
- saveUserError(action: string, message: string, data: any, createdAt: string, crowdinId: string, integrationId?: string): Promise<void>;
65
- deleteUserErrors(date: string, crowdinId: string, integrationId?: string): Promise<void>;
66
- deleteAllUsersErrorsOlderThan(date: string): Promise<void>;
67
- saveIntegrationConfig(integrationId: string, crowdinId: string, config: any): Promise<void>;
68
- getAllIntegrationConfigs(crowdinId: string): Promise<IntegrationConfig[]>;
69
- getIntegrationConfig(integrationId: string): Promise<IntegrationConfig | undefined>;
70
- updateIntegrationConfig(integrationId: string, config: any): Promise<void>;
71
- createJob(params: CreateJobParams): Promise<string>;
72
- updateJob(params: UpdateJobParams): Promise<void>;
73
- getJob(params: GetJobParams): Promise<Job | undefined>;
74
- getActiveJobs(params: GetActiveJobsParams): Promise<Job[] | undefined>;
75
- deleteFinishedJobs(): Promise<void>;
76
- getAllInProgressJobs(): Promise<Job[] | undefined>;
77
- saveTranslationCache(params: TranslationCache): Promise<void>;
78
- getFileTranslationCache(params: GetFileTranslationCache): Promise<TranslationCache[] | undefined>;
79
- getFileTranslationCacheByLanguage(params: GetFileTranslationCacheByLanguageParams): Promise<TranslationCache | undefined>;
80
- updateTranslationCache(params: UpdateTranslationCacheParams): Promise<void>;
81
- saveUnsyncedFiles(params: UnsyncedFiles): Promise<void>;
82
- updateUnsyncedFiles(params: UnsyncedFiles): Promise<void>;
83
- getUnsyncedFiles(params: GetUnsyncedFiles): Promise<UnsyncedFiles | undefined>;
84
- registerCustomTable(tableName: string, schema: Record<string, string>): Promise<void>;
85
- insertRecord(tableName: string, data: Record<string, any>): Promise<void>;
86
- selectRecords(tableName: string, options?: {
87
- columns?: string[];
88
- whereClause?: string;
89
- orderBy?: string;
90
- limit?: number;
91
- offset?: number;
92
- distinct?: boolean;
93
- }, params?: any[]): Promise<any[]>;
94
- updateRecord(tableName: string, data: Record<string, any>, whereClause: string, params?: any[]): Promise<void>;
95
- deleteRecord(tableName: string, whereClause: string, params?: any[]): Promise<void>;
96
- saveSyncedData(files: any, integrationId: string, crowdinId: string, type: string): Promise<void>;
97
- updateSyncedData(files: any, integrationId: string, crowdinId: string, type: string): Promise<void>;
98
- getSyncedData(integrationId: string, crowdinId: string, type: string): Promise<IntegrationSyncedData | undefined>;
99
- }