@@ -8,6 +8,8 @@ const typescript = require('@rollup/plugin-typescript');
88const { default : dts } = require ( 'rollup-plugin-dts' ) ;
99const { existsSync } = require ( 'fs' ) ;
1010const { writeFile, mkdir, cp } = require ( 'fs/promises' ) ;
11+ const TypeDoc = require ( 'typedoc' ) ;
12+ const { patch } = require ( 'semver' ) ;
1113// const { readFile } = require('fs/promises');
1214
1315class Package {
@@ -156,9 +158,9 @@ function extract(package) {
156158
157159async function run ( ) {
158160 const packages = [
159- // '@ember/-internals/browser-environment',
160- // '@ember/-internals/container',
161- // '@ember/-internals/environment',
161+ // '@ember/-internals/browser-environment',
162+ // '@ember/-internals/container',
163+ // '@ember/-internals/environment',
162164 // '@ember/-internals/error-handling',
163165 // '@ember/-internals/extension-support',
164166 // '@ember/-internals/glimmer',
@@ -170,47 +172,47 @@ async function run() {
170172 // '@ember/-internals/runtime',
171173 // '@ember/-internals/utils',
172174 // '@ember/-internals/views',
173- // '@ember/application',
174- // '@ember/application/instance',
175- // '@ember/application/namespace',
176- // '@ember/array',
177- // '@ember/array/mutable',
178- // '@ember/array/proxy',
179- // '@ember/canary-features',
180- // '@ember/component',
181- // '@ember/component/helper',
182- // '@ember/component/template-only',
183- // '@ember/controller',
184- // '@ember/debug',
185- // '@ember/destroyable',
175+ '@ember/application' ,
176+ '@ember/application/instance' ,
177+ '@ember/application/namespace' ,
178+ '@ember/array' ,
179+ '@ember/array/mutable' ,
180+ '@ember/array/proxy' ,
181+ '@ember/canary-features' ,
182+ '@ember/component' ,
183+ '@ember/component/helper' ,
184+ '@ember/component/template-only' ,
185+ '@ember/controller' ,
186+ '@ember/debug' ,
187+ '@ember/destroyable' ,
186188 '@ember/engine' ,
187189 '@ember/engine/instance' ,
188- // '@ember/error',
189- // '@ember/helper',
190- // '@ember/object',
191- // '@ember/object/compat',
192- // '@ember/object/computed',
193- // '@ember/object/core',
194- // '@ember/object/evented',
195- // '@ember/object/events',
196- // '@ember/object/mixin',
197- // '@ember/object/observable',
198- // '@ember/object/observers',
199- // '@ember/polyfills',
200- // '@ember/routing',
201- // '@ember/routing/auto-location',
202- // '@ember/routing/hash-location',
203- // '@ember/routing/history-location',
204- // '@ember/routing/location',
205- // '@ember/routing/none-location',
206- // '@ember/routing/route',
207- // '@ember/routing/router',
208- // '@ember/routing/router-service',
209- // '@ember/runloop',
210- // '@ember/service',
211- // '@ember/template',
190+ '@ember/error' ,
191+ '@ember/helper' ,
192+ '@ember/object' ,
193+ '@ember/object/compat' ,
194+ '@ember/object/computed' ,
195+ '@ember/object/core' ,
196+ '@ember/object/evented' ,
197+ '@ember/object/events' ,
198+ '@ember/object/mixin' ,
199+ '@ember/object/observable' ,
200+ '@ember/object/observers' ,
201+ '@ember/polyfills' ,
202+ '@ember/routing' ,
203+ '@ember/routing/auto-location' ,
204+ '@ember/routing/hash-location' ,
205+ '@ember/routing/history-location' ,
206+ '@ember/routing/location' ,
207+ '@ember/routing/none-location' ,
208+ '@ember/routing/route' ,
209+ '@ember/routing/router' ,
210+ '@ember/routing/router-service' ,
211+ '@ember/runloop' ,
212+ '@ember/service' ,
213+ '@ember/template' ,
212214 '@ember/utils' ,
213- // '@ember/version',
215+ '@ember/version' ,
214216 // 'ember',
215217 ] . map ( ( p ) => {
216218 let path = [ '.ts' , '.js' , '/index.ts' , '/index.js' ]
@@ -250,6 +252,44 @@ async function run() {
250252 await extract ( pkg ) ;
251253 }
252254
255+ if ( process . env . DT_DIR ) {
256+ for ( let pkg of packages ) {
257+ if ( pkg . name . startsWith ( '@ember' ) ) {
258+ let dtDir = path . resolve ( process . env . DT_DIR ) ;
259+ let dtPackage = pkg . outPath . dir . slice ( 1 ) . replace ( '/' , '__' ) ;
260+ let entryPoint = `${ dtDir } /types/${ dtPackage } /${ pkg . outPath . name } .d.ts` ;
261+ console . log ( dtPackage , entryPoint ) ;
262+ if ( existsSync ( entryPoint ) ) {
263+ const config = ExtractorConfig . prepare ( {
264+ configObject : {
265+ mainEntryPointFilePath : entryPoint ,
266+ apiReport : {
267+ enabled : true ,
268+ reportFileName : `${ pkg . fileSafeName } .api.md` ,
269+ reportFolder : `${ __dirname } /api-report-dt` ,
270+ reportTempFolder : `${ __dirname } /api-report-dt` ,
271+ } ,
272+ compiler : {
273+ tsconfigFilePath : `${ dtDir } /types/${ dtPackage } /tsconfig.json` ,
274+ } ,
275+ projectFolder : dtDir ,
276+ } ,
277+ } ) ;
278+
279+ config . packageFolder = __dirname ;
280+ config . packageJson = {
281+ name : pkg . docsPackageName ,
282+ } ;
283+
284+ Extractor . invoke ( config , {
285+ localBuild : true ,
286+ showVerboseMessages : true ,
287+ } ) ;
288+ }
289+ }
290+ }
291+ }
292+
253293 for ( let pkg of packages ) {
254294 for ( let r of [ 'beta' , 'release' , 'untrimmed' ] ) {
255295 await mkdir ( `types/${ r } /${ pkg . outPath . dir } ` , { recursive : true } ) ;
@@ -260,13 +300,39 @@ async function run() {
260300 }
261301 }
262302
263- // // https://github.com/microsoft/rushstack/issues/2895
264- // for await (const item of klaw(path.join(__dirname, 'docs-out'))) {
265- // if (item.stats.isFile()) {
266- // let data = await readFile(item.path);
267- // await writeFile(item.path, data.toString().replace(/_2/g, ''));
268- // }
269- // }
303+ let packageGroups = { } ;
304+
305+ for ( let pkg of packages ) {
306+ packageGroups [ pkg . outPath . dir ] ??= [ ] ;
307+ packageGroups [ pkg . outPath . dir ] . push ( pkg . absolutePath ) ;
308+ }
309+
310+ for ( let [ group , entryPoints ] of Object . entries ( packageGroups ) ) {
311+ const app = new TypeDoc . Application ( ) ;
312+
313+ app . options . addReader ( new TypeDoc . TSConfigReader ( ) ) ;
314+ // app.options.addReader(new TypeDoc.TypeDocReader());
315+
316+ app . bootstrap ( {
317+ // tsconfig: 'tsconfig.typedoc.json',
318+ name : group ,
319+ readme : 'none' ,
320+ entryPoints : entryPoints . map ( ( ep ) => path . relative ( __dirname , ep . replace ( / \. j s $ / , '.d.ts' ) ) ) ,
321+ excludeInternal : true ,
322+ } ) ;
323+
324+ const project = app . convert ( ) ;
325+
326+ if ( project ) {
327+ // Project may not have converted correctly
328+ const outputDir = `docs/${ group } ` ;
329+
330+ // Rendered docs
331+ await app . generateDocs ( project , outputDir ) ;
332+ // Alternatively generate JSON output
333+ await app . generateJson ( project , outputDir + '/documentation.json' ) ;
334+ }
335+ }
270336}
271337
272338run ( ) ;
0 commit comments