Security News
Weekly Downloads Now Available in npm Package Search Results
Socket's package search now displays weekly downloads for npm packages, helping developers quickly assess popularity and make more informed decisions.
breeze-entity-generator
Advanced tools
Generate TypeScript modules for entities from Breeze metadata
This tool generates TypeScript classes from Breeze metadata. The generated classes match the server-side classes and the query responses, so you can develop your application with typed entities.
Breeze metadata can be generated from EntityFramework, NHibernate, POCO classes, or handwritten.
Usage: Write your JavaScript file, generate-entities.js
:
const tsGen = require('node_modules/breeze-entity-generator/tsgen-core');
tsGen.generate({
inputFileName: 'MyProject.metadata.json',
outputFolder: './src/app/model/entities/',
camelCase: true,
kebabCaseFileNames: true,
baseClassName: 'BaseEntity',
baseComplexName: 'BaseComplex',
codePrefix: 'MyProject',
useEnumTypes: true,
propertyComments: true
});
Then run node[.exe] generate-entities.js
Input(s): A file containing CSDL or Breeze native metadata
Output(s):
inputFileName
: Specifies the file containing the metadata
outputFolder
: Optionally specifies the location for the generated TypeScript files. If not specified, the current directory is used as the location
sourceFilesFolder
: Optionally specifies the location to find existing TypeScript files. The <code>
blocks from these files will be preserved in the corresponding output files. If not specified, the outputFolder will be used.
baseClassName
: Optionally specifies a TypeScript base class for all the generated entity classes. The generated entity classes will directly or indirectly inherit from this class. The file must contain a single module and exported class.
baseComplexName
: Optionally specifies a TypeScript base class for all the generated complex type (value type) classes. The generated classes will directly or indirectly inherit from this class. The file must contain a single module and exported class.
camelCase
: Optionally generates the property names using camel case. This parameter has no effect if the input file contains Breeze native metadata. (See NamingConvention)
codePrefix
: Name to put in front of the generated Metadata class and the RegistrationHelper class
kebabCaseFileNames
: Optionally generate kebab-case-file-names instead of PascalCaseFileNames.
useEnumTypes
: Optionally generate an Enums.ts file containing enums defined in the metadata. Only effective if input metadata contains an "enumTypes" section.
propertyComments
: Optionally include metadata comments on data properties, indicating original datatype and key relationships, e.g.:
/** String(50) */
productName!: string;
/** Int32 FK supplier */
supplierId!: number;
At the core of the typescript generator sits handlebars which is responsible for generating the actual TypeScript source code. The output that handlebars generate can be customized by modifying the templates.
Note: node.js must be installed and node must be part of the PATH.
The typescript generator preserves three special sections for each class when regenerating the code. Those sections are <code-import>
, <code>
and <module-code>
. The <code-import>
section is for custom imports, the <code>
section is for custom methods, etc and <module-code>
section is for module level code eg functions. Following is an example of a class after it got generated showing the three sections. Everything between the opening and closing tags is preserved.
import { EntityBase } from './EntityBase';
import { Order } from './Order';
/// <code-import> Place custom imports between <code-import> tags
/// </code-import>
/// <module-code> Place module level code between <module-code> tags
/// </module-code>
export class InternationalOrder extends EntityBase {
/// <code> Place custom code between <code> tags
/// </code>
// Generated code. Do not place code below this line.
orderID: number;
customsDescription: string;
exciseTax: number;
rowVersion: number;
order: Order;
}
node_modules
(Directory containing the third-party node libraries including Breeze)
entity.template.txt
(Handlebars template for an entity class)
entityModel.template.txt
(Handlebars template for the barrel exporting all entities)
register.template.txt
(Handlebars template for the ctor registration helper class)
enum.template.txt
(Handlebars template for the file containing the enum classes)
metadata.template.txt
(Handlebars template for the static metadata)
tsgen-core.js
(The typescript generator node script)
1.0.0 - Initial release as an npm package
1.1.0 - Work with breeze-client .mjs modules (as well as older CJS bundles)
1.2.0 - Add support for Complex Type base class and not-null (!) assertions. Breaking change: entity.template.txt now imports baseClassName from the parent directory.
1.2.1 - Fix enum type references
1.3.0 - Use TypeScript enum types instead of string unions for enums.
1.3.1 - Use ordinal values instead of strings for enum definitions, e.g. Green = 2
. Template change only.
1.3.2 - Include './enums' in entity-model.ts. Template change only.
1.3.3 - Proper handling of abstract base classes: write 'abstract' modifier, correct include path, exclude from RegistrationHelper
1.3.4 - Fix class name of RegistrationHelper; Fix include path to base complex type
1.4.0 - Add property comments indicating type, maxlength, key, and fk
1.4.1 - Add handling for string or number enums, based on how they are defined in metadata.enumTypes
FAQs
Generate TypeScript modules for entities from Breeze metadata
The npm package breeze-entity-generator receives a total of 210 weekly downloads. As such, breeze-entity-generator popularity was classified as not popular.
We found that breeze-entity-generator demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Socket's package search now displays weekly downloads for npm packages, helping developers quickly assess popularity and make more informed decisions.
Security News
A Stanford study reveals 9.5% of engineers contribute almost nothing, costing tech $90B annually, with remote work fueling the rise of "ghost engineers."
Research
Security News
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.