Skip to content

Commit 56dc9a7

Browse files
committed
Getting close
1 parent e24cc18 commit 56dc9a7

File tree

10 files changed

+140
-68
lines changed

10 files changed

+140
-68
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
.github-upload-token
88
InstalledFiles
99
/api-report
10+
/api-report-dt
1011
coverage
1112
dist
1213
/docs

build-docs.js

Lines changed: 114 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ const typescript = require('@rollup/plugin-typescript');
88
const { default: dts } = require('rollup-plugin-dts');
99
const { existsSync } = require('fs');
1010
const { writeFile, mkdir, cp } = require('fs/promises');
11+
const TypeDoc = require('typedoc');
12+
const { patch } = require('semver');
1113
// const { readFile } = require('fs/promises');
1214

1315
class Package {
@@ -156,9 +158,9 @@ function extract(package) {
156158

157159
async 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(/\.js$/, '.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

272338
run();

package.json

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,15 +45,14 @@
4545
"test:blueprints": "mocha node-tests/blueprints/**/*-test.js",
4646
"test:node": "qunit tests/node/**/*-test.js",
4747
"test:browserstack": "node bin/run-browserstack-tests.js",
48-
"docs:ts": "yarn docs:clean && node build-docs.js && api-documenter markdown -i docs-out -o docs",
49-
"docs:clean": "rimraf temp docs-out docs types"
48+
"docs:ts": "yarn docs:clean && node build-docs.js",
49+
"docs:clean": "rimraf api-report docs types tmp"
5050
},
5151
"dependencies": {
5252
"@babel/helper-module-imports": "^7.16.7",
5353
"@babel/plugin-transform-block-scoping": "^7.16.0",
5454
"@ember/edition-utils": "^1.2.0",
5555
"@glimmer/vm-babel-plugins": "0.83.1",
56-
"@microsoft/api-documenter": "^7.15.3",
5756
"babel-plugin-debug-macros": "^0.3.4",
5857
"babel-plugin-filter-imports": "^4.0.0",
5958
"broccoli-concat": "^4.2.5",

packages/@ember/-internals/runtime/lib/mixins/array.d.ts

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,6 @@ interface EmberArray<T> extends Enumerable {
6969
declare const EmberArray: Mixin;
7070
export default EmberArray;
7171

72-
/** {@inheritDoc @ember/array-mutable!MutableArray:var} */
7372
interface MutableArray<T> extends EmberArray<T>, MutableEnumerable {
7473
replace(idx: number, amt: number, objects: T[]): void;
7574
clear(): this;
@@ -94,7 +93,7 @@ interface MutableArray<T> extends EmberArray<T>, MutableEnumerable {
9493
* @remarks
9594
* These methods can be applied only to a collection that keeps its items in an
9695
* ordered set. It builds upon the Array mixin and adds methods to modify the array.
97-
* One concrete implementation of this class is {@link @ember/array-proxy!ArrayProxy}.
96+
* One concrete implementation of this class is {@link proxy.default | ArrayProxy}.
9897
*
9998
* It is important to use the methods in this class to modify arrays so that
10099
* changes are observable. This allows the binding system in Ember to function
@@ -111,13 +110,12 @@ export { MutableArray };
111110

112111
// NOTE: We have to Omit some definitions from Array because MutableArray defines them differently.
113112

114-
/** {@inheritDoc NativeArray:var} */
115113
interface NativeArray<T>
116114
extends Omit<Array<T>, 'every' | 'filter' | 'find' | 'forEach' | 'map' | 'reduce' | 'slice'>,
117115
MutableArray<T> {}
118116
/**
119117
* The NativeArray mixin contains the properties needed to make the native
120-
* Array support {@link @ember/array-mutable!MutableArray:var} and all of its dependent APIs.
118+
* Array support {@link mutable.default | MutableArray} and all of its dependent APIs.
121119
*
122120
* @remarks
123121
* Unless you have `EmberENV.EXTEND_PROTOTYPES` or `EmberENV.EXTEND_PROTOTYPES.Array`
@@ -130,7 +128,7 @@ declare const NativeArray: Array<unknown>;
130128
export { NativeArray };
131129

132130
/**
133-
* Creates a {@link @ember/array!NativeArray:var} from an Array-like object.
131+
* Creates a {@link index.NativeArray | NativeArray} from an Array-like object.
134132
*
135133
* @remarks
136134
* Does not modify the original object's contents. `A()` is not needed if
@@ -164,10 +162,6 @@ export { NativeArray };
164162
* @public
165163
*/
166164
export function A<A>(arr: A): A extends Array<infer V> ? NativeArray<V> : NativeArray<unknown>;
167-
/**
168-
* {@inheritDoc @ember/array!A:function(1)}
169-
* @public
170-
*/
171165
export function A<T>(): NativeArray<T>;
172166

173167
export function removeAt<T>(array: T[] | EmberArray<T>, start: number, len: number): EmberArray<T>;
@@ -184,7 +178,7 @@ export function uniqBy<T>(array: T[], keyOrFunc: string | ((item: T) => unknown)
184178
* - the object is an Object, and has a length property
185179
*
186180
* Unlike `typeOf` this method returns true even if the passed object is
187-
* not formally an array but appears to be array-like (i.e. implements {@link EmberArray:var})
181+
* not formally an array but appears to be array-like (i.e. implements {@link index.default | EmberArray})
188182
*
189183
* @example
190184
* ```javascript
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export let MUTABLE_CELL: symbol;
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { Factory, Owner, TypeOptions } from '@ember/-internals/owner';
2+
import { Object as EmberObject } from '@ember/-internals/runtime';
3+
4+
export default class ComponentLookup extends EmberObject {
5+
componentFor(name: string, owner: Owner): Factory<unknown> | undefined;
6+
lookup(fullName: string, options?: TypeOptions): unknown;
7+
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
export default class ActionManager {
2+
static registeredActions: Record<string, unknown>;
3+
}

packages/@ember/controller/lib/controller_mixin.d.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import Mixin from '@ember/object/mixin';
33
import Route from '@ember/routing/route';
44
import { Transition } from 'router_js';
55

6-
/* @internal */
6+
/** @internal */
77
interface ControllerMixin<T> {
88
/** @internal */
99
_qpDelegate: unknown | null;
@@ -22,6 +22,7 @@ interface ControllerMixin<T> {
2222

2323
replaceRoute(...args: RouteArgs<Route>): Transition;
2424
}
25+
/** @internal */
2526
declare const ControllerMixin: Mixin;
2627

2728
export { ControllerMixin as default };

tsconfig.typedoc.json

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
{
2+
"extends": "./tsconfig.json",
23
"compilerOptions": {
3-
"moduleResolution": "node",
44
"baseUrl": ".",
55
"paths": {
6-
"@ember/object": ["packages/@ember/object"],
6+
"backburner": ["node_modules/backburner.js/dist/backburner.d.ts"],
77
"*": ["types/untrimmed/*", "packages/*"]
8-
}
8+
},
9+
"skipLibCheck": true
910
},
1011
"include": ["types/**/*.ts"]
1112
}

yarn.lock

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10478,10 +10478,9 @@ typedarray-to-buffer@^3.1.5:
1047810478
dependencies:
1047910479
is-typedarray "^1.0.0"
1048010480

10481-
typedoc@^0.22.12:
10481+
typedoc@TypeStrong/typedoc#beta:
1048210482
version "0.22.12"
10483-
resolved "https://registry.yarnpkg.com/typedoc/-/typedoc-0.22.12.tgz#52a8bb0e77458dcbab35fb89e24b80160ba6558d"
10484-
integrity sha512-FcyC+YuaOpr3rB9QwA1IHOi9KnU2m50sPJW5vcNRPCIdecp+3bFkh7Rq5hBU1Fyn29UR2h4h/H7twZHWDhL0sw==
10483+
resolved "https://codeload.github.com/TypeStrong/typedoc/tar.gz/591dd3f3679fa70c998b40f6c543248b758c3269"
1048510484
dependencies:
1048610485
glob "^7.2.0"
1048710486
lunr "^2.3.9"

0 commit comments

Comments
 (0)