Skip to content

Commit e8741c5

Browse files
authored
Merge pull request #132 from ember-learn/esm
use esm properly with node
2 parents 4f8dabb + 0f55b57 commit e8741c5

22 files changed

+595
-1140
lines changed
File renamed without changes.

generate-local.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
import chalk from 'chalk';
22
import commandExists from 'command-exists';
33
import execa from 'execa';
4-
import { copyFileSync, ensureFileSync, existsSync, removeSync } from 'fs-extra';
4+
import fsExtra from 'fs-extra';
55
import minimist from 'minimist';
66
import path from 'path';
77

8+
const { copyFileSync, ensureFileSync, existsSync, removeSync } = fsExtra;
9+
810
const docsPath = '../ember-api-docs-data';
911

1012
const argv = minimist(process.argv.slice(2));
@@ -47,8 +49,8 @@ async function runCmd(cmd, path, args = []) {
4749
exit(chalk.red('We need yarn installed globally for this script to work'));
4850
}
4951

50-
let emberProjectPath = path.join(__dirname, '../', 'ember.js');
51-
let emberDataProjectPath = path.join(__dirname, '../', 'data');
52+
let emberProjectPath = path.join('../', 'ember.js');
53+
let emberDataProjectPath = path.join('../', 'data');
5254

5355
let checkIfProjectDirExists = dirPath => {
5456
if (!existsSync(dirPath)) {

index.js

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
// eslint-disable-next-line
2-
require = require('esm')(module /*, options*/)
1+
import minimist from 'minimist';
2+
import { apiDocsProcessor } from './main.js';
33

4-
const argv = require('minimist')(process.argv.slice(2));
4+
const argv = minimist(process.argv.slice(2));
55

66
let possibleProjects = ['ember', 'ember-data'];
77
let projects =
@@ -11,5 +11,4 @@ let specificDocsVersion = argv.version ? argv.version : '';
1111
let runClean = !!argv.clean;
1212
let noSync = !argv.sync;
1313

14-
const { apiDocsProcessor } = require('./main.js');
1514
apiDocsProcessor(projects, specificDocsVersion, runClean, noSync);

lib/add-inherited-items.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
import _ from 'lodash';
1+
import { clone, find, values } from 'lodash-es';
22

33
export default function addInheritedItems(docSets) {
44
docSets.forEach(versionData => {
55
let data = versionData.data;
6-
let classes = _.values(data.classes).filter(klass => klass && klass.name);
6+
let classes = values(data.classes).filter(klass => klass && klass.name);
77
classes = classes.filter(removeLongDocsBecauseEmber1HasWeirdDocs);
88
let classItems = data.classitems.filter(({ itemtype }) => itemtype);
99

@@ -17,7 +17,7 @@ export default function addInheritedItems(docSets) {
1717
if (!parent) return;
1818
let parentItems = classItems.filter(item => item.class === parent.name);
1919
parentItems = parentItems.map(item => {
20-
item = _.clone(item);
20+
item = clone(item);
2121
item.inherited = true;
2222
item.inheritedFrom = item.class;
2323
item.class = klass.name;
@@ -40,7 +40,7 @@ function getParents(klass, classes) {
4040
parents = parents.concat(klass.uses.reverse());
4141
}
4242
return parents
43-
.map(parent => _.find(classes, ({ name }) => name === parent))
43+
.map(parent => find(classes, ({ name }) => name === parent))
4444
.filter(parent => parent);
4545
}
4646

lib/add-since-tags.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import _ from 'lodash';
1+
import { chain, values } from 'lodash-es';
22

33
export default function addSinceTags(docSets) {
44
let versionIndex = Object.create(null);
@@ -14,7 +14,7 @@ export default function addSinceTags(docSets) {
1414
createMethodEntry(versionIndex, classItemName, classItem.itemtype, version);
1515
});
1616

17-
let classes = _.values(data.classes);
17+
let classes = values(data.classes);
1818

1919
classes.forEach(klass => {
2020
klass.version = version;
@@ -33,11 +33,11 @@ export default function addSinceTags(docSets) {
3333
classItem.since = version;
3434
});
3535

36-
let classes = _.chain(docSets)
36+
let classes = chain(docSets)
3737
.map('data')
3838
.map('classes')
3939
.flatten()
40-
.map(klassSet => _.values(klassSet))
40+
.map(klassSet => values(klassSet))
4141
.flatten()
4242
.value();
4343

lib/filter-jsonapi-doc.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,22 @@
1-
import _ from 'lodash';
1+
import { filter } from 'lodash-es';
22

33
function byType(document, type) {
4-
return _.filter(totalData(document), ['type', type]);
4+
return filter(totalData(document), ['type', type]);
55
}
66

77
function totalData({ data, included }) {
88
return data.concat(included || []);
99
}
1010

1111
function hasBelongsTo(document, relationshipName, relationshipValue) {
12-
return _.filter(totalData(document), [
12+
return filter(totalData(document), [
1313
`relationships.${relationshipName}.data.id`,
1414
relationshipValue,
1515
]);
1616
}
1717

1818
function classWithIncluded(document, klass) {
19-
let classDocument = _.filter(byType(document, 'class'), ['id', klass])[0];
19+
let classDocument = filter(byType(document, 'class'), ['id', klass])[0];
2020

2121
let related = hasBelongsTo(document, 'class', klass);
2222

lib/get-latest-patch-versions.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { groupBy } from 'lodash';
1+
import { groupBy } from 'lodash-es';
22
import semverCompare from 'semver-compare';
33
import semverUtils from 'semver-utils';
44

lib/modules-transform.js

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,23 @@
1-
import _ from 'lodash';
1+
import { curry, curryRight, filter, flow, has, partition, reduce, sortBy, values } from 'lodash-es';
22

33
function addSubModulesParentAttribute(moduleObj) {
44
moduleObj.parent = moduleObj.is_submodule ? moduleObj.module : null;
55
}
66

77
function filterStaticAndDerived(classes, className) {
88
let included =
9-
(_.has(classes, className) &&
10-
!_.has(classes[className], 'static') &&
11-
_.has(classes[className], 'file')) ||
12-
!_.has(classes, className);
9+
(has(classes, className) &&
10+
!has(classes[className], 'static') &&
11+
has(classes[className], 'file')) ||
12+
!has(classes, className);
1313
return included;
1414
}
1515

1616
function addPrivatePublicClassesAttributes(module, classes) {
1717
let classNames = Object.keys(module.classes);
18-
let applicableClassNames = _.filter(classNames, _.curry(filterStaticAndDerived)(classes));
18+
let applicableClassNames = filter(classNames, curry(filterStaticAndDerived)(classes));
1919

20-
let [privateclasses, publicclasses] = _.partition(applicableClassNames, className => {
20+
let [privateclasses, publicclasses] = partition(applicableClassNames, className => {
2121
return classes[className].access === 'private' || classes[className].deprecated === true;
2222
});
2323
module.publicclasses = publicclasses;
@@ -39,23 +39,23 @@ function separateByClassName(result, value) {
3939
}
4040

4141
function sortByName(items) {
42-
return _.sortBy(items, 'name');
42+
return sortBy(items, 'name');
4343
}
4444

4545
function separateFunctions(moduleName, classitems, accessFilter) {
4646
let matchesModule = ({ module }) => module === moduleName;
47-
return _.flow([
48-
_.curryRight(_.filter)(matchesModule),
49-
_.curryRight(_.filter)(accessFilter),
47+
return flow([
48+
curryRight(filter)(matchesModule),
49+
curryRight(filter)(accessFilter),
5050
sortByName,
51-
_.curryRight(_.reduce)(separateByClassName, {}),
51+
curryRight(reduce)(separateByClassName, {}),
5252
])(classitems);
5353
}
5454

5555
function cleanUpSubmodules({ submodules }) {
56-
return _.flow([
57-
_.curryRight(_.filter)(item => item !== 'undefined'),
58-
_.curryRight(_.reduce)((result, value) => {
56+
return flow([
57+
curryRight(filter)(item => item !== 'undefined'),
58+
curryRight(reduce)((result, value) => {
5959
result[value] = 1;
6060
return result;
6161
}, {}),
@@ -65,7 +65,7 @@ function cleanUpSubmodules({ submodules }) {
6565
export default function transformModules(docSets) {
6666
try {
6767
docSets.forEach(({ data }) => {
68-
let modules = _.values(data.modules);
68+
let modules = values(data.modules);
6969
let classes = data.classes;
7070
let classitems = data.classitems;
7171
modules.forEach(mod => {

lib/normalize-ember-dependencies.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import _ from 'lodash';
1+
import _ from 'lodash-es';
22
import { byType } from './filter-jsonapi-doc.js';
33

44
const missingDoc = ({ id, version }) => {

lib/normalize-ids.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import _ from 'lodash';
21
import saveDoc from './save-document.js';
32
import tojsonapi from 'yuidoc-to-jsonapi/lib/converter.js';
43
import updateIDs from './update-with-versions-and-project.js';
54
import { byType as findType } from './filter-jsonapi-doc.js';
5+
import { curry, flatten, has } from 'lodash-es';
66

77
function removeLongDocsBecauseEmber1HasWeirdDocs({ id }) {
88
let str = 'A Suite can';
@@ -49,7 +49,7 @@ async function normalizeIDs(pVersions, projectName) {
4949
});
5050

5151
let jsonapidoc = {
52-
data: _.flatten(jsonapidocs.map(({ data }) => data)),
52+
data: flatten(jsonapidocs.map(({ data }) => data)),
5353
};
5454

5555
jsonapidoc.data = jsonapidoc.data.filter(removeLongDocsBecauseEmber1HasWeirdDocs);
@@ -61,14 +61,14 @@ async function normalizeIDs(pVersions, projectName) {
6161

6262
let namespaces = classes.filter(({ attributes }) => attributes.static === 1);
6363
classes = classes.filter(
64-
({ attributes }) => attributes.static !== 1 && _.has(attributes, 'file'),
64+
({ attributes }) => attributes.static !== 1 && has(attributes, 'file'),
6565
);
6666

6767
namespaces.forEach(ns => (ns.type = 'namespace'));
6868

6969
let modules = findType(jsonapidoc, 'module')
7070
.filter(filterForVersion(version))
71-
.filter(_.curry(filter176)(projectName, version.version));
71+
.filter(curry(filter176)(projectName, version.version));
7272

7373
return {
7474
id: `${projectName}-${version.version}`,

lib/read-docs.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import fs from 'fs-extra';
22
import glob from 'glob';
33
import { dasherize } from 'inflected';
4-
import { get as deepGet } from 'lodash';
4+
import { get as deepGet } from 'lodash-es';
55
import { getLatestPatchVersions } from './get-latest-patch-versions.js';
66

77
const docsPath = '../ember-api-docs-data';

lib/rev-docs.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import ora from 'ora';
33
import { basename as getFileName } from 'path';
44
import { singularize } from 'inflected';
55
import path from 'path';
6-
const glob = require('glob');
6+
import glob from 'glob';
77

88
const docsPath = '../ember-api-docs-data';
99

lib/update-with-versions-and-project.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import _ from 'lodash';
1+
import { cloneDeep } from 'lodash-es';
22

33
function generateID(type, projectName, version, id) {
44
if (!projectName) {
@@ -10,7 +10,7 @@ function generateID(type, projectName, version, id) {
1010
}
1111

1212
function updateDocument(doc, projectName, version) {
13-
let dup = _.cloneDeep(doc);
13+
let dup = cloneDeep(doc);
1414

1515
dup.id = generateID(doc.type, projectName, version, dup.id);
1616

@@ -46,7 +46,7 @@ function updateDocument(doc, projectName, version) {
4646
}
4747

4848
export default function updateWithIDs(document, projectName, version) {
49-
let dup = _.cloneDeep(document);
49+
let dup = cloneDeep(document);
5050

5151
if (Array.isArray(dup.data)) {
5252
dup.data = dup.data.map(data => {
Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
1-
import moduleData from 'ember-rfc176-data';
21
import keyfinder from 'keyfinder';
3-
import { uniq } from 'lodash';
2+
import { uniq } from 'lodash-es';
3+
import { createRequire } from 'node:module';
4+
import fs from 'fs-extra';
5+
6+
const require = createRequire(import.meta.url);
7+
const moduleDataPath = require.resolve('ember-rfc176-data');
8+
const moduleData = fs.readJsonSync(moduleDataPath);
49

510
export const emberKnownEntityNames = uniq(keyfinder(moduleData, 'export'));

lib/yuidoc-fixer/normalize-yui-doc-class-item.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { toLower } from 'lodash';
1+
import { toLower } from 'lodash-es';
22
import { yuiDocClassItemKeys } from './yui-doc-class-item-keys.js';
33
import { emberKnownEntityNames } from './emberKnownEntityNames.js';
44

lib/yuidoc-fixer/yui-doc-class-item-keys.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { without } from 'lodash';
1+
import { without } from 'lodash-es';
22

33
const originalYuiDocClassItemKeys = [
44
'async', // bool, custom events can fire the listeners in a setTimeout

0 commit comments

Comments
 (0)