UNPKG

@fivetrandevelopers/zetasql

Version:
48 lines 1.85 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.LanguageOptions = void 0; const ZetaSQLClient_1 = require("./ZetaSQLClient"); class LanguageOptions { constructor() { this.options = {}; } static async getMaxFeatures() { if (!LanguageOptions.maxFeatures) { const request = { maximumFeatures: true, }; LanguageOptions.maxFeatures = await ZetaSQLClient_1.ZetaSQLClient.getInstance().getLanguageOptions(request); } return LanguageOptions.maxFeatures; } async setLanguageVersion(version) { this.setEnabledLanguageFeatures(await LanguageOptions.getLanguageFeaturesForVersion(version)); } static async getLanguageFeaturesForVersion(languageVersion) { const features = new Set(); (await ZetaSQLClient_1.ZetaSQLClient.getInstance().getLanguageOptions({ languageVersion }))?.enabledLanguageFeatures.forEach(f => features.add(f)); return features; } async enableMaximumLanguageFeatures() { const features = new Set(); (await LanguageOptions.getMaxFeatures())?.enabledLanguageFeatures.forEach(f => features.add(f)); this.setEnabledLanguageFeatures(features); return this; } enableLanguageFeature(feature) { if (!this.options.enabledLanguageFeatures?.includes(feature)) { this.options.enabledLanguageFeatures?.push(feature); } } setEnabledLanguageFeatures(enabledLanguageFeatures) { this.options.enabledLanguageFeatures = []; enabledLanguageFeatures.forEach(f => { this.options.enabledLanguageFeatures?.push(f); }); } serialize() { return this.options; } } exports.LanguageOptions = LanguageOptions; //# sourceMappingURL=LanguageOptions.js.map