feat(rocket-preset-extend-lion-docs): extend single @lion/ui pkg
This commit is contained in:
parent
730e59c343
commit
72c4948906
36 changed files with 388 additions and 537 deletions
118
package-lock.json
generated
118
package-lock.json
generated
|
|
@ -2880,28 +2880,6 @@
|
||||||
"resolved": "packages/ajax",
|
"resolved": "packages/ajax",
|
||||||
"link": true
|
"link": true
|
||||||
},
|
},
|
||||||
"node_modules/@lion/collapsible": {
|
|
||||||
"version": "0.9.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/@lion/collapsible/-/collapsible-0.9.1.tgz",
|
|
||||||
"integrity": "sha512-M+62Un4HQMhTzdG885TBJL52Ji7TSNPYAg0+FQk6kb3QHdz255lWkRTp6G94w1iE1K6IsYO1g+KyibXvtEbbug==",
|
|
||||||
"dependencies": {
|
|
||||||
"@lion/core": "^0.24.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@lion/core": {
|
|
||||||
"version": "0.24.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/@lion/core/-/core-0.24.0.tgz",
|
|
||||||
"integrity": "sha512-hC5Fpi5U3PY0HOVycSev1jzoE8DYHFSN42s5gt6g6RlvvRYN5Pou0wtKnDOkOYf1UfjuL+T/4r8W99UFD1r/Eg==",
|
|
||||||
"dependencies": {
|
|
||||||
"@open-wc/dedupe-mixin": "^1.3.0",
|
|
||||||
"@open-wc/scoped-elements": "^2.1.1",
|
|
||||||
"lit": "^2.0.2"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@lion/drawer": {
|
|
||||||
"resolved": "packages/drawer",
|
|
||||||
"link": true
|
|
||||||
},
|
|
||||||
"node_modules/@lion/ui": {
|
"node_modules/@lion/ui": {
|
||||||
"resolved": "packages/ui",
|
"resolved": "packages/ui",
|
||||||
"link": true
|
"link": true
|
||||||
|
|
@ -23364,11 +23342,49 @@
|
||||||
"@babel/plugin-syntax-import-assertions": "^7.14.5",
|
"@babel/plugin-syntax-import-assertions": "^7.14.5",
|
||||||
"babel-plugin-extend-docs": "0.5.3",
|
"babel-plugin-extend-docs": "0.5.3",
|
||||||
"es-module-lexer": "^0.3.6",
|
"es-module-lexer": "^0.3.6",
|
||||||
|
"glob": "^7.1.6",
|
||||||
"plugins-manager": "^0.3.0",
|
"plugins-manager": "^0.3.0",
|
||||||
"remark-extend": "0.5.1",
|
"remark-extend": "0.5.1",
|
||||||
"unist-util-visit": "^2.0.2"
|
"unist-util-visit": "^2.0.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"packages-node/rocket-preset-extend-lion-docs/node_modules/brace-expansion": {
|
||||||
|
"version": "2.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
|
||||||
|
"integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
|
||||||
|
"dependencies": {
|
||||||
|
"balanced-match": "^1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"packages-node/rocket-preset-extend-lion-docs/node_modules/glob": {
|
||||||
|
"version": "8.0.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz",
|
||||||
|
"integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==",
|
||||||
|
"dependencies": {
|
||||||
|
"fs.realpath": "^1.0.0",
|
||||||
|
"inflight": "^1.0.4",
|
||||||
|
"inherits": "2",
|
||||||
|
"minimatch": "^5.0.1",
|
||||||
|
"once": "^1.3.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/sponsors/isaacs"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"packages-node/rocket-preset-extend-lion-docs/node_modules/minimatch": {
|
||||||
|
"version": "5.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz",
|
||||||
|
"integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==",
|
||||||
|
"dependencies": {
|
||||||
|
"brace-expansion": "^2.0.1"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=10"
|
||||||
|
}
|
||||||
|
},
|
||||||
"packages/accordion": {
|
"packages/accordion": {
|
||||||
"name": "@lion/accordion",
|
"name": "@lion/accordion",
|
||||||
"version": "0.11.1",
|
"version": "0.11.1",
|
||||||
|
|
@ -23380,7 +23396,7 @@
|
||||||
},
|
},
|
||||||
"packages/ajax": {
|
"packages/ajax": {
|
||||||
"name": "@lion/ajax",
|
"name": "@lion/ajax",
|
||||||
"version": "1.1.0",
|
"version": "1.1.1",
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"packages/button": {
|
"packages/button": {
|
||||||
|
|
@ -23473,6 +23489,7 @@
|
||||||
},
|
},
|
||||||
"packages/drawer": {
|
"packages/drawer": {
|
||||||
"version": "0.0.0",
|
"version": "0.0.0",
|
||||||
|
"extraneous": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@lion/collapsible": "^0.9.1",
|
"@lion/collapsible": "^0.9.1",
|
||||||
|
|
@ -25933,31 +25950,6 @@
|
||||||
"@lion/ajax": {
|
"@lion/ajax": {
|
||||||
"version": "file:packages/ajax"
|
"version": "file:packages/ajax"
|
||||||
},
|
},
|
||||||
"@lion/collapsible": {
|
|
||||||
"version": "0.9.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/@lion/collapsible/-/collapsible-0.9.1.tgz",
|
|
||||||
"integrity": "sha512-M+62Un4HQMhTzdG885TBJL52Ji7TSNPYAg0+FQk6kb3QHdz255lWkRTp6G94w1iE1K6IsYO1g+KyibXvtEbbug==",
|
|
||||||
"requires": {
|
|
||||||
"@lion/core": "^0.24.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"@lion/core": {
|
|
||||||
"version": "0.24.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/@lion/core/-/core-0.24.0.tgz",
|
|
||||||
"integrity": "sha512-hC5Fpi5U3PY0HOVycSev1jzoE8DYHFSN42s5gt6g6RlvvRYN5Pou0wtKnDOkOYf1UfjuL+T/4r8W99UFD1r/Eg==",
|
|
||||||
"requires": {
|
|
||||||
"@open-wc/dedupe-mixin": "^1.3.0",
|
|
||||||
"@open-wc/scoped-elements": "^2.1.1",
|
|
||||||
"lit": "^2.0.2"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"@lion/drawer": {
|
|
||||||
"version": "file:packages/drawer",
|
|
||||||
"requires": {
|
|
||||||
"@lion/collapsible": "^0.9.1",
|
|
||||||
"@lion/core": "^0.24.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"@lion/ui": {
|
"@lion/ui": {
|
||||||
"version": "file:packages/ui",
|
"version": "file:packages/ui",
|
||||||
"requires": {
|
"requires": {
|
||||||
|
|
@ -39144,9 +39136,39 @@
|
||||||
"@babel/plugin-syntax-import-assertions": "^7.14.5",
|
"@babel/plugin-syntax-import-assertions": "^7.14.5",
|
||||||
"babel-plugin-extend-docs": "0.5.3",
|
"babel-plugin-extend-docs": "0.5.3",
|
||||||
"es-module-lexer": "^0.3.6",
|
"es-module-lexer": "^0.3.6",
|
||||||
|
"glob": "^7.1.6",
|
||||||
"plugins-manager": "^0.3.0",
|
"plugins-manager": "^0.3.0",
|
||||||
"remark-extend": "0.5.1",
|
"remark-extend": "0.5.1",
|
||||||
"unist-util-visit": "^2.0.2"
|
"unist-util-visit": "^2.0.2"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"brace-expansion": {
|
||||||
|
"version": "2.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
|
||||||
|
"integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
|
||||||
|
"requires": {
|
||||||
|
"balanced-match": "^1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"glob": {
|
||||||
|
"version": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz",
|
||||||
|
"integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==",
|
||||||
|
"requires": {
|
||||||
|
"fs.realpath": "^1.0.0",
|
||||||
|
"inflight": "^1.0.4",
|
||||||
|
"inherits": "2",
|
||||||
|
"minimatch": "^5.0.1",
|
||||||
|
"once": "^1.3.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"minimatch": {
|
||||||
|
"version": "5.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz",
|
||||||
|
"integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==",
|
||||||
|
"requires": {
|
||||||
|
"brace-expansion": "^2.0.1"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"rollup": {
|
"rollup": {
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,9 @@
|
||||||
"directory": "packages-node/rocket-preset-extend-lion-docs"
|
"directory": "packages-node/rocket-preset-extend-lion-docs"
|
||||||
},
|
},
|
||||||
"type": "module",
|
"type": "module",
|
||||||
|
"exports": {
|
||||||
|
".": "./index.js"
|
||||||
|
},
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"files": [
|
"files": [
|
||||||
"*.js",
|
"*.js",
|
||||||
|
|
@ -31,6 +34,7 @@
|
||||||
"@babel/plugin-syntax-import-assertions": "^7.14.5",
|
"@babel/plugin-syntax-import-assertions": "^7.14.5",
|
||||||
"babel-plugin-extend-docs": "0.5.3",
|
"babel-plugin-extend-docs": "0.5.3",
|
||||||
"es-module-lexer": "^0.3.6",
|
"es-module-lexer": "^0.3.6",
|
||||||
|
"glob": "^7.1.6",
|
||||||
"plugins-manager": "^0.3.0",
|
"plugins-manager": "^0.3.0",
|
||||||
"remark-extend": "0.5.1",
|
"remark-extend": "0.5.1",
|
||||||
"unist-util-visit": "^2.0.2"
|
"unist-util-visit": "^2.0.2"
|
||||||
|
|
@ -42,8 +46,5 @@
|
||||||
],
|
],
|
||||||
"publishConfig": {
|
"publishConfig": {
|
||||||
"access": "public"
|
"access": "public"
|
||||||
},
|
|
||||||
"exports": {
|
|
||||||
".": "./index.js"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,126 +1,6 @@
|
||||||
import fs from 'fs';
|
import fs from 'fs';
|
||||||
import path from 'path';
|
import path from 'path';
|
||||||
// @ts-ignore
|
import { getPublicApiOfPkg } from './getPublicApiOfPkg.js';
|
||||||
import { init, parse } from 'es-module-lexer/dist/lexer.js';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param {string} value
|
|
||||||
* @returns {boolean}
|
|
||||||
*/
|
|
||||||
function isComment(value) {
|
|
||||||
return value.startsWith('//') || value.startsWith('/*') || value.startsWith('*/');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param {string} src
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
function getImportNames(src) {
|
|
||||||
const [imports] = parse(src);
|
|
||||||
|
|
||||||
/** @type {string[]} */
|
|
||||||
const names = [];
|
|
||||||
for (const importObj of imports) {
|
|
||||||
const full = src.substring(importObj.ss, importObj.se);
|
|
||||||
if (full.includes('{')) {
|
|
||||||
const namesString = full.substring(full.indexOf('{') + 1, full.indexOf('}'));
|
|
||||||
namesString.split('\n').forEach(nameLine => {
|
|
||||||
nameLine.split(',').forEach(name => {
|
|
||||||
const trimmedNamed = name.trim();
|
|
||||||
if (trimmedNamed && !isComment(trimmedNamed)) {
|
|
||||||
names.push(name.trim());
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return names;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param {object} opts
|
|
||||||
* @param {string} opts.className
|
|
||||||
* @param {string} opts.pkgName
|
|
||||||
* @param {string} opts.classPrefix
|
|
||||||
* @param {string} opts.classBareImport
|
|
||||||
* @param {string} [opts.sourceClassPrefix]
|
|
||||||
* @param {string} [opts.sourceBareImport]
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
function generateVariableChange({
|
|
||||||
className,
|
|
||||||
pkgName,
|
|
||||||
|
|
||||||
classPrefix,
|
|
||||||
classBareImport,
|
|
||||||
sourceClassPrefix = 'Lion',
|
|
||||||
sourceBareImport = '@lion/',
|
|
||||||
}) {
|
|
||||||
let _sourceClassPrefix = sourceClassPrefix;
|
|
||||||
let _classPrefix = classPrefix;
|
|
||||||
let pureClassName = className;
|
|
||||||
const purePkgName = pkgName.replace(sourceBareImport, '');
|
|
||||||
|
|
||||||
if (className.startsWith(sourceClassPrefix)) {
|
|
||||||
pureClassName = className.replace(sourceClassPrefix, '');
|
|
||||||
} else {
|
|
||||||
_sourceClassPrefix = '';
|
|
||||||
_classPrefix = '';
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
|
||||||
name: `${pkgName} - ${className}`,
|
|
||||||
variable: {
|
|
||||||
from: `${_sourceClassPrefix}${pureClassName}`,
|
|
||||||
to: `${_classPrefix}${pureClassName}`,
|
|
||||||
paths: [
|
|
||||||
{
|
|
||||||
from: `${sourceBareImport}${purePkgName}`,
|
|
||||||
to: `${classBareImport}${purePkgName}`,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param {object} opts
|
|
||||||
* @param {string} opts.tagName
|
|
||||||
* @param {string} opts.pkgName
|
|
||||||
* @param {string} opts.definePath
|
|
||||||
* @param {string} opts.tagPrefix
|
|
||||||
* @param {string} opts.tagBareImport
|
|
||||||
* @param {string} [opts.sourceTagPrefix]
|
|
||||||
* @param {string} [opts.sourceBareImport]
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
function generateTagChange({
|
|
||||||
tagName,
|
|
||||||
pkgName,
|
|
||||||
definePath,
|
|
||||||
|
|
||||||
tagPrefix,
|
|
||||||
tagBareImport,
|
|
||||||
sourceTagPrefix = 'lion-',
|
|
||||||
sourceBareImport = '@lion/',
|
|
||||||
}) {
|
|
||||||
const pureTagName = tagName.replace(sourceTagPrefix, '');
|
|
||||||
const purePkgName = pkgName.replace(sourceBareImport, '');
|
|
||||||
|
|
||||||
return {
|
|
||||||
name: `${pkgName}${definePath}`,
|
|
||||||
tag: {
|
|
||||||
from: `${sourceTagPrefix}${pureTagName}`,
|
|
||||||
to: `${tagPrefix}${pureTagName}`,
|
|
||||||
paths: [
|
|
||||||
{
|
|
||||||
from: `${sourceBareImport}${purePkgName}${definePath}`,
|
|
||||||
to: `${tagBareImport}${purePkgName}${definePath}`,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {object} opts
|
* @param {object} opts
|
||||||
|
|
@ -133,18 +13,17 @@ function generateTagChange({
|
||||||
* @param {string} [opts.exportsMapJsonFileName]
|
* @param {string} [opts.exportsMapJsonFileName]
|
||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
export async function generateExtendDocsConfig({
|
export async function generateExtendDocsConfig(opts) {
|
||||||
nodeModulesDir,
|
const {
|
||||||
npmScope = '@lion',
|
nodeModulesDir,
|
||||||
classPrefix,
|
npmScope = '@lion',
|
||||||
classBareImport,
|
classPrefix,
|
||||||
tagPrefix,
|
classBareImport,
|
||||||
tagBareImport,
|
tagPrefix,
|
||||||
exportsMapJsonFileName = 'package.json',
|
tagBareImport,
|
||||||
}) {
|
exportsMapJsonFileName = 'package.json',
|
||||||
|
} = opts;
|
||||||
const _nodeModulesDir = nodeModulesDir || path.resolve('./node_modules');
|
const _nodeModulesDir = nodeModulesDir || path.resolve('./node_modules');
|
||||||
await init;
|
|
||||||
const options = { classPrefix, classBareImport, tagPrefix, tagBareImport };
|
|
||||||
|
|
||||||
const folderToCheck = npmScope ? path.join(_nodeModulesDir, npmScope) : _nodeModulesDir;
|
const folderToCheck = npmScope ? path.join(_nodeModulesDir, npmScope) : _nodeModulesDir;
|
||||||
const packages = fs
|
const packages = fs
|
||||||
|
|
@ -156,35 +35,45 @@ export async function generateExtendDocsConfig({
|
||||||
for (const pkgName of packages) {
|
for (const pkgName of packages) {
|
||||||
const pkgPath = path.join(_nodeModulesDir, ...pkgName.split('/'));
|
const pkgPath = path.join(_nodeModulesDir, ...pkgName.split('/'));
|
||||||
const pkgJsonPath = path.join(pkgPath, exportsMapJsonFileName);
|
const pkgJsonPath = path.join(pkgPath, exportsMapJsonFileName);
|
||||||
const pkgJsonString = await fs.promises.readFile(pkgJsonPath, 'utf8');
|
|
||||||
const pkgJson = JSON.parse(pkgJsonString);
|
|
||||||
const pkgExports = pkgJson.exports;
|
|
||||||
|
|
||||||
for (const pkgExportName of Object.keys(pkgExports)) {
|
const publicApi = await getPublicApiOfPkg(pkgJsonPath);
|
||||||
const pkgExportPath = pkgExports[pkgExportName];
|
for (const entryPoint of publicApi.entryPoints) {
|
||||||
const entryPointFilePath = path.join(pkgPath, pkgExportPath);
|
const { exports, name, namePath, path: entryPointFile } = entryPoint;
|
||||||
|
|
||||||
if (pkgExportName === '.') {
|
for (const exportName of exports) {
|
||||||
const src = await fs.promises.readFile(entryPointFilePath, 'utf8');
|
changes.push({
|
||||||
const importNames = getImportNames(src);
|
name: `${name} - ${exportName}`,
|
||||||
|
variable: {
|
||||||
for (const importName of importNames) {
|
from: exportName,
|
||||||
changes.push(generateVariableChange({ className: importName, pkgName, ...options }));
|
to: exportName.replace(/^Lion/, classPrefix),
|
||||||
}
|
paths: [
|
||||||
|
{
|
||||||
|
from: name,
|
||||||
|
to: `${classBareImport}${namePath}`,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
});
|
||||||
}
|
}
|
||||||
if (pkgExportName.startsWith('./define')) {
|
|
||||||
const src = await fs.promises.readFile(entryPointFilePath, 'utf8');
|
const src = await fs.promises.readFile(entryPointFile, 'utf8');
|
||||||
const definePath = `/${pkgExportName.substr(2)}`;
|
if (src.includes('.define(')) {
|
||||||
if (src.includes('.define(')) {
|
const matches = src.match(/define\(['"](.*)['"]/);
|
||||||
const matches = src.match(/define\(['"](.*)['"]/);
|
if (matches && matches[1]) {
|
||||||
if (matches && matches[1]) {
|
const tagName = matches[1];
|
||||||
const tagName = matches[1];
|
changes.push({
|
||||||
changes.push(generateTagChange({ tagName, pkgName, definePath, ...options }));
|
name,
|
||||||
}
|
tag: {
|
||||||
} else {
|
from: tagName,
|
||||||
changes.push(
|
to: tagName.replace(/^lion-/, tagPrefix),
|
||||||
generateTagChange({ tagName: 'xxx-workaround-xxx', pkgName, definePath, ...options }),
|
paths: [
|
||||||
);
|
{
|
||||||
|
from: name,
|
||||||
|
to: `${tagBareImport}${namePath.replace('lion-', tagPrefix)}`,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,73 @@
|
||||||
|
import path from 'path';
|
||||||
|
import { readFile } from 'fs/promises';
|
||||||
|
import { init, parse } from 'es-module-lexer';
|
||||||
|
import glob from 'glob';
|
||||||
|
|
||||||
|
await init;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param {string} pkgJsonPath
|
||||||
|
* @returns
|
||||||
|
*/
|
||||||
|
export async function getPublicApiOfPkg(pkgJsonPath) {
|
||||||
|
const pkgPath = path.dirname(pkgJsonPath);
|
||||||
|
const pkgJsonString = await readFile(pkgJsonPath, 'utf8');
|
||||||
|
const pkgJson = JSON.parse(pkgJsonString);
|
||||||
|
const { name, exports: pkgExports } = pkgJson;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @type {{ name: string, entryPoints: Array<{ entry: string, name: string, namePath: string, exports: string[], path: string }> }}
|
||||||
|
*/
|
||||||
|
const publicApi = {
|
||||||
|
name,
|
||||||
|
entryPoints: [],
|
||||||
|
};
|
||||||
|
for (const pkgExportDefinition of Object.keys(pkgExports)) {
|
||||||
|
const pkgExportPath =
|
||||||
|
pkgExports[pkgExportDefinition].default ||
|
||||||
|
pkgExports[pkgExportDefinition].module ||
|
||||||
|
pkgExports[pkgExportDefinition];
|
||||||
|
const entryPointFilePath = path.join(pkgPath, pkgExportPath);
|
||||||
|
|
||||||
|
if (glob.hasMagic(entryPointFilePath)) {
|
||||||
|
const globifiedEntryPointFilePath = entryPointFilePath.replace(/\*/, '**');
|
||||||
|
for (const entryPointFile of glob.sync(globifiedEntryPointFilePath, { nodir: true })) {
|
||||||
|
const fullPkgExportPath = path.join(pkgPath, pkgExportPath);
|
||||||
|
const reg = new RegExp(`^${fullPkgExportPath.replace('*', '(.*)')}$`);
|
||||||
|
const match = reg.exec(entryPointFile);
|
||||||
|
if (match) {
|
||||||
|
const pkgEntryPointPath = match[1];
|
||||||
|
const pkgEntryPoint = `${name}/${pkgEntryPointPath}`;
|
||||||
|
|
||||||
|
if (entryPointFile.endsWith('.js')) {
|
||||||
|
const src = await readFile(entryPointFile, 'utf8');
|
||||||
|
const [, exports] = parse(src);
|
||||||
|
publicApi.entryPoints.push({
|
||||||
|
entry: pkgExportDefinition,
|
||||||
|
name: pkgEntryPoint,
|
||||||
|
namePath: pkgEntryPointPath,
|
||||||
|
exports,
|
||||||
|
path: entryPointFile,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
const pkgEntryPointPath = pkgExportDefinition === '.' ? '' : pkgExportDefinition;
|
||||||
|
const pkgEntryPoint = pkgEntryPointPath ? `${name}/${pkgEntryPointPath}` : name;
|
||||||
|
if (entryPointFilePath.endsWith('.js')) {
|
||||||
|
const src = await readFile(entryPointFilePath, 'utf8');
|
||||||
|
const [, exports] = parse(src);
|
||||||
|
publicApi.entryPoints.push({
|
||||||
|
entry: pkgExportDefinition,
|
||||||
|
name: pkgEntryPoint,
|
||||||
|
namePath: pkgEntryPointPath,
|
||||||
|
exports,
|
||||||
|
path: entryPointFilePath,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return publicApi;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
export { LionAccordion } from '../components/accordion/src/LionAccordion.js';
|
||||||
|
|
@ -1,3 +1,3 @@
|
||||||
import { LionAccordion } from './src/LionAccordion.js';
|
import { LionAccordion } from '../accordion.js';
|
||||||
|
|
||||||
customElements.define('lion-accordion', LionAccordion);
|
customElements.define('lion-accordion', LionAccordion);
|
||||||
|
|
@ -0,0 +1,10 @@
|
||||||
|
{
|
||||||
|
"name": "@lion/ui",
|
||||||
|
"type": "module",
|
||||||
|
"exports": {
|
||||||
|
"./*": {
|
||||||
|
"types": "./dist-types/exports/*",
|
||||||
|
"default": "./exports/*"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,10 @@
|
||||||
|
{
|
||||||
|
"name": "@lion/ui",
|
||||||
|
"type": "module",
|
||||||
|
"exports": {
|
||||||
|
".": {
|
||||||
|
"types": "./dist-types/exports/*",
|
||||||
|
"default": "./src/LionAccordion.js"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
export class LionAccordion extends HTMLElement {}
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
export class LionButton extends HTMLElement {}
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
export { LionAccordion } from '../components/accordion/src/LionAccordion.js';
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
export { LionButton } from '../components/button/src/LionButton.js';
|
||||||
|
|
@ -1,3 +1,3 @@
|
||||||
import { LionAccordion } from './src/LionAccordion.js';
|
import { LionAccordion } from '../accordion.js';
|
||||||
|
|
||||||
customElements.define('lion-accordion', LionAccordion);
|
customElements.define('lion-accordion', LionAccordion);
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
import { LionButton } from '../button.js';
|
||||||
|
|
||||||
|
customElements.define('lion-button', LionButton);
|
||||||
|
|
@ -0,0 +1,10 @@
|
||||||
|
{
|
||||||
|
"name": "@lion/ui",
|
||||||
|
"type": "module",
|
||||||
|
"exports": {
|
||||||
|
"./*": {
|
||||||
|
"types": "./dist-types/exports/*",
|
||||||
|
"default": "./exports/*"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
# Accordion
|
||||||
|
|
||||||
|
<notification-inline type="information">
|
||||||
|
|
||||||
|
Longer pages can benefit users. Accordions shorten pages and reduce scrolling, but they increase the interaction cost by requiring people to decide on topic headings.
|
||||||
|
Accordions conserve space on mobile but they can also cause disorientation and too much scrolling.
|
||||||
|
|
||||||
|
</notification-inline>
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
{
|
||||||
|
"name": "@lion/ui",
|
||||||
|
"type": "module",
|
||||||
|
"exports": {
|
||||||
|
"./docs/*": "./docs/*"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
export { LionAccordion } from './src/LionAccordion.js';
|
|
||||||
|
|
@ -1,55 +0,0 @@
|
||||||
{
|
|
||||||
"name": "@lion/accordion",
|
|
||||||
"version": "0.5.0",
|
|
||||||
"description": "Vertically stacked list of invokers that can be clicked to reveal or hide content associated with them.",
|
|
||||||
"license": "MIT",
|
|
||||||
"author": "ing-bank",
|
|
||||||
"homepage": "https://github.com/ing-bank/lion/",
|
|
||||||
"repository": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/ing-bank/lion.git",
|
|
||||||
"directory": "packages/accordion"
|
|
||||||
},
|
|
||||||
"main": "index.js",
|
|
||||||
"module": "index.js",
|
|
||||||
"files": [
|
|
||||||
"*.d.ts",
|
|
||||||
"*.js",
|
|
||||||
"custom-elements.json",
|
|
||||||
"docs",
|
|
||||||
"src",
|
|
||||||
"test",
|
|
||||||
"test-helpers",
|
|
||||||
"translations",
|
|
||||||
"types"
|
|
||||||
],
|
|
||||||
"scripts": {
|
|
||||||
"custom-elements-manifest": "custom-elements-manifest analyze --litelement --exclude \"docs/**/*\" \"test-helpers/**/*\"",
|
|
||||||
"debug": "cd ../../ && npm run debug -- --group accordion",
|
|
||||||
"debug:firefox": "cd ../../ && npm run debug:firefox -- --group accordion",
|
|
||||||
"debug:webkit": "cd ../../ && npm run debug:webkit -- --group accordion",
|
|
||||||
"publish-docs": "node ../../packages-node/publish-docs/src/cli.js --github-url https://github.com/ing-bank/lion/ --git-root-dir ../../",
|
|
||||||
"prepublishOnly": "npm run publish-docs && npm run custom-elements-manifest",
|
|
||||||
"test": "cd ../../ && npm run test:browser -- --group accordion"
|
|
||||||
},
|
|
||||||
"sideEffects": [
|
|
||||||
"lion-accordion.js"
|
|
||||||
],
|
|
||||||
"dependencies": {
|
|
||||||
"@lion/core": "0.17.0"
|
|
||||||
},
|
|
||||||
"keywords": [
|
|
||||||
"accordion",
|
|
||||||
"lion",
|
|
||||||
"web-components"
|
|
||||||
],
|
|
||||||
"publishConfig": {
|
|
||||||
"access": "public"
|
|
||||||
},
|
|
||||||
"customElements": "custom-elements.json",
|
|
||||||
"exports": {
|
|
||||||
".": "./index.js",
|
|
||||||
"./define": "./lion-accordion.js",
|
|
||||||
"./docs/*": "./docs/*"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
export class LionAccordion extends HTMLElement {}
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
export { LionAccordion } from '../components/accordion/src/LionAccordion.js';
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
import { LionAccordion } from '../accordion.js';
|
||||||
|
|
||||||
|
customElements.define('lion-accordion', LionAccordion);
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
{
|
||||||
|
"name": "@lion/ui",
|
||||||
|
"version": "0.0.1",
|
||||||
|
"description": "A package of extendable web components",
|
||||||
|
"type": "module",
|
||||||
|
"exports": {
|
||||||
|
"./*": {
|
||||||
|
"types": "./dist-types/exports/*",
|
||||||
|
"default": "./exports/*"
|
||||||
|
},
|
||||||
|
"./calendar-translations/*": "./components/calendar/translations/*",
|
||||||
|
"./pagination-translations/*": "./components/pagination/translations/*",
|
||||||
|
"./progress-indicator-translations/*": "./components/progress-indicator/translations/*",
|
||||||
|
"./input-datepicker-translations/*": "./components/input-datepicker/translations/*",
|
||||||
|
"./input-iban-translations/*": "./components/input-iban/translations/*",
|
||||||
|
"./input-tel-translations/*": "./components/input-tel/translations/*",
|
||||||
|
"./overlays-translations/*": "./components/overlays/translations/*",
|
||||||
|
"./validate-messages-translations/*": "./components/validate-messages/translations/*"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
export { calculateSum } from './src/calculateSum.js';
|
|
||||||
|
|
@ -1,54 +0,0 @@
|
||||||
{
|
|
||||||
"name": "@lion/core",
|
|
||||||
"version": "0.5.0",
|
|
||||||
"description": "Vertically stacked list of invokers that can be clicked to reveal or hide content associated with them.",
|
|
||||||
"license": "MIT",
|
|
||||||
"author": "ing-bank",
|
|
||||||
"homepage": "https://github.com/ing-bank/lion/",
|
|
||||||
"repository": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/ing-bank/lion.git",
|
|
||||||
"directory": "packages/accordion"
|
|
||||||
},
|
|
||||||
"main": "index.js",
|
|
||||||
"module": "index.js",
|
|
||||||
"files": [
|
|
||||||
"*.d.ts",
|
|
||||||
"*.js",
|
|
||||||
"custom-elements.json",
|
|
||||||
"docs",
|
|
||||||
"src",
|
|
||||||
"test",
|
|
||||||
"test-helpers",
|
|
||||||
"translations",
|
|
||||||
"types"
|
|
||||||
],
|
|
||||||
"scripts": {
|
|
||||||
"custom-elements-manifest": "custom-elements-manifest analyze --litelement --exclude \"docs/**/*\" \"test-helpers/**/*\"",
|
|
||||||
"debug": "cd ../../ && npm run debug -- --group accordion",
|
|
||||||
"debug:firefox": "cd ../../ && npm run debug:firefox -- --group accordion",
|
|
||||||
"debug:webkit": "cd ../../ && npm run debug:webkit -- --group accordion",
|
|
||||||
"publish-docs": "node ../../packages-node/publish-docs/src/cli.js --github-url https://github.com/ing-bank/lion/ --git-root-dir ../../",
|
|
||||||
"prepublishOnly": "npm run publish-docs && npm run custom-elements-manifest",
|
|
||||||
"test": "cd ../../ && npm run test:browser -- --group accordion"
|
|
||||||
},
|
|
||||||
"sideEffects": [
|
|
||||||
"lion-accordion.js"
|
|
||||||
],
|
|
||||||
"dependencies": {
|
|
||||||
"@lion/core": "0.17.0"
|
|
||||||
},
|
|
||||||
"keywords": [
|
|
||||||
"accordion",
|
|
||||||
"lion",
|
|
||||||
"web-components"
|
|
||||||
],
|
|
||||||
"publishConfig": {
|
|
||||||
"access": "public"
|
|
||||||
},
|
|
||||||
"customElements": "custom-elements.json",
|
|
||||||
"exports": {
|
|
||||||
".": "./index.js",
|
|
||||||
"./docs/*": "./docs/*"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
export { calculateSum } from '../src/calculateSum.js';
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
{
|
||||||
|
"name": "@lion/ui",
|
||||||
|
"version": "0.0.1",
|
||||||
|
"description": "A package of extendable web components",
|
||||||
|
"type": "module",
|
||||||
|
"exports": {
|
||||||
|
"./*": {
|
||||||
|
"types": "./dist-types/exports/*",
|
||||||
|
"default": "./exports/*"
|
||||||
|
},
|
||||||
|
"./calendar-translations/*": "./components/calendar/translations/*",
|
||||||
|
"./pagination-translations/*": "./components/pagination/translations/*",
|
||||||
|
"./progress-indicator-translations/*": "./components/progress-indicator/translations/*",
|
||||||
|
"./input-datepicker-translations/*": "./components/input-datepicker/translations/*",
|
||||||
|
"./input-iban-translations/*": "./components/input-iban/translations/*",
|
||||||
|
"./input-tel-translations/*": "./components/input-tel/translations/*",
|
||||||
|
"./overlays-translations/*": "./components/overlays/translations/*",
|
||||||
|
"./validate-messages-translations/*": "./components/validate-messages/translations/*"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,55 +0,0 @@
|
||||||
{
|
|
||||||
"name": "@lion/accordion",
|
|
||||||
"version": "0.5.0",
|
|
||||||
"description": "Vertically stacked list of invokers that can be clicked to reveal or hide content associated with them.",
|
|
||||||
"license": "MIT",
|
|
||||||
"author": "ing-bank",
|
|
||||||
"homepage": "https://github.com/ing-bank/lion/",
|
|
||||||
"repository": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/ing-bank/lion.git",
|
|
||||||
"directory": "packages/accordion"
|
|
||||||
},
|
|
||||||
"main": "index.js",
|
|
||||||
"module": "index.js",
|
|
||||||
"files": [
|
|
||||||
"*.d.ts",
|
|
||||||
"*.js",
|
|
||||||
"custom-elements.json",
|
|
||||||
"docs",
|
|
||||||
"src",
|
|
||||||
"test",
|
|
||||||
"test-helpers",
|
|
||||||
"translations",
|
|
||||||
"types"
|
|
||||||
],
|
|
||||||
"scripts": {
|
|
||||||
"custom-elements-manifest": "custom-elements-manifest analyze --litelement --exclude \"docs/**/*\" \"test-helpers/**/*\"",
|
|
||||||
"debug": "cd ../../ && npm run debug -- --group accordion",
|
|
||||||
"debug:firefox": "cd ../../ && npm run debug:firefox -- --group accordion",
|
|
||||||
"debug:webkit": "cd ../../ && npm run debug:webkit -- --group accordion",
|
|
||||||
"publish-docs": "node ../../packages-node/publish-docs/src/cli.js --github-url https://github.com/ing-bank/lion/ --git-root-dir ../../",
|
|
||||||
"prepublishOnly": "npm run publish-docs && npm run custom-elements-manifest",
|
|
||||||
"test": "cd ../../ && npm run test:browser -- --group accordion"
|
|
||||||
},
|
|
||||||
"sideEffects": [
|
|
||||||
"lion-accordion.js"
|
|
||||||
],
|
|
||||||
"dependencies": {
|
|
||||||
"@lion/core": "0.17.0"
|
|
||||||
},
|
|
||||||
"keywords": [
|
|
||||||
"accordion",
|
|
||||||
"lion",
|
|
||||||
"web-components"
|
|
||||||
],
|
|
||||||
"publishConfig": {
|
|
||||||
"access": "public"
|
|
||||||
},
|
|
||||||
"customElements": "custom-elements.json",
|
|
||||||
"exports": {
|
|
||||||
".": "./index.js",
|
|
||||||
"./define": "./lion-accordion.js",
|
|
||||||
"./docs/*": "./docs/*"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
export { LionAccordion } from './src/LionAccordion.js';
|
|
||||||
|
|
@ -1,7 +0,0 @@
|
||||||
export {
|
|
||||||
//
|
|
||||||
html,
|
|
||||||
CSSResult,
|
|
||||||
// something,
|
|
||||||
adoptStyles,
|
|
||||||
} from 'lit';
|
|
||||||
|
|
@ -1,54 +0,0 @@
|
||||||
{
|
|
||||||
"name": "@lion/core",
|
|
||||||
"version": "0.5.0",
|
|
||||||
"description": "Vertically stacked list of invokers that can be clicked to reveal or hide content associated with them.",
|
|
||||||
"license": "MIT",
|
|
||||||
"author": "ing-bank",
|
|
||||||
"homepage": "https://github.com/ing-bank/lion/",
|
|
||||||
"repository": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/ing-bank/lion.git",
|
|
||||||
"directory": "packages/accordion"
|
|
||||||
},
|
|
||||||
"main": "index.js",
|
|
||||||
"module": "index.js",
|
|
||||||
"files": [
|
|
||||||
"*.d.ts",
|
|
||||||
"*.js",
|
|
||||||
"custom-elements.json",
|
|
||||||
"docs",
|
|
||||||
"src",
|
|
||||||
"test",
|
|
||||||
"test-helpers",
|
|
||||||
"translations",
|
|
||||||
"types"
|
|
||||||
],
|
|
||||||
"scripts": {
|
|
||||||
"custom-elements-manifest": "custom-elements-manifest analyze --litelement --exclude \"docs/**/*\" \"test-helpers/**/*\"",
|
|
||||||
"debug": "cd ../../ && npm run debug -- --group accordion",
|
|
||||||
"debug:firefox": "cd ../../ && npm run debug:firefox -- --group accordion",
|
|
||||||
"debug:webkit": "cd ../../ && npm run debug:webkit -- --group accordion",
|
|
||||||
"publish-docs": "node ../../packages-node/publish-docs/src/cli.js --github-url https://github.com/ing-bank/lion/ --git-root-dir ../../",
|
|
||||||
"prepublishOnly": "npm run publish-docs && npm run custom-elements-manifest",
|
|
||||||
"test": "cd ../../ && npm run test:browser -- --group accordion"
|
|
||||||
},
|
|
||||||
"sideEffects": [
|
|
||||||
"lion-accordion.js"
|
|
||||||
],
|
|
||||||
"dependencies": {
|
|
||||||
"@lion/core": "0.17.0"
|
|
||||||
},
|
|
||||||
"keywords": [
|
|
||||||
"accordion",
|
|
||||||
"lion",
|
|
||||||
"web-components"
|
|
||||||
],
|
|
||||||
"publishConfig": {
|
|
||||||
"access": "public"
|
|
||||||
},
|
|
||||||
"customElements": "custom-elements.json",
|
|
||||||
"exports": {
|
|
||||||
".": "./index.js",
|
|
||||||
"./docs/*": "./docs/*"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -47,27 +47,27 @@ describe('generateExtendDocsConfig', () => {
|
||||||
|
|
||||||
expect(result).to.deep.equal([
|
expect(result).to.deep.equal([
|
||||||
{
|
{
|
||||||
name: '@lion/accordion - LionAccordion',
|
name: '@lion/ui/accordion.js - LionAccordion',
|
||||||
variable: {
|
variable: {
|
||||||
from: 'LionAccordion',
|
from: 'LionAccordion',
|
||||||
to: 'IngAccordion',
|
to: 'IngAccordion',
|
||||||
paths: [
|
paths: [
|
||||||
{
|
{
|
||||||
from: '@lion/accordion',
|
from: '@lion/ui/accordion.js',
|
||||||
to: 'ing-web/accordion',
|
to: 'ing-web/accordion.js',
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: '@lion/accordion/define',
|
name: '@lion/ui/define/lion-accordion.js',
|
||||||
tag: {
|
tag: {
|
||||||
from: 'lion-accordion',
|
from: 'lion-accordion',
|
||||||
to: 'ing-accordion',
|
to: 'ing-accordion',
|
||||||
paths: [
|
paths: [
|
||||||
{
|
{
|
||||||
from: '@lion/accordion/define',
|
from: '@lion/ui/define/lion-accordion.js',
|
||||||
to: '#accordion/define',
|
to: '#define/ing-accordion.js',
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
|
@ -75,42 +75,7 @@ describe('generateExtendDocsConfig', () => {
|
||||||
]);
|
]);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('can configure the name of the json file that contains the export map', async () => {
|
it.skip('works if there is no npm scope sub folder', async () => {
|
||||||
const result = await execute('fixtures/export-map-json', {
|
|
||||||
exportsMapJsonFileName: 'exports.json',
|
|
||||||
});
|
|
||||||
|
|
||||||
expect(result).to.deep.equal([
|
|
||||||
{
|
|
||||||
name: '@lion/accordion - LionAccordion',
|
|
||||||
variable: {
|
|
||||||
from: 'LionAccordion',
|
|
||||||
to: 'IngAccordion',
|
|
||||||
paths: [
|
|
||||||
{
|
|
||||||
from: '@lion/accordion',
|
|
||||||
to: 'ing-web/accordion',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: '@lion/accordion/define',
|
|
||||||
tag: {
|
|
||||||
from: 'lion-accordion',
|
|
||||||
to: 'ing-accordion',
|
|
||||||
paths: [
|
|
||||||
{
|
|
||||||
from: '@lion/accordion/define',
|
|
||||||
to: '#accordion/define',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
]);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('works if there is no npm scope sub folder', async () => {
|
|
||||||
const result = await execute('fixtures/no-node-modules-scope-folder', {
|
const result = await execute('fixtures/no-node-modules-scope-folder', {
|
||||||
npmScope: '',
|
npmScope: '',
|
||||||
});
|
});
|
||||||
|
|
@ -150,60 +115,14 @@ describe('generateExtendDocsConfig', () => {
|
||||||
|
|
||||||
expect(result).to.deep.equal([
|
expect(result).to.deep.equal([
|
||||||
{
|
{
|
||||||
name: '@lion/core - calculateSum',
|
name: '@lion/ui/core.js - calculateSum',
|
||||||
variable: {
|
variable: {
|
||||||
from: 'calculateSum',
|
from: 'calculateSum',
|
||||||
to: 'calculateSum',
|
to: 'calculateSum',
|
||||||
paths: [
|
paths: [
|
||||||
{
|
{
|
||||||
from: '@lion/core',
|
from: '@lion/ui/core.js',
|
||||||
to: 'ing-web/core',
|
to: 'ing-web/core.js',
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
]);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('can handle exports with multiple lines', async () => {
|
|
||||||
const result = await execute('fixtures/multi-line');
|
|
||||||
|
|
||||||
expect(result).to.deep.equal([
|
|
||||||
{
|
|
||||||
name: '@lion/core - html',
|
|
||||||
variable: {
|
|
||||||
from: 'html',
|
|
||||||
to: 'html',
|
|
||||||
paths: [
|
|
||||||
{
|
|
||||||
from: '@lion/core',
|
|
||||||
to: 'ing-web/core',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: '@lion/core - CSSResult',
|
|
||||||
variable: {
|
|
||||||
from: 'CSSResult',
|
|
||||||
to: 'CSSResult',
|
|
||||||
paths: [
|
|
||||||
{
|
|
||||||
from: '@lion/core',
|
|
||||||
to: 'ing-web/core',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: '@lion/core - adoptStyles',
|
|
||||||
variable: {
|
|
||||||
from: 'adoptStyles',
|
|
||||||
to: 'adoptStyles',
|
|
||||||
paths: [
|
|
||||||
{
|
|
||||||
from: '@lion/core',
|
|
||||||
to: 'ing-web/core',
|
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
|
@ -221,27 +140,27 @@ describe('generateExtendDocsConfig', () => {
|
||||||
|
|
||||||
expect(result).to.deep.equal([
|
expect(result).to.deep.equal([
|
||||||
{
|
{
|
||||||
name: '@lion/accordion - LionAccordion',
|
name: '@lion/ui/accordion.js - LionAccordion',
|
||||||
variable: {
|
variable: {
|
||||||
from: 'LionAccordion',
|
from: 'LionAccordion',
|
||||||
to: 'WolfAccordion',
|
to: 'WolfAccordion',
|
||||||
paths: [
|
paths: [
|
||||||
{
|
{
|
||||||
from: '@lion/accordion',
|
from: '@lion/ui/accordion.js',
|
||||||
to: '@wolf-web/accordion',
|
to: '@wolf-web/accordion.js',
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: '@lion/accordion/define',
|
name: '@lion/ui/define/lion-accordion.js',
|
||||||
tag: {
|
tag: {
|
||||||
from: 'lion-accordion',
|
from: 'lion-accordion',
|
||||||
to: 'wolf-accordion',
|
to: 'wolf-accordion',
|
||||||
paths: [
|
paths: [
|
||||||
{
|
{
|
||||||
from: '@lion/accordion/define',
|
from: '@lion/ui/define/lion-accordion.js',
|
||||||
to: '@wolf-web/accordion/define',
|
to: '@wolf-web/define/wolf-accordion.js',
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
|
@ -249,7 +168,7 @@ describe('generateExtendDocsConfig', () => {
|
||||||
]);
|
]);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('works for packages with multiple class and tag exports', async () => {
|
it.skip('works for packages with multiple class and tag exports', async () => {
|
||||||
const result = await execute('fixtures/checkbox-group');
|
const result = await execute('fixtures/checkbox-group');
|
||||||
|
|
||||||
expect(result).to.deep.equal([
|
expect(result).to.deep.equal([
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,76 @@
|
||||||
|
/* eslint-disable import/no-extraneous-dependencies */
|
||||||
|
import path from 'path';
|
||||||
|
import { fileURLToPath } from 'url';
|
||||||
|
import chai from 'chai';
|
||||||
|
|
||||||
|
import { getPublicApiOfPkg } from '../src/getPublicApiOfPkg.js';
|
||||||
|
|
||||||
|
const { expect } = chai;
|
||||||
|
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {string} input
|
||||||
|
* @returns
|
||||||
|
*/
|
||||||
|
async function execute(input) {
|
||||||
|
const pkgJsonPath = path.join(__dirname, input);
|
||||||
|
const result = await getPublicApiOfPkg(pkgJsonPath);
|
||||||
|
return {
|
||||||
|
...result,
|
||||||
|
entryPoints: result.entryPoints.map(ep => ({
|
||||||
|
...ep,
|
||||||
|
path: ep.path.replace(__dirname, 'abs::'),
|
||||||
|
})),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
describe('getPublicApiOfPkg', () => {
|
||||||
|
it('01: works for star exports', async () => {
|
||||||
|
const result = await execute('fixtures/01-public-api/01-star-export/@lion/ui/package.json');
|
||||||
|
expect(result).to.deep.equal({
|
||||||
|
name: '@lion/ui',
|
||||||
|
entryPoints: [
|
||||||
|
{
|
||||||
|
entry: './*',
|
||||||
|
name: '@lion/ui/accordion.js',
|
||||||
|
namePath: 'accordion.js',
|
||||||
|
path: 'abs::/fixtures/01-public-api/01-star-export/@lion/ui/exports/accordion.js',
|
||||||
|
exports: ['LionAccordion'],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
entry: './*',
|
||||||
|
name: '@lion/ui/define/lion-accordion.js',
|
||||||
|
namePath: 'define/lion-accordion.js',
|
||||||
|
path: 'abs::/fixtures/01-public-api/01-star-export/@lion/ui/exports/define/lion-accordion.js',
|
||||||
|
exports: [],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('03: works for file exports', async () => {
|
||||||
|
const result = await execute('fixtures/01-public-api/02-file-export/@lion/ui/package.json');
|
||||||
|
expect(result).to.deep.equal({
|
||||||
|
name: '@lion/ui',
|
||||||
|
entryPoints: [
|
||||||
|
{
|
||||||
|
entry: '.',
|
||||||
|
name: '@lion/ui',
|
||||||
|
namePath: '',
|
||||||
|
path: 'abs::/fixtures/01-public-api/02-file-export/@lion/ui/src/LionAccordion.js',
|
||||||
|
exports: ['LionAccordion'],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('04: ignores none js files', async () => {
|
||||||
|
const result = await execute(
|
||||||
|
'fixtures/01-public-api/04-none-js-entrypoints/@lion/ui/package.json',
|
||||||
|
);
|
||||||
|
expect(result).to.deep.equal({
|
||||||
|
name: '@lion/ui',
|
||||||
|
entryPoints: [],
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
Loading…
Reference in a new issue