@baseplate-dev/core-generators 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +390 -0
- package/dist/constants/core-packages.d.ts +21 -0
- package/dist/constants/core-packages.d.ts.map +1 -0
- package/dist/constants/core-packages.js +26 -0
- package/dist/constants/core-packages.js.map +1 -0
- package/dist/constants/index.d.ts +2 -0
- package/dist/constants/index.d.ts.map +1 -0
- package/dist/constants/index.js +2 -0
- package/dist/constants/index.js.map +1 -0
- package/dist/constants/node.d.ts +3 -0
- package/dist/constants/node.d.ts.map +1 -0
- package/dist/constants/node.js +3 -0
- package/dist/constants/node.js.map +1 -0
- package/dist/generators/docker/docker-compose/docker-compose.generator.d.ts +17 -0
- package/dist/generators/docker/docker-compose/docker-compose.generator.d.ts.map +1 -0
- package/dist/generators/docker/docker-compose/docker-compose.generator.js +83 -0
- package/dist/generators/docker/docker-compose/docker-compose.generator.js.map +1 -0
- package/dist/generators/docker/docker-compose/postgres.d.ts +8 -0
- package/dist/generators/docker/docker-compose/postgres.d.ts.map +1 -0
- package/dist/generators/docker/docker-compose/postgres.js +22 -0
- package/dist/generators/docker/docker-compose/postgres.js.map +1 -0
- package/dist/generators/docker/docker-compose/redis.d.ts +8 -0
- package/dist/generators/docker/docker-compose/redis.d.ts.map +1 -0
- package/dist/generators/docker/docker-compose/redis.js +21 -0
- package/dist/generators/docker/docker-compose/redis.js.map +1 -0
- package/dist/generators/docker/docker-compose/types.d.ts +5 -0
- package/dist/generators/docker/docker-compose/types.d.ts.map +1 -0
- package/dist/generators/docker/docker-compose/types.js +2 -0
- package/dist/generators/docker/docker-compose/types.js.map +1 -0
- package/dist/generators/docker/index.d.ts +2 -0
- package/dist/generators/docker/index.d.ts.map +1 -0
- package/dist/generators/docker/index.js +2 -0
- package/dist/generators/docker/index.js.map +1 -0
- package/dist/generators/index.d.ts +3 -0
- package/dist/generators/index.d.ts.map +1 -0
- package/dist/generators/index.js +3 -0
- package/dist/generators/index.js.map +1 -0
- package/dist/generators/node/_composers/index.d.ts +2 -0
- package/dist/generators/node/_composers/index.d.ts.map +1 -0
- package/dist/generators/node/_composers/index.js +2 -0
- package/dist/generators/node/_composers/index.js.map +1 -0
- package/dist/generators/node/_composers/node.d.ts +4 -0
- package/dist/generators/node/_composers/node.d.ts.map +1 -0
- package/dist/generators/node/_composers/node.js +18 -0
- package/dist/generators/node/_composers/node.js.map +1 -0
- package/dist/generators/node/eslint/eslint.generator.d.ts +33 -0
- package/dist/generators/node/eslint/eslint.generator.d.ts.map +1 -0
- package/dist/generators/node/eslint/eslint.generator.js +110 -0
- package/dist/generators/node/eslint/eslint.generator.js.map +1 -0
- package/dist/generators/node/eslint/generated/ts-templates.d.ts +9 -0
- package/dist/generators/node/eslint/generated/ts-templates.d.ts.map +1 -0
- package/dist/generators/node/eslint/generated/ts-templates.js +14 -0
- package/dist/generators/node/eslint/generated/ts-templates.js.map +1 -0
- package/dist/generators/node/eslint/react-rules.d.ts +2 -0
- package/dist/generators/node/eslint/react-rules.d.ts.map +1 -0
- package/dist/generators/node/eslint/react-rules.js +59 -0
- package/dist/generators/node/eslint/react-rules.js.map +1 -0
- package/dist/generators/node/eslint/templates/eslint.config.js +219 -0
- package/dist/generators/node/eslint/vitest-rules.d.ts +2 -0
- package/dist/generators/node/eslint/vitest-rules.d.ts.map +1 -0
- package/dist/generators/node/eslint/vitest-rules.js +17 -0
- package/dist/generators/node/eslint/vitest-rules.js.map +1 -0
- package/dist/generators/node/index.d.ts +9 -0
- package/dist/generators/node/index.d.ts.map +1 -0
- package/dist/generators/node/index.js +9 -0
- package/dist/generators/node/index.js.map +1 -0
- package/dist/generators/node/node/node.generator.d.ts +72 -0
- package/dist/generators/node/node/node.generator.d.ts.map +1 -0
- package/dist/generators/node/node/node.generator.js +149 -0
- package/dist/generators/node/node/node.generator.js.map +1 -0
- package/dist/generators/node/node/package-dependencies-container.d.ts +41 -0
- package/dist/generators/node/node/package-dependencies-container.d.ts.map +1 -0
- package/dist/generators/node/node/package-dependencies-container.js +104 -0
- package/dist/generators/node/node/package-dependencies-container.js.map +1 -0
- package/dist/generators/node/node-git-ignore/node-git-ignore.generator.d.ts +15 -0
- package/dist/generators/node/node-git-ignore/node-git-ignore.generator.d.ts.map +1 -0
- package/dist/generators/node/node-git-ignore/node-git-ignore.generator.js +75 -0
- package/dist/generators/node/node-git-ignore/node-git-ignore.generator.js.map +1 -0
- package/dist/generators/node/prettier/prettier.generator.d.ts +33 -0
- package/dist/generators/node/prettier/prettier.generator.d.ts.map +1 -0
- package/dist/generators/node/prettier/prettier.generator.js +191 -0
- package/dist/generators/node/prettier/prettier.generator.js.map +1 -0
- package/dist/generators/node/ts-utils/generated/ts-import-maps.d.ts +21 -0
- package/dist/generators/node/ts-utils/generated/ts-import-maps.d.ts.map +1 -0
- package/dist/generators/node/ts-utils/generated/ts-import-maps.js +22 -0
- package/dist/generators/node/ts-utils/generated/ts-import-maps.js.map +1 -0
- package/dist/generators/node/ts-utils/generated/ts-templates.d.ts +7 -0
- package/dist/generators/node/ts-utils/generated/ts-templates.d.ts.map +1 -0
- package/dist/generators/node/ts-utils/generated/ts-templates.js +32 -0
- package/dist/generators/node/ts-utils/generated/ts-templates.js.map +1 -0
- package/dist/generators/node/ts-utils/templates/arrays.ts +13 -0
- package/dist/generators/node/ts-utils/templates/normalize-types.ts +12 -0
- package/dist/generators/node/ts-utils/templates/nulls.ts +33 -0
- package/dist/generators/node/ts-utils/templates/string.ts +11 -0
- package/dist/generators/node/ts-utils/ts-utils.generator.d.ts +17 -0
- package/dist/generators/node/ts-utils/ts-utils.generator.d.ts.map +1 -0
- package/dist/generators/node/ts-utils/ts-utils.generator.js +48 -0
- package/dist/generators/node/ts-utils/ts-utils.generator.js.map +1 -0
- package/dist/generators/node/typescript/compiler-types.d.ts +178 -0
- package/dist/generators/node/typescript/compiler-types.d.ts.map +1 -0
- package/dist/generators/node/typescript/compiler-types.js +70 -0
- package/dist/generators/node/typescript/compiler-types.js.map +1 -0
- package/dist/generators/node/typescript/typescript.generator.d.ts +117 -0
- package/dist/generators/node/typescript/typescript.generator.d.ts.map +1 -0
- package/dist/generators/node/typescript/typescript.generator.js +198 -0
- package/dist/generators/node/typescript/typescript.generator.js.map +1 -0
- package/dist/generators/node/vitest/generated/ts-templates.d.ts +9 -0
- package/dist/generators/node/vitest/generated/ts-templates.d.ts.map +1 -0
- package/dist/generators/node/vitest/generated/ts-templates.js +15 -0
- package/dist/generators/node/vitest/generated/ts-templates.js.map +1 -0
- package/dist/generators/node/vitest/templates/global-setup.ts +5 -0
- package/dist/generators/node/vitest/templates/vitest.config.ts +5 -0
- package/dist/generators/node/vitest/vitest.generator.d.ts +26 -0
- package/dist/generators/node/vitest/vitest.generator.d.ts.map +1 -0
- package/dist/generators/node/vitest/vitest.generator.js +93 -0
- package/dist/generators/node/vitest/vitest.generator.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/providers/index.d.ts +3 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +3 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/project.d.ts +5 -0
- package/dist/providers/project.d.ts.map +1 -0
- package/dist/providers/project.js +3 -0
- package/dist/providers/project.js.map +1 -0
- package/dist/providers/scopes.d.ts +3 -0
- package/dist/providers/scopes.d.ts.map +1 -0
- package/dist/providers/scopes.js +4 -0
- package/dist/providers/scopes.js.map +1 -0
- package/dist/renderers/index.d.ts +2 -0
- package/dist/renderers/index.d.ts.map +1 -0
- package/dist/renderers/index.js +2 -0
- package/dist/renderers/index.js.map +1 -0
- package/dist/renderers/typescript/actions/index.d.ts +4 -0
- package/dist/renderers/typescript/actions/index.d.ts.map +1 -0
- package/dist/renderers/typescript/actions/index.js +4 -0
- package/dist/renderers/typescript/actions/index.js.map +1 -0
- package/dist/renderers/typescript/actions/render-ts-fragment-action.d.ts +12 -0
- package/dist/renderers/typescript/actions/render-ts-fragment-action.d.ts.map +1 -0
- package/dist/renderers/typescript/actions/render-ts-fragment-action.js +25 -0
- package/dist/renderers/typescript/actions/render-ts-fragment-action.js.map +1 -0
- package/dist/renderers/typescript/actions/render-ts-template-file-action.d.ts +32 -0
- package/dist/renderers/typescript/actions/render-ts-template-file-action.d.ts.map +1 -0
- package/dist/renderers/typescript/actions/render-ts-template-file-action.js +65 -0
- package/dist/renderers/typescript/actions/render-ts-template-file-action.js.map +1 -0
- package/dist/renderers/typescript/actions/render-ts-template-group-action.d.ts +58 -0
- package/dist/renderers/typescript/actions/render-ts-template-group-action.d.ts.map +1 -0
- package/dist/renderers/typescript/actions/render-ts-template-group-action.js +69 -0
- package/dist/renderers/typescript/actions/render-ts-template-group-action.js.map +1 -0
- package/dist/renderers/typescript/extractor/extract-ts-template-variables.d.ts +18 -0
- package/dist/renderers/typescript/extractor/extract-ts-template-variables.d.ts.map +1 -0
- package/dist/renderers/typescript/extractor/extract-ts-template-variables.js +38 -0
- package/dist/renderers/typescript/extractor/extract-ts-template-variables.js.map +1 -0
- package/dist/renderers/typescript/extractor/index.d.ts +2 -0
- package/dist/renderers/typescript/extractor/index.d.ts.map +1 -0
- package/dist/renderers/typescript/extractor/index.js +2 -0
- package/dist/renderers/typescript/extractor/index.js.map +1 -0
- package/dist/renderers/typescript/extractor/organize-ts-template-imports.d.ts +26 -0
- package/dist/renderers/typescript/extractor/organize-ts-template-imports.d.ts.map +1 -0
- package/dist/renderers/typescript/extractor/organize-ts-template-imports.js +175 -0
- package/dist/renderers/typescript/extractor/organize-ts-template-imports.js.map +1 -0
- package/dist/renderers/typescript/extractor/preprocess-code-for-extraction-hack.d.ts +17 -0
- package/dist/renderers/typescript/extractor/preprocess-code-for-extraction-hack.d.ts.map +1 -0
- package/dist/renderers/typescript/extractor/preprocess-code-for-extraction-hack.js +46 -0
- package/dist/renderers/typescript/extractor/preprocess-code-for-extraction-hack.js.map +1 -0
- package/dist/renderers/typescript/extractor/templates/imports-file.d.ts +2 -0
- package/dist/renderers/typescript/extractor/templates/imports-file.d.ts.map +1 -0
- package/dist/renderers/typescript/extractor/templates/imports-file.js +35 -0
- package/dist/renderers/typescript/extractor/templates/imports-file.js.map +1 -0
- package/dist/renderers/typescript/extractor/ts-template-file-extractor.d.ts +167 -0
- package/dist/renderers/typescript/extractor/ts-template-file-extractor.d.ts.map +1 -0
- package/dist/renderers/typescript/extractor/ts-template-file-extractor.js +279 -0
- package/dist/renderers/typescript/extractor/ts-template-file-extractor.js.map +1 -0
- package/dist/renderers/typescript/extractor/write-ts-project-exports.d.ts +96 -0
- package/dist/renderers/typescript/extractor/write-ts-project-exports.d.ts.map +1 -0
- package/dist/renderers/typescript/extractor/write-ts-project-exports.js +139 -0
- package/dist/renderers/typescript/extractor/write-ts-project-exports.js.map +1 -0
- package/dist/renderers/typescript/fragments/creators.d.ts +29 -0
- package/dist/renderers/typescript/fragments/creators.d.ts.map +1 -0
- package/dist/renderers/typescript/fragments/creators.js +53 -0
- package/dist/renderers/typescript/fragments/creators.js.map +1 -0
- package/dist/renderers/typescript/fragments/index.d.ts +4 -0
- package/dist/renderers/typescript/fragments/index.d.ts.map +1 -0
- package/dist/renderers/typescript/fragments/index.js +3 -0
- package/dist/renderers/typescript/fragments/index.js.map +1 -0
- package/dist/renderers/typescript/fragments/types.d.ts +65 -0
- package/dist/renderers/typescript/fragments/types.d.ts.map +1 -0
- package/dist/renderers/typescript/fragments/types.js +2 -0
- package/dist/renderers/typescript/fragments/types.js.map +1 -0
- package/dist/renderers/typescript/fragments/utils.d.ts +51 -0
- package/dist/renderers/typescript/fragments/utils.d.ts.map +1 -0
- package/dist/renderers/typescript/fragments/utils.js +134 -0
- package/dist/renderers/typescript/fragments/utils.js.map +1 -0
- package/dist/renderers/typescript/import-maps/index.d.ts +4 -0
- package/dist/renderers/typescript/import-maps/index.d.ts.map +1 -0
- package/dist/renderers/typescript/import-maps/index.js +3 -0
- package/dist/renderers/typescript/import-maps/index.js.map +1 -0
- package/dist/renderers/typescript/import-maps/transform-ts-imports-with-map.d.ts +19 -0
- package/dist/renderers/typescript/import-maps/transform-ts-imports-with-map.d.ts.map +1 -0
- package/dist/renderers/typescript/import-maps/transform-ts-imports-with-map.js +54 -0
- package/dist/renderers/typescript/import-maps/transform-ts-imports-with-map.js.map +1 -0
- package/dist/renderers/typescript/import-maps/ts-import-map.d.ts +10 -0
- package/dist/renderers/typescript/import-maps/ts-import-map.d.ts.map +1 -0
- package/dist/renderers/typescript/import-maps/ts-import-map.js +39 -0
- package/dist/renderers/typescript/import-maps/ts-import-map.js.map +1 -0
- package/dist/renderers/typescript/import-maps/types.d.ts +28 -0
- package/dist/renderers/typescript/import-maps/types.d.ts.map +1 -0
- package/dist/renderers/typescript/import-maps/types.js +2 -0
- package/dist/renderers/typescript/import-maps/types.js.map +1 -0
- package/dist/renderers/typescript/imports/builder.d.ts +49 -0
- package/dist/renderers/typescript/imports/builder.d.ts.map +1 -0
- package/dist/renderers/typescript/imports/builder.js +47 -0
- package/dist/renderers/typescript/imports/builder.js.map +1 -0
- package/dist/renderers/typescript/imports/index.d.ts +8 -0
- package/dist/renderers/typescript/imports/index.d.ts.map +1 -0
- package/dist/renderers/typescript/imports/index.js +7 -0
- package/dist/renderers/typescript/imports/index.js.map +1 -0
- package/dist/renderers/typescript/imports/merge-ts-import-declarations.d.ts +20 -0
- package/dist/renderers/typescript/imports/merge-ts-import-declarations.d.ts.map +1 -0
- package/dist/renderers/typescript/imports/merge-ts-import-declarations.js +114 -0
- package/dist/renderers/typescript/imports/merge-ts-import-declarations.js.map +1 -0
- package/dist/renderers/typescript/imports/normalize-module-specifier.d.ts +40 -0
- package/dist/renderers/typescript/imports/normalize-module-specifier.d.ts.map +1 -0
- package/dist/renderers/typescript/imports/normalize-module-specifier.js +133 -0
- package/dist/renderers/typescript/imports/normalize-module-specifier.js.map +1 -0
- package/dist/renderers/typescript/imports/sort-imports/get-import-sort-group.d.ts +31 -0
- package/dist/renderers/typescript/imports/sort-imports/get-import-sort-group.d.ts.map +1 -0
- package/dist/renderers/typescript/imports/sort-imports/get-import-sort-group.js +169 -0
- package/dist/renderers/typescript/imports/sort-imports/get-import-sort-group.js.map +1 -0
- package/dist/renderers/typescript/imports/sort-imports/index.d.ts +2 -0
- package/dist/renderers/typescript/imports/sort-imports/index.d.ts.map +1 -0
- package/dist/renderers/typescript/imports/sort-imports/index.js +2 -0
- package/dist/renderers/typescript/imports/sort-imports/index.js.map +1 -0
- package/dist/renderers/typescript/imports/sort-imports/sort-import-declarations.d.ts +32 -0
- package/dist/renderers/typescript/imports/sort-imports/sort-import-declarations.d.ts.map +1 -0
- package/dist/renderers/typescript/imports/sort-imports/sort-import-declarations.js +72 -0
- package/dist/renderers/typescript/imports/sort-imports/sort-import-declarations.js.map +1 -0
- package/dist/renderers/typescript/imports/ts-morph-operations.d.ts +42 -0
- package/dist/renderers/typescript/imports/ts-morph-operations.d.ts.map +1 -0
- package/dist/renderers/typescript/imports/ts-morph-operations.js +145 -0
- package/dist/renderers/typescript/imports/ts-morph-operations.js.map +1 -0
- package/dist/renderers/typescript/imports/ts-path-maps.d.ts +18 -0
- package/dist/renderers/typescript/imports/ts-path-maps.d.ts.map +1 -0
- package/dist/renderers/typescript/imports/ts-path-maps.js +39 -0
- package/dist/renderers/typescript/imports/ts-path-maps.js.map +1 -0
- package/dist/renderers/typescript/imports/types.d.ts +73 -0
- package/dist/renderers/typescript/imports/types.d.ts.map +1 -0
- package/dist/renderers/typescript/imports/types.js +2 -0
- package/dist/renderers/typescript/imports/types.js.map +1 -0
- package/dist/renderers/typescript/index.d.ts +9 -0
- package/dist/renderers/typescript/index.d.ts.map +1 -0
- package/dist/renderers/typescript/index.js +9 -0
- package/dist/renderers/typescript/index.js.map +1 -0
- package/dist/renderers/typescript/renderers/file.d.ts +18 -0
- package/dist/renderers/typescript/renderers/file.d.ts.map +1 -0
- package/dist/renderers/typescript/renderers/file.js +91 -0
- package/dist/renderers/typescript/renderers/file.js.map +1 -0
- package/dist/renderers/typescript/renderers/index.d.ts +3 -0
- package/dist/renderers/typescript/renderers/index.d.ts.map +1 -0
- package/dist/renderers/typescript/renderers/index.js +3 -0
- package/dist/renderers/typescript/renderers/index.js.map +1 -0
- package/dist/renderers/typescript/renderers/template.d.ts +21 -0
- package/dist/renderers/typescript/renderers/template.d.ts.map +1 -0
- package/dist/renderers/typescript/renderers/template.js +132 -0
- package/dist/renderers/typescript/renderers/template.js.map +1 -0
- package/dist/renderers/typescript/templates/creators.d.ts +10 -0
- package/dist/renderers/typescript/templates/creators.d.ts.map +1 -0
- package/dist/renderers/typescript/templates/creators.js +9 -0
- package/dist/renderers/typescript/templates/creators.js.map +1 -0
- package/dist/renderers/typescript/templates/index.d.ts +3 -0
- package/dist/renderers/typescript/templates/index.d.ts.map +1 -0
- package/dist/renderers/typescript/templates/index.js +3 -0
- package/dist/renderers/typescript/templates/index.js.map +1 -0
- package/dist/renderers/typescript/templates/types.d.ts +119 -0
- package/dist/renderers/typescript/templates/types.d.ts.map +1 -0
- package/dist/renderers/typescript/templates/types.js +43 -0
- package/dist/renderers/typescript/templates/types.js.map +1 -0
- package/dist/renderers/typescript/utils/index.d.ts +2 -0
- package/dist/renderers/typescript/utils/index.d.ts.map +1 -0
- package/dist/renderers/typescript/utils/index.js +2 -0
- package/dist/renderers/typescript/utils/index.js.map +1 -0
- package/dist/renderers/typescript/utils/ts-code-utils.d.ts +200 -0
- package/dist/renderers/typescript/utils/ts-code-utils.d.ts.map +1 -0
- package/dist/renderers/typescript/utils/ts-code-utils.js +431 -0
- package/dist/renderers/typescript/utils/ts-code-utils.js.map +1 -0
- package/dist/utils/extract-packages.d.ts +8 -0
- package/dist/utils/extract-packages.d.ts.map +1 -0
- package/dist/utils/extract-packages.js +10 -0
- package/dist/utils/extract-packages.js.map +1 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +2 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/writers/index.d.ts +2 -0
- package/dist/writers/index.d.ts.map +1 -0
- package/dist/writers/index.js +2 -0
- package/dist/writers/index.js.map +1 -0
- package/dist/writers/json.d.ts +21 -0
- package/dist/writers/json.d.ts.map +1 -0
- package/dist/writers/json.js +14 -0
- package/dist/writers/json.js.map +1 -0
- package/package.json +88 -0
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
import { getGenerationConcurrencyLimit, parseGeneratorName, TemplateFileExtractor, } from '@baseplate-dev/sync';
|
|
2
|
+
import { mapGroupBy, mapKeyBy, quot } from '@baseplate-dev/utils';
|
|
3
|
+
import { getCommonPathPrefix, handleFileNotFoundError, readJsonWithSchema, } from '@baseplate-dev/utils/node';
|
|
4
|
+
import { camelCase, constantCase, sortBy, uniq } from 'es-toolkit';
|
|
5
|
+
import path from 'node:path';
|
|
6
|
+
import { ResolverFactory } from 'oxc-resolver';
|
|
7
|
+
import pLimit from 'p-limit';
|
|
8
|
+
import { z } from 'zod';
|
|
9
|
+
import { tsCodeFragment } from '../fragments/creators.js';
|
|
10
|
+
import { tsImportBuilder } from '../imports/builder.js';
|
|
11
|
+
import { renderTsCodeFileTemplate } from '../renderers/file.js';
|
|
12
|
+
import { TS_TEMPLATE_TYPE, tsTemplateFileMetadataSchema, } from '../templates/types.js';
|
|
13
|
+
import { TsCodeUtils } from '../utils/ts-code-utils.js';
|
|
14
|
+
import { extractTsTemplateVariables } from './extract-ts-template-variables.js';
|
|
15
|
+
import { organizeTsTemplateImports } from './organize-ts-template-imports.js';
|
|
16
|
+
import { writeTsProjectExports } from './write-ts-project-exports.js';
|
|
17
|
+
function getImportSourceForGenerator(generatorName, importPath, importPackage) {
|
|
18
|
+
const { packageName } = parseGeneratorName(generatorName);
|
|
19
|
+
return importPackage === packageName ? importPath : importPackage;
|
|
20
|
+
}
|
|
21
|
+
const GENERATOR_OPTIONS_FILENAME = 'ts-extractor.json';
|
|
22
|
+
const generatorOptionsSchema = z.object({
|
|
23
|
+
/**
|
|
24
|
+
* A map of export group names to export group configuration.
|
|
25
|
+
*
|
|
26
|
+
* To refer to the default export group name, use an empty string.
|
|
27
|
+
*/
|
|
28
|
+
exportGroups: z
|
|
29
|
+
.record(z.string(), z.object({
|
|
30
|
+
/**
|
|
31
|
+
* Whether to export the provider type.
|
|
32
|
+
*/
|
|
33
|
+
exportProviderType: z.boolean().optional(),
|
|
34
|
+
/**
|
|
35
|
+
* The existing imports provider to use.
|
|
36
|
+
*/
|
|
37
|
+
existingImportsProvider: z
|
|
38
|
+
.object({
|
|
39
|
+
/**
|
|
40
|
+
* The module specifier of the existing imports provider.
|
|
41
|
+
*
|
|
42
|
+
* Can be a relative path with @/ or a package name.
|
|
43
|
+
*/
|
|
44
|
+
moduleSpecifier: z.string(),
|
|
45
|
+
/**
|
|
46
|
+
* The name of the import schema export.
|
|
47
|
+
*/
|
|
48
|
+
importSchemaName: z.string(),
|
|
49
|
+
/**
|
|
50
|
+
* The name of the provider type export.
|
|
51
|
+
*/
|
|
52
|
+
providerTypeName: z.string(),
|
|
53
|
+
/**
|
|
54
|
+
* The name of the provider export.
|
|
55
|
+
*/
|
|
56
|
+
providerName: z.string(),
|
|
57
|
+
})
|
|
58
|
+
.optional(),
|
|
59
|
+
}))
|
|
60
|
+
.optional(),
|
|
61
|
+
});
|
|
62
|
+
export class TsTemplateFileExtractor extends TemplateFileExtractor {
|
|
63
|
+
name = TS_TEMPLATE_TYPE;
|
|
64
|
+
metadataSchema = tsTemplateFileMetadataSchema;
|
|
65
|
+
pathResolver;
|
|
66
|
+
constructor(context, { pathResolver, } = {}) {
|
|
67
|
+
super(context);
|
|
68
|
+
this.pathResolver =
|
|
69
|
+
pathResolver ??
|
|
70
|
+
new ResolverFactory({
|
|
71
|
+
tsconfig: {
|
|
72
|
+
configFile: path.join(this.getProjectBaseDirectory(), 'tsconfig.json'),
|
|
73
|
+
},
|
|
74
|
+
conditionNames: ['node', 'require'],
|
|
75
|
+
extensions: ['.ts', '.tsx', '.d.ts', '.js', '.jsx', '.json', '.node'],
|
|
76
|
+
extensionAlias: {
|
|
77
|
+
'.js': ['.ts', '.tsx', '.d.ts', '.js'],
|
|
78
|
+
'.jsx': ['.tsx', '.d.ts', '.jsx'],
|
|
79
|
+
'.cjs': ['.cts', '.d.cts', '.cjs'],
|
|
80
|
+
'.mjs': ['.mts', '.d.mts', '.mjs'],
|
|
81
|
+
},
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
generatorConfigCacheMap = new Map();
|
|
85
|
+
async getGeneratorOptions(generatorName) {
|
|
86
|
+
let generatorOptions = this.generatorConfigCacheMap.get(generatorName);
|
|
87
|
+
if (!generatorOptions) {
|
|
88
|
+
const generatorBase = this.getGeneratorBaseDirectory(generatorName);
|
|
89
|
+
const generatorOptionsPath = path.join(generatorBase, GENERATOR_OPTIONS_FILENAME);
|
|
90
|
+
generatorOptions =
|
|
91
|
+
(await readJsonWithSchema(generatorOptionsPath, generatorOptionsSchema).catch(handleFileNotFoundError)) ?? {};
|
|
92
|
+
this.generatorConfigCacheMap.set(generatorName, generatorOptions);
|
|
93
|
+
}
|
|
94
|
+
return generatorOptions;
|
|
95
|
+
}
|
|
96
|
+
getTypescriptRendererImport(generatorName) {
|
|
97
|
+
return generatorName.startsWith('@baseplate-dev/core-generators#')
|
|
98
|
+
? '@src/renderers/typescript/index.js'
|
|
99
|
+
: '@baseplate-dev/core-generators';
|
|
100
|
+
}
|
|
101
|
+
async extractTemplateFile(file, importLookupContext) {
|
|
102
|
+
const sourceFileContents = await this.readSourceFile(file.path);
|
|
103
|
+
const { content: extractedContent, variables } = extractTsTemplateVariables(sourceFileContents);
|
|
104
|
+
const { usedProjectExports, contents: organizedContents } = await organizeTsTemplateImports(file.path, extractedContent, importLookupContext);
|
|
105
|
+
const usedImportProviderMap = mapKeyBy(usedProjectExports, (projectExport) => projectExport.providerImportName);
|
|
106
|
+
const generatorName = file.metadata.generator;
|
|
107
|
+
const usedImportProviders = [...usedImportProviderMap.values()].map((projectExport) => ({
|
|
108
|
+
name: projectExport.importSource.slice(1),
|
|
109
|
+
providerFragment: tsCodeFragment(projectExport.providerImportName, tsImportBuilder([projectExport.providerImportName]).from(getImportSourceForGenerator(generatorName, path.relative(path.join(this.getGeneratorBaseDirectory(generatorName), 'generated'), projectExport.providerPath.replace(/\.ts$/, '.js')), projectExport.providerPackage))),
|
|
110
|
+
}));
|
|
111
|
+
let processedContent = organizedContents;
|
|
112
|
+
if (organizedContents.startsWith('#!')) {
|
|
113
|
+
// shebang lines must always be the first line
|
|
114
|
+
const contentLines = organizedContents.split('\n');
|
|
115
|
+
processedContent = `${contentLines[0]}\n// @ts-nocheck\n\n${contentLines.slice(1).join('\n')}`;
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
processedContent = `// @ts-nocheck\n\n${organizedContents}`;
|
|
119
|
+
}
|
|
120
|
+
await this.writeTemplateFileIfModified(file, processedContent);
|
|
121
|
+
const templateName = camelCase(file.metadata.name);
|
|
122
|
+
const templateOptions = TsCodeUtils.mergeFragmentsAsObject({
|
|
123
|
+
name: quot(file.metadata.name),
|
|
124
|
+
group: file.metadata.group ? quot(file.metadata.group) : undefined,
|
|
125
|
+
source: JSON.stringify({
|
|
126
|
+
path: file.metadata.template,
|
|
127
|
+
}),
|
|
128
|
+
variables: JSON.stringify(variables),
|
|
129
|
+
projectExports: JSON.stringify(file.metadata.projectExports ?? {}),
|
|
130
|
+
importMapProviders: usedImportProviders.length > 0
|
|
131
|
+
? TsCodeUtils.mergeFragmentsAsObject(Object.fromEntries(usedImportProviders.map((importProvider) => [
|
|
132
|
+
importProvider.name,
|
|
133
|
+
importProvider.providerFragment,
|
|
134
|
+
])))
|
|
135
|
+
: undefined,
|
|
136
|
+
});
|
|
137
|
+
return {
|
|
138
|
+
codeBlock: TsCodeUtils.templateWithImports([
|
|
139
|
+
tsImportBuilder(['createTsTemplateFile']).from(this.getTypescriptRendererImport(generatorName)),
|
|
140
|
+
]) `const ${templateName} = createTsTemplateFile(${templateOptions});`,
|
|
141
|
+
exportName: templateName,
|
|
142
|
+
originalPath: file.path,
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
async extractTemplateFilesForGroup(generatorName, groupName, files, lookupContext) {
|
|
146
|
+
const results = await Promise.all(files.map((file) => this.extractTemplateFile(file, lookupContext)));
|
|
147
|
+
const originalPaths = results.map((result) => result.originalPath);
|
|
148
|
+
// identify greatest common prefix
|
|
149
|
+
const commonPathPrefix = getCommonPathPrefix(originalPaths);
|
|
150
|
+
const groupNameVariable = `${camelCase(groupName)}Group`;
|
|
151
|
+
const groupBlock = TsCodeUtils.templateWithImports(tsImportBuilder(['createTsTemplateGroup']).from(this.getTypescriptRendererImport(generatorName))) `const ${groupNameVariable} = createTsTemplateGroup({
|
|
152
|
+
templates: ${TsCodeUtils.mergeFragmentsAsObject(Object.fromEntries(results.map((result) => [
|
|
153
|
+
result.exportName,
|
|
154
|
+
TsCodeUtils.mergeFragmentsAsObject({
|
|
155
|
+
destination: quot(path.relative(commonPathPrefix, result.originalPath)),
|
|
156
|
+
template: result.exportName,
|
|
157
|
+
}),
|
|
158
|
+
])))}
|
|
159
|
+
});`;
|
|
160
|
+
return {
|
|
161
|
+
codeBlock: TsCodeUtils.mergeFragmentsPresorted([
|
|
162
|
+
...sortBy(results, [(r) => r.exportName]).map((result) => result.codeBlock),
|
|
163
|
+
groupBlock,
|
|
164
|
+
], '\n\n'),
|
|
165
|
+
exportName: groupNameVariable,
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
async extractTemplateFilesForGenerator(generatorName, files, projectExportMap) {
|
|
169
|
+
const extractLimit = pLimit(getGenerationConcurrencyLimit());
|
|
170
|
+
const filesToExtract = files.filter((file) => !file.metadata.projectExportsOnly);
|
|
171
|
+
const filesByGroups = mapGroupBy(filesToExtract.filter((file) => file.metadata.group), (file) => file.metadata.group ?? '');
|
|
172
|
+
const filesWithoutGroups = filesToExtract.filter((file) => !file.metadata.group);
|
|
173
|
+
const lookupContext = {
|
|
174
|
+
projectExportMap,
|
|
175
|
+
projectRoot: this.getProjectBaseDirectory(),
|
|
176
|
+
generatorFiles: files.map((file) => file.path),
|
|
177
|
+
resolver: this.pathResolver,
|
|
178
|
+
};
|
|
179
|
+
const results = await Promise.all([
|
|
180
|
+
...[...filesByGroups].map(([groupName, files]) => extractLimit(() => this.extractTemplateFilesForGroup(generatorName, groupName, files, lookupContext))),
|
|
181
|
+
...filesWithoutGroups.map((file) => extractLimit(() => this.extractTemplateFile(file, lookupContext))),
|
|
182
|
+
]);
|
|
183
|
+
if (!generatorName.includes('#')) {
|
|
184
|
+
throw new Error(`Generator name ${generatorName} is not in the correct format. Please use the format <package-name>#<generator-name>.`);
|
|
185
|
+
}
|
|
186
|
+
const templatesVariableName = `${constantCase(generatorName.split('#')[1])}_TS_TEMPLATES`;
|
|
187
|
+
const templatesFile = renderTsCodeFileTemplate({
|
|
188
|
+
templateContents: `TPL_CODE_BLOCKS
|
|
189
|
+
|
|
190
|
+
export const TPL_TEMPLATE_VARIABLE_NAME = TPL_RESULT;`,
|
|
191
|
+
variables: {
|
|
192
|
+
TPL_CODE_BLOCKS: TsCodeUtils.mergeFragmentsPresorted(sortBy(results, [(r) => r.exportName]).map((result) => result.codeBlock), '\n\n'),
|
|
193
|
+
TPL_TEMPLATE_VARIABLE_NAME: templatesVariableName,
|
|
194
|
+
TPL_RESULT: TsCodeUtils.mergeFragmentsAsObject(Object.fromEntries(results.map((result) => [result.exportName, result.exportName]))),
|
|
195
|
+
},
|
|
196
|
+
});
|
|
197
|
+
await this.writeGeneratedTypescriptFileIfModified(generatorName, 'ts-templates.ts', templatesFile);
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Generates an import file for a generator.
|
|
201
|
+
*
|
|
202
|
+
* @param generatorName - The name of the generator.
|
|
203
|
+
* @param files - The files to generate the import file for.
|
|
204
|
+
* @returns A list of project exports.
|
|
205
|
+
*/
|
|
206
|
+
async generateImportFileForGenerator(generatorName, files) {
|
|
207
|
+
const importMapsPath = path.join(this.getGeneratorBaseDirectory(generatorName), 'generated/ts-import-maps.ts');
|
|
208
|
+
const generatorOptions = await this.getGeneratorOptions(generatorName);
|
|
209
|
+
const packagePath = this.getGeneratorPackagePath(generatorName);
|
|
210
|
+
const exportGroupMap = mapGroupBy(files, (file) => file.metadata.exportGroup ?? '');
|
|
211
|
+
const projectExports = [];
|
|
212
|
+
const importsFileFragmentMap = new Map();
|
|
213
|
+
for (const [key, files] of exportGroupMap) {
|
|
214
|
+
const exportConfiguration = generatorOptions.exportGroups?.[key];
|
|
215
|
+
const result = writeTsProjectExports(files, generatorName, {
|
|
216
|
+
importMapFilePath: importMapsPath,
|
|
217
|
+
packagePath,
|
|
218
|
+
exportProviderType: exportConfiguration?.exportProviderType,
|
|
219
|
+
existingImportsProvider: exportConfiguration?.existingImportsProvider,
|
|
220
|
+
exportGroupName: key === '' ? undefined : key,
|
|
221
|
+
});
|
|
222
|
+
if (result.importsFileFragment) {
|
|
223
|
+
importsFileFragmentMap.set(key, result.importsFileFragment);
|
|
224
|
+
}
|
|
225
|
+
projectExports.push(...result.projectExports);
|
|
226
|
+
}
|
|
227
|
+
const importsFileContents = importsFileFragmentMap.size > 0
|
|
228
|
+
? renderTsCodeFileTemplate({
|
|
229
|
+
templateContents: `TPL_CONTENTS`,
|
|
230
|
+
variables: {
|
|
231
|
+
TPL_CONTENTS: TsCodeUtils.mergeFragments(importsFileFragmentMap, '\n\n'),
|
|
232
|
+
},
|
|
233
|
+
importMapProviders: {},
|
|
234
|
+
options: {
|
|
235
|
+
importSortOptions: {
|
|
236
|
+
internalPatterns: [/^@src\//],
|
|
237
|
+
},
|
|
238
|
+
},
|
|
239
|
+
})
|
|
240
|
+
: undefined;
|
|
241
|
+
await (importsFileContents
|
|
242
|
+
? this.writeGeneratedTypescriptFileIfModified(generatorName, 'ts-import-maps.ts', importsFileContents)
|
|
243
|
+
: this.deleteGeneratedTypescriptFile(generatorName, 'ts-import-maps.ts'));
|
|
244
|
+
return projectExports;
|
|
245
|
+
}
|
|
246
|
+
async extractTemplateFiles(files) {
|
|
247
|
+
const filesByGenerator = mapGroupBy(files, (file) => file.metadata.generator);
|
|
248
|
+
const projectExports = [];
|
|
249
|
+
for (const [generator, filesInGenerator] of filesByGenerator) {
|
|
250
|
+
const result = await this.generateImportFileForGenerator(generator, filesInGenerator);
|
|
251
|
+
projectExports.push(...result);
|
|
252
|
+
}
|
|
253
|
+
// make sure there are no duplicate importProviderNames with different import paths
|
|
254
|
+
const importProviderNameMap = mapGroupBy(projectExports, (projectExport) => projectExport.providerImportName);
|
|
255
|
+
for (const [providerImportName, projectExports] of importProviderNameMap) {
|
|
256
|
+
const projectExportPaths = uniq(projectExports.map((projectExport) => projectExport.providerPath));
|
|
257
|
+
if (projectExportPaths.length > 1) {
|
|
258
|
+
throw new Error(`Duplicate import provider: ${providerImportName} in ${projectExportPaths.join(', ')}`);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
// organize project exports by project relative path
|
|
262
|
+
const projectExportMap = new Map();
|
|
263
|
+
for (const projectExport of projectExports) {
|
|
264
|
+
const { filePath } = projectExport;
|
|
265
|
+
const exportName = projectExport.exportName ?? projectExport.name;
|
|
266
|
+
if (!projectExportMap.has(filePath)) {
|
|
267
|
+
projectExportMap.set(filePath, new Map());
|
|
268
|
+
}
|
|
269
|
+
if (projectExportMap.get(filePath)?.has(exportName)) {
|
|
270
|
+
throw new Error(`Duplicate project export: ${exportName} in ${filePath}`);
|
|
271
|
+
}
|
|
272
|
+
projectExportMap.get(filePath)?.set(exportName, projectExport);
|
|
273
|
+
}
|
|
274
|
+
for (const [generator, filesInGenerator] of filesByGenerator) {
|
|
275
|
+
await this.extractTemplateFilesForGenerator(generator, filesInGenerator, projectExportMap);
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
//# sourceMappingURL=ts-template-file-extractor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ts-template-file-extractor.js","sourceRoot":"","sources":["../../../../src/renderers/typescript/extractor/ts-template-file-extractor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { type TemplateFileExtractorFile } from '@baseplate-dev/sync';
|
|
2
|
+
import type { TsCodeFragment } from '../fragments/types.js';
|
|
3
|
+
import type { TsTemplateFileMetadata } from '../templates/types.js';
|
|
4
|
+
/**
|
|
5
|
+
* A project export that represents a single export from a generator.
|
|
6
|
+
*/
|
|
7
|
+
export interface TsProjectExport {
|
|
8
|
+
/**
|
|
9
|
+
* The name of the export.
|
|
10
|
+
*/
|
|
11
|
+
name: string;
|
|
12
|
+
/**
|
|
13
|
+
* The exported name of the export within the file, e.g. 'default' for default exports.
|
|
14
|
+
*
|
|
15
|
+
* If not provided, the name will be the same as the export name.
|
|
16
|
+
*/
|
|
17
|
+
exportName?: string;
|
|
18
|
+
/**
|
|
19
|
+
* The path to the file that contains the export.
|
|
20
|
+
*/
|
|
21
|
+
filePath: string;
|
|
22
|
+
/**
|
|
23
|
+
* Whether the export is a type only export.
|
|
24
|
+
*/
|
|
25
|
+
isTypeOnly?: boolean;
|
|
26
|
+
/**
|
|
27
|
+
* The source of the import to import into the file, e.g. %configServiceImports
|
|
28
|
+
*/
|
|
29
|
+
importSource: string;
|
|
30
|
+
/**
|
|
31
|
+
* The name of the import to import into the file, e.g. configServiceImportsProvider
|
|
32
|
+
*/
|
|
33
|
+
providerImportName: string;
|
|
34
|
+
/**
|
|
35
|
+
* The path to the import map file, e.g. src/imports/config-service-imports.ts
|
|
36
|
+
*/
|
|
37
|
+
providerPath: string;
|
|
38
|
+
/**
|
|
39
|
+
* The package name of the import, e.g. @baseplate-dev/core-generators
|
|
40
|
+
*/
|
|
41
|
+
providerPackage: string;
|
|
42
|
+
}
|
|
43
|
+
interface WriteTsProjectExportsOptions {
|
|
44
|
+
/**
|
|
45
|
+
* The path to the import map file.
|
|
46
|
+
*/
|
|
47
|
+
importMapFilePath: string;
|
|
48
|
+
/**
|
|
49
|
+
* The path of the package
|
|
50
|
+
*/
|
|
51
|
+
packagePath: string;
|
|
52
|
+
/**
|
|
53
|
+
* Export group name. If undefined, the export group name will be the generator name.
|
|
54
|
+
*/
|
|
55
|
+
exportGroupName?: string;
|
|
56
|
+
/**
|
|
57
|
+
* Whether to export the provider type.
|
|
58
|
+
*/
|
|
59
|
+
exportProviderType?: boolean;
|
|
60
|
+
/**
|
|
61
|
+
* The existing imports provider to use.
|
|
62
|
+
*/
|
|
63
|
+
existingImportsProvider?: {
|
|
64
|
+
/**
|
|
65
|
+
* The module specifier of the existing imports provider.
|
|
66
|
+
*/
|
|
67
|
+
moduleSpecifier: string;
|
|
68
|
+
/**
|
|
69
|
+
* The name of the import schema export.
|
|
70
|
+
*/
|
|
71
|
+
importSchemaName: string;
|
|
72
|
+
/**
|
|
73
|
+
* The name of the provider type export.
|
|
74
|
+
*/
|
|
75
|
+
providerTypeName: string;
|
|
76
|
+
/**
|
|
77
|
+
* The name of the provider export.
|
|
78
|
+
*/
|
|
79
|
+
providerName: string;
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Writes the project exports to the import map file.
|
|
84
|
+
* @param files - The files to write the project exports to.
|
|
85
|
+
* @param outputDirectory - The output directory to write the project exports to.
|
|
86
|
+
* @param generatorName - The name of the generator.
|
|
87
|
+
* @param importMapFilePath - The path to the import map file.
|
|
88
|
+
* @param options - The options for the writeTsProjectExports function.
|
|
89
|
+
* @returns The import map file contents and the project exports.
|
|
90
|
+
*/
|
|
91
|
+
export declare function writeTsProjectExports(files: TemplateFileExtractorFile<TsTemplateFileMetadata>[], generatorName: string, { importMapFilePath, packagePath, existingImportsProvider, exportProviderType, exportGroupName, }: WriteTsProjectExportsOptions): {
|
|
92
|
+
importsFileFragment: TsCodeFragment | undefined;
|
|
93
|
+
projectExports: TsProjectExport[];
|
|
94
|
+
};
|
|
95
|
+
export {};
|
|
96
|
+
//# sourceMappingURL=write-ts-project-exports.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"write-ts-project-exports.d.ts","sourceRoot":"","sources":["../../../../src/renderers/typescript/extractor/write-ts-project-exports.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,yBAAyB,EAC/B,MAAM,qBAAqB,CAAC;AAO7B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAMpE;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,kBAAkB,EAAE,MAAM,CAAC;IAC3B;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,UAAU,4BAA4B;IACpC;;OAEG;IACH,iBAAiB,EAAE,MAAM,CAAC;IAC1B;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;OAEG;IACH,uBAAuB,CAAC,EAAE;QACxB;;WAEG;QACH,eAAe,EAAE,MAAM,CAAC;QACxB;;WAEG;QACH,gBAAgB,EAAE,MAAM,CAAC;QACzB;;WAEG;QACH,gBAAgB,EAAE,MAAM,CAAC;QACzB;;WAEG;QACH,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,yBAAyB,CAAC,sBAAsB,CAAC,EAAE,EAC1D,aAAa,EAAE,MAAM,EACrB,EACE,iBAAiB,EACjB,WAAW,EACX,uBAAuB,EACvB,kBAAkB,EAClB,eAAe,GAChB,EAAE,4BAA4B,GAC9B;IACD,mBAAmB,EAAE,cAAc,GAAG,SAAS,CAAC;IAChD,cAAc,EAAE,eAAe,EAAE,CAAC;CACnC,CAqLA"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { parseGeneratorName, } from '@baseplate-dev/sync';
|
|
2
|
+
import { quot } from '@baseplate-dev/utils';
|
|
3
|
+
import { getCommonPathPrefix } from '@baseplate-dev/utils/node';
|
|
4
|
+
import { camelCase, pascalCase } from 'change-case';
|
|
5
|
+
import { sortBy } from 'es-toolkit';
|
|
6
|
+
import path from 'node:path';
|
|
7
|
+
import { tsCodeFragment } from '../fragments/creators.js';
|
|
8
|
+
import { tsImportBuilder } from '../imports/builder.js';
|
|
9
|
+
import { TsCodeUtils } from '../utils/ts-code-utils.js';
|
|
10
|
+
/**
|
|
11
|
+
* Writes the project exports to the import map file.
|
|
12
|
+
* @param files - The files to write the project exports to.
|
|
13
|
+
* @param outputDirectory - The output directory to write the project exports to.
|
|
14
|
+
* @param generatorName - The name of the generator.
|
|
15
|
+
* @param importMapFilePath - The path to the import map file.
|
|
16
|
+
* @param options - The options for the writeTsProjectExports function.
|
|
17
|
+
* @returns The import map file contents and the project exports.
|
|
18
|
+
*/
|
|
19
|
+
export function writeTsProjectExports(files, generatorName, { importMapFilePath, packagePath, existingImportsProvider, exportProviderType, exportGroupName, }) {
|
|
20
|
+
// get imports name based off generator name
|
|
21
|
+
const parsedGeneratorName = parseGeneratorName(generatorName);
|
|
22
|
+
const { packageName, generatorBasename } = parsedGeneratorName;
|
|
23
|
+
const exportBasename = exportGroupName ?? generatorBasename;
|
|
24
|
+
const providerNamePascalCase = `${pascalCase(exportBasename)}Imports`;
|
|
25
|
+
const providerNameCamelCase = `${camelCase(exportBasename)}Imports`;
|
|
26
|
+
const providerName = `${exportBasename}-imports`;
|
|
27
|
+
const providerNameVar = existingImportsProvider
|
|
28
|
+
? existingImportsProvider.providerName
|
|
29
|
+
: `${providerNameCamelCase}Provider`;
|
|
30
|
+
const providerPath = existingImportsProvider
|
|
31
|
+
? existingImportsProvider.moduleSpecifier.replace(/^@/, packagePath)
|
|
32
|
+
: importMapFilePath;
|
|
33
|
+
const importSource = existingImportsProvider
|
|
34
|
+
? `%${existingImportsProvider.providerName.replace(/Provider$/, '')}`
|
|
35
|
+
: `%${providerNameCamelCase}`;
|
|
36
|
+
// If the module specifier is relative, use the package name otherwise use the module specifier's package name
|
|
37
|
+
const providerPackage = existingImportsProvider
|
|
38
|
+
? existingImportsProvider.moduleSpecifier.startsWith('@/')
|
|
39
|
+
? packageName
|
|
40
|
+
: existingImportsProvider.moduleSpecifier
|
|
41
|
+
: packageName;
|
|
42
|
+
// Extract project exports
|
|
43
|
+
const projectExports = sortBy(files.flatMap((file) => Object.entries(file.metadata.projectExports ?? {}).map(([name, { isTypeOnly, exportName }]) => ({
|
|
44
|
+
name,
|
|
45
|
+
isTypeOnly,
|
|
46
|
+
exportName,
|
|
47
|
+
filePath: file.path,
|
|
48
|
+
importSource,
|
|
49
|
+
providerImportName: providerNameVar,
|
|
50
|
+
providerPath,
|
|
51
|
+
providerPackage,
|
|
52
|
+
}))), [(t) => t.name]);
|
|
53
|
+
const duplicateExports = projectExports.filter((fileExport, index, self) => self.findIndex((t) => t.name === fileExport.name) !== index);
|
|
54
|
+
if (duplicateExports.length > 0) {
|
|
55
|
+
throw new Error(`Duplicate project exports found in template files for generator ${generatorName}: ${duplicateExports.map((fileExport) => fileExport.name).join(', ')}`);
|
|
56
|
+
}
|
|
57
|
+
if (projectExports.length === 0) {
|
|
58
|
+
return {
|
|
59
|
+
importsFileFragment: undefined,
|
|
60
|
+
projectExports: [],
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
const isLocalImport = generatorName.startsWith('@baseplate-dev/core-generators#');
|
|
64
|
+
const tsImports = isLocalImport
|
|
65
|
+
? '@src/renderers/typescript/index.js'
|
|
66
|
+
: '@baseplate-dev/core-generators';
|
|
67
|
+
const commonPathPrefix = getCommonPathPrefix(projectExports.map((projectExport) => projectExport.filePath));
|
|
68
|
+
const schemaVarName = `${providerNameCamelCase}Schema`;
|
|
69
|
+
const importsSchemaFragment = TsCodeUtils.templateWithImports(tsImportBuilder(['createTsImportMapSchema']).from(tsImports)) `
|
|
70
|
+
const ${schemaVarName} = createTsImportMapSchema(
|
|
71
|
+
${TsCodeUtils.mergeFragmentsAsObject(Object.fromEntries(projectExports.map((projectExport) => [
|
|
72
|
+
projectExport.name,
|
|
73
|
+
JSON.stringify({
|
|
74
|
+
isTypeOnly: projectExport.isTypeOnly ? true : undefined,
|
|
75
|
+
name: projectExport.exportName ?? undefined,
|
|
76
|
+
}),
|
|
77
|
+
])))},
|
|
78
|
+
);
|
|
79
|
+
`;
|
|
80
|
+
const providerTypeVarName = `${providerNamePascalCase}Provider`;
|
|
81
|
+
const importsProviderTypeFragment = TsCodeUtils.templateWithImports(tsImportBuilder(['TsImportMapProviderFromSchema'])
|
|
82
|
+
.typeOnly()
|
|
83
|
+
.from(tsImports)) `
|
|
84
|
+
${exportProviderType ? 'export ' : ''}type ${providerTypeVarName} = TsImportMapProviderFromSchema<
|
|
85
|
+
typeof ${schemaVarName}
|
|
86
|
+
>;
|
|
87
|
+
`;
|
|
88
|
+
const importsProviderFragment = TsCodeUtils.templateWithImports(tsImportBuilder(['createReadOnlyProviderType']).from('@baseplate-dev/sync')) `
|
|
89
|
+
export const ${providerNameVar} = createReadOnlyProviderType<${providerTypeVarName}>(
|
|
90
|
+
${quot(providerName)},
|
|
91
|
+
);
|
|
92
|
+
`;
|
|
93
|
+
const importProviderDeclaration = TsCodeUtils.mergeFragmentsPresorted([
|
|
94
|
+
importsSchemaFragment,
|
|
95
|
+
importsProviderTypeFragment,
|
|
96
|
+
importsProviderFragment,
|
|
97
|
+
], '\n\n');
|
|
98
|
+
const createImportMapFunctionName = `create${providerNamePascalCase}`;
|
|
99
|
+
const creatorFragment = TsCodeUtils.mergeFragmentsAsObject(Object.fromEntries(projectExports.map((projectExport) => [
|
|
100
|
+
projectExport.name,
|
|
101
|
+
tsCodeFragment(`path.join(importBase, '${projectExport.filePath
|
|
102
|
+
.slice(commonPathPrefix === '.' ? 0 : commonPathPrefix.length + 1)
|
|
103
|
+
.replace(/\.tsx?$/, '.js')}')`, [tsImportBuilder().default('path').from('node:path/posix')]),
|
|
104
|
+
])));
|
|
105
|
+
const resolvedExistingImportsProvider = existingImportsProvider
|
|
106
|
+
? existingImportsProvider.moduleSpecifier.startsWith('@/')
|
|
107
|
+
? path.relative(path.dirname(importMapFilePath), providerPath)
|
|
108
|
+
: providerPath
|
|
109
|
+
: '';
|
|
110
|
+
const providerImports = existingImportsProvider
|
|
111
|
+
? [
|
|
112
|
+
tsImportBuilder([existingImportsProvider.importSchemaName]).from(resolvedExistingImportsProvider),
|
|
113
|
+
tsImportBuilder([existingImportsProvider.providerTypeName])
|
|
114
|
+
.typeOnly()
|
|
115
|
+
.from(resolvedExistingImportsProvider),
|
|
116
|
+
]
|
|
117
|
+
: [];
|
|
118
|
+
const createImportMapFunctionFragment = TsCodeUtils.templateWithImports([
|
|
119
|
+
...providerImports,
|
|
120
|
+
tsImportBuilder(['createTsImportMap']).from(tsImports),
|
|
121
|
+
]) `
|
|
122
|
+
export function ${createImportMapFunctionName}(
|
|
123
|
+
importBase: string,
|
|
124
|
+
): ${existingImportsProvider?.providerTypeName ?? providerTypeVarName} {
|
|
125
|
+
if (!importBase.startsWith('@/')) {
|
|
126
|
+
throw new Error('importBase must start with @/');
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
return createTsImportMap(${existingImportsProvider?.importSchemaName ?? schemaVarName}, ${creatorFragment});
|
|
130
|
+
}
|
|
131
|
+
`;
|
|
132
|
+
return {
|
|
133
|
+
importsFileFragment: existingImportsProvider
|
|
134
|
+
? createImportMapFunctionFragment
|
|
135
|
+
: TsCodeUtils.mergeFragmentsPresorted([importProviderDeclaration, createImportMapFunctionFragment], '\n\n'),
|
|
136
|
+
projectExports,
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
//# sourceMappingURL=write-ts-project-exports.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"write-ts-project-exports.js","sourceRoot":"","sources":["../../../../src/renderers/typescript/extractor/write-ts-project-exports.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { TsImportDeclaration } from '../imports/types.js';
|
|
2
|
+
import type { TsCodeFragment, TsHoistedFragment, TsHoistedFragmentPosition, TsPositionedHoistedFragment } from './types.js';
|
|
3
|
+
export interface TsCodeFragmentOptions {
|
|
4
|
+
hoistedFragments?: TsHoistedFragment[];
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Create a hoisted fragment.
|
|
8
|
+
* @param key - The key to use for the hoisted fragment.
|
|
9
|
+
* @param fragment - The fragment to hoist.
|
|
10
|
+
* @returns The hoisted fragment.
|
|
11
|
+
*/
|
|
12
|
+
export declare function tsHoistedFragment(key: string, fragment: TsCodeFragment | string, imports?: TsImportDeclaration[] | TsImportDeclaration, { hoistedFragments }?: TsCodeFragmentOptions): TsHoistedFragment;
|
|
13
|
+
/**
|
|
14
|
+
* Create a positioned hoisted fragment.
|
|
15
|
+
* @param key - The key to use for the positioned hoisted fragment.
|
|
16
|
+
* @param fragment - The fragment to hoist.
|
|
17
|
+
* @param position - The position to insert the positioned hoisted fragment.
|
|
18
|
+
* @returns The positioned hoisted fragment.
|
|
19
|
+
*/
|
|
20
|
+
export declare function tsPositionedHoistedFragment(key: string, fragment: TsCodeFragment | string, position: TsHoistedFragmentPosition, imports?: TsImportDeclaration[] | TsImportDeclaration): TsPositionedHoistedFragment;
|
|
21
|
+
/**
|
|
22
|
+
* Create a code fragment.
|
|
23
|
+
* @param contents - The contents of the code fragment.
|
|
24
|
+
* @param imports - The imports to add to the code fragment.
|
|
25
|
+
* @param options - The options for the code fragment.
|
|
26
|
+
* @returns The code fragment.
|
|
27
|
+
*/
|
|
28
|
+
export declare function tsCodeFragment(contents: string, imports?: TsImportDeclaration[] | TsImportDeclaration, { hoistedFragments }?: TsCodeFragmentOptions): TsCodeFragment;
|
|
29
|
+
//# sourceMappingURL=creators.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"creators.d.ts","sourceRoot":"","sources":["../../../../src/renderers/typescript/fragments/creators.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,KAAK,EACV,cAAc,EACd,iBAAiB,EACjB,yBAAyB,EACzB,2BAA2B,EAC5B,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,qBAAqB;IACpC,gBAAgB,CAAC,EAAE,iBAAiB,EAAE,CAAC;CACxC;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,cAAc,GAAG,MAAM,EACjC,OAAO,CAAC,EAAE,mBAAmB,EAAE,GAAG,mBAAmB,EACrD,EAAE,gBAAgB,EAAE,GAAE,qBAA0B,GAC/C,iBAAiB,CAanB;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CACzC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,cAAc,GAAG,MAAM,EACjC,QAAQ,EAAE,yBAAyB,EACnC,OAAO,CAAC,EAAE,mBAAmB,EAAE,GAAG,mBAAmB,GACpD,2BAA2B,CAa7B;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,mBAAmB,EAAE,GAAG,mBAAmB,EACrD,EAAE,gBAAgB,EAAE,GAAE,qBAA0B,GAC/C,cAAc,CAMhB"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Create a hoisted fragment.
|
|
3
|
+
* @param key - The key to use for the hoisted fragment.
|
|
4
|
+
* @param fragment - The fragment to hoist.
|
|
5
|
+
* @returns The hoisted fragment.
|
|
6
|
+
*/
|
|
7
|
+
export function tsHoistedFragment(key, fragment, imports, { hoistedFragments } = {}) {
|
|
8
|
+
const importArr = Array.isArray(imports) ? imports : imports ? [imports] : [];
|
|
9
|
+
const fragmentObj = typeof fragment === 'string' ? tsCodeFragment(fragment) : fragment;
|
|
10
|
+
return {
|
|
11
|
+
key,
|
|
12
|
+
contents: fragmentObj.contents,
|
|
13
|
+
imports: [...importArr, ...(fragmentObj.imports ?? [])],
|
|
14
|
+
hoistedFragments: [
|
|
15
|
+
...(hoistedFragments ?? []),
|
|
16
|
+
...(fragmentObj.hoistedFragments ?? []),
|
|
17
|
+
],
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Create a positioned hoisted fragment.
|
|
22
|
+
* @param key - The key to use for the positioned hoisted fragment.
|
|
23
|
+
* @param fragment - The fragment to hoist.
|
|
24
|
+
* @param position - The position to insert the positioned hoisted fragment.
|
|
25
|
+
* @returns The positioned hoisted fragment.
|
|
26
|
+
*/
|
|
27
|
+
export function tsPositionedHoistedFragment(key, fragment, position, imports) {
|
|
28
|
+
// we don't support positioned hoisted fragments with hoisted fragments for now since it requires
|
|
29
|
+
// doing a topological sort of the positioned hoisted fragments and there are very few use cases
|
|
30
|
+
// for this
|
|
31
|
+
if (typeof fragment !== 'string' && fragment.hoistedFragments?.length) {
|
|
32
|
+
throw new Error('Positioned hoisted fragments with hoisted fragments are not supported');
|
|
33
|
+
}
|
|
34
|
+
return {
|
|
35
|
+
...tsHoistedFragment(key, fragment, imports),
|
|
36
|
+
position,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Create a code fragment.
|
|
41
|
+
* @param contents - The contents of the code fragment.
|
|
42
|
+
* @param imports - The imports to add to the code fragment.
|
|
43
|
+
* @param options - The options for the code fragment.
|
|
44
|
+
* @returns The code fragment.
|
|
45
|
+
*/
|
|
46
|
+
export function tsCodeFragment(contents, imports, { hoistedFragments } = {}) {
|
|
47
|
+
return {
|
|
48
|
+
contents,
|
|
49
|
+
imports: Array.isArray(imports) ? imports : imports ? [imports] : [],
|
|
50
|
+
hoistedFragments,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=creators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"creators.js","sourceRoot":"","sources":["../../../../src/renderers/typescript/fragments/creators.ts"],"names":[],"mappings":"AAYA;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAC/B,GAAW,EACX,QAAiC,EACjC,OAAqD,EACrD,EAAE,gBAAgB,KAA4B,EAAE;IAEhD,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9E,MAAM,WAAW,GACf,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IACrE,OAAO;QACL,GAAG;QACH,QAAQ,EAAE,WAAW,CAAC,QAAQ;QAC9B,OAAO,EAAE,CAAC,GAAG,SAAS,EAAE,GAAG,CAAC,WAAW,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;QACvD,gBAAgB,EAAE;YAChB,GAAG,CAAC,gBAAgB,IAAI,EAAE,CAAC;YAC3B,GAAG,CAAC,WAAW,CAAC,gBAAgB,IAAI,EAAE,CAAC;SACxC;KACF,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,2BAA2B,CACzC,GAAW,EACX,QAAiC,EACjC,QAAmC,EACnC,OAAqD;IAErD,iGAAiG;IACjG,gGAAgG;IAChG,WAAW;IACX,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,gBAAgB,EAAE,MAAM,EAAE,CAAC;QACtE,MAAM,IAAI,KAAK,CACb,uEAAuE,CACxE,CAAC;IACJ,CAAC;IACD,OAAO;QACL,GAAG,iBAAiB,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC;QAC5C,QAAQ;KACT,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAC5B,QAAgB,EAChB,OAAqD,EACrD,EAAE,gBAAgB,KAA4B,EAAE;IAEhD,OAAO;QACL,QAAQ;QACR,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;QACpE,gBAAgB;KACjB,CAAC;AACJ,CAAC"}
|