@budibase/backend-core 2.29.29 → 2.29.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -54195,8 +54195,7 @@ __export(src_exports, {
54195
54195
  env: () => environment_default,
54196
54196
  errors: () => errors_exports,
54197
54197
  events: () => events_exports,
54198
- featureFlags: () => features_exports,
54199
- features: () => installation_exports2,
54198
+ features: () => features_exports,
54200
54199
  getPublicError: () => getPublicError,
54201
54200
  init: () => init9,
54202
54201
  installation: () => installation_exports,
@@ -65938,90 +65937,70 @@ var DEFINITIONS = [
65938
65937
  // src/features/index.ts
65939
65938
  var features_exports = {};
65940
65939
  __export(features_exports, {
65941
- TenantFeatureFlag: () => TenantFeatureFlag,
65942
- buildFeatureFlags: () => buildFeatureFlags,
65943
- getTenantFeatureFlags: () => getTenantFeatureFlags,
65944
- isEnabled: () => isEnabled,
65945
- processFeatureEnvVar: () => processFeatureEnvVar
65940
+ defaultFlags: () => defaultFlags,
65941
+ fetch: () => fetch6,
65942
+ get: () => get4,
65943
+ isEnabled: () => isEnabled
65946
65944
  });
65947
-
65948
- // src/features/installation.ts
65949
- var installation_exports2 = {};
65950
- __export(installation_exports2, {
65951
- processFeatureEnvVar: () => processFeatureEnvVar
65952
- });
65953
- function processFeatureEnvVar(fullList, featureList) {
65954
- let list;
65955
- if (!featureList) {
65956
- list = fullList;
65957
- } else {
65958
- list = featureList.split(",");
65945
+ var import_lodash2 = require("lodash");
65946
+ var Flag = class _Flag {
65947
+ constructor(defaultValue) {
65948
+ this.defaultValue = defaultValue;
65959
65949
  }
65960
- for (let feature of list) {
65961
- if (!fullList.includes(feature)) {
65962
- throw new Error(`Feature: ${feature} is not an allowed option`);
65963
- }
65964
- }
65965
- return list;
65966
- }
65967
-
65968
- // src/features/index.ts
65969
- function buildFeatureFlags() {
65970
- if (!environment_default.TENANT_FEATURE_FLAGS) {
65971
- return;
65950
+ static withDefault(value) {
65951
+ return new _Flag(value);
65972
65952
  }
65973
- const tenantFeatureFlags = {};
65974
- environment_default.TENANT_FEATURE_FLAGS.split(",").forEach((tenantToFeatures) => {
65975
- const [tenantId, ...features] = tenantToFeatures.split(":");
65976
- features.forEach((feature) => {
65977
- if (!tenantFeatureFlags[tenantId]) {
65978
- tenantFeatureFlags[tenantId] = [];
65979
- }
65980
- tenantFeatureFlags[tenantId].push(feature);
65981
- });
65982
- });
65983
- return tenantFeatureFlags;
65984
- }
65985
- function isEnabled(featureFlag) {
65986
- const tenantId = getTenantId();
65987
- const flags = getTenantFeatureFlags(tenantId);
65988
- return flags.includes(featureFlag);
65989
- }
65990
- function getTenantFeatureFlags(tenantId) {
65991
- let flags = [];
65992
- const envFlags = buildFeatureFlags();
65993
- if (envFlags) {
65994
- const globalFlags = envFlags["*"];
65995
- const tenantFlags = envFlags[tenantId] || [];
65996
- const tenantOverrides = tenantFlags.reduce(
65997
- (acc, flag) => {
65998
- if (flag.startsWith("!")) {
65999
- let stripped = flag.substring(1);
66000
- acc.push(stripped);
66001
- }
66002
- return acc;
66003
- },
66004
- []
66005
- );
66006
- if (globalFlags) {
66007
- flags.push(...globalFlags);
65953
+ };
65954
+ var FLAGS = {
65955
+ LICENSING: Flag.withDefault(false),
65956
+ GOOGLE_SHEETS: Flag.withDefault(false),
65957
+ USER_GROUPS: Flag.withDefault(false),
65958
+ ONBOARDING_TOUR: Flag.withDefault(false)
65959
+ };
65960
+ var DEFAULTS = Object.keys(FLAGS).reduce((acc, key) => {
65961
+ const typedKey = key;
65962
+ acc[typedKey] = FLAGS[typedKey].defaultValue;
65963
+ return acc;
65964
+ }, {});
65965
+ function defaultFlags() {
65966
+ return (0, import_lodash2.cloneDeep)(DEFAULTS);
65967
+ }
65968
+ function isFlagName(name) {
65969
+ return FLAGS[name] !== void 0;
65970
+ }
65971
+ async function fetch6() {
65972
+ const currentTenantId = getTenantId();
65973
+ const flags = defaultFlags();
65974
+ const split = (environment_default.TENANT_FEATURE_FLAGS || "").split(",").map((x) => x.split(":"));
65975
+ for (const [tenantId, ...features] of split) {
65976
+ if (!tenantId || tenantId !== "*" && tenantId !== currentTenantId) {
65977
+ continue;
66008
65978
  }
66009
- if (tenantFlags.length) {
66010
- flags.push(...tenantFlags);
65979
+ for (let feature of features) {
65980
+ let value = true;
65981
+ if (feature.startsWith("!")) {
65982
+ feature = feature.slice(1);
65983
+ value = false;
65984
+ }
65985
+ if (!isFlagName(feature)) {
65986
+ throw new Error(`Feature: ${feature} is not an allowed option`);
65987
+ }
65988
+ if (typeof flags[feature] !== "boolean") {
65989
+ throw new Error(`Feature: ${feature} is not a boolean`);
65990
+ }
65991
+ flags[feature] = value;
66011
65992
  }
66012
- flags = flags.filter((flag) => {
66013
- return tenantOverrides.indexOf(flag) == -1 && !flag.startsWith("!");
66014
- });
66015
65993
  }
66016
65994
  return flags;
66017
65995
  }
66018
- var TenantFeatureFlag = /* @__PURE__ */ ((TenantFeatureFlag2) => {
66019
- TenantFeatureFlag2["LICENSING"] = "LICENSING";
66020
- TenantFeatureFlag2["GOOGLE_SHEETS"] = "GOOGLE_SHEETS";
66021
- TenantFeatureFlag2["USER_GROUPS"] = "USER_GROUPS";
66022
- TenantFeatureFlag2["ONBOARDING_TOUR"] = "ONBOARDING_TOUR";
66023
- return TenantFeatureFlag2;
66024
- })(TenantFeatureFlag || {});
65996
+ async function get4(name) {
65997
+ const flags = await fetch6();
65998
+ return flags[name];
65999
+ }
66000
+ async function isEnabled(name) {
66001
+ const flags = await fetch6();
66002
+ return flags[name];
66003
+ }
66025
66004
 
66026
66005
  // src/auth/index.ts
66027
66006
  var auth_exports = {};
@@ -68686,7 +68665,6 @@ var init9 = (opts = {}) => {
68686
68665
  env,
68687
68666
  errors,
68688
68667
  events,
68689
- featureFlags,
68690
68668
  features,
68691
68669
  getPublicError,
68692
68670
  init,