@lucania/schema 3.0.2 → 3.0.4

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/build/index.js CHANGED
@@ -319,6 +319,15 @@
319
319
  else if (typeof value === "string") {
320
320
  return [value];
321
321
  }
322
+ else if (typeof value === "object") {
323
+ return Object.entries(value).reduce((array, [key, item]) => {
324
+ const index = parseInt(key);
325
+ pass.assert(!isNaN(index), `Unable to convert ${BaseSchema.getType(value)} to array. ` +
326
+ `Encountered key that is not a valid array index: "${key}"`);
327
+ array[index] = item;
328
+ return array;
329
+ }, []);
330
+ }
322
331
  else {
323
332
  throw pass.causeError(`Unable to convert ${BaseSchema.getType(value)} to array.`);
324
333
  }
@@ -2,7 +2,7 @@ import { ValidationPass } from "../error/ValidationPass";
2
2
  import { BaseSchemaAny } from "../typing/extended";
3
3
  import type { AdditionalValidationPasses, DefaultValue, ModelValue, SourceValue, ValidationOptions } from "../typing/toolbox";
4
4
  import { BaseSchema } from "./BaseSchema";
5
- export type ArraySource<Subschema extends BaseSchemaAny> = (Subschema extends BaseSchema<infer Source, any, infer Required, infer Default> ? (SourceValue<Source, Required, Default>[]) : never);
5
+ export type ArraySource<Subschema extends BaseSchemaAny> = (Subschema extends BaseSchema<infer Source, any, infer Required, infer Default> ? (Record<number, SourceValue<Source, Required, Default>> | SourceValue<Source, Required, Default>[]) : never);
6
6
  export type ArrayModel<Subschema extends BaseSchemaAny> = (Subschema extends BaseSchema<infer Source, infer Model, infer Required, infer Default> ? (ModelValue<Source, Model, Required, Default>[]) : never);
7
7
  export declare class ArraySchema<Subschema extends BaseSchemaAny, Required extends boolean, Default extends DefaultValue<ArraySource<Subschema>>> extends BaseSchema<ArraySource<Subschema>, ArrayModel<Subschema>, Required, Default> {
8
8
  readonly subschema: Subschema;
@@ -1,5 +1,7 @@
1
1
  import { BaseSchema } from "../schema/BaseSchema";
2
+ import { EnumerationSchema } from "../schema/EnumerationSchema";
2
3
  import { ObjectSchema } from "../schema/ObjectSchema";
3
4
  import { DefaultValue } from "./toolbox";
4
5
  export type BaseSchemaAny = BaseSchema<any, any, boolean, DefaultValue<any>>;
5
6
  export type ObjectSchemaAny = ObjectSchema<any, boolean, DefaultValue<any>>;
7
+ export type EnumerationSchemaAny = EnumerationSchema<string, boolean, DefaultValue<any>>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lucania/schema",
3
- "version": "3.0.2",
3
+ "version": "3.0.4",
4
4
  "description": "A schema module for compile-time and runtime type checking.",
5
5
  "main": "./build/index.js",
6
6
  "types": "./build/index.d.ts",