Socket
Socket
Sign inDemoInstall

ldap-schema-ts-generator

Package Overview
Dependencies
Maintainers
1
Versions
66
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

ldap-schema-ts-generator - npm Package Compare versions

Comparing version 2.5.1 to 2.6.0

CHANGELOG.md

14

dist/app.js

@@ -31,6 +31,18 @@ "use strict";

// await generatePoliciesFile({ policies });
// const classes = await getStructuralSchemaClasses({ schemaDn, options });
// await generateStructuralClassesFile({ classes });
const objectAttributes = await index_1.getSchemaAttributes({ schemaDn, options });
const objectClasses = await index_1.getSchemaClasses({ schemaDn, options });
// await generateInterfaceFiles({ objectAttributes, objectClasses });
await index_1.generateGraphQlTypeFiles({ objectClasses, objectAttributes });
// await generateGraphqlTypeFiles({
// objectClasses,
// objectAttributes,
// });
await index_1.generateGraphqlTypeFiles({
objectClasses,
objectAttributes,
options: {
justThisClasses: ["user", "group", "computer"],
},
});
}

@@ -37,0 +49,0 @@ exports.main = main;

24

dist/helpers/generate-graphql-type-files.d.ts
import { SchemaClass, SchemaAttribute } from "../services";
interface GenerateInterfaceFilesFnInput {
declare type GenerateGraphqlTypeFilesFnInput<T = any> = {
objectClasses: Partial<SchemaClass>[];
objectAttributes: Partial<SchemaAttribute>[];
options?: {
/** default generated folder of root directory of you project */
/** default folder named 'generated' in root directory of you project */
outputFolder?: string;
/** output extension. default .gql */
fileExtension: "gql" | "graphql";
graphqlExtension?: "gql" | "graphql";
/** generate basic CRUD graphql resolvers. default true */
generateResolvers?: boolean;
/** type-map for lDAPDisplayName and graphql field names. default true
/** typescript enum type-map for lDAPDisplayName and graphql field names. default true
* @note ldap attributes can have characters that are illegal in graphql schema so instead we use pascal case of lDAPDisplayName. and here is the type map to track attributes. */
generateEnumTypeMaps?: boolean;
/** use prettier to format generated files. default { parser: "graphql" } */
/** use prettier to format generated files.
* - for graphql files, default { parser: "graphql" }
* - for typescript files, default { parser: "typescript" }
*/
usePrettier?: boolean;
/** list of classes to generate classes
* - if not provided it generate all structural classes
*/
justThisClasses?: Extract<keyof T, string>[];
};
}
/** generate separate file for each class
*/
export declare function generateGraphqlTypeFiles({ objectClasses, objectAttributes, options, }: GenerateInterfaceFilesFnInput): Promise<void>;
};
/** generate graphql schema files for each structural class */
export declare function generateGraphqlTypeFiles<StructuralClasses = any>({ objectClasses, objectAttributes, options, }: GenerateGraphqlTypeFilesFnInput<StructuralClasses>): Promise<void>;
export {};

@@ -16,37 +16,43 @@ "use strict";

