Skip to content

v1.0.0

Major release introducing Cloudflare Workers support, Express 5 upgrade, and architectural improvements.

  • Action required: Test your application thoroughly after upgrading
  • Potential issues: Some third-party middleware may need updates, subtle error handling differences
  • Action required: If using S3 file processing, manually install:
    Terminal window
    npm install @aws-sdk/client-s3 @aws-sdk/s3-request-presigner
  • Benefit: Smaller bundle size for apps not using AWS S3

All functions now follow the parameter object pattern (also known as an options object or named parameters via destructuring).

This means functions that previously took several positional arguments now accept a single options object — destructured in the signature — which improves readability and makes optional parameters easier to manage.

Before:

// positional parameters
getCrowdinFiles: (projectId: number, client: Crowdin, appRootFolder?: SourceFilesModel.Directory, config?: any, mode?: CrowdinFilesLoadMode) => Promise<TreeItem[]>;

After:

// parameter object (destructured)
getCrowdinFiles: (options: {
projectId: number;
client: Crowdin;
rootFolder?: SourceFilesModel.Directory;
settings?: any;
mode?: CrowdinFilesLoadMode;
}) => Promise<TreeItem[]>;

Example:

Before:

configuration.projectIntegration.cronJobs = [
{
expression: '*/10 * * * * *',
task: (projectId, credentials, rootFolder, settings) => {
console.log(`Running background task for project: ${projectId}`);
console.log(`Api credentials: ${JSON.stringify(credentials)}`);
console.log(`App config: ${JSON.stringify(settings)}`);
console.log(rootFolder ? JSON.stringify(rootFolder) : 'No root folder');
}
}
];

After:

configuration.projectIntegration.cronJobs = [
{
expression: '*/10 * * * * *',
task: ({ projectId, credentials, rootFolder, settings } = {}) => {
console.log(`Running background task for project: ${projectId}`);
console.log(`Api credentials: ${JSON.stringify(credentials)}`);
console.log(`App config: ${JSON.stringify(settings)}`);
console.log(rootFolder ? JSON.stringify(rootFolder) : 'No root folder');
}
}
];

List of all affected functions (some functions that already used parameter objects were renamed or had parameter names updated):

Updated functions (now accept a parameter object)

Section titled “Updated functions (now accept a parameter object)”

These functions now accept a single destructured options object (e.g., fn({ a, b, c })).

  • decryptCrowdinConnection
  • establishCrowdinConnection
  • log
  • onError
  • onUninstall
  • saveMetadata
  • aiPromptProvider
    • compile
  • aiProvider
    • chatCompletions
  • aiRequestPreCompile
    • processRequest
    • processStream
  • aiTools
    • toolCalls
  • automationAction
    • execute
    • validateSettings
  • customMT
    • translate

File processing (modules: customFileFormat, filePreImport, filePostImport, filePreExport, filePostExport, fileTranslationsAlignmentExport)

Section titled “File processing (modules: customFileFormat, filePreImport, filePostImport, filePreExport, filePostExport, fileTranslationsAlignmentExport)”
  • buildFile
  • exportStrings
  • fileProcess
  • parseFile
  • crowdinWebhookInterceptor
  • crowdinWebhooks
  • getAuthorizationUrl
  • getConfiguration
  • getCrowdinFiles
  • getFileProgress
  • getIntegrationFiles
  • integrationWebhookInterceptor
  • integrationWebhooks
  • matchCrowdinFilesToIntegrationFiles
  • normalizeSettings
  • onLogout
  • performGetTokenRequest (oauthLogin)
  • performRefreshTokenRequest (oauthLogin)
  • task
  • updateCrowdin
  • updateIntegration
  • validateSettings
  • D1 Database: d1Config for serverless SQL database
  • Custom Cron: cron option for Workers scheduled events
  • File Storage: fileStore interface for external storage (S3, R2, etc.)
  • Assets: assetsConfig for Workers Assets integration, assetsPath for custom static directory
  • Webhooks: deferResponse: true required for proper Workers execution
  1. Update package.json: "@crowdin/app-project-module": "^1.0.0"
  2. Install AWS SDK if needed: (see breaking changes above)
  3. Test Express 5 compatibility
  • Updated: Express 4 → 5, React 18 added (internal)
  • Moved to optional: AWS SDK packages