diff --git a/docworks-dts/lib/multiple-files/index.js b/docworks-dts/lib/multiple-files/index.js index 78894a4..8ce6ed0 100644 --- a/docworks-dts/lib/multiple-files/index.js +++ b/docworks-dts/lib/multiple-files/index.js @@ -4,10 +4,6 @@ const { set: setDocumentationGenerator } = require('./providers/documentationGenerator') -const { - init: initModulesDependencies -} = require('./providers/modulesDependencies') - const getMainContent = modulesNames => modulesNames.reduce( (content, name) => content + dtsTripleSlashReference(name) + '\n', @@ -31,7 +27,6 @@ const main = ( mainFileName = 'index.d.ts' } = {} ) => { - initModulesDependencies() setDocumentationGenerator(summaryTemplate) const wixModuleFiles = repoCreator({ services, run$wFixer }) diff --git a/docworks-dts/lib/multiple-files/providers/modulesDependencies.js b/docworks-dts/lib/multiple-files/providers/modulesDependencies.js deleted file mode 100644 index 79640e9..0000000 --- a/docworks-dts/lib/multiple-files/providers/modulesDependencies.js +++ /dev/null @@ -1,19 +0,0 @@ -const camelCase_ = require('lodash/camelCase') - -let moduleDependenciesMap = {} -const getModulesDependenciesMap = () => moduleDependenciesMap -const addDependency = (dependentName, dependencyName) => { - if (!(dependentName in moduleDependenciesMap)) { - moduleDependenciesMap[dependentName] = {} - } - const camelCaseDependencyName = camelCase_(dependencyName) - moduleDependenciesMap[dependentName][camelCaseDependencyName] = { - from: dependencyName, - to: camelCaseDependencyName - } -} -module.exports = { - init: () => (moduleDependenciesMap = {}), - addDependency, - getModulesDependenciesMap -} diff --git a/docworks-dts/lib/multiple-files/repoCreator.js b/docworks-dts/lib/multiple-files/repoCreator.js index 4ddaf05..01cd7ee 100644 --- a/docworks-dts/lib/multiple-files/repoCreator.js +++ b/docworks-dts/lib/multiple-files/repoCreator.js @@ -1,11 +1,9 @@ -const { createHierarchicalServicesMap } = require('./serviceUtils') +const { + isEmptyModule, + createHierarchicalServicesMap +} = require('./serviceUtils') const { moduleBuilder, $wGlobalNamespaceBuilder } = require('./builders') const { $W_NAME } = require('./constants') -const { getModulesDependenciesMap } = require('./providers/modulesDependencies') -const { - emit, - dtsImportDefault -} = require('./generators') const is$w = name => name === $W_NAME @@ -13,6 +11,7 @@ const createModulesFilesMap = ({ services, run$wFixer }) => { const servicesMap = createHierarchicalServicesMap(services) return Object.keys(servicesMap).reduce((filesMap, moduleName) => { const rootService = servicesMap[moduleName] + if (isEmptyModule(rootService)) return filesMap return { ...filesMap, [moduleName]: is$w(moduleName) @@ -22,29 +21,9 @@ const createModulesFilesMap = ({ services, run$wFixer }) => { }, {}) } -const createImportStatements = dependencies => { - return Object.keys(dependencies).map(depModuleKey => { - const dependency = dependencies[depModuleKey] - return emit(dtsImportDefault(dependency.to, dependency.from)) - }) -} - -const prependImportStatements = (module, extraConetnt) => { - if (module) { - module.content = [...extraConetnt, module.content].join('\n') - } -} - const repoCreator = ({ services, run$wFixer }) => { const modulesFiles = createModulesFilesMap({ services, run$wFixer }) - const modulesDependencies = getModulesDependenciesMap() - Object.keys(modulesDependencies).forEach(moduleKey => { - const dependencies = modulesDependencies[moduleKey] - const importStatments = createImportStatements(dependencies) - prependImportStatements(modulesFiles[moduleKey], importStatments) - }) - return modulesFiles } module.exports = repoCreator diff --git a/docworks-dts/lib/multiple-files/serviceUtils.js b/docworks-dts/lib/multiple-files/serviceUtils.js index 2156058..73a9a2a 100644 --- a/docworks-dts/lib/multiple-files/serviceUtils.js +++ b/docworks-dts/lib/multiple-files/serviceUtils.js @@ -11,10 +11,15 @@ const isEmptyInterface = service => isEmpty_(service.properties) && isEmpty_(service.operations) const isEmptyNamespace = service => - isEmpty_(service.services) && + isEmpty_(service[SUB_SERVICES_KEY]) && isEmpty_(service.messages) && isEmpty_(service.callbacks) +const isEmptyModule = service => + isEmpty_(service[SUB_SERVICES_KEY]) && + isEmpty_(service.properties)&& + isEmpty_(service.operations) + const getServiceSummary = service => service && service.docs && service.docs.summary ? service.docs.summary : '' @@ -102,6 +107,7 @@ const createHierarchicalServicesMap = services => { return modulesMapManager.getMap() } module.exports = { + isEmptyModule, isEmptyInterface, isEmptyNamespace, getServiceSummary, diff --git a/docworks-dts/lib/multiple-files/typeResolver.js b/docworks-dts/lib/multiple-files/typeResolver.js index 894e984..dbf9d1e 100644 --- a/docworks-dts/lib/multiple-files/typeResolver.js +++ b/docworks-dts/lib/multiple-files/typeResolver.js @@ -1,5 +1,3 @@ -const camelCase_ = require('lodash/camelCase') -const { addDependency } = require('./providers/modulesDependencies') const { $W_NAME, TYPES } = require('./constants') const { BASE_TYPES, @@ -50,13 +48,8 @@ const isCrossReferenceType = (type, service) => const resolveCrossReferenceType = (type, service) => { if (isTypeGlobal(type)) return type - - const { name, memberOf } = service - const [currentModuleName] = memberOf ? memberOf.split('.') : [name] const [crossedTypeModuleName, ...otherParts] = type.split('.') - - addDependency(currentModuleName, crossedTypeModuleName) - return `${camelCase_(crossedTypeModuleName)}.${otherParts.join('.')}` + return `import('${crossedTypeModuleName}').${otherParts.join('.')}` } const normalizeType = (type, service) => { diff --git a/docworks-dts/test/multiple-files/main.test.js b/docworks-dts/test/multiple-files/main.test.js index d3b13d2..9bd7e87 100644 --- a/docworks-dts/test/multiple-files/main.test.js +++ b/docworks-dts/test/multiple-files/main.test.js @@ -23,6 +23,24 @@ const DETACHED_SERVICE_JSON = { clientId: 'test' } +const EMPTY_SERVICE_JSON = { + name: 'Test', + mixes: [], + labels: [], + docs: { + summary: '', + description: [], + links: [], + examples: [], + request: 'NA' + }, + properties: [], + operations: [], + callbacks: [], + messages: [], + clientId: 'test' +} + const getServiceJson = servicePath => require(path.join('../services/', servicePath)) const run = paths => { @@ -148,6 +166,10 @@ describe('convert docworks to dts', () => { expect(content).toContain(expectedDeceleration1) expect(content).toContain(expectedDeceleration2) }) + test('should filter empty modules', () => { + const [{ content }] = multifilesMain([EMPTY_SERVICE_JSON], { summaryTemplate }) + expect(content).toEqual('') + }) }) describe('properties', () => {