Skip to content

use esm properly with node #132

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Nov 3, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
File renamed without changes.
8 changes: 5 additions & 3 deletions generate-local.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
import chalk from 'chalk';
import commandExists from 'command-exists';
import execa from 'execa';
import { copyFileSync, ensureFileSync, existsSync, removeSync } from 'fs-extra';
import fsExtra from 'fs-extra';
import minimist from 'minimist';
import path from 'path';

const { copyFileSync, ensureFileSync, existsSync, removeSync } = fsExtra;

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

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

let emberProjectPath = path.join(__dirname, '../', 'ember.js');
let emberDataProjectPath = path.join(__dirname, '../', 'data');
let emberProjectPath = path.join('../', 'ember.js');
let emberDataProjectPath = path.join('../', 'data');

let checkIfProjectDirExists = dirPath => {
if (!existsSync(dirPath)) {
Expand Down
7 changes: 3 additions & 4 deletions index.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// eslint-disable-next-line
require = require('esm')(module /*, options*/)
import minimist from 'minimist';
import { apiDocsProcessor } from './main.js';

const argv = require('minimist')(process.argv.slice(2));
const argv = minimist(process.argv.slice(2));

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

const { apiDocsProcessor } = require('./main.js');
apiDocsProcessor(projects, specificDocsVersion, runClean, noSync);
8 changes: 4 additions & 4 deletions lib/add-inherited-items.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import _ from 'lodash';
import { clone, find, values } from 'lodash-es';

export default function addInheritedItems(docSets) {
docSets.forEach(versionData => {
let data = versionData.data;
let classes = _.values(data.classes).filter(klass => klass && klass.name);
let classes = values(data.classes).filter(klass => klass && klass.name);
classes = classes.filter(removeLongDocsBecauseEmber1HasWeirdDocs);
let classItems = data.classitems.filter(({ itemtype }) => itemtype);

Expand All @@ -17,7 +17,7 @@ export default function addInheritedItems(docSets) {
if (!parent) return;
let parentItems = classItems.filter(item => item.class === parent.name);
parentItems = parentItems.map(item => {
item = _.clone(item);
item = clone(item);
item.inherited = true;
item.inheritedFrom = item.class;
item.class = klass.name;
Expand All @@ -40,7 +40,7 @@ function getParents(klass, classes) {
parents = parents.concat(klass.uses.reverse());
}
return parents
.map(parent => _.find(classes, ({ name }) => name === parent))
.map(parent => find(classes, ({ name }) => name === parent))
.filter(parent => parent);
}

Expand Down
8 changes: 4 additions & 4 deletions lib/add-since-tags.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import _ from 'lodash';
import { chain, values } from 'lodash-es';

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

let classes = _.values(data.classes);
let classes = values(data.classes);

classes.forEach(klass => {
klass.version = version;
Expand All @@ -33,11 +33,11 @@ export default function addSinceTags(docSets) {
classItem.since = version;
});

let classes = _.chain(docSets)
let classes = chain(docSets)
.map('data')
.map('classes')
.flatten()
.map(klassSet => _.values(klassSet))
.map(klassSet => values(klassSet))
.flatten()
.value();

Expand Down
8 changes: 4 additions & 4 deletions lib/filter-jsonapi-doc.js
Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
import _ from 'lodash';
import { filter } from 'lodash-es';

function byType(document, type) {
return _.filter(totalData(document), ['type', type]);
return filter(totalData(document), ['type', type]);
}

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

function hasBelongsTo(document, relationshipName, relationshipValue) {
return _.filter(totalData(document), [
return filter(totalData(document), [
`relationships.${relationshipName}.data.id`,
relationshipValue,
]);
}

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

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

Expand Down
2 changes: 1 addition & 1 deletion lib/get-latest-patch-versions.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { groupBy } from 'lodash';
import { groupBy } from 'lodash-es';
import semverCompare from 'semver-compare';
import semverUtils from 'semver-utils';

Expand Down
32 changes: 16 additions & 16 deletions lib/modules-transform.js
Original file line number Diff line number Diff line change
@@ -1,23 +1,23 @@
import _ from 'lodash';
import { curry, curryRight, filter, flow, has, partition, reduce, sortBy, values } from 'lodash-es';

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

function filterStaticAndDerived(classes, className) {
let included =
(_.has(classes, className) &&
!_.has(classes[className], 'static') &&
_.has(classes[className], 'file')) ||
!_.has(classes, className);
(has(classes, className) &&
!has(classes[className], 'static') &&
has(classes[className], 'file')) ||
!has(classes, className);
return included;
}

function addPrivatePublicClassesAttributes(module, classes) {
let classNames = Object.keys(module.classes);
let applicableClassNames = _.filter(classNames, _.curry(filterStaticAndDerived)(classes));
let applicableClassNames = filter(classNames, curry(filterStaticAndDerived)(classes));

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

function sortByName(items) {
return _.sortBy(items, 'name');
return sortBy(items, 'name');
}

function separateFunctions(moduleName, classitems, accessFilter) {
let matchesModule = ({ module }) => module === moduleName;
return _.flow([
_.curryRight(_.filter)(matchesModule),
_.curryRight(_.filter)(accessFilter),
return flow([
curryRight(filter)(matchesModule),
curryRight(filter)(accessFilter),
sortByName,
_.curryRight(_.reduce)(separateByClassName, {}),
curryRight(reduce)(separateByClassName, {}),
])(classitems);
}

function cleanUpSubmodules({ submodules }) {
return _.flow([
_.curryRight(_.filter)(item => item !== 'undefined'),
_.curryRight(_.reduce)((result, value) => {
return flow([
curryRight(filter)(item => item !== 'undefined'),
curryRight(reduce)((result, value) => {
result[value] = 1;
return result;
}, {}),
Expand All @@ -65,7 +65,7 @@ function cleanUpSubmodules({ submodules }) {
export default function transformModules(docSets) {
try {
docSets.forEach(({ data }) => {
let modules = _.values(data.modules);
let modules = values(data.modules);
let classes = data.classes;
let classitems = data.classitems;
modules.forEach(mod => {
Expand Down
2 changes: 1 addition & 1 deletion lib/normalize-ember-dependencies.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import _ from 'lodash';
import _ from 'lodash-es';
import { byType } from './filter-jsonapi-doc.js';

const missingDoc = ({ id, version }) => {
Expand Down
8 changes: 4 additions & 4 deletions lib/normalize-ids.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import _ from 'lodash';
import saveDoc from './save-document.js';
import tojsonapi from 'yuidoc-to-jsonapi/lib/converter.js';
import updateIDs from './update-with-versions-and-project.js';
import { byType as findType } from './filter-jsonapi-doc.js';
import { curry, flatten, has } from 'lodash-es';

function removeLongDocsBecauseEmber1HasWeirdDocs({ id }) {
let str = 'A Suite can';
Expand Down Expand Up @@ -49,7 +49,7 @@ async function normalizeIDs(pVersions, projectName) {
});

let jsonapidoc = {
data: _.flatten(jsonapidocs.map(({ data }) => data)),
data: flatten(jsonapidocs.map(({ data }) => data)),
};

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

let namespaces = classes.filter(({ attributes }) => attributes.static === 1);
classes = classes.filter(
({ attributes }) => attributes.static !== 1 && _.has(attributes, 'file'),
({ attributes }) => attributes.static !== 1 && has(attributes, 'file'),
);

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

let modules = findType(jsonapidoc, 'module')
.filter(filterForVersion(version))
.filter(_.curry(filter176)(projectName, version.version));
.filter(curry(filter176)(projectName, version.version));

return {
id: `${projectName}-${version.version}`,
Expand Down
2 changes: 1 addition & 1 deletion lib/read-docs.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import fs from 'fs-extra';
import glob from 'glob';
import { dasherize } from 'inflected';
import { get as deepGet } from 'lodash';
import { get as deepGet } from 'lodash-es';
import { getLatestPatchVersions } from './get-latest-patch-versions.js';

const docsPath = '../ember-api-docs-data';
Expand Down
2 changes: 1 addition & 1 deletion lib/rev-docs.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import ora from 'ora';
import { basename as getFileName } from 'path';
import { singularize } from 'inflected';
import path from 'path';
const glob = require('glob');
import glob from 'glob';

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

Expand Down
6 changes: 3 additions & 3 deletions lib/update-with-versions-and-project.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import _ from 'lodash';
import { cloneDeep } from 'lodash-es';

function generateID(type, projectName, version, id) {
if (!projectName) {
Expand All @@ -10,7 +10,7 @@ function generateID(type, projectName, version, id) {
}

function updateDocument(doc, projectName, version) {
let dup = _.cloneDeep(doc);
let dup = cloneDeep(doc);

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

Expand Down Expand Up @@ -46,7 +46,7 @@ function updateDocument(doc, projectName, version) {
}

export default function updateWithIDs(document, projectName, version) {
let dup = _.cloneDeep(document);
let dup = cloneDeep(document);

if (Array.isArray(dup.data)) {
dup.data = dup.data.map(data => {
Expand Down
9 changes: 7 additions & 2 deletions lib/yuidoc-fixer/emberKnownEntityNames.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
import moduleData from 'ember-rfc176-data';
import keyfinder from 'keyfinder';
import { uniq } from 'lodash';
import { uniq } from 'lodash-es';
import { createRequire } from 'node:module';
import fs from 'fs-extra';

const require = createRequire(import.meta.url);
const moduleDataPath = require.resolve('ember-rfc176-data');
const moduleData = fs.readJsonSync(moduleDataPath);

export const emberKnownEntityNames = uniq(keyfinder(moduleData, 'export'));
2 changes: 1 addition & 1 deletion lib/yuidoc-fixer/normalize-yui-doc-class-item.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { toLower } from 'lodash';
import { toLower } from 'lodash-es';
import { yuiDocClassItemKeys } from './yui-doc-class-item-keys.js';
import { emberKnownEntityNames } from './emberKnownEntityNames.js';

Expand Down
2 changes: 1 addition & 1 deletion lib/yuidoc-fixer/yui-doc-class-item-keys.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { without } from 'lodash';
import { without } from 'lodash-es';

const originalYuiDocClassItemKeys = [
'async', // bool, custom events can fire the listeners in a setTimeout
Expand Down
Loading