UNPKG

ember-codemod-v1-to-v2

Version:

Codemod to convert Ember addons to v2 addon format

84 lines (83 loc) 2.35 kB
function updateEmberAddon(packageJson, data) { const { hasPublicAssets, publicAssets } = data; if (hasPublicAssets) { packageJson['ember-addon'] = { 'app-js': {}, main: 'addon-main.cjs', 'public-assets': publicAssets, type: 'addon', version: 2, }; return; } packageJson['ember-addon'] = { 'app-js': {}, main: 'addon-main.cjs', type: 'addon', version: 2, }; } function updateExports(packageJson, data) { const { hasTypeScript } = data; if (!hasTypeScript) { packageJson['exports'] = { '.': './dist/index.js', './*': './dist/*.js', './addon-main.js': './addon-main.cjs', }; return; } packageJson['exports'] = { '.': { types: './declarations/index.d.ts', default: './dist/index.js', }, './*': { /* This object has an order dependency. The `default` key must appear last. */ types: './declarations/*.d.ts', default: './dist/*.js', }, './addon-main.js': './addon-main.cjs', }; } function updateFiles(packageJson, data) { const { hasBlueprints, hasPublicAssets, hasTypeScript } = data; const files = new Set(['addon-main.cjs', 'dist']); if (hasBlueprints) { files.add('blueprints'); } if (hasPublicAssets) { files.add('public'); } if (hasTypeScript) { files.add('declarations'); } packageJson['files'] = Array.from(files).sort(); } function updateTypesVersions(packageJson, data) { const { hasTypeScript } = data; if (!hasTypeScript) { return; } packageJson['typesVersions'] = { '*': { '*': ['declarations/*'], }, }; } export function updateOtherFields(packageJson, context, options) { const { hasBlueprints, hasPublicAssets, publicAssets } = context.addon; const { hasTypeScript } = options.packages.addon; const data = { hasBlueprints, hasPublicAssets, hasTypeScript, publicAssets, }; updateEmberAddon(packageJson, data); updateExports(packageJson, data); updateFiles(packageJson, data); updateTypesVersions(packageJson, data); }