blob: 1ece2f1dcb362d420b1a770bd089222942386359 [file] [log] [blame]
James E. King, III375bfee2017-10-26 00:09:34 -04001/*
2 * Licensed to the Apache Software Foundation (ASF) under one
3 * or more contributor license agreements. See the NOTICE file
4 * distributed with this work for additional information
5 * regarding copyright ownership. The ASF licenses this file
6 * to you under the Apache License, Version 2.0 (the
7 * "License"); you may not use this file except in compliance
8 * with the License. You may obtain a copy of the License at
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing,
13 * software distributed under the License is distributed on an
14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15 * KIND, either express or implied. See the License for the
16 * specific language governing permissions and limitations
17 * under the License.
18 */
19
bforbisda1169d2018-10-28 11:27:38 -040020"use strict";
Cameron Martin21ed4a22024-04-22 11:08:19 +010021const thrift = require("thrift");
Randy Abernethy3b9ff4d2015-02-16 00:51:24 -080022
23module.exports.transports = {
bforbisda1169d2018-10-28 11:27:38 -040024 buffered: thrift.TBufferedTransport,
Cameron Martincaef0ed2025-01-15 11:58:39 +010025 framed: thrift.TFramedTransport,
Randy Abernethy3b9ff4d2015-02-16 00:51:24 -080026};
27
28module.exports.protocols = {
bforbisda1169d2018-10-28 11:27:38 -040029 json: thrift.TJSONProtocol,
30 binary: thrift.TBinaryProtocol,
David Maiddd22242019-02-22 03:37:49 -080031 compact: thrift.TCompactProtocol,
Cameron Martincaef0ed2025-01-15 11:58:39 +010032 header: thrift.THeaderProtocol,
Randy Abernethy3b9ff4d2015-02-16 00:51:24 -080033};
bforbisda1169d2018-10-28 11:27:38 -040034
Cameron Martin21ed4a22024-04-22 11:08:19 +010035const variant = (function () {
36 if (process.argv.includes("--es6")) {
37 return "es6";
38 } else if (process.argv.includes("--esm")) {
39 return "esm";
40 } else {
41 return "es5";
42 }
43})();
44
45module.exports.ecmaMode = ["esm", "es6"].includes(variant) ? "es6" : "es5";
46const genPath = (module.exports.genPath = (function () {
47 if (variant == "es5") {
48 return "gen-nodejs";
49 } else {
50 return `gen-nodejs-${variant}`;
51 }
52})());
53
54const moduleExt = (module.exports.moduleExt = variant === "esm" ? "mjs" : "js");
55
56/**
57 * Imports a types module, correctly handling the differences in esm and commonjs
58 */
59module.exports.importTypes = async function (filename) {
60 const typesModule = await import(`./${genPath}/${filename}.${moduleExt}`);
61
62 if (variant === "esm") {
63 return typesModule;
64 } else {
65 return typesModule.default;
66 }
67};