Bluestep JS Documentation
    Preparing search index...

    Secrets cannot be set via formula. Calling secret.toString() will return the hash value.

    const allUsers = B.queries.byName['All Users'].require('allUsers'); const user = allUsers.byId[userId]; const profile = user.forms.byName['Online Profile'].require('profile'); const secret = profile.fields.secret;

    <dt>explore example</dt>[[B.queries]], [[B.QueryMetaDatas.byName]], [[B.QueryMetaData.require]], [[B.FormMetaDatas.byName]], [[B.FormMetaData.fields
    

    Hierarchy (View Summary)

    Index

    Constructors

    Methods

    • An object of alternate ids for this object, with values as [[AltId]]

      Returns { [name: string]: AltId<SecretField> }

      // you've marked certain forms with the FID of deprecated and want to filter for those
      const warningMessage = baseObject.altIdsObject().FID.value().includes('deprecated') && 'Please use a different form';
    • An object of alternate ids for this object, with values as strings

      Returns { [name: string]: string }

      // you've marked certain forms with the FID of deprecated and want to filter for those
      const warningMessage = baseObject.altIds().FID.includes('deprecated') && 'Please use a different form';
    • An array of alternate ids for this object.

      Returns EList<SecretField>

      // you've marked certain forms with the FID of deprecated and want to filter for those
      const warningMessage = baseObject.altIds().FID.includes('deprecated') && 'Please use a different form';
    • Same as calling optAncestor(var).orElse(null)

      Type Parameters

      Parameters

      • classType: string | number

      Returns B

    • If this object is a Collection it returns it as an array. The majority of objects in the system are Collections. For most objects, this is the same as calling [[children]].

      Returns EList<BaseObject<any>>

      const ids = obj.asArray().map(ob => ob);
      
    • Get the children of the object. This retrieval goes one level deep.

      Parameters

      • OptionalclassType: string | number

      Returns EList<BaseObject<any>>

      const childrenNames = obj.children().map(child => child.displayName());
      
    • Clear the field's value.

      Returns void

      // This is a surprisingly non-trivial example.numberField.val() > 10 && numberField.clear();// There are many things going on here:
      // 1) We are performing a check that a value even exists in this field. If not, nothing happens.
      // 2) If the first condition is met, we then check that the value is a number or a string representing a number
      // (remember: '5'==5 in JavaScript), and that it is greater than 10. If not, nothing happens.
      // 3) If the first two conditions are met, the field is then cleared of its value.
    • The "created at" timestamp of this object.

      Returns Instant

      const createdAt = `<div class="created-at">${baseObject.created()}</div>`;
      
    • The creator of this object.

      Returns User

      alert(`Guess who created this. It was ${baseObject.creator().fullName()}. They are to blame.`);
      
    • The deleted children of this object. Only looks one level deep. E.g. a form's deleted children could include fields and form entries. A folder's deleted children could include folders, forms, and formulas, but not any of those forms' entries.

      Returns EList<BaseObject<any>>

      const deleted = baseObject.deletedChildren();
      
    • Returns a delete URL for this object, else a blank string. Following the URL will delete the object, so proceed with caution.

      Returns string

      const deleteBtn = `<button data-href="${baseObject.deleteUrl()}">Go to ${baseObject.displayName()}</button>;
      
    • The default display name of this object. For the most part, this is the same as calling toString(), which is the same as inserting the object into a string.

      Returns string

      The following assumes you have already aggregated a selection of baseObjects into an array

      const displayNames = [];
      for (const o of baseObjects) displayNames.push(o.displayName());
      const namesList = `<ul><li>${displayNames.join('</li><li>')}</li></ul>`;
    • Sets the Display Name.

      Parameters

      • name: string

      Returns void

    • Returns an edit URL for this object, else a blank string.

      Returns string

      const editBtn = `<button data-href="${baseObject.editUrl()}">Go to ${baseObject}</button>`;
      
    • Returns this field's [[FormMetaData]] object.

      Returns FormMetaData

      const form = firstName.form();
      const fieldNames = [];
      for (field in form) fieldNames.push(form[field].displayName());
    • Gets an array of all the object's ancestors.

      Returns EList<BaseObject<any>>

      const numberOfAncestors = obj.getAncestors().length;
      
    • HmacSHA256 base64-encoded string of the secret stored in the field. The system adds several "salt" values while computing the hash. This causes the hash to be unique to both the current user account and the actual secret value. Thus, it is not possible to compare hashed secrets between users, but for any paricular user the same secret will always result in the same hash value.

      Returns string

      const secHash = secret.hash();
      
    • A utility function to generate a hash of a secret. This is useful for generating a hash of a secret that is passed in using the current entry as the salt and can be compared with another hash generated the same way.

      This does not use the stored secret for calculating a hash.

      If this field has a SID then this method is restricted to frozen formulas.

      Parameters

      • secret: string

        The Secret to get a salted hash of

      Returns string

      const hash = secret.hashSecretWithEntry("pass");
      
    • The [[Id]] of this object bounded to T.

      Returns Id<SecretField>


      const displayDiv = `<div class="object-card" id="${baseObject.id()}">
      <div class="title">${baseObject}</div>
      <div class="body">Hello World!</div>
      </div>;
    • Returns whether the object is locked or not.

      Returns boolean

      Part of the [[Lock]] API.

      const isLocked = baseObject.isLocked();
      
    • Returns whether the object is pending a lock or not.

      Returns boolean

      Part of the [[Lock]] API.

      const isPendingLock = baseObject.isPendingLock();
      
    • Returns whether the object is pending an unlock or not.

      Returns boolean

      Part of the [[Lock]] API.

      const lockPendingUnlock = baseObject.isPendingUnLock();
      
    • Returns whether the field is writable

      Returns boolean

      const firstNameClass = firstName.isWritable() ? 'active' : 'inactive';
      
    • Returns the Local Cache object for this Thread/Base Object.

      Returns LocalCache

    • Same as calling optLock().orElse(null)

      Returns Lock

    • Parameters

      • Optionaloptions: string

      Returns string

    • Returns the [[FieldMetaData]] object that this describes this field.

      Returns FieldMetaData<string>

      const firstNameClass = firstName.metaData().styleClass();
      
      explore example
      [[FieldMetaData.styleClass]]
    • The modified date of this object.

      Returns Instant

      const isModified = baseObject.modified();
      
    • The [[User]] that last modified this object.

      Returns User

      const modifierName = baseObject.modifier().fullName();
      
    • Optional value for this field. Same as [[valOpt]]. Try to use this as often as you can over val(); Null-pointer exceptions can be a pain, and this will provide a measure of safety. Try to reserve val() for situations where a field is required and you know that the value cannot be null.

      Returns Optional<string>

      const middleName = middleName.opt().orElse('No Middle Name Set!');
      // or, similarly
      const middleName = middleName.val() || 'No Middle Name Set!'
      explore example
      [[Java.Optional.isPresent]]
    • A [[Java.Optional]] of the ancestor with the specific class.

      Parameters

      • classType: string | number

      Returns Optional<BaseObject<any>>

      const ancestors = obj.optAncestor(1000001).ifPresent(a => console.log('${a} exists'));
      
      explore example
      [[Java.Optional.ifPresent]]
    • Returns the date and time that the secret was last changed. BlueStep began tracking secret changes in September 2013. Secrets set prior to this time make a worst-case assumption that the secret has not been changed since the account was created.

      Returns Optional<Instant>

      const passLastMod = secret.lastChanged();
      
    • Returns the [[Lock]]

      Returns Optional<Lock>

      Part of the [[Lock]] API.

      const lockExpire = baseObject.optLock();
      
    • A [[Java.Optional]] of the current object's parent object.

      Parameters

      • OptionalclassType: string | number

      Returns Optional<BaseObject<any>>

      const ancestors = obj.optAncestor(1000001).ifPresent(a => console.log('${a} found'));
      
      explore example
      [[Java.Optional.ifPresent]]
    • Same as calling optParent(var).orElse(null)

      Type Parameters

      Parameters

      • OptionalclassType: string | number

      Returns B

    • Reset the current object so that it is cleared from the cache and looked up from the database.

      Returns void

    • Calculates the bit strength, a measure of how easily a secret can be cracked by random guessing. It goes through a formula consisting of a dictionary word check, a repeated/adjacent letters check, and a character complexity check. This includes upper and lowercase letters, numbers, punctuation, space, ASCII, and Unicode.

      BlueStep recommends a minimum bit strength of 50, but the minimum-allowable bit strength (MABS) is customizable to each organization.

      NOTE Setting the MABS only affects future secret. Forcing existing users to change weak secrets is currently a process only available to BlueStep employees.

      Returns number

      const secStrength = secret.strength();
      
    • The [[Id]] or [[AltId]] that the system deems most relevant.

      Returns AltId<SecretField> | Id<SecretField>


      const displayDiv = `<div class="object-card" id="${baseObject.topId()}">
      <div class="title">${baseObject}</div>
      <div class="body">Hello World!</div>
      </div>;
    • Returns the bluestep.js classpath for the current object.

      Returns string

      const isBool = testForm.fields.mysteryField.typeName().toLowerCase().includes('boolean')
      
    • Makes changes to the database for this object

      Returns void

    • Gets the field's value if there is one, and will otherwise return null. Some overrides of this method have default return-values for convenience but, that would not make sense for this: the general-use case. In situations where the value might be null (e.g. non required field), consider using optional chaining: field.val()?.toString(). The preferred method to handle nulls in bs.js is simply [[opt]]/[[valOpt]]; as the methods available off of that can handle virtually any situation.

      This is identical to calling field.opt().orElse(null).

      Returns string

      // it is important to notice that, due to how JavaScript works, doubleVal will evaluate to 0 if numberField.val() is null.
      const doubleVal = numberField.val() * 2;
    • Set the field's value.

      Parameters

      • newValue: string

        The value to be put into the field.

      Returns void

      // make the field say `hello`
      field.val('hello');
    • Optional value for this field. Alias for [[opt]].

      Returns Optional<string>

      date.valOpt().map(val => `Report Date: ${val}`).orElse('No Date');
      
      explore example
      [[Java.Optional.map]], [[Java.Optional.orElse]]
    • Returns string

    • Test a secret field's value to verify that it matches your test value.

      If this field has a SID then this method is restricted to frozen formulas.

      Parameters

      • secret: string

        The Secret to test against

      Returns boolean

      const passwordIsCorrect = password.verifySecret("pass");
      
    • The version of this object or empty string if it doesn't exist.

      Returns string

      const version = baseObject.version();
      
    • Returns a view URL for this object, if it has one. This value is always a relative URL, meaning it does not contain the protocol prefix or domain name such as http://xyz.bluestep.net.

      Returns string

      const viewBtn = `<button data-href="${baseObject.viewUrl()}">Go to ${baseObject.displayName()}</button>;