Skip to content

Commit

Permalink
Getting close
Browse files Browse the repository at this point in the history
  • Loading branch information
wagenet committed Mar 8, 2022
1 parent e24cc18 commit 49d5ad0
Show file tree
Hide file tree
Showing 10 changed files with 140 additions and 68 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
.github-upload-token
InstalledFiles
/api-report
/api-report-dt
coverage
dist
/docs
Expand Down
162 changes: 114 additions & 48 deletions build-docs.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ const typescript = require('@rollup/plugin-typescript');
const { default: dts } = require('rollup-plugin-dts');
const { existsSync } = require('fs');
const { writeFile, mkdir, cp } = require('fs/promises');
const TypeDoc = require('typedoc');
const { patch } = require('semver');
// const { readFile } = require('fs/promises');

class Package {
Expand Down Expand Up @@ -156,9 +158,9 @@ function extract(package) {

async function run() {
const packages = [
// '@ember/-internals/browser-environment',
// '@ember/-internals/container',
// '@ember/-internals/environment',
// '@ember/-internals/browser-environment',
// '@ember/-internals/container',
// '@ember/-internals/environment',
// '@ember/-internals/error-handling',
// '@ember/-internals/extension-support',
// '@ember/-internals/glimmer',
Expand All @@ -170,47 +172,47 @@ async function run() {
// '@ember/-internals/runtime',
// '@ember/-internals/utils',
// '@ember/-internals/views',
// '@ember/application',
// '@ember/application/instance',
// '@ember/application/namespace',
// '@ember/array',
// '@ember/array/mutable',
// '@ember/array/proxy',
// '@ember/canary-features',
// '@ember/component',
// '@ember/component/helper',
// '@ember/component/template-only',
// '@ember/controller',
// '@ember/debug',
// '@ember/destroyable',
'@ember/application',
'@ember/application/instance',
'@ember/application/namespace',
'@ember/array',
'@ember/array/mutable',
'@ember/array/proxy',
'@ember/canary-features',
'@ember/component',
'@ember/component/helper',
'@ember/component/template-only',
'@ember/controller',
'@ember/debug',
'@ember/destroyable',
'@ember/engine',
'@ember/engine/instance',
// '@ember/error',
// '@ember/helper',
// '@ember/object',
// '@ember/object/compat',
// '@ember/object/computed',
// '@ember/object/core',
// '@ember/object/evented',
// '@ember/object/events',
// '@ember/object/mixin',
// '@ember/object/observable',
// '@ember/object/observers',
// '@ember/polyfills',
// '@ember/routing',
// '@ember/routing/auto-location',
// '@ember/routing/hash-location',
// '@ember/routing/history-location',
// '@ember/routing/location',
// '@ember/routing/none-location',
// '@ember/routing/route',
// '@ember/routing/router',
// '@ember/routing/router-service',
// '@ember/runloop',
// '@ember/service',
// '@ember/template',
'@ember/error',
'@ember/helper',
'@ember/object',
'@ember/object/compat',
'@ember/object/computed',
'@ember/object/core',
'@ember/object/evented',
'@ember/object/events',
'@ember/object/mixin',
'@ember/object/observable',
'@ember/object/observers',
'@ember/polyfills',
'@ember/routing',
'@ember/routing/auto-location',
'@ember/routing/hash-location',
'@ember/routing/history-location',
'@ember/routing/location',
'@ember/routing/none-location',
'@ember/routing/route',
'@ember/routing/router',
'@ember/routing/router-service',
'@ember/runloop',
'@ember/service',
'@ember/template',
'@ember/utils',
// '@ember/version',
'@ember/version',
// 'ember',
].map((p) => {
let path = ['.ts', '.js', '/index.ts', '/index.js']
Expand Down Expand Up @@ -250,6 +252,44 @@ async function run() {
await extract(pkg);
}

if (process.env.DT_DIR) {
for (let pkg of packages) {
if (pkg.name.startsWith('@ember')) {
let dtDir = path.resolve(process.env.DT_DIR);
let dtPackage = pkg.outPath.dir.slice(1).replace('/', '__');
let entryPoint = `${dtDir}/types/${dtPackage}/${pkg.outPath.name}.d.ts`;
console.log(dtPackage, entryPoint);
if (existsSync(entryPoint)) {
const config = ExtractorConfig.prepare({
configObject: {
mainEntryPointFilePath: entryPoint,
apiReport: {
enabled: true,
reportFileName: `${pkg.fileSafeName}.api.md`,
reportFolder: `${__dirname}/api-report-dt`,
reportTempFolder: `${__dirname}/api-report-dt`,
},
compiler: {
tsconfigFilePath: `${dtDir}/types/${dtPackage}/tsconfig.json`,
},
projectFolder: dtDir,
},
});

config.packageFolder = __dirname;
config.packageJson = {
name: pkg.docsPackageName,
};

Extractor.invoke(config, {
localBuild: true,
showVerboseMessages: true,
});
}
}
}
}

for (let pkg of packages) {
for (let r of ['beta', 'release', 'untrimmed']) {
await mkdir(`types/${r}/${pkg.outPath.dir}`, { recursive: true });
Expand All @@ -260,13 +300,39 @@ async function run() {
}
}

// // https://github.com/microsoft/rushstack/issues/2895
// for await (const item of klaw(path.join(__dirname, 'docs-out'))) {
// if (item.stats.isFile()) {
// let data = await readFile(item.path);
// await writeFile(item.path, data.toString().replace(/_2/g, ''));
// }
// }
let packageGroups = {};

for (let pkg of packages) {
packageGroups[pkg.outPath.dir] ??= [];
packageGroups[pkg.outPath.dir].push(pkg.absolutePath);
}

for (let [group, entryPoints] of Object.entries(packageGroups)) {
const app = new TypeDoc.Application();

app.options.addReader(new TypeDoc.TSConfigReader());
// app.options.addReader(new TypeDoc.TypeDocReader());

app.bootstrap({
// tsconfig: 'tsconfig.typedoc.json',
name: group,
readme: 'none',
entryPoints: entryPoints.map((ep) => path.relative(__dirname, ep.replace(/\.js$/, '.d.ts'))),
excludeInternal: true,
});

const project = app.convert();

if (project) {
// Project may not have converted correctly
const outputDir = `docs/${group}`;

// Rendered docs
await app.generateDocs(project, outputDir);
// Alternatively generate JSON output
await app.generateJson(project, outputDir + '/documentation.json');
}
}
}

run();
5 changes: 2 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -45,15 +45,14 @@
"test:blueprints": "mocha node-tests/blueprints/**/*-test.js",
"test:node": "qunit tests/node/**/*-test.js",
"test:browserstack": "node bin/run-browserstack-tests.js",
"docs:ts": "yarn docs:clean && node build-docs.js && api-documenter markdown -i docs-out -o docs",
"docs:clean": "rimraf temp docs-out docs types"
"docs:ts": "yarn docs:clean && node build-docs.js",
"docs:clean": "rimraf api-report api-report-dt docs types tmp"
},
"dependencies": {
"@babel/helper-module-imports": "^7.16.7",
"@babel/plugin-transform-block-scoping": "^7.16.0",
"@ember/edition-utils": "^1.2.0",
"@glimmer/vm-babel-plugins": "0.83.1",
"@microsoft/api-documenter": "^7.15.3",
"babel-plugin-debug-macros": "^0.3.4",
"babel-plugin-filter-imports": "^4.0.0",
"broccoli-concat": "^4.2.5",
Expand Down
14 changes: 4 additions & 10 deletions packages/@ember/-internals/runtime/lib/mixins/array.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,6 @@ interface EmberArray<T> extends Enumerable {
declare const EmberArray: Mixin;
export default EmberArray;

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

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

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

/**
* Creates a {@link @ember/array!NativeArray:var} from an Array-like object.
* Creates a {@link index.NativeArray | NativeArray} from an Array-like object.
*
* @remarks
* Does not modify the original object's contents. `A()` is not needed if
Expand Down Expand Up @@ -164,10 +162,6 @@ export { NativeArray };
* @public
*/
export function A<A>(arr: A): A extends Array<infer V> ? NativeArray<V> : NativeArray<unknown>;
/**
* {@inheritDoc @ember/array!A:function(1)}
* @public
*/
export function A<T>(): NativeArray<T>;

export function removeAt<T>(array: T[] | EmberArray<T>, start: number, len: number): EmberArray<T>;
Expand All @@ -184,7 +178,7 @@ export function uniqBy<T>(array: T[], keyOrFunc: string | ((item: T) => unknown)
* - the object is an Object, and has a length property
*
* Unlike `typeOf` this method returns true even if the passed object is
* not formally an array but appears to be array-like (i.e. implements {@link EmberArray:var})
* not formally an array but appears to be array-like (i.e. implements {@link index.default | EmberArray})
*
* @example
* ```javascript
Expand Down
1 change: 1 addition & 0 deletions packages/@ember/-internals/views/lib/compat/attrs.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export let MUTABLE_CELL: symbol;
7 changes: 7 additions & 0 deletions packages/@ember/-internals/views/lib/component_lookup.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import { Factory, Owner, TypeOptions } from '@ember/-internals/owner';
import { Object as EmberObject } from '@ember/-internals/runtime';

export default class ComponentLookup extends EmberObject {
componentFor(name: string, owner: Owner): Factory<unknown> | undefined;
lookup(fullName: string, options?: TypeOptions): unknown;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
export default class ActionManager {
static registeredActions: Record<string, unknown>;
}
3 changes: 2 additions & 1 deletion packages/@ember/controller/lib/controller_mixin.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import Mixin from '@ember/object/mixin';
import Route from '@ember/routing/route';
import { Transition } from 'router_js';

/* @internal */
/** @internal */
interface ControllerMixin<T> {
/** @internal */
_qpDelegate: unknown | null;
Expand All @@ -22,6 +22,7 @@ interface ControllerMixin<T> {

replaceRoute(...args: RouteArgs<Route>): Transition;
}
/** @internal */
declare const ControllerMixin: Mixin;

export { ControllerMixin as default };
7 changes: 4 additions & 3 deletions tsconfig.typedoc.json
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
{
"extends": "./tsconfig.json",
"compilerOptions": {
"moduleResolution": "node",
"baseUrl": ".",
"paths": {
"@ember/object": ["packages/@ember/object"],
"backburner": ["node_modules/backburner.js/dist/backburner.d.ts"],
"*": ["types/untrimmed/*", "packages/*"]
}
},
"skipLibCheck": true
},
"include": ["types/**/*.ts"]
}
5 changes: 2 additions & 3 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -10478,10 +10478,9 @@ typedarray-to-buffer@^3.1.5:
dependencies:
is-typedarray "^1.0.0"

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

0 comments on commit 49d5ad0

Please sign in to comment.