Skip to content

Commit 03a2fba

Browse files
authored
Clean up package integrity (jupyterlab#10122)
1 parent 66d2ccb commit 03a2fba

File tree

12 files changed

+71
-21
lines changed

12 files changed

+71
-21
lines changed

buildutils/package.json

+1
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
"fs-extra": "^9.0.1",
4848
"glob": "~7.1.6",
4949
"inquirer": "^7.0.0",
50+
"minimatch": "~3.0.4",
5051
"package-json": "^6.5.0",
5152
"prettier": "^2.1.1",
5253
"semver": "^7.3.2",

buildutils/src/ensure-package.ts

+53
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
import * as fs from 'fs-extra';
77
import * as glob from 'glob';
8+
import * as minimatch from 'minimatch';
89
import * as path from 'path';
910
import * as prettier from 'prettier';
1011
import * as ts from 'typescript';
@@ -438,6 +439,58 @@ export async function ensurePackage(
438439
}
439440
}
440441

442+
// Ensure style and lib are included in files metadata.
443+
const filePatterns: string[] = data.files || [];
444+
445+
// Function to get all of the files in a directory, recursively.
446+
function recurseDir(dirname: string, files: string[]) {
447+
if (!fs.existsSync(dirname)) {
448+
return files;
449+
}
450+
fs.readdirSync(dirname).forEach(fpath => {
451+
const absolute = path.join(dirname, fpath);
452+
if (fs.statSync(absolute).isDirectory())
453+
return recurseDir(absolute, files);
454+
else return files.push(absolute);
455+
});
456+
return files;
457+
}
458+
459+
// Ensure style files are included by pattern.
460+
const styleFiles = recurseDir(path.join(pkgPath, 'style'), []);
461+
styleFiles.forEach(fpath => {
462+
const basePath = fpath.slice(pkgPath.length + 1);
463+
let found = false;
464+
filePatterns.forEach(fpattern => {
465+
if (minimatch.default(basePath, fpattern)) {
466+
found = true;
467+
}
468+
});
469+
if (!found) {
470+
messages.push(`File ${basePath} not included in files`);
471+
}
472+
});
473+
474+
// Ensure source TS files are included in lib (.js, .js.map, .d.ts)
475+
const srcFiles = recurseDir(path.join(pkgPath, 'src'), []);
476+
srcFiles.forEach(fpath => {
477+
const basePath = fpath.slice(pkgPath.length + 1).replace('src', 'lib');
478+
['.js', '.js.map', '.d.ts'].forEach(ending => {
479+
let found = false;
480+
const targetPattern = basePath
481+
.replace('.tsx', ending)
482+
.replace('.ts', ending);
483+
filePatterns.forEach(fpattern => {
484+
if (minimatch.default(targetPattern, fpattern)) {
485+
found = true;
486+
}
487+
});
488+
if (!found) {
489+
messages.push(`File ${targetPattern} not included in files`);
490+
}
491+
});
492+
});
493+
441494
// Ensure dependencies and dev dependencies.
442495
data.dependencies = deps;
443496
data.devDependencies = devDeps;

packages/celltags-extension/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
"lib": "lib/"
2929
},
3030
"files": [
31-
"lib/*.{d.ts,js}",
31+
"lib/*.{d.ts,js,js.map}",
3232
"style/*.css",
3333
"style/index.js"
3434
],

packages/celltags/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
"lib": "lib/"
2929
},
3030
"files": [
31-
"lib/*.{d.ts,js}",
31+
"lib/*.{d.ts,js,js.map}",
3232
"style/*.css",
3333
"static/*.svg",
3434
"style/index.js"

packages/javascript-extension/package.json

+1-2
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,7 @@
2222
"lib": "lib/"
2323
},
2424
"files": [
25-
"lib/*.d.ts",
26-
"lib/*.js",
25+
"lib/*.{d.ts,js,js.map}",
2726
"style/*"
2827
],
2928
"scripts": {

packages/json-extension/package.json

+1-2
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,7 @@
2222
"lib": "lib/"
2323
},
2424
"files": [
25-
"lib/*.d.ts",
26-
"lib/*.js",
25+
"lib/*.{d.ts,js,js.map}",
2726
"style/*"
2827
],
2928
"scripts": {

packages/services/examples/browser/package.json

+3
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22
"name": "@jupyterlab/example-services-browser",
33
"version": "3.1.0-alpha.5",
44
"private": true,
5+
"files": [
6+
"lib/*.{d.ts,js,js.map}"
7+
],
58
"scripts": {
69
"build": "tsc && webpack",
710
"clean": "rimraf lib && rimraf tsconfig.tsbuildinfo",

packages/ui-components-extension/package.json

+1-2
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,7 @@
2222
"lib": "lib/"
2323
},
2424
"files": [
25-
"lib/*.d.ts",
26-
"lib/*.js",
25+
"lib/*.{d.ts,js,js.map}",
2726
"style/*"
2827
],
2928
"scripts": {

packages/vdom-extension/package.json

+1-2
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,7 @@
2222
"lib": "lib/"
2323
},
2424
"files": [
25-
"lib/*.d.ts",
26-
"lib/*.js",
25+
"lib/*.{d.ts,js,js.map}",
2726
"style/*"
2827
],
2928
"scripts": {

packages/vdom/package.json

+1-2
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,7 @@
2222
"lib": "lib/"
2323
},
2424
"files": [
25-
"lib/*.d.ts",
26-
"lib/*.js",
25+
"lib/*.{d.ts,js,js.map}",
2726
"style/*"
2827
],
2928
"scripts": {

packages/vega5-extension/package.json

+1-2
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,7 @@
2222
"lib": "lib/"
2323
},
2424
"files": [
25-
"lib/*.d.ts",
26-
"lib/*.js",
25+
"lib/*.{d.ts,js,js.map}",
2726
"style/*.*"
2827
],
2928
"scripts": {

typedoc.js

+6-7
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// const git = require('git-rev-sync');
1+
const fs = require('fs');
22

33
const packages = [
44
// 'application-extension',
@@ -86,12 +86,11 @@ const packages = [
8686
'vega5-extension'
8787
];
8888

89-
const entryPoints = packages.flatMap(p => [
90-
`packages/${p}/src/index.ts`,
91-
`packages/${p}/src/index.tsx`
92-
// `${__dirname}/packages/${p}/src/*.d.ts`,
93-
// `${__dirname}/packages/${p}/src/index.ts`,
94-
]);
89+
const entryPoints = packages
90+
.flatMap(p => [`packages/${p}/src/index.ts`, `packages/${p}/src/index.tsx`])
91+
.filter(function (path) {
92+
return fs.existsSync(path);
93+
});
9594

9695
const exclude =
9796
packages.flatMap(p => [`packages/${p}/test`]) +

0 commit comments

Comments
 (0)