2025-07-11 11:11:56 -07:00
|
|
|
/**
|
2025-07-14 11:12:51 -07:00
|
|
|
* CRITICAL: This file is imported for its side effects to patch the environment
|
2025-07-11 11:11:56 -07:00
|
|
|
* for TensorFlow.js before any other library code runs.
|
|
|
|
|
*
|
|
|
|
|
* It ensures that by the time TensorFlow.js is imported by any other
|
|
|
|
|
* module, the necessary compatibility fixes for the current Node.js
|
|
|
|
|
* environment are already in place.
|
2025-07-14 11:12:51 -07:00
|
|
|
*
|
|
|
|
|
* This file MUST be imported as the first import in unified.ts to prevent
|
|
|
|
|
* race conditions with TensorFlow.js initialization. Failure to do so will
|
|
|
|
|
* result in errors like "TextEncoder is not a constructor" when the package
|
|
|
|
|
* is used in Node.js environments.
|
|
|
|
|
*
|
|
|
|
|
* The package.json file marks this file as having side effects to prevent
|
|
|
|
|
* tree-shaking by bundlers, ensuring the patch is always applied.
|
2025-07-11 11:11:56 -07:00
|
|
|
*/
|
2025-07-14 11:12:51 -07:00
|
|
|
|
2025-07-16 13:51:00 -07:00
|
|
|
// Get the appropriate global object for the current environment
|
|
|
|
|
const globalObj = (() => {
|
|
|
|
|
if (typeof globalThis !== 'undefined') return globalThis
|
|
|
|
|
if (typeof global !== 'undefined') return global
|
|
|
|
|
if (typeof self !== 'undefined') return self
|
|
|
|
|
return null // No global object available
|
|
|
|
|
})()
|
|
|
|
|
|
|
|
|
|
// Define TextEncoder and TextDecoder globally to make sure they're available
|
|
|
|
|
// Now works across all environments: Node.js, serverless, and other server environments
|
|
|
|
|
if (globalObj) {
|
|
|
|
|
if (!globalObj.TextEncoder) {
|
|
|
|
|
globalObj.TextEncoder = TextEncoder
|
|
|
|
|
}
|
|
|
|
|
if (!globalObj.TextDecoder) {
|
|
|
|
|
globalObj.TextDecoder = TextDecoder
|
2025-07-14 11:12:51 -07:00
|
|
|
}
|
2025-07-16 13:51:00 -07:00
|
|
|
|
|
|
|
|
// Create a special global constructor that TensorFlow can use safely
|
|
|
|
|
;(globalObj as any).__TextEncoder__ = TextEncoder
|
|
|
|
|
;(globalObj as any).__TextDecoder__ = TextDecoder
|
2025-07-14 11:12:51 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Also import normally for ES modules environments
|
2025-07-11 11:11:56 -07:00
|
|
|
import { applyTensorFlowPatch } from './utils/textEncoding.js'
|
|
|
|
|
|
2025-07-16 13:51:00 -07:00
|
|
|
// Apply the TensorFlow.js platform patch
|
2025-07-11 11:11:56 -07:00
|
|
|
applyTensorFlowPatch()
|
2025-07-16 13:51:00 -07:00
|
|
|
console.log('Applied TensorFlow.js patch via ES modules in setup.ts')
|