Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
@skava/typings / microservices / generic.d.ts
Size: Mime:

/**
 * @version https://jira.skava.net/confluence/display/SKC/SE-508+-++PIM+Versioning
 * 
 * @performance https://jira.skava.net/confluence/display/PLATA/Performance+Analytics
 * 
 * @version platformA
 * https://jira.skava.net/confluence/display/PLATA/Product+requirements
 *
 * @version platform
 * @api https://jira.skava.net/confluence/display/SKC/Network+Topology
 * @see https://jira.skava.net/confluence/display/SKC/Skava+Commerce+Microservices+Architecture+Diagram
 * @see https://jira.skava.net/confluence/display/SKC/DB+Schema+-+All+Microservices?preview=/19471340/19471441/PIM.pdf
 * @extends https://jira.skava.net/confluence/display/SKC/DB+Schema+-+All+Microservices
 */
type Float = number
type NavType = 'identifier'
/**
 * @alias bundleConfigFlag
 */
type onOff = 0 | 1 | number | true | false

interface Value<Value = true | false | any> {
  value: Value
}
interface LabelValue<Label, Value = true | false> {
  label: Label
  value: Value
}
/** 
 * @description I cannot believe this is a thing, wow
 */
interface TypeValue<Type, Value> {
  type: Type
  value: Value
}
interface NameValue<Name, Value> {
  name: Name
  value: Value
}


// LabelValueType?
//  extends LabelValue
interface MetaTypeLabelValue<Type, Label, Value = true | false> {
  type: Type
  label: Label
  value: Value
}

/** 
 * @see 1product.unification
 */
interface CommonStructure {
  // actual value
  type: String,

  label: String,

  // values: [],
  value: AnyStructure | AnyStructure[],

  // only be in development
  // can also only go into meta
  // @alias description
  annotation: '',
}
interface MetaStructure extends CommonStructure {
  // could have any type of value if we standardized this too
  [key: string]: any
}
interface AnyStructure extends CommonStructure {
  meta: MetaStructure,
}

type NumberOrString = Number | String
type BooleanOrString = Boolean | String
type Identifier = string

/** 
 * @abstract
 * @see .gql
 */
// interface Value {
//   value: String
// }
// interface LabelValueType {
//   label: String
//   value: String
//   type: String
// }
// interface TypeValue {
//   type: String
//   value: String
// }

/**
 * we have 3 types: 
 * 1. { label: 'string', value: anydata }
 * 2. { label: 'label-as-value' }
 * 3. { keyasvalue: anydata }
 */

export {
  // domain, but generic
  NavType,
  Identifier,
  // abstract, well named 
  onOff,
  // generic
  Float,
  
  NumberOrString,
  NumberOrString as NumberAsString,

  BooleanOrString,
  BooleanOrString as BooleanAsString,


  // label value
  LabelValue,
  MetaTypeLabelValue,
  Value,
  NameValue,
  TypeValue,
}