@teambit/generator 0.0.574 → 0.0.578

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.
@@ -167,7 +167,8 @@ class ComponentGenerator {
167
167
  const addResults = await this.workspace.track({
168
168
  rootDir: componentPath,
169
169
  mainFile: mainFile === null || mainFile === void 0 ? void 0 : mainFile.relativePath,
170
- componentName: componentId.fullName
170
+ componentName: componentId.fullName,
171
+ defaultScope: this.options.scope
171
172
  });
172
173
  const component = await this.workspace.get(componentId);
173
174
  const env = this.envs.getEnv(component);
@@ -1 +1 @@
1
- {"version":3,"sources":["component-generator.ts"],"names":["ComponentGenerator","constructor","workspace","componentIds","options","template","envs","generate","dirsToDeleteIfFailed","generateResults","componentId","componentPath","getComponentPath","fs","existsSync","path","join","BitError","hasName","fullName","push","generateOneComponent","err","deleteGeneratedComponents","writeBitMap","dirs","Promise","all","map","dir","absoluteDir","remove","code","name","namePascalCase","pascalCase","nameCamelCase","files","generateFiles","mainFile","find","file","isMain","writeComponentFiles","addResults","track","rootDir","relativePath","componentName","component","get","env","getEnv","id","envId","templateFiles","dataToPersist","DataToPersist","vinylFiles","templateFile","templateFileVinyl","Vinyl","base","contents","Buffer","from","content","AbstractVinyl","fromVinyl","results","v","addManyFiles","addBasePath","persistAllToFS","_legacy","changeScope","scope","defaultDirectory"],"mappings":"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","sourcesContent":["import Vinyl from 'vinyl';\nimport fs from 'fs-extra';\nimport pMapSeries from 'p-map-series';\nimport path from 'path';\nimport { Workspace } from '@teambit/workspace';\nimport { EnvsMain } from '@teambit/envs';\nimport camelcase from 'camelcase';\nimport { BitError } from '@teambit/bit-error';\nimport { PathOsBasedRelative } from '@teambit/legacy/dist/utils/path';\nimport { AbstractVinyl } from '@teambit/legacy/dist/consumer/component/sources';\nimport DataToPersist from '@teambit/legacy/dist/consumer/component/sources/data-to-persist';\nimport { composeComponentPath } from '@teambit/legacy/dist/utils/bit/compose-component-path';\nimport { ComponentID } from '@teambit/component-id';\nimport { ComponentTemplate, ComponentFile } from './component-template';\nimport { CreateOptions } from './create.cmd';\n\nexport type GenerateResult = { id: ComponentID; dir: string; files: string[]; envId: string };\n\nexport class ComponentGenerator {\n constructor(\n private workspace: Workspace,\n private componentIds: ComponentID[],\n private options: CreateOptions,\n private template: ComponentTemplate,\n private envs: EnvsMain\n ) {}\n\n async generate(): Promise<GenerateResult[]> {\n const dirsToDeleteIfFailed: string[] = [];\n const generateResults = await pMapSeries(this.componentIds, async (componentId) => {\n try {\n const componentPath = this.getComponentPath(componentId);\n if (fs.existsSync(path.join(this.workspace.path, componentPath))) {\n throw new BitError(`unable to create a component at \"${componentPath}\", this path already exist`);\n }\n if (await this.workspace.hasName(componentId.fullName)) {\n throw new BitError(\n `unable to create a component \"${componentId.fullName}\", a component with the same name already exist`\n );\n }\n dirsToDeleteIfFailed.push(componentPath);\n return await this.generateOneComponent(componentId, componentPath);\n } catch (err: any) {\n await this.deleteGeneratedComponents(dirsToDeleteIfFailed);\n throw err;\n }\n });\n\n await this.workspace.writeBitMap();\n\n return generateResults;\n }\n\n private async deleteGeneratedComponents(dirs: string[]) {\n await Promise.all(\n dirs.map(async (dir) => {\n const absoluteDir = path.join(this.workspace.path, dir);\n try {\n await fs.remove(absoluteDir);\n } catch (err: any) {\n if (err.code !== 'ENOENT') {\n // if not exist, it's fine\n throw err;\n }\n }\n })\n );\n }\n\n private async generateOneComponent(componentId: ComponentID, componentPath: string): Promise<GenerateResult> {\n const name = componentId.name;\n const namePascalCase = camelcase(name, { pascalCase: true });\n const nameCamelCase = camelcase(name);\n const files = this.template.generateFiles({ name, namePascalCase, nameCamelCase, componentId });\n const mainFile = files.find((file) => file.isMain);\n await this.writeComponentFiles(componentPath, files);\n const addResults = await this.workspace.track({\n rootDir: componentPath,\n mainFile: mainFile?.relativePath,\n componentName: componentId.fullName,\n });\n const component = await this.workspace.get(componentId);\n const env = this.envs.getEnv(component);\n return {\n id: componentId,\n dir: componentPath,\n files: addResults.files,\n envId: env.id,\n };\n }\n\n /**\n * writes the generated template files to the default directory set in the workspace config\n */\n private async writeComponentFiles(\n componentPath: string,\n templateFiles: ComponentFile[]\n ): Promise<PathOsBasedRelative[]> {\n const dataToPersist = new DataToPersist();\n const vinylFiles = templateFiles.map((templateFile) => {\n const templateFileVinyl = new Vinyl({\n base: componentPath,\n path: path.join(componentPath, templateFile.relativePath),\n contents: Buffer.from(templateFile.content),\n });\n return AbstractVinyl.fromVinyl(templateFileVinyl);\n });\n const results = vinylFiles.map((v) => v.path);\n dataToPersist.addManyFiles(vinylFiles);\n dataToPersist.addBasePath(this.workspace.path);\n await dataToPersist.persistAllToFS();\n return results;\n }\n\n private getComponentPath(componentId: ComponentID) {\n if (this.options.path) return this.options.path;\n return composeComponentPath(componentId._legacy.changeScope(componentId.scope), this.workspace.defaultDirectory);\n }\n}\n"]}
1
+ {"version":3,"sources":["component-generator.ts"],"names":["ComponentGenerator","constructor","workspace","componentIds","options","template","envs","generate","dirsToDeleteIfFailed","generateResults","componentId","componentPath","getComponentPath","fs","existsSync","path","join","BitError","hasName","fullName","push","generateOneComponent","err","deleteGeneratedComponents","writeBitMap","dirs","Promise","all","map","dir","absoluteDir","remove","code","name","namePascalCase","pascalCase","nameCamelCase","files","generateFiles","mainFile","find","file","isMain","writeComponentFiles","addResults","track","rootDir","relativePath","componentName","defaultScope","scope","component","get","env","getEnv","id","envId","templateFiles","dataToPersist","DataToPersist","vinylFiles","templateFile","templateFileVinyl","Vinyl","base","contents","Buffer","from","content","AbstractVinyl","fromVinyl","results","v","addManyFiles","addBasePath","persistAllToFS","_legacy","changeScope","defaultDirectory"],"mappings":"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","sourcesContent":["import Vinyl from 'vinyl';\nimport fs from 'fs-extra';\nimport pMapSeries from 'p-map-series';\nimport path from 'path';\nimport { Workspace } from '@teambit/workspace';\nimport { EnvsMain } from '@teambit/envs';\nimport camelcase from 'camelcase';\nimport { BitError } from '@teambit/bit-error';\nimport { PathOsBasedRelative } from '@teambit/legacy/dist/utils/path';\nimport { AbstractVinyl } from '@teambit/legacy/dist/consumer/component/sources';\nimport DataToPersist from '@teambit/legacy/dist/consumer/component/sources/data-to-persist';\nimport { composeComponentPath } from '@teambit/legacy/dist/utils/bit/compose-component-path';\nimport { ComponentID } from '@teambit/component-id';\nimport { ComponentTemplate, ComponentFile } from './component-template';\nimport { CreateOptions } from './create.cmd';\n\nexport type GenerateResult = { id: ComponentID; dir: string; files: string[]; envId: string };\n\nexport class ComponentGenerator {\n constructor(\n private workspace: Workspace,\n private componentIds: ComponentID[],\n private options: CreateOptions,\n private template: ComponentTemplate,\n private envs: EnvsMain\n ) {}\n\n async generate(): Promise<GenerateResult[]> {\n const dirsToDeleteIfFailed: string[] = [];\n const generateResults = await pMapSeries(this.componentIds, async (componentId) => {\n try {\n const componentPath = this.getComponentPath(componentId);\n if (fs.existsSync(path.join(this.workspace.path, componentPath))) {\n throw new BitError(`unable to create a component at \"${componentPath}\", this path already exist`);\n }\n if (await this.workspace.hasName(componentId.fullName)) {\n throw new BitError(\n `unable to create a component \"${componentId.fullName}\", a component with the same name already exist`\n );\n }\n dirsToDeleteIfFailed.push(componentPath);\n return await this.generateOneComponent(componentId, componentPath);\n } catch (err: any) {\n await this.deleteGeneratedComponents(dirsToDeleteIfFailed);\n throw err;\n }\n });\n\n await this.workspace.writeBitMap();\n\n return generateResults;\n }\n\n private async deleteGeneratedComponents(dirs: string[]) {\n await Promise.all(\n dirs.map(async (dir) => {\n const absoluteDir = path.join(this.workspace.path, dir);\n try {\n await fs.remove(absoluteDir);\n } catch (err: any) {\n if (err.code !== 'ENOENT') {\n // if not exist, it's fine\n throw err;\n }\n }\n })\n );\n }\n\n private async generateOneComponent(componentId: ComponentID, componentPath: string): Promise<GenerateResult> {\n const name = componentId.name;\n const namePascalCase = camelcase(name, { pascalCase: true });\n const nameCamelCase = camelcase(name);\n const files = this.template.generateFiles({ name, namePascalCase, nameCamelCase, componentId });\n const mainFile = files.find((file) => file.isMain);\n await this.writeComponentFiles(componentPath, files);\n const addResults = await this.workspace.track({\n rootDir: componentPath,\n mainFile: mainFile?.relativePath,\n componentName: componentId.fullName,\n defaultScope: this.options.scope,\n });\n const component = await this.workspace.get(componentId);\n const env = this.envs.getEnv(component);\n return {\n id: componentId,\n dir: componentPath,\n files: addResults.files,\n envId: env.id,\n };\n }\n\n /**\n * writes the generated template files to the default directory set in the workspace config\n */\n private async writeComponentFiles(\n componentPath: string,\n templateFiles: ComponentFile[]\n ): Promise<PathOsBasedRelative[]> {\n const dataToPersist = new DataToPersist();\n const vinylFiles = templateFiles.map((templateFile) => {\n const templateFileVinyl = new Vinyl({\n base: componentPath,\n path: path.join(componentPath, templateFile.relativePath),\n contents: Buffer.from(templateFile.content),\n });\n return AbstractVinyl.fromVinyl(templateFileVinyl);\n });\n const results = vinylFiles.map((v) => v.path);\n dataToPersist.addManyFiles(vinylFiles);\n dataToPersist.addBasePath(this.workspace.path);\n await dataToPersist.persistAllToFS();\n return results;\n }\n\n private getComponentPath(componentId: ComponentID) {\n if (this.options.path) return this.options.path;\n return composeComponentPath(componentId._legacy.changeScope(componentId.scope), this.workspace.defaultDirectory);\n }\n}\n"]}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@teambit/generator",
3
- "version": "0.0.574",
3
+ "version": "0.0.578",
4
4
  "homepage": "https://bit.dev/teambit/generator/generator",
5
5
  "main": "dist/index.js",
6
6
  "componentId": {
7
7
  "scope": "teambit.generator",
8
8
  "name": "generator",
9
- "version": "0.0.574"
9
+ "version": "0.0.578"
10
10
  },
11
11
  "dependencies": {
12
12
  "camelcase": "6.2.0",
@@ -21,21 +21,21 @@
21
21
  "isbinaryfile": "4.0.6",
22
22
  "@babel/runtime": "7.12.18",
23
23
  "core-js": "^3.0.0",
24
- "@teambit/bit-error": "0.0.383",
25
- "@teambit/component-id": "0.0.387",
26
- "@teambit/envs": "0.0.574",
27
- "@teambit/workspace": "0.0.574",
28
- "@teambit/cli": "0.0.397",
29
- "@teambit/graphql": "0.0.574",
30
- "@teambit/aspect-loader": "0.0.574",
31
- "@teambit/bit": "0.0.576",
32
- "@teambit/component": "0.0.574",
33
- "@teambit/legacy-bit-id": "0.0.386",
34
- "@teambit/compiler": "0.0.574",
35
- "@teambit/dependency-resolver": "0.0.574",
36
- "@teambit/logger": "0.0.485",
37
- "@teambit/pkg": "0.0.574",
38
- "@teambit/ui": "0.0.574"
24
+ "@teambit/bit-error": "0.0.385",
25
+ "@teambit/component-id": "0.0.389",
26
+ "@teambit/envs": "0.0.578",
27
+ "@teambit/workspace": "0.0.578",
28
+ "@teambit/cli": "0.0.399",
29
+ "@teambit/graphql": "0.0.578",
30
+ "@teambit/aspect-loader": "0.0.578",
31
+ "@teambit/bit": "0.0.580",
32
+ "@teambit/component": "0.0.578",
33
+ "@teambit/legacy-bit-id": "0.0.388",
34
+ "@teambit/compiler": "0.0.578",
35
+ "@teambit/dependency-resolver": "0.0.578",
36
+ "@teambit/logger": "0.0.487",
37
+ "@teambit/pkg": "0.0.578",
38
+ "@teambit/ui": "0.0.578"
39
39
  },
40
40
  "devDependencies": {
41
41
  "@types/fs-extra": "9.0.7",
@@ -46,10 +46,10 @@
46
46
  "@types/react-dom": "^17.0.5",
47
47
  "@types/react": "^17.0.8",
48
48
  "@types/node": "12.20.4",
49
- "@teambit/generator.aspect-docs.generator": "0.0.123"
49
+ "@teambit/generator.aspect-docs.generator": "0.0.125"
50
50
  },
51
51
  "peerDependencies": {
52
- "@teambit/legacy": "1.0.183",
52
+ "@teambit/legacy": "1.0.185",
53
53
  "react-dom": "^16.8.0 || ^17.0.0",
54
54
  "react": "^16.8.0 || ^17.0.0"
55
55
  },
@@ -77,7 +77,7 @@
77
77
  "react": "-"
78
78
  },
79
79
  "peerDependencies": {
80
- "@teambit/legacy": "1.0.183",
80
+ "@teambit/legacy": "1.0.185",
81
81
  "react-dom": "^16.8.0 || ^17.0.0",
82
82
  "react": "^16.8.0 || ^17.0.0"
83
83
  }