const write_ts_file_1 = require("./write-ts-file");
/** generate separate file for each class
*/
/** generate graphql schema files for each structural class */
async function generateGraphqlTypeFiles({ objectClasses, objectAttributes, options, }) {
fast_node_logger_1.writeLog(`generateInterfaceFiles()`, { level: "trace" });
/** place holder for output directory */
fast_node_logger_1.writeLog(`generateGraphqlTypeFiles()`, { level: "trace" });
let outDir = variables_1.defaultGraphqlDir;
if (options && options.outputFolder) {
if (options === null || options === void 0 ? void 0 : options.outputFolder) {
outDir = options.outputFolder;
}
let usePrettier = true;
if (options && options.usePrettier) {
if (options === null || options === void 0 ? void 0 : options.usePrettier) {
usePrettier = options.usePrettier;
}
let generateResolvers = true;
if (options && options.generateResolvers) {
if (options === null || options === void 0 ? void 0 : options.generateResolvers) {
generateResolvers = options.generateResolvers;
}
let fileExtension = "gql";
if (options && options.fileExtension) {
fileExtension = options.fileExtension;
let graphqlExtension = "gql";
if (options === null || options === void 0 ? void 0 : options.graphqlExtension) {
graphqlExtension = options.graphqlExtension;
}
let generateEnumTypeMaps = true;
if (options && options.generateEnumTypeMaps) {
if (options === null || options === void 0 ? void 0 : options.generateEnumTypeMaps) {
generateEnumTypeMaps = options.generateEnumTypeMaps;
}
const promises = [];
const classesWithInheritedAttributes = map_class_attributes_include_inherited_1.mapClassAttributesIncludeInherited({
let StructuralClassesWithMeta = map_class_attributes_include_inherited_1.mapClassAttributesIncludeInherited({
attributes: objectAttributes,
classes: objectClasses,
options: {
justStructuralClasses: true,
},
});
classesWithInheritedAttributes.forEach((classObj) => {
if (options === null || options === void 0 ? void 0 : options.justThisClasses) {
StructuralClassesWithMeta = StructuralClassesWithMeta.filter((el) => { var _a; return (_a =
// @ts-ignore
options.justThisClasses) === null || _a === void 0 ? void 0 : _a.includes(el.lDAPDisplayName); });
}
StructuralClassesWithMeta.forEach((classObj) => {
const rawOutput = generate_graphql_type_1.generateGraphqlType({ data: classObj });
const filePath = path_1.default.join(outDir, `${pascal_case_1.pascalCase(classObj.lDAPDisplayName)}-Type.${fileExtension}`);
const typeFilePath = path_1.default.join(outDir, `${pascal_case_1.pascalCase(classObj.lDAPDisplayName)}-Type.${graphqlExtension}`);
promises.push(write_to_file_1.writeToFile(rawOutput, {
filePath,
filePath: typeFilePath,
prettierOptions: usePrettier ? { parser: "graphql" } : undefined,

@@ -56,3 +62,3 @@ }));

const rawResolversOutput = generate_graphql_resolvers_1.generateGraphqlResolvers({ data: classObj });
const resolversFilePath = path_1.default.join(outDir, `${pascal_case_1.pascalCase(classObj.lDAPDisplayName)}-Resolvers.${fileExtension}`);
const resolversFilePath = path_1.default.join(outDir, `${pascal_case_1.pascalCase(classObj.lDAPDisplayName)}-Resolvers.${graphqlExtension}`);
promises.push(write_to_file_1.writeToFile(rawResolversOutput, {

@@ -65,5 +71,5 @@ filePath: resolversFilePath,

const rawEnumOutput = generate_graphql_enum_type_map_1.generateGraphqlEnumTypeMap({ data: classObj });
const resolversFilePath = path_1.default.join(outDir, `${pascal_case_1.pascalCase(classObj.lDAPDisplayName)}-TypeMap.ts`);
const typeMapFilePath = path_1.default.join(outDir, `${pascal_case_1.pascalCase(classObj.lDAPDisplayName)}-TypeMap.ts`);
promises.push(write_ts_file_1.writeTsFile(rawEnumOutput, {
filePath: resolversFilePath,
filePath: typeMapFilePath,
usePrettier,

@@ -74,5 +80,7 @@ }));

await Promise.all(promises);
fast_node_logger_1.writeLog(`graphql types has been created in dir ${outDir}`, { stdout: true });
fast_node_logger_1.writeLog(`graphql types has been generated in dir ${outDir}`, {
stdout: true,
});
}
exports.generateGraphqlTypeFiles = generateGraphqlTypeFiles;
//# sourceMappingURL=generate-graphql-type-files.js.map
import { SchemaClass, SchemaAttribute } from "../services";
interface GenerateInterfaceFilesFnInput {
declare type GenerateInterfaceFilesFnInput = {
objectClasses: Partial<SchemaClass>[];

@@ -13,6 +13,5 @@ objectAttributes: Partial<SchemaAttribute>[];

};
}
/** generate separate file for each class
*/
};
/** generate separate typescript interface file for each object class */
export declare function generateInterfaceFiles({ objectClasses, objectAttributes, options, }: GenerateInterfaceFilesFnInput): Promise<void>;
export {};

@@ -13,4 +13,3 @@ "use strict";

const variables_1 = require("./variables");
/** generate separate file for each class
*/
/** generate separate typescript interface file for each object class */
async function generateInterfaceFiles({ objectClasses, objectAttributes, options, }) {

@@ -42,3 +41,3 @@ fast_node_logger_1.writeLog(`generateInterfaceFiles()`, { level: "trace" });

await Promise.all(promises);
fast_node_logger_1.writeLog(`interfaces has been created in dir ${outDir}`, { stdout: true });
fast_node_logger_1.writeLog(`interfaces has been generated in dir ${outDir}`, { stdout: true });
/** @step create index file for output directory */

@@ -45,0 +44,0 @@ if (indexFile) {

import type { SchemaClass, SchemaAttribute } from "../services";
import { SchemaClassWithAttributes } from "./map-class-attributes";
interface MapClassAttributesIncludeInheritedFnInput {
declare type MapClassAttributesIncludeInheritedFnInput = {
/** all schema attributes */
attributes: Partial<SchemaAttribute>[];
/** all schema classes */
classes: Partial<SchemaClass>[];

@@ -10,3 +12,3 @@ options?: {

};
}
};
/** @returns class attributes including inherited ones.

@@ -13,0 +15,0 @@ * @summary:

import type { SchemaClass, SchemaAttribute } from "../services";
import type { CN, LDAPDisplayName, DN, AttributeID, AttributeSyntax, AdminDisplayName, AdminDescription, SubClassOf, Name, AuxiliaryClass, SystemAuxiliaryClass } from "../typings/general/types";
export interface AnalysedAttributeFields {
export declare type AnalysedAttributeFields = {
cn: CN;

@@ -14,4 +14,4 @@ lDAPDisplayName: LDAPDisplayName;

adminDescription?: AdminDescription;
}
export interface SchemaClassWithAttributes {
};
export declare type SchemaClassWithAttributes = {
className: Name;

@@ -26,7 +26,7 @@ lDAPDisplayName: LDAPDisplayName;

attributes?: AnalysedAttributeFields[];
}
interface MapClassAttributesFnInput {
};
declare type MapClassAttributesFnInput = {
classObj: Partial<SchemaClass>;
attributes: Partial<SchemaAttribute>[];
}
};
/** merge direct attributes addressed in fields mustContain, systemMustContain, mayContain, and systemMayContain with meta data.

@@ -33,0 +33,0 @@ * @note does not add inherited attributes of classes named in auxiliaryClass and systemAuxiliaryClass fields or other type of inheritance. */

import { Options } from "prettier";
interface WriteFileOptions {
declare type WriteFileOptions = {
filePath: string;
/** run prettier at output before write to file. default false */
prettierOptions?: Options;
}
};
/** apply prettier write text to file */
export declare function writeToFile(rawText: string, { filePath, prettierOptions }: WriteFileOptions): Promise<void>;
export {};

@@ -1,7 +0,7 @@

interface Options {
declare type Options = {
filePath: string;
usePrettier?: boolean;
}
};
/** apply prettier write text to file */
export declare function writeTsFile(rawText: string, { filePath, usePrettier }: Options): Promise<void>;
export {};

@@ -11,2 +11,3 @@ export * from "./services";

import { generateGraphqlTypeFiles } from "./helpers/generate-graphql-type-files";
export { generateInterfaceFiles, generateControlsFile, generateCapabilitiesFile, generateExtensionsFile, generatePoliciesFile, generateRelationsFile, mapClassAttributesIncludeInherited, generateGraphqlTypeFiles as generateGraphQlTypeFiles, };
import { generateStructuralClassesFile } from "./templates/generate-structural-classes-file";
export { generateInterfaceFiles, generateControlsFile, generateCapabilitiesFile, generateExtensionsFile, generatePoliciesFile, generateRelationsFile, mapClassAttributesIncludeInherited, generateGraphqlTypeFiles, generateStructuralClassesFile, };

@@ -30,3 +30,5 @@ "use strict";

const generate_graphql_type_files_1 = require("./helpers/generate-graphql-type-files");
exports.generateGraphQlTypeFiles = generate_graphql_type_files_1.generateGraphqlTypeFiles;
exports.generateGraphqlTypeFiles = generate_graphql_type_files_1.generateGraphqlTypeFiles;
const generate_structural_classes_file_1 = require("./templates/generate-structural-classes-file");
exports.generateStructuralClassesFile = generate_structural_classes_file_1.generateStructuralClassesFile;
//# sourceMappingURL=index.js.map

@@ -30,20 +30,20 @@ import { IClientConfig } from "ldap-ts-client";

}
interface GetSchemaClassesFnInput {
declare type GetSchemaClassesFnInput = {
schemaDn: string;
options: Omit<IClientConfig, "baseDN">;
}
};
/** get defined classSchema Objects in schema */
export declare function getSchemaClasses({ schemaDn, options, }: GetSchemaClassesFnInput): Promise<Partial<SchemaClass>[]>;
interface GetSchemaClassesFnInput {
declare type GetStructuralSchemaClassesFnInput = {
schemaDn: string;
options: Omit<IClientConfig, "baseDN">;
}
};
/** get defined classSchema Objects in schema where objectClassCategory=1 */
export declare function getStructuralSchemaClasses({ schemaDn, options, }: GetSchemaClassesFnInput): Promise<Partial<SchemaClass>[]>;
interface GetSchemaClassByLdapNameFnInput {
export declare function getStructuralSchemaClasses({ schemaDn, options, }: GetStructuralSchemaClassesFnInput): Promise<Partial<SchemaClass>[]>;
declare type GetSchemaClassByLdapNameFnInput = {
schemaDn: string;
ldapName: string;
options: Omit<IClientConfig, "baseDN">;
}
};
export declare function getSchemaClassByLdapName({ options, schemaDn, ldapName, }: GetSchemaClassByLdapNameFnInput): Promise<Partial<SchemaClass>[]>;
export {};

@@ -22,3 +22,3 @@ import { IClientConfig } from "ldap-ts-client";

export declare function getLinkIds({ schemaDn, options, }: GetSchemaAttributesFnInput): Promise<SchemaLinkAttribute[]>;
export interface Relation {
export declare type Relation = {
[ldapName: string]: {

@@ -39,3 +39,3 @@ isBackLink: boolean;

};
}
};
/** process linkIds

@@ -42,0 +42,0 @@ * @return array of relations

@@ -13,3 +13,4 @@ import { OID } from "../typings/general/types";

};
/** generate typescript enum for defined capability OIDs */
export declare function generateCapabilitiesFile({ capabilities, options, }: GenerateCapabilitiesFileFnInput): Promise<void>;
export {};

@@ -11,2 +11,3 @@ "use strict";

const write_ts_file_1 = require("../helpers/write-ts-file");
/** generate typescript enum for defined capability OIDs */
async function generateCapabilitiesFile({ capabilities, options, }) {

@@ -13,0 +14,0 @@ var _a;

@@ -13,3 +13,4 @@ import { OID } from "../typings/general/types";

};
/** generate typescript enum for defined control OIDs */
export declare function generateControlsFile({ controls, options, }: GenerateControlsFileFnInput): Promise<void>;
export {};

@@ -11,2 +11,3 @@ "use strict";

const write_ts_file_1 = require("../helpers/write-ts-file");
/** generate typescript enum for defined control OIDs */
async function generateControlsFile({ controls, options, }) {

@@ -13,0 +14,0 @@ var _a;

@@ -13,3 +13,4 @@ import { OID } from "../typings/general/types";

};
/** generate typescript enum for defined extension OIDs */
export declare function generateExtensionsFile({ extensions, options, }: GenerateExtensionsFileFnInput): Promise<void>;
export {};

@@ -11,2 +11,3 @@ "use strict";

const write_ts_file_1 = require("../helpers/write-ts-file");
/** generate typescript enum for defined extension OIDs */
async function generateExtensionsFile({ extensions, options, }) {

@@ -13,0 +14,0 @@ var _a;

@@ -12,3 +12,4 @@ declare type GeneratePoliciesFileFnInput = {

};
/** generate typescript enum for defined policies */
export declare function generatePoliciesFile({ policies, options, }: GeneratePoliciesFileFnInput): Promise<void>;
export {};

@@ -11,2 +11,3 @@ "use strict";

const write_ts_file_1 = require("../helpers/write-ts-file");
/** generate typescript enum for defined policies */
async function generatePoliciesFile({ policies, options, }) {

@@ -13,0 +14,0 @@ var _a;

@@ -13,3 +13,4 @@ import { Relation } from "../services/link-id";

};
/** generate typescript enum for defined relations between attributes by process linkIds fields */
export declare function generateRelationsFile({ relations, options, }: GenerateRelationsFileFnInput): Promise<void>;
export {};

@@ -10,2 +10,3 @@ "use strict";

const write_to_file_1 = require("../helpers/write-to-file");
/** generate typescript enum for defined relations between attributes by process linkIds fields */
async function generateRelationsFile({ relations, options, }) {

@@ -12,0 +13,0 @@ var _a;

{
"name": "ldap-schema-ts-generator",
"version": "2.5.1",
"version": "2.6.0",
"description": "Typescript typedef and meta-data generator for LDAP Schema. It can be useful to interact from schema-aware/type-safe LDAP Client with LDAP servers like active directory.",

@@ -5,0 +5,0 @@ "repository": {

@@ -7,7 +7,13 @@ # Typescript typedef and meta-data generator for LDAP Schema

- generate typescript interface each object class
- generate enum for supported controls, capabilities, extensions, policies
- generate relations between classes in json format
- generate graphql type for each object class
- generate graphql basic CRUD resolvers for each object class
- generate typescript interfaces for each object class
- generate relations between attributes (json)
- generate graphql schema:
- type for each object class
- basic CRUD operations for each object class
- generate typescript enum for supported:
- controls
- capabilities
- extensions
- policies
- structural classes

@@ -14,0 +20,0 @@ ### How to use

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc