angular-odata
Version:
Client side OData typescript library for Angular
145 lines • 18 kB
JavaScript
import { CsdlAnnotable } from './csdl-annotation';
export class CsdlStructuralProperty extends CsdlAnnotable {
Name;
Type;
Collection;
Nullable;
constructor({ Name, Type, Nullable, Annotation, }) {
super({ Annotation });
this.Name = Name;
this.Nullable = Nullable;
this.Collection = Type.startsWith('Collection(');
this.Type = this.Collection ? Type.substring(11, Type.length - 1) : Type;
}
toJson() {
return {
...super.toJson(),
Name: this.Name,
Type: this.Collection ? `Collection(${this.Type})` : this.Type,
Nullable: this.Nullable,
};
}
}
export class CsdlProperty extends CsdlStructuralProperty {
MaxLength;
Precision;
Scale;
Unicode;
SRID;
DefaultValue;
constructor({ Name, Type, Nullable, MaxLength, Precision, Scale, Unicode, SRID, DefaultValue, Annotation, }) {
super({ Name, Type, Nullable, Annotation });
this.MaxLength = MaxLength;
this.Precision = Precision;
this.Scale = Scale;
this.Unicode = Unicode;
this.SRID = SRID;
this.DefaultValue = DefaultValue;
}
toJson() {
const json = { ...super.toJson() };
if (this.MaxLength !== undefined) {
json['MaxLength'] = this.MaxLength;
}
if (this.Precision !== undefined) {
json['Precision'] = this.Precision;
}
if (this.Scale !== undefined) {
json['Scale'] = this.Scale;
}
if (this.Unicode !== undefined) {
json['Unicode'] = this.Unicode;
}
if (this.SRID !== undefined) {
json['SRID'] = this.SRID;
}
if (this.DefaultValue !== undefined) {
json['DefaultValue'] = this.DefaultValue;
}
return json;
}
toConfig() {
return {
...super.toConfig(),
name: this.Name,
type: this.Type,
default: this.DefaultValue,
maxLength: this.MaxLength,
collection: this.Collection,
nullable: this.Nullable,
navigation: false,
precision: this.Precision,
scale: this.Scale,
};
}
}
export class CsdlNavigationProperty extends CsdlStructuralProperty {
Partner;
ContainsTarget;
ReferentialConstraints;
OnDelete;
constructor({ Name, Type, Nullable, Partner, ContainsTarget, ReferentialConstraints, OnDelete, Annotation, }) {
super({ Name, Type, Nullable, Annotation });
this.Partner = Partner;
this.ContainsTarget = ContainsTarget;
this.ReferentialConstraints = ReferentialConstraints?.map((r) => new CsdlReferentialConstraint(r));
this.OnDelete = OnDelete ? new CsdlOnDelete(OnDelete) : undefined;
}
toJson() {
const json = { ...super.toJson() };
if (this.Partner !== undefined) {
json['Partner'] = this.Partner;
}
if (this.ContainsTarget !== undefined) {
json['ContainsTarget'] = this.ContainsTarget;
}
if (Array.isArray(this.ReferentialConstraints) &&
this.ReferentialConstraints.length > 0) {
json['ReferentialConstraints'] = this.ReferentialConstraints.map((r) => r.toJson());
}
if (this.OnDelete !== undefined) {
json['OnDelete'] = this.OnDelete;
}
return json;
}
toConfig() {
return {
...super.toConfig(),
name: this.Name,
type: this.Type,
collection: this.Collection,
nullable: this.Nullable,
navigation: true,
referentials: this.ReferentialConstraints?.map((r) => ({
property: r.Property,
referencedProperty: r.ReferencedProperty,
})),
};
}
}
export class CsdlReferentialConstraint {
Property;
ReferencedProperty;
constructor({ Property, ReferencedProperty, }) {
this.Property = Property;
this.ReferencedProperty = ReferencedProperty;
}
toJson() {
return {
Property: this.Property,
ReferencedProperty: this.ReferencedProperty,
};
}
}
export class CsdlOnDelete {
Action;
constructor({ Action }) {
this.Action = Action;
}
toJson() {
return {
Action: this.Action,
};
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NkbC1zdHJ1Y3R1cmFsLXByb3BlcnR5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1vZGF0YS9zcmMvbGliL21ldGFkYXRhL2NzZGwvY3NkbC1zdHJ1Y3R1cmFsLXByb3BlcnR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVsRCxNQUFNLE9BQWdCLHNCQUF1QixTQUFRLGFBQWE7SUFDaEUsSUFBSSxDQUFTO0lBQ2IsSUFBSSxDQUFTO0lBQ2IsVUFBVSxDQUFVO0lBQ3BCLFFBQVEsQ0FBVztJQUVuQixZQUFZLEVBQ1YsSUFBSSxFQUNKLElBQUksRUFDSixRQUFRLEVBQ1IsVUFBVSxHQU1YO1FBQ0MsS0FBSyxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUN0QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDakQsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDM0UsQ0FBQztJQUVRLE1BQU07UUFDYixPQUFPO1lBQ0wsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFO1lBQ2pCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLElBQUksRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxjQUFjLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUk7WUFDOUQs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QixNQUFNLENBQVM7SUFFZixZQUFZLEVBQUUsTUFBTSxFQUFzQjtRQUN4QyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQsTUFBTTtRQUNKLE9BQU87WUFDTCxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07U0FDcEIsQ0FBQztJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0cnVjdHVyZWRUeXBlRmllbGRDb25maWcgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBDc2RsQW5ub3RhYmxlIH0gZnJvbSAnLi9jc2RsLWFubm90YXRpb24nO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQ3NkbFN0cnVjdHVyYWxQcm9wZXJ0eSBleHRlbmRzIENzZGxBbm5vdGFibGUge1xuICBOYW1lOiBzdHJpbmc7XG4gIFR5cGU6IHN0cmluZztcbiAgQ29sbGVjdGlvbjogYm9vbGVhbjtcbiAgTnVsbGFibGU/OiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHtcbiAgICBOYW1lLFxuICAgIFR5cGUsXG4gICAgTnVsbGFibGUsXG4gICAgQW5ub3RhdGlvbixcbiAgfToge1xuICAgIE5hbWU6IHN0cmluZztcbiAgICBUeXBlOiBzdHJpbmc7XG4gICAgTnVsbGFibGU/OiBib29sZWFuO1xuICAgIEFubm90YXRpb24/OiBhbnlbXTtcbiAgfSkge1xuICAgIHN1cGVyKHsgQW5ub3RhdGlvbiB9KTtcbiAgICB0aGlzLk5hbWUgPSBOYW1lO1xuICAgIHRoaXMuTnVsbGFibGUgPSBOdWxsYWJsZTtcbiAgICB0aGlzLkNvbGxlY3Rpb24gPSBUeXBlLnN0YXJ0c1dpdGgoJ0NvbGxlY3Rpb24oJyk7XG4gICAgdGhpcy5UeXBlID0gdGhpcy5Db2xsZWN0aW9uID8gVHlwZS5zdWJzdHJpbmcoMTEsIFR5cGUubGVuZ3RoIC0gMSkgOiBUeXBlO1xuICB9XG5cbiAgb3ZlcnJpZGUgdG9Kc29uKCkge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5zdXBlci50b0pzb24oKSxcbiAgICAgIE5hbWU6IHRoaXMuTmFtZSxcbiAgICAgIFR5cGU6IHRoaXMuQ29sbGVjdGlvbiA/IGBDb2xsZWN0aW9uKCR7dGhpcy5UeXBlfSlgIDogdGhpcy5UeXBlLFxuICAgICAgTnVsbGFibGU6IHRoaXMuTnVsbGFibGUsXG4gICAgfSBhcyB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDc2RsUHJvcGVydHkgZXh0ZW5kcyBDc2RsU3RydWN0dXJhbFByb3BlcnR5IHtcbiAgTWF4TGVuZ3RoPzogbnVtYmVyO1xuICBQcmVjaXNpb24/OiBudW1iZXI7XG4gIFNjYWxlPzogbnVtYmVyO1xuICBVbmljb2RlPzogYm9vbGVhbjtcbiAgU1JJRD86IHN0cmluZztcbiAgRGVmYXVsdFZhbHVlPzogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHtcbiAgICBOYW1lLFxuICAgIFR5cGUsXG4gICAgTnVsbGFibGUsXG4gICAgTWF4TGVuZ3RoLFxuICAgIFByZWNpc2lvbixcbiAgICBTY2FsZSxcbiAgICBVbmljb2RlLFxuICAgIFNSSUQsXG4gICAgRGVmYXVsdFZhbHVlLFxuICAgIEFubm90YXRpb24sXG4gIH06IHtcbiAgICBOYW1lOiBzdHJpbmc7XG4gICAgVHlwZTogc3RyaW5nO1xuICAgIE51bGxhYmxlPzogYm9vbGVhbjtcbiAgICBNYXhMZW5ndGg/OiBudW1iZXI7XG4gICAgUHJlY2lzaW9uPzogbnVtYmVyO1xuICAgIFNjYWxlPzogbnVtYmVyO1xuICAgIFVuaWNvZGU/OiBib29sZWFuO1xuICAgIFNSSUQ/OiBzdHJpbmc7XG4gICAgRGVmYXVsdFZhbHVlPzogc3RyaW5nO1xuICAgIEFubm90YXRpb24/OiBhbnlbXTtcbiAgfSkge1xuICAgIHN1cGVyKHsgTmFtZSwgVHlwZSwgTnVsbGFibGUsIEFubm90YXRpb24gfSk7XG4gICAgdGhpcy5NYXhMZW5ndGggPSBNYXhMZW5ndGg7XG4gICAgdGhpcy5QcmVjaXNpb24gPSBQcmVjaXNpb247XG4gICAgdGhpcy5TY2FsZSA9IFNjYWxlO1xuICAgIHRoaXMuVW5pY29kZSA9IFVuaWNvZGU7XG4gICAgdGhpcy5TUklEID0gU1JJRDtcbiAgICB0aGlzLkRlZmF1bHRWYWx1ZSA9IERlZmF1bHRWYWx1ZTtcbiAgfVxuXG4gIG92ZXJyaWRlIHRvSnNvbigpIHtcbiAgICBjb25zdCBqc29uOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0geyAuLi5zdXBlci50b0pzb24oKSB9O1xuICAgIGlmICh0aGlzLk1heExlbmd0aCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBqc29uWydNYXhMZW5ndGgnXSA9IHRoaXMuTWF4TGVuZ3RoO1xuICAgIH1cbiAgICBpZiAodGhpcy5QcmVjaXNpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAganNvblsnUHJlY2lzaW9uJ10gPSB0aGlzLlByZWNpc2lvbjtcbiAgICB9XG4gICAgaWYgKHRoaXMuU2NhbGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAganNvblsnU2NhbGUnXSA9IHRoaXMuU2NhbGU7XG4gICAgfVxuICAgIGlmICh0aGlzLlVuaWNvZGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAganNvblsnVW5pY29kZSddID0gdGhpcy5Vbmljb2RlO1xuICAgIH1cbiAgICBpZiAodGhpcy5TUklEICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGpzb25bJ1NSSUQnXSA9IHRoaXMuU1JJRDtcbiAgICB9XG4gICAgaWYgKHRoaXMuRGVmYXVsdFZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGpzb25bJ0RlZmF1bHRWYWx1ZSddID0gdGhpcy5EZWZhdWx0VmFsdWU7XG4gICAgfVxuICAgIHJldHVybiBqc29uO1xuICB9XG5cbiAgb3ZlcnJpZGUgdG9Db25maWcoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN1cGVyLnRvQ29uZmlnKCksXG4gICAgICBuYW1lOiB0aGlzLk5hbWUsXG4gICAgICB0eXBlOiB0aGlzLlR5cGUsXG4gICAgICBkZWZhdWx0OiB0aGlzLkRlZmF1bHRWYWx1ZSxcbiAgICAgIG1heExlbmd0aDogdGhpcy5NYXhMZW5ndGgsXG4gICAgICBjb2xsZWN0aW9uOiB0aGlzLkNvbGxlY3Rpb24sXG4gICAgICBudWxsYWJsZTogdGhpcy5OdWxsYWJsZSxcbiAgICAgIG5hdmlnYXRpb246IGZhbHNlLFxuICAgICAgcHJlY2lzaW9uOiB0aGlzLlByZWNpc2lvbixcbiAgICAgIHNjYWxlOiB0aGlzLlNjYWxlLFxuICAgIH0gYXMgU3RydWN0dXJlZFR5cGVGaWVsZENvbmZpZyAmIHsgbmFtZTogc3RyaW5nIH07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENzZGxOYXZpZ2F0aW9uUHJvcGVydHkgZXh0ZW5kcyBDc2RsU3RydWN0dXJhbFByb3BlcnR5IHtcbiAgcHVibGljIFBhcnRuZXI/OiBzdHJpbmc7XG4gIHB1YmxpYyBDb250YWluc1RhcmdldD86IGJvb2xlYW47XG4gIHB1YmxpYyBSZWZlcmVudGlhbENvbnN0cmFpbnRzPzogQ3NkbFJlZmVyZW50aWFsQ29uc3RyYWludFtdO1xuICBwdWJsaWMgT25EZWxldGU/OiBDc2RsT25EZWxldGU7XG5cbiAgY29uc3RydWN0b3Ioe1xuICAgIE5hbWUsXG4gICAgVHlwZSxcbiAgICBOdWxsYWJsZSxcbiAgICBQYXJ0bmVyLFxuICAgIENvbnRhaW5zVGFyZ2V0LFxuICAgIFJlZmVyZW50aWFsQ29uc3RyYWludHMsXG4gICAgT25EZWxldGUsXG4gICAgQW5ub3RhdGlvbixcbiAgfToge1xuICAgIE5hbWU6IHN0cmluZztcbiAgICBUeXBlOiBzdHJpbmc7XG4gICAgTnVsbGFibGU/OiBib29sZWFuO1xuICAgIFBhcnRuZXI/OiBzdHJpbmc7XG4gICAgQ29udGFpbnNUYXJnZXQ/OiBib29sZWFuO1xuICAgIFJlZmVyZW50aWFsQ29uc3RyYWludHM/OiBhbnlbXTtcbiAgICBPbkRlbGV0ZT86IGFueTtcbiAgICBBbm5vdGF0aW9uPzogYW55W107XG4gIH0pIHtcbiAgICBzdXBlcih7IE5hbWUsIFR5cGUsIE51bGxhYmxlLCBBbm5vdGF0aW9uIH0pO1xuICAgIHRoaXMuUGFydG5lciA9IFBhcnRuZXI7XG4gICAgdGhpcy5Db250YWluc1RhcmdldCA9IENvbnRhaW5zVGFyZ2V0O1xuICAgIHRoaXMuUmVmZXJlbnRpYWxDb25zdHJhaW50cyA9IFJlZmVyZW50aWFsQ29uc3RyYWludHM/Lm1hcChcbiAgICAgIChyKSA9PiBuZXcgQ3NkbFJlZmVyZW50aWFsQ29uc3RyYWludChyKSxcbiAgICApO1xuICAgIHRoaXMuT25EZWxldGUgPSBPbkRlbGV0ZSA/IG5ldyBDc2RsT25EZWxldGUoT25EZWxldGUpIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgb3ZlcnJpZGUgdG9Kc29uKCkge1xuICAgIGNvbnN0IGpzb246IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7IC4uLnN1cGVyLnRvSnNvbigpIH07XG4gICAgaWYgKHRoaXMuUGFydG5lciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBqc29uWydQYXJ0bmVyJ10gPSB0aGlzLlBhcnRuZXI7XG4gICAgfVxuICAgIGlmICh0aGlzLkNvbnRhaW5zVGFyZ2V0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGpzb25bJ0NvbnRhaW5zVGFyZ2V0J10gPSB0aGlzLkNvbnRhaW5zVGFyZ2V0O1xuICAgIH1cbiAgICBpZiAoXG4gICAgICBBcnJheS5pc0FycmF5KHRoaXMuUmVmZXJlbnRpYWxDb25zdHJhaW50cykgJiZcbiAgICAgIHRoaXMuUmVmZXJlbnRpYWxDb25zdHJhaW50cy5sZW5ndGggPiAwXG4gICAgKSB7XG4gICAgICBqc29uWydSZWZlcmVudGlhbENvbnN0cmFpbnRzJ10gPSB0aGlzLlJlZmVyZW50aWFsQ29uc3RyYWludHMubWFwKChyKSA9PlxuICAgICAgICByLnRvSnNvbigpLFxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuT25EZWxldGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAganNvblsnT25EZWxldGUnXSA9IHRoaXMuT25EZWxldGU7XG4gICAgfVxuICAgIHJldHVybiBqc29uO1xuICB9XG5cbiAgb3ZlcnJpZGUgdG9Db25maWcoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN1cGVyLnRvQ29uZmlnKCksXG4gICAgICBuYW1lOiB0aGlzLk5hbWUsXG4gICAgICB0eXBlOiB0aGlzLlR5cGUsXG4gICAgICBjb2xsZWN0aW9uOiB0aGlzLkNvbGxlY3Rpb24sXG4gICAgICBudWxsYWJsZTogdGhpcy5OdWxsYWJsZSxcbiAgICAgIG5hdmlnYXRpb246IHRydWUsXG4gICAgICByZWZlcmVudGlhbHM6IHRoaXMuUmVmZXJlbnRpYWxDb25zdHJhaW50cz8ubWFwKChyKSA9PiAoe1xuICAgICAgICBwcm9wZXJ0eTogci5Qcm9wZXJ0eSxcbiAgICAgICAgcmVmZXJlbmNlZFByb3BlcnR5OiByLlJlZmVyZW5jZWRQcm9wZXJ0eSxcbiAgICAgIH0pKSxcbiAgICB9IGFzIFN0cnVjdHVyZWRUeXBlRmllbGRDb25maWcgJiB7IG5hbWU6IHN0cmluZyB9O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDc2RsUmVmZXJlbnRpYWxDb25zdHJhaW50IHtcbiAgUHJvcGVydHk6IHN0cmluZztcbiAgUmVmZXJlbmNlZFByb3BlcnR5OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Ioe1xuICAgIFByb3BlcnR5LFxuICAgIFJlZmVyZW5jZWRQcm9wZXJ0eSxcbiAgfToge1xuICAgIFByb3BlcnR5OiBzdHJpbmc7XG4gICAgUmVmZXJlbmNlZFByb3BlcnR5OiBzdHJpbmc7XG4gIH0pIHtcbiAgICB0aGlzLlByb3BlcnR5ID0gUHJvcGVydHk7XG4gICAgdGhpcy5SZWZlcmVuY2VkUHJvcGVydHkgPSBSZWZlcmVuY2VkUHJvcGVydHk7XG4gIH1cblxuICB0b0pzb24oKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFByb3BlcnR5OiB0aGlzLlByb3BlcnR5LFxuICAgICAgUmVmZXJlbmNlZFByb3BlcnR5OiB0aGlzLlJlZmVyZW5jZWRQcm9wZXJ0eSxcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDc2RsT25EZWxldGUge1xuICBBY3Rpb246IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcih7IEFjdGlvbiB9OiB7IEFjdGlvbjogc3RyaW5nIH0pIHtcbiAgICB0aGlzLkFjdGlvbiA9IEFjdGlvbjtcbiAgfVxuXG4gIHRvSnNvbigpIHtcbiAgICByZXR1cm4ge1xuICAgICAgQWN0aW9uOiB0aGlzLkFjdGlvbixcbiAgICB9O1xuICB9XG59XG4iXX0=