Skip to content
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
8 changes: 3 additions & 5 deletions packages/data/src/css/data-types.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
export interface DataType {
export type DataType = {
groups: string[];
status: 'standard' | 'nonstandard' | 'experimental';
mdn_url?: string;
}
};

export interface DataTypes {
[name: string]: DataType;
}
export type DataTypes = Record<string, DataType>;

// Populated via @email-types/scripts during the build pipeline.
// This cannot be a named export or it will not work.
Expand Down
4 changes: 1 addition & 3 deletions packages/data/src/css/index.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1 @@
import { dataTypes, DataType, DataTypes } from './data-types';

export { dataTypes, DataType, DataTypes };
export * from './data-types';
1 change: 0 additions & 1 deletion packages/data/src/html/index.ts
Original file line number Diff line number Diff line change
@@ -1,2 +1 @@
export * from './doctypes';
export * from './doctypes.types';
5 changes: 0 additions & 5 deletions packages/data/src/mso/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,3 @@ export * from './operators';
export * from './properties';
export * from './syntaxes';
export * from './versions';

export * from './operators.types';
export * from './properties.types';
export * from './syntaxes.types';
export * from './versions.types';
6 changes: 4 additions & 2 deletions packages/scripts/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,5 +34,7 @@ yarn prerelease

**Tasks**

- Automatically removes empty `*.js` files from the `@email-types/data` dist,
reducing overall package size.
- Automatically merges `*.types.d.ts` files with matched `.d.ts` files in
`@email-types/data` dist, reducing overall package size.
- Automatically removes empty `*.js` and unused `*.types.d.ts` files from the
`@email-types/data` dist, reducing overall package size.
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ const createTemplate = <T extends object = {}>(
`exports.${name} = ${name};`,
];

return content.join(`${EOL}${EOL}`);
return content.join(`${EOL}`);
};

const createTransport = (pkg: Package) => async (
Expand Down
43 changes: 43 additions & 0 deletions packages/scripts/prerelease/optimize.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
import fs from 'fs-extra';
import glob from 'tiny-glob';
import { log, getPackagePath, Package } from '../utils';

const extensions = 'types';

const importPattern = RegExp(
`import(?:["'\\s]*[\\w*\\$\\{\\}\n\r\t, ]+from\\s*)?["'\\s]["'\\s](.*[@\\w_-]+\\.${extensions})["'\\s].*;$`,
'gmi',
);

const clean = async (target: string): Promise<boolean> => {
const source = target.replace('.d.ts', `.${extensions}.d.ts`);

if (fs.existsSync(source)) {
const content = await fs.readFile(target, 'utf-8');
const [match] = content.match(importPattern) || [];

if (match) {
const types = await fs.readFile(source, 'utf-8');
const next = content.replace(match, types.replace('export {};\n', ''));

await fs.outputFile(target, next);
await fs.remove(source);
await fs.remove(source.replace('.d.ts', '.js'));
return true;
}
}

return false;
};

export const optimize = async (pkg: Package): Promise<void> => {
const filepaths = await glob(`**/*.d.ts`, {
cwd: getPackagePath(pkg, 'dist'),
absolute: true,
});

log.wait(`Merging '*.types.d.ts' files with '*.d.ts'...`);
const results = await Promise.all(filepaths.map(clean));

log.done(`Optimized ${results.filter(Boolean).length} declaration files`);
};
29 changes: 0 additions & 29 deletions packages/scripts/prerelease/removeEmpty.ts

This file was deleted.

2 changes: 1 addition & 1 deletion packages/scripts/tasks/build.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { transfer } from '../transfer';
import { transfer } from '../build/transfer';
import { log } from '../utils';

const pkgs = [
Expand Down
5 changes: 3 additions & 2 deletions packages/scripts/tasks/prerelease.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
import { removeEmpty } from '../prerelease/removeEmpty';
import { optimize } from '../prerelease/optimize';
import { log } from '../utils';

(async (): Promise<void> => {
try {
log.info('Running prerelease task...');
await removeEmpty('data');

await optimize('data');
log.done('Successfully ran prerelease task');
} catch (error) {
log.error(error);
Expand Down