|
1 | | -import * as wbl from '@angular-devkit/build-angular/src/tools/babel/webpack-loader.js'; |
2 | | -import * as app from '@angular-devkit/build-angular/src/tools/babel/presets/application.js'; |
3 | | -import * as cp from '@angular-devkit/build-angular/src/tools/esbuild/angular/compiler-plugin.js'; |
| 1 | +import { VERSION } from '@angular/compiler-cli'; |
| 2 | +import { createRequire } from 'node:module'; |
| 3 | +import type { CompilerPluginOptions } from './compiler-plugin-options.js'; |
4 | 4 | import * as sfc from './source-file-cache.js'; |
5 | 5 |
|
6 | | -let requiresLinking: Function; |
7 | | -/** |
8 | | - * Workaround for compatibility with Angular 16.2+ |
9 | | - */ |
10 | | -if (typeof (wbl as any)['requiresLinking'] !== 'undefined') { |
11 | | - requiresLinking = (wbl as any).requiresLinking; |
12 | | -} else if (typeof (app as any)['requiresLinking'] !== 'undefined') { |
13 | | - requiresLinking = (app as any)['requiresLinking'] as Function; |
14 | | -} |
| 6 | +const require = createRequire(import.meta.url); |
15 | 7 |
|
16 | | -/** |
17 | | - * Workaround for compatibility with Angular 17.0+ |
18 | | - */ |
| 8 | +const angularVersion = Number(VERSION.major); |
| 9 | +let requiresLinking: Function; |
19 | 10 | let sourceFileCache: any; |
20 | | -if (typeof (cp as any)['SourceFileCache'] !== 'undefined') { |
21 | | - sourceFileCache = (cp as any).SourceFileCache; |
| 11 | +let cjt: Function; |
| 12 | +let jt: any; |
| 13 | +let angularApplicationPreset: Function; |
| 14 | + |
| 15 | +if (angularVersion < 15) { |
| 16 | + throw new Error('AnalogJS is not compatible with Angular v14 and lower'); |
| 17 | +} else if (angularVersion >= 15 && angularVersion < 16) { |
| 18 | + const app = require('@angular-devkit/build-angular/src/babel/presets/application.js'); |
| 19 | + const wbl = require('@angular-devkit/build-angular/src/babel/webpack-loader.js'); |
| 20 | + const cp = require('@angular-devkit/build-angular/src/builders/browser-esbuild/compiler-plugin.js'); |
| 21 | + const { |
| 22 | + createJitResourceTransformer, |
| 23 | + } = require('@angular-devkit/build-angular/src/builders/browser-esbuild/angular/jit-resource-transformer.js'); |
| 24 | + const { |
| 25 | + JavaScriptTransformer, |
| 26 | + } = require('@angular-devkit/build-angular/src/builders/browser-esbuild/javascript-transformer.js'); |
| 27 | + |
| 28 | + requiresLinking = wbl.requiresLinking; |
| 29 | + sourceFileCache = cp.SourceFileCache; |
| 30 | + cjt = createJitResourceTransformer; |
| 31 | + jt = JavaScriptTransformer; |
| 32 | + angularApplicationPreset = app.default; |
| 33 | +} else if (angularVersion >= 16 && angularVersion < 18) { |
| 34 | + const app = require('@angular-devkit/build-angular/src/tools/babel/presets/application.js'); |
| 35 | + const wbl = require('@angular-devkit/build-angular/src/tools/babel/webpack-loader.js'); |
| 36 | + const cp = require('@angular-devkit/build-angular/src/tools/esbuild/angular/compiler-plugin.js'); |
| 37 | + const { |
| 38 | + createJitResourceTransformer, |
| 39 | + } = require('@angular-devkit/build-angular/src/tools/esbuild/angular/jit-resource-transformer.js'); |
| 40 | + const { |
| 41 | + JavaScriptTransformer, |
| 42 | + } = require('@angular-devkit/build-angular/src/tools/esbuild/javascript-transformer.js'); |
| 43 | + |
| 44 | + /** |
| 45 | + * Workaround for compatibility with Angular 16.2+ |
| 46 | + */ |
| 47 | + if (typeof wbl['requiresLinking'] !== 'undefined') { |
| 48 | + requiresLinking = wbl.requiresLinking; |
| 49 | + } else if (typeof app['requiresLinking'] !== 'undefined') { |
| 50 | + requiresLinking = app['requiresLinking']; |
| 51 | + } |
| 52 | + /** |
| 53 | + * Workaround for compatibility with Angular 17.0+ |
| 54 | + */ |
| 55 | + if (typeof cp['SourceFileCache'] !== 'undefined') { |
| 56 | + sourceFileCache = cp.SourceFileCache; |
| 57 | + } else { |
| 58 | + sourceFileCache = sfc.SourceFileCache; |
| 59 | + } |
| 60 | + |
| 61 | + cjt = createJitResourceTransformer; |
| 62 | + jt = JavaScriptTransformer; |
| 63 | + angularApplicationPreset = app.default; |
22 | 64 | } else { |
23 | | - sourceFileCache = sfc.SourceFileCache; |
24 | | -} |
| 65 | + const { |
| 66 | + createJitResourceTransformer, |
| 67 | + JavaScriptTransformer, |
| 68 | + SourceFileCache, |
| 69 | + } = require('@angular/build/private'); |
| 70 | + const app = require('@angular-devkit/build-angular/src/tools/babel/presets/application.js'); |
25 | 71 |
|
26 | | -const angularApplicationPreset = app.default; |
27 | | -import { createJitResourceTransformer } from '@angular-devkit/build-angular/src/tools/esbuild/angular/jit-resource-transformer.js'; |
28 | | -import { CompilerPluginOptions } from '@angular-devkit/build-angular/src/tools/esbuild/angular/compiler-plugin.js'; |
29 | | -import { JavaScriptTransformer } from '@angular-devkit/build-angular/src/tools/esbuild/javascript-transformer.js'; |
| 72 | + requiresLinking = app.requiresLinking; |
| 73 | + sourceFileCache = SourceFileCache; |
| 74 | + cjt = createJitResourceTransformer; |
| 75 | + jt = JavaScriptTransformer; |
| 76 | + angularApplicationPreset = app.default; |
| 77 | +} |
30 | 78 |
|
31 | 79 | export { |
32 | 80 | requiresLinking, |
33 | 81 | angularApplicationPreset, |
34 | | - createJitResourceTransformer, |
35 | | - CompilerPluginOptions, |
36 | | - JavaScriptTransformer, |
| 82 | + cjt as createJitResourceTransformer, |
| 83 | + jt as JavaScriptTransformer, |
37 | 84 | sourceFileCache as SourceFileCache, |
| 85 | + CompilerPluginOptions, |
38 | 86 | }; |
0 commit comments