{
  "version": 3,
  "sources": ["../../../src/orm/types.ts"],
  "sourcesContent": ["import {\n  Arrayable,\n  DataValue,\n  Maybe,\n  ModelInstance,\n  ModelType,\n  DataDescription,\n  PrimaryKeyType,\n  MinimalModelDefinition,\n  PropertyConfig,\n  ValidatorContext,\n  ToObjectResult,\n  ModelInstanceFetcher,\n  ModelFactoryOptions,\n  CreateParams,\n  PropertyType,\n  CanBeNullableType,\n} from '../types.js'\n\n/**\n * Equals symbols for doing database matching\n */\nexport enum EqualitySymbol {\n  // Equals\n  eq = '=',\n  // Less than\n  lt = '<',\n  // Equal to or less than\n  lte = '<=',\n  // Greater than\n  gt = '>',\n  // Equal to or greater than\n  gte = '>=',\n  // Not equal to\n  ne = '!=',\n}\n\n/**\n * The value types that map to database types.\n */\nexport enum DatastoreValueType {\n  string = 'string',\n  number = 'number',\n  date = 'date',\n  object = 'object',\n  boolean = 'boolean',\n}\n\n/**\n * A list of allowable equality symbols.\n */\nexport const AllowableEqualitySymbols = Object.values(EqualitySymbol)\n\n/**\n * A function that can save.\n */\ntype SaveMethod<\n  TModelExtensions extends object = object,\n  TModelInstanceExtensions extends object = object,\n> = <TData extends DataDescription>(\n  /**\n   * An instance to save\n   */\n  instance: ModelInstance<TData, TModelExtensions, TModelInstanceExtensions>\n) => Promise<\n  OrmModelInstance<TData, TModelExtensions, TModelInstanceExtensions>\n>\n\n/**\n * A method that can delete\n */\ntype DeleteMethod<\n  TModelExtensions extends object = object,\n  TModelInstanceExtensions extends object = object,\n> = <TData extends DataDescription>(\n  instance: ModelInstance<TData, TModelExtensions, TModelInstanceExtensions>\n) => Promise<void>\n\n/**\n * A function that allows overriding the save functionality for a specific model.\n */\nexport type SaveOverride<\n  TModelExtensions extends object = object,\n  TModelInstanceExtensions extends object = object,\n> = <TData extends DataDescription>(\n  existingSave: SaveMethod<TModelExtensions, TModelInstanceExtensions>,\n  instance: ModelInstance<TData, TModelExtensions, TModelInstanceExtensions>\n) => Promise<\n  OrmModelInstance<TData, TModelExtensions, TModelInstanceExtensions>\n>\n\n/**\n * A function that allows overriding the delete functionality for a specific model.\n */\nexport type DeleteOverride<\n  TModelExtensions extends object = object,\n  TModelInstanceExtensions extends object = object,\n> = <TData extends DataDescription>(\n  existingDelete: DeleteMethod<TModelExtensions, TModelInstanceExtensions>,\n  instance: ModelInstance<TData, TModelExtensions, TModelInstanceExtensions>\n) => Promise<void>\n\n/**\n * A result of an ORM search.\n * @interface\n */\nexport type OrmSearchResult<\n  TData extends DataDescription,\n  TModelExtensions extends object = object,\n  TModelInstanceExtensions extends object = object,\n> = Readonly<{\n  /**\n   * A list of instances\n   */\n  instances: readonly OrmModelInstance<\n    TData,\n    TModelExtensions,\n    TModelInstanceExtensions\n  >[]\n  /**\n   * An optional page value. The exact structure is provided by the datastore itself.\n   */\n  page?: any\n}>\n\n/**\n * ORM based ModelFactory extensions.\n * @interface\n */\nexport type OrmModelFactoryOptionsExtensions<\n  TModelExtensions extends object = object,\n  TModelInstanceExtensions extends object = object,\n> = Readonly<{\n  /**\n   * Optional: The save function to override.\n   */\n  save?: SaveOverride<TModelExtensions, TModelInstanceExtensions>\n  /**\n   * Optional: The delete function to override.\n   */\n  delete?: DeleteOverride<TModelExtensions, TModelInstanceExtensions>\n}>\n\n/**\n * Extensions to the Model type\n * @interface\n */\nexport type OrmModelExtensions<\n  TModelExtensions extends object = object,\n  TModelInstanceExtensions extends object = object,\n> = Readonly<{\n  /**\n   * Save the model\n   * @param instance - The instance to save.\n   */\n  save: <TData extends DataDescription>(\n    instance: OrmModelInstance<\n      TData,\n      TModelExtensions,\n      TModelInstanceExtensions\n    >\n  ) => Promise<\n    OrmModelInstance<TData, TModelExtensions, TModelInstanceExtensions>\n  >\n  /**\n   * Deletes an instance by its id.\n   * @param id - The id to delete\n   */\n  delete: (id: PrimaryKeyType) => Promise<void>\n  /**\n   * Attempts to get an instance by its id\n   * @param primaryKey\n   */\n  retrieve: <TData extends DataDescription>(\n    primaryKey: PrimaryKeyType\n  ) => Promise<\n    Maybe<OrmModelInstance<TData, TModelExtensions, TModelInstanceExtensions>>\n  >\n  /**\n   * Searches instances by the provided search query\n   * @param query\n   */\n  search: <TData extends DataDescription>(\n    query: OrmSearch\n  ) => Promise<\n    OrmSearchResult<\n      TData,\n      OrmModel<TData, TModelExtensions, TModelInstanceExtensions>\n    >\n  >\n  /**\n   * Searches for a single instance with the given query.\n   * @param query\n   */\n  searchOne: <TData extends DataDescription>(\n    query: Omit<OrmSearch, 'take'>\n  ) => Promise<\n    | OrmModelInstance<TData, TModelExtensions, TModelInstanceExtensions>\n    | undefined\n  >\n  /**\n   * Creates and saves an instance. An optimization in some databases\n   * @param query\n   */\n  createAndSave: <TData extends DataDescription>(\n    data: OrmModelInstance<TData, TModelExtensions, TModelInstanceExtensions>\n  ) => Promise<\n    OrmModelInstance<TData, TModelExtensions, TModelInstanceExtensions>\n  >\n  /**\n   * Inserts multiple objects at once. Can often see great optimizations in some databases.\n   * @param query\n   */\n  bulkInsert: <TData extends DataDescription>(\n    instances: readonly OrmModelInstance<\n      TData,\n      TModelExtensions,\n      TModelInstanceExtensions\n    >[]\n  ) => Promise<void>\n  /**\n   * Deletes multiple instances at once.\n   * @param instances\n   */\n  bulkDelete: <TData extends DataDescription>(\n    keysOrInstances:\n      | readonly OrmModelInstance<\n          TData,\n          TModelExtensions,\n          TModelInstanceExtensions\n        >[]\n      | readonly PrimaryKeyType[]\n  ) => Promise<void>\n  /**\n   * Counts the number of models saved in the database.\n   */\n  count: () => Promise<number>\n}>\n\n/**\n * Instance overrides that give it ORM functions.\n * @interface\n */\nexport type OrmModelInstanceExtensions<\n  TModelExtensions extends object = object,\n  TModelInstanceExtensions extends object = object,\n> = Readonly<{\n  /**\n   * Save this model.\n   */\n  save: <TData extends DataDescription>() => Promise<\n    OrmModelInstance<TData, TModelExtensions, TModelInstanceExtensions>\n  >\n  /**\n   * Delete this model.\n   */\n  delete: () => Promise<void>\n}>\n\n/**\n * ORM based configurations for a model.\n * @interface\n */\nexport type OrmModelConfigurations = Readonly<{\n  /**\n   * Validator that there is only a single value in the datastore that has the properties given.\n   * Example:\n   * [\"name\", \"text\"]\n   * This will make sure that there can only be a single row in the database that has a unique combination of name and text.\n   */\n  uniqueTogether?: readonly string[]\n  /**\n   * Optional property name that stores the model's expiry as a Unix timestamp in minutes.\n   * Datastores can use this to prune expired records.\n   */\n  ttlPropertyName?: string\n}>\n\n/**\n * A minimum orm model definition\n * @interface\n */\nexport type MinimumOrmModelDefinition<TData extends DataDescription> =\n  MinimalModelDefinition<TData> & OrmModelConfigurations\n\n/**\n * A model factory that produces ORM based models.\n *\n */\nexport type OrmModelFactory<\n  TModelExtensions extends object = object,\n  TModelInstanceExtensions extends object = object,\n  TModelOptionsExtensions extends object = object,\n> = <TData extends DataDescription>(\n  /**\n   * The model definition for the model\n   */\n  modelDef: MinimumOrmModelDefinition<TData>,\n  /**\n   * Additional options for this model.\n   */\n  options?: ModelFactoryOptions<\n    TData,\n    OrmModelFactoryOptionsExtensions<\n      TModelExtensions,\n      TModelInstanceExtensions\n    > &\n      TModelOptionsExtensions\n  >\n) => OrmModel<TData, TModelExtensions, TModelInstanceExtensions>\n\n/**\n * A search result from a datastore\n * @interface\n */\nexport type DatastoreSearchResult<T extends DataDescription> = Readonly<{\n  /**\n   * An array of objects that represent the data from the datastore.\n   */\n  instances: readonly ToObjectResult<T>[]\n  /**\n   * Any pagination information.\n   */\n  page?: any\n}>\n\n/**\n * A model that has ORM functions attached.\n * @interface\n */\nexport type OrmModel<\n  TData extends DataDescription,\n  TModelExtensions extends object = object,\n  TModelInstanceExtensions extends object = object,\n> = ModelType<\n  TData,\n  OrmModelExtensions<TModelExtensions, TModelInstanceExtensions>,\n  OrmModelInstanceExtensions<TModelExtensions, TModelInstanceExtensions>\n> & {\n  getModelDefinition: () => ReturnType<ModelType<TData>['getModelDefinition']> &\n    OrmModelConfigurations\n}\n\n/**\n * A Model Instance with ORM functions attached.\n * @interface\n */\nexport type OrmModelInstance<\n  TData extends DataDescription,\n  TModelExtensions extends object = object,\n  TModelInstanceExtensions extends object = object,\n> = ModelInstance<\n  TData,\n  OrmModelExtensions<TModelExtensions, TModelInstanceExtensions>,\n  OrmModelInstanceExtensions<TModelExtensions, TModelInstanceExtensions>\n>\n\n/**\n * An interface that describes a datastore. By implementing this interface, databases can be swapped.\n * @interface\n */\nexport type DatastoreAdapter = Readonly<{\n  /**\n   * Saving a model.\n   * @param instance\n   */\n  save: <\n    TData extends DataDescription,\n    TModelExtensions extends object = object,\n    TModelInstanceExtensions extends object = object,\n  >(\n    instance: ModelInstance<TData, TModelExtensions, TModelInstanceExtensions>\n  ) => Promise<ToObjectResult<TData>>\n  /**\n   * Deleting an instance.\n   * @param model\n   * @param id\n   */\n  delete: <\n    TData extends DataDescription,\n    TModelExtensions extends object = object,\n    TModelInstanceExtensions extends object = object,\n  >(\n    model: OrmModel<TData, TModelExtensions, TModelInstanceExtensions>,\n    id: PrimaryKeyType\n  ) => Promise<void>\n  /**\n   * Attempts to retrieves an instance.\n   * @param model\n   * @param primaryKey\n   */\n  retrieve: <\n    TData extends DataDescription,\n    TModelExtensions extends object = object,\n    TModelInstanceExtensions extends object = object,\n  >(\n    model: OrmModel<TData, TModelExtensions, TModelInstanceExtensions>,\n    primaryKey: PrimaryKeyType\n  ) => Promise<Maybe<ToObjectResult<TData>>>\n  /**\n   * Searches for instances by a query.\n   * @param model\n   * @param query\n   */\n  search: <\n    TData extends DataDescription,\n    TModelExtensions extends object = object,\n    TModelInstanceExtensions extends object = object,\n  >(\n    model: OrmModel<TData, TModelExtensions, TModelInstanceExtensions>,\n    query: OrmSearch\n  ) => Promise<DatastoreSearchResult<TData>>\n  /**\n   * Optional: An optimized bulkInsert function. (Highly recommended)\n   * @param model\n   * @param instances\n   */\n  bulkInsert?: <\n    TData extends DataDescription,\n    TModelExtensions extends object = object,\n    TModelInstanceExtensions extends object = object,\n  >(\n    model: OrmModel<TData, TModelExtensions, TModelInstanceExtensions>,\n    instances: readonly ModelInstance<\n      TData,\n      TModelExtensions,\n      TModelInstanceExtensions\n    >[]\n  ) => Promise<void>\n  /**\n   * Optional: An optimized bulkDelete function. (Highly recommended)\n   * @param model\n   * @param keysOrInstances\n   */\n  bulkDelete?: <\n    TData extends DataDescription,\n    TModelExtensions extends object = object,\n    TModelInstanceExtensions extends object = object,\n  >(\n    model: OrmModel<TData, TModelExtensions, TModelInstanceExtensions>,\n    keys: readonly PrimaryKeyType[]\n  ) => Promise<void>\n  /**\n   * Optional: An optimized createAndSave function.\n   * @param instance\n   */\n  createAndSave?: <\n    TData extends DataDescription,\n    TModelExtensions extends object = object,\n    TModelInstanceExtensions extends object = object,\n  >(\n    instance: ModelInstance<TData, TModelExtensions, TModelInstanceExtensions>\n  ) => Promise<ToObjectResult<TData>>\n  /**\n   * Optional: An optimized counting function. Highly recommended.\n   * @param model\n   */\n  count?: <\n    TData extends DataDescription,\n    TModelExtensions extends object = object,\n    TModelInstanceExtensions extends object = object,\n  >(\n    model: OrmModel<TData, TModelExtensions, TModelInstanceExtensions>\n  ) => Promise<number>\n}>\n\n/**\n * A search that describes a property and its value.\n * @interface\n */\nexport type PropertyQuery = Readonly<{\n  /**\n   * Distinguishes this as a property  query.\n   */\n  type: 'property'\n  /**\n   * The property's key\n   */\n  key: string\n  /**\n   * The value to search for.\n   */\n  value: any\n  /**\n   * The type of database value.\n   */\n  valueType: DatastoreValueType\n  /**\n   * How the value should be compared.\n   */\n  equalitySymbol: EqualitySymbol\n  /**\n   * Options for additional matching.\n   */\n  options: PropertyOptions\n}>\n\n/**\n * A property search for a string value.\n */\nexport type StringPropertyQuery = PropertyQuery & {\n  valueType: DatastoreValueType.string\n  equalitySymbol: EqualitySymbol.eq | EqualitySymbol.ne\n  options: PropertyOptions\n}\n\n/**\n * A search that looks at dated objects after the given date.\n * @interface\n */\nexport type DatesAfterQuery = Readonly<{\n  /**\n   * Distinguishes this query\n   */\n  type: 'datesAfter'\n  /**\n   * The property's key\n   */\n  key: string\n  /**\n   * The date value being examined.\n   */\n  date: string\n  /**\n   * The database type.\n   */\n  valueType: DatastoreValueType\n  /**\n   * Options for additional searching\n   */\n  options: {\n    /**\n     * Should this search be equalsTo as well as after?\n     */\n    equalToAndAfter: boolean\n  }\n}>\n\n/**\n * A search query that looks at dates before the given date.\n * @interface\n */\nexport type DatesBeforeQuery = Readonly<{\n  /**\n   * Distinguishes this query\n   */\n  type: 'datesBefore'\n  /**\n   * The property's key.\n   */\n  key: string\n  /**\n   * The date value being examined.\n   */\n  date: string\n  /**\n   * The database value type.\n   */\n  valueType: DatastoreValueType\n  /**\n   * Options for additional searching\n   */\n  options: {\n    /**\n     * Should this search be equalsTo as well as before?\n     */\n    equalToAndBefore: boolean\n  }\n}>\n\n/**\n * Additional configurations for ORM based properties.\n * @interface\n */\nexport type OrmPropertyConfig<T extends Arrayable<DataValue>> =\n  PropertyConfig<T> &\n    Readonly<{\n      /**\n       * Validator: Checks to make sure that there is only one instance in a datastore that has this property's value.\n       * NOTE: The value is a property KEY. Not true or false.\n       */\n      unique?: string\n    }>\n\n/**\n * Additional context that is provided for ORM based instance.\n * @interface\n */\nexport type OrmValidatorContext = Readonly<{\n  /**\n   * IMPORTANT: Sometimes you do not want to do any ORM based validation because of speed.\n   * This disables any orm based validation, and only runs non-orm validation.\n   */\n  noOrmValidation?: boolean\n}> &\n  ValidatorContext\n\n/**\n * Options for a property query.\n */\nexport type PropertyOptions = {\n  /**\n   * Is this a case sensitive search?\n   */\n  caseSensitive?: boolean\n  /**\n   * Is the value a startsWith query?\n   */\n  startsWith?: boolean\n  /**\n   * Is the value a endsWith query?\n   */\n  endsWith?: boolean\n  /**\n   * Is the value a includes query?\n   */\n  includes?: boolean\n  /**\n   * The type of value\n   */\n  type?: DatastoreValueType\n  /**\n   * An equality symbol.\n   */\n  equalitySymbol?: EqualitySymbol\n}\n\n/**\n * An object that has both an Orm Model Factory (that can make Orm Models) as well as a loaded fetcher\n * that can retrieve referenced models as needed. See {@see \"functional-models.ModelReference\"}\n * @interface\n */\nexport type Orm = {\n  /**\n   * A model factory that can produce {@link OrmModel}\n   */\n  Model: OrmModelFactory\n  /**\n   * A fetcher for use with Model References\n   */\n  fetcher: ModelInstanceFetcher<OrmModelExtensions, OrmModelInstanceExtensions>\n}\n\n/**\n * The sort order.\n */\nexport enum SortOrder {\n  asc = 'asc',\n  dsc = 'dsc',\n}\n\n/**\n * The number of instances to receive back from a query.\n */\nexport type MaxMatchStatement = number\n\n/**\n * Defines how a sort should happen. Which column and what order.\n * @interface\n */\nexport type SortStatement = {\n  /**\n   * The property's key/name. Also could be a \"column\"\n   */\n  key: string\n  /**\n   * Ascending or Descending sort.\n   */\n  order: SortOrder\n}\n\n/**\n * Pagination can be anything.\n */\nexport type PaginationQuery = any\n\n/**\n * A query to a search function.\n * @interface\n */\nexport type OrmSearch = {\n  /**\n   * Optional: A number of max records to return.\n   */\n  take?: MaxMatchStatement\n  /**\n   * Optional: Sorting.\n   */\n  sort?: SortStatement\n  /**\n   * Optional: Pagination information\n   */\n  page?: PaginationQuery\n  /**\n   * Optional: Querying tokens.\n   */\n  query: readonly QueryTokens[]\n}\n\n/**\n * Statements that make up the meat of QueryTokens\n */\nexport type Query =\n  | PropertyQuery\n  | DatesAfterQuery\n  | DatesBeforeQuery\n  | StringPropertyQuery\n\n/**\n * A token type that links two queries together.\n */\nexport type BooleanQuery = 'AND' | 'OR'\n\n/**\n * A generic structure of querys.\n */\nexport type QueryTokens =\n  | readonly QueryTokens[][]\n  | readonly QueryTokens[]\n  | BooleanQuery\n  | Query\n\n/**\n * Builder functions that are not property related.\n * @interface\n */\ntype NonQueryBuilder = Readonly<{\n  /**\n   * Creates a pagination.\n   * @param value - Can be anything\n   */\n  pagination: (value: any) => BuilderV2Link & InnerBuilderV2\n  /**\n   * Creates a sort.\n   * @param key - The key to sort on\n   * @param sortOrder - The order to sort by. Defaults to ascending.\n   */\n  sort: (key: string, sortOrder?: SortOrder) => BuilderV2Link & InnerBuilderV2\n  /**\n   * Maximum number of elements to return.\n   * @param count - The count\n   */\n  take: (count: number) => BuilderV2Link & InnerBuilderV2\n  /**\n   * Compiles the builder into a search query.\n   */\n  compile: () => OrmSearch\n}>\n\n/**\n * An in between or ending type to a builder creating a SearchQuery\n * @interface\n */\nexport type BuilderV2Link = NonQueryBuilder &\n  Readonly<{\n    /**\n     * Links together two or more {@link Query} or complex queries.\n     */\n    and: () => QueryBuilder\n    /**\n     * Links together two or more {@link Query} or complex queries.\n     */\n    or: () => QueryBuilder\n  }>\n\n/**\n * A function that can either take a builder or raw QueryTokens[] and create a sub-query.\n * @param builder - Can be either a BuilderV2 or a hand written Query\n **/\nexport type SubBuilderFunction = (\n  builder: QueryBuilder\n) => Omit<OrmSearch, 'take' | 'sort' | 'page'> | (QueryBuilder | BuilderV2Link)\n\n/**\n * A search builder is a structured way to create a complex query.\n * @interface\n */\nexport type QueryBuilder = InnerBuilderV2 & NonQueryBuilder\n\n/**\n * A builder for version 3.0 search queries.\n * @interface\n */\nexport type InnerBuilderV2 = {\n  /**\n   * Creates a query that has nested property queries.\n   * @param subBuilderFunc - A function that can return a Builder\n   */\n  complex: (subBuilderFunc: SubBuilderFunction) => BuilderV2Link\n  /**\n   * Searches for elements that are after the given date.\n   * NOTE: It can be very important to set the valueType to either string or Date depending on what datastore you are using.\n   * @param key - The property name/key to use.\n   * @param jsDate - The date to search.\n   * @param options - Additional options.\n   */\n  datesAfter: (\n    key: string,\n    jsDate: Date | string,\n    options?: { valueType?: DatastoreValueType; equalToAndAfter?: boolean }\n  ) => BuilderV2Link\n  /**\n   * Searches for elements that are before the given date.\n   * NOTE: It can be very important to set the valueType to either string or Date depending on what datastore you are using.\n   * @param key - The property name/key to use.\n   * @param jsDate - The date to search.\n   * @param options - Additional options.\n   */\n  datesBefore: (\n    key: string,\n    jsDate: Date | string,\n    options?: { valueType?: DatastoreValueType; equalToAndBefore?: boolean }\n  ) => BuilderV2Link\n  /**\n   * Search a value\n   * @param key - The property name/key to use.\n   * @param value - The value to match.\n   * @param options - Additional options.\n   */\n  property: (\n    key: string,\n    value: any,\n    options?: Partial<PropertyOptions>\n  ) => BuilderV2Link\n}\n\n/**\n * The types of primary key properties.\n */\nexport type PrimaryKeyPropertyType =\n  | PropertyType.UniqueId\n  | PropertyType.Text\n  | PropertyType.Integer\n\n/**\n * A function that can generate a primary key for a model.\n * @param model - The model to generate a primary key for.\n * @returns A promise that resolves to the primary key.\n */\nexport type PrimaryKeyGenerator = <\n  TValue extends PrimaryKeyType,\n  TData extends DataDescription,\n>(\n  value: TValue,\n  modelData: CreateParams<TData>,\n  instance: ModelInstance<TData>\n) => Promise<PrimaryKeyType>\n\n/**\n * A property that represents a key in a database.\n * By default it is a \"uuid\" type, but if you want to use an arbitrary string, or an integer type you can set the `dataType` property.\n * @interface\n */\nexport type DatabaseKeyPropertyConfig<\n  TValue extends CanBeNullableType<PrimaryKeyType> = PrimaryKeyType,\n> = PropertyConfig<TValue> &\n  Readonly<{\n    /**\n     * Sets the type of the key.\n     * @default PrimaryKeyDataType.Uuid\n     */\n    dataType?: PrimaryKeyPropertyType\n    /**\n     * If true, the key will be automatically generated if not provided. Only applies to uuids and integers\n     * @default true\n     */\n    auto?: boolean\n    /**\n     * Optional: A custom primary key generator function to use for models. If the property type is UniqueId (default) then this will produce random UUID. If the property type is a number, a random number will be generated.\n     * If using a SQL-like database that uses numbers, its HIGHLY recommended to get a number from the database itself.\n     */\n    primaryKeyGenerator?: PrimaryKeyGenerator\n  }>\n"],
  "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsBO,IAAK,iBAAL,kBAAKA,oBAAL;AAEL,EAAAA,gBAAA,QAAK;AAEL,EAAAA,gBAAA,QAAK;AAEL,EAAAA,gBAAA,SAAM;AAEN,EAAAA,gBAAA,QAAK;AAEL,EAAAA,gBAAA,SAAM;AAEN,EAAAA,gBAAA,QAAK;AAZK,SAAAA;AAAA,GAAA;AAkBL,IAAK,qBAAL,kBAAKC,wBAAL;AACL,EAAAA,oBAAA,YAAS;AACT,EAAAA,oBAAA,YAAS;AACT,EAAAA,oBAAA,UAAO;AACP,EAAAA,oBAAA,YAAS;AACT,EAAAA,oBAAA,aAAU;AALA,SAAAA;AAAA,GAAA;AAWL,IAAM,2BAA2B,OAAO,OAAO,cAAc;AAmlB7D,IAAK,YAAL,kBAAKC,eAAL;AACL,EAAAA,WAAA,SAAM;AACN,EAAAA,WAAA,SAAM;AAFI,SAAAA;AAAA,GAAA;",
  "names": ["EqualitySymbol", "DatastoreValueType", "SortOrder"]
}
