UNPKG

jinaga

Version:

Data management for web and mobile applications.

43 lines 2.23 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.RuleSet = void 0; const authorizationRules_1 = require("../authorization/authorizationRules"); const distribution_rules_1 = require("../distribution/distribution-rules"); const purgeConditions_1 = require("../purge/purgeConditions"); const specification_parser_1 = require("../specification/specification-parser"); class RuleSet { constructor(authorizationRules, distributionRules, purgeConditions) { this.authorizationRules = authorizationRules; this.distributionRules = distributionRules; this.purgeConditions = purgeConditions; } static loadFromDescription(description) { const parser = new specification_parser_1.SpecificationParser(description); parser.skipWhitespace(); let authorizationRules = authorizationRules_1.AuthorizationRules.empty; let distributionRules = distribution_rules_1.DistributionRules.empty; let purgeConditions = purgeConditions_1.PurgeConditions.empty; while (!parser.atEnd()) { if (parser.continues("authorization")) { authorizationRules = authorizationRules.with(a => parser.parseAuthorizationRules()); } else if (parser.continues("distribution")) { distributionRules = distributionRules.with(d => parser.parseDistributionRules()); } else if (parser.continues("purge")) { purgeConditions = purgeConditions.with(p => parser.parsePurgeConditions()); } else { // Throws an error. parser.expectEnd(); } } return new RuleSet(authorizationRules, distributionRules, purgeConditions); } merge(ruleSet2) { return new RuleSet(this.authorizationRules.merge(ruleSet2.authorizationRules), this.distributionRules.merge(ruleSet2.distributionRules), this.purgeConditions.merge(ruleSet2.purgeConditions)); } } exports.RuleSet = RuleSet; RuleSet.empty = new RuleSet(authorizationRules_1.AuthorizationRules.empty, distribution_rules_1.DistributionRules.empty, purgeConditions_1.PurgeConditions.empty); //# sourceMappingURL=RuleSet.js.map