@valbuild/core 0.16.0 → 0.17.0

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.
Files changed (104) hide show
  1. package/ROADMAP.md +106 -0
  2. package/dist/declarations/src/ValApi.d.ts +26 -0
  3. package/dist/declarations/src/expr/eval.d.ts +1 -1
  4. package/dist/declarations/src/future/fetchVal.d.ts +5 -0
  5. package/dist/declarations/src/index.d.ts +36 -9
  6. package/dist/declarations/src/initSchema.d.ts +2 -10
  7. package/dist/declarations/src/initVal.d.ts +3 -21
  8. package/dist/declarations/src/module.d.ts +2 -14
  9. package/dist/declarations/src/schema/image.d.ts +1 -1
  10. package/dist/declarations/src/schema/index.d.ts +3 -5
  11. package/dist/declarations/src/schema/keyOf.d.ts +23 -0
  12. package/dist/declarations/src/schema/record.d.ts +19 -0
  13. package/dist/declarations/src/schema/union.d.ts +1 -0
  14. package/dist/declarations/src/selector/SelectorProxy.d.ts +7 -0
  15. package/dist/declarations/src/selector/array.d.ts +2 -13
  16. package/dist/declarations/src/selector/file.d.ts +1 -4
  17. package/dist/declarations/src/selector/future/array.d.ts +17 -0
  18. package/dist/declarations/src/selector/future/boolean.d.ts +2 -0
  19. package/dist/declarations/src/selector/future/file.d.ts +9 -0
  20. package/dist/declarations/src/selector/{i18n.d.ts → future/i18n.d.ts} +2 -2
  21. package/dist/declarations/src/selector/future/index.d.ts +81 -0
  22. package/dist/declarations/src/selector/future/number.d.ts +2 -0
  23. package/dist/declarations/src/selector/future/object.d.ts +10 -0
  24. package/dist/declarations/src/selector/future/primitive.d.ts +9 -0
  25. package/dist/declarations/src/selector/{remote.d.ts → future/remote.d.ts} +1 -1
  26. package/dist/declarations/src/selector/future/string.d.ts +2 -0
  27. package/dist/declarations/src/selector/index.d.ts +5 -32
  28. package/dist/declarations/src/selector/object.d.ts +2 -9
  29. package/dist/declarations/src/selector/primitive.d.ts +3 -9
  30. package/dist/declarations/src/source/{i18n.d.ts → future/i18n.d.ts} +2 -2
  31. package/dist/declarations/src/source/{remote.d.ts → future/remote.d.ts} +3 -3
  32. package/dist/declarations/src/source/index.d.ts +4 -3
  33. package/dist/declarations/src/val/index.d.ts +2 -2
  34. package/dist/{SelectorProxy-63c2d0e2.esm.js → index-369caccf.esm.js} +23 -195
  35. package/dist/{index-af761363.esm.js → index-3e3e839e.esm.js} +189 -1
  36. package/dist/{index-2fff5ca8.cjs.dev.js → index-486c7fbf.cjs.dev.js} +242 -54
  37. package/dist/{index-cac9ecbd.cjs.prod.js → index-601a7d73.cjs.prod.js} +242 -54
  38. package/dist/{SelectorProxy-2af1b2b8.cjs.prod.js → index-8706c87e.cjs.prod.js} +25 -199
  39. package/dist/{SelectorProxy-873782a5.cjs.dev.js → index-a6e642dd.cjs.dev.js} +25 -199
  40. package/dist/{ops-1b6e0e35.cjs.prod.js → ops-0d09f8ee.cjs.prod.js} +258 -126
  41. package/dist/{ops-74661336.esm.js → ops-23a5abb2.esm.js} +195 -65
  42. package/dist/{ops-ea4827fc.cjs.dev.js → ops-f3015423.cjs.dev.js} +258 -126
  43. package/dist/valbuild-core.cjs.dev.js +585 -198
  44. package/dist/valbuild-core.cjs.prod.js +585 -198
  45. package/dist/valbuild-core.esm.js +520 -134
  46. package/expr/dist/valbuild-core-expr.cjs.dev.js +8 -8
  47. package/expr/dist/valbuild-core-expr.cjs.prod.js +8 -8
  48. package/expr/dist/valbuild-core-expr.esm.js +2 -2
  49. package/package.json +2 -3
  50. package/patch/dist/valbuild-core-patch.cjs.dev.js +24 -24
  51. package/patch/dist/valbuild-core-patch.cjs.prod.js +24 -24
  52. package/patch/dist/valbuild-core-patch.esm.js +3 -3
  53. package/src/ValApi.ts +85 -0
  54. package/src/expr/eval.test.ts +2 -2
  55. package/src/expr/eval.ts +2 -2
  56. package/src/{fetchVal.test.ts → future/fetchVal.test.ts} +57 -57
  57. package/src/{fetchVal.ts → future/fetchVal.ts} +17 -22
  58. package/src/index.ts +46 -14
  59. package/src/initSchema.ts +11 -12
  60. package/src/initVal.ts +42 -52
  61. package/src/module.test.ts +40 -40
  62. package/src/module.ts +53 -43
  63. package/src/patch/deref.test.ts +1 -1
  64. package/src/patch/deref.ts +1 -1
  65. package/src/patch/json.test.ts +0 -1
  66. package/src/schema/{i18n.ts → future/i18n.ts} +12 -10
  67. package/src/schema/{oneOf.ts → future/oneOf.ts} +19 -17
  68. package/src/schema/image.ts +1 -1
  69. package/src/schema/index.ts +16 -13
  70. package/src/schema/keyOf.ts +167 -0
  71. package/src/schema/record.ts +103 -0
  72. package/src/schema/union.ts +1 -1
  73. package/src/schema/validation.test.ts +195 -130
  74. package/src/selector/SelectorProxy.ts +15 -15
  75. package/src/selector/array.ts +2 -26
  76. package/src/selector/file.ts +1 -9
  77. package/src/selector/{ExprProxy.test.ts → future/ExprProxy.test.ts} +2 -2
  78. package/src/selector/{ExprProxy.ts → future/ExprProxy.ts} +9 -2
  79. package/src/selector/{SelectorProxy.test.ts → future/SelectorProxy.test.ts} +4 -4
  80. package/src/selector/future/SelectorProxy.ts +238 -0
  81. package/src/selector/future/array.ts +37 -0
  82. package/src/selector/future/boolean.ts +4 -0
  83. package/src/selector/future/file.ts +14 -0
  84. package/src/selector/{i18n.ts → future/i18n.ts} +2 -2
  85. package/src/selector/future/index.ts +165 -0
  86. package/src/selector/future/number.ts +4 -0
  87. package/src/selector/future/object.ts +22 -0
  88. package/src/selector/future/primitive.ts +17 -0
  89. package/src/selector/{remote.ts → future/remote.ts} +1 -1
  90. package/src/selector/{selector.test.ts → future/selector.test.ts} +8 -28
  91. package/src/selector/{selectorOf.ts → future/selectorOf.ts} +1 -1
  92. package/src/selector/future/string.ts +4 -0
  93. package/src/selector/index.ts +4 -46
  94. package/src/selector/object.ts +2 -19
  95. package/src/selector/primitive.ts +3 -16
  96. package/src/source/{i18n.ts → future/i18n.ts} +2 -2
  97. package/src/source/{remote.ts → future/remote.ts} +3 -3
  98. package/src/source/index.ts +3 -2
  99. package/src/val/array.ts +1 -1
  100. package/src/val/index.ts +2 -2
  101. package/src/val/object.ts +1 -1
  102. package/dist/declarations/src/fetchVal.d.ts +0 -5
  103. package/dist/declarations/src/schema/i18n.d.ts +0 -22
  104. package/dist/declarations/src/schema/oneOf.d.ts +0 -23
@@ -1,22 +1,5 @@
1
- import {
2
- Selector as UnknownSelector,
3
- GenericSelector,
4
- SelectorOf,
5
- SelectorSource,
6
- } from ".";
1
+ import { GenericSelector } from "./index";
7
2
  import { SourceObject } from "../source";
8
3
 
9
4
  // TODO: docs
10
- export type Selector<T extends SourceObject> = GenericSelector<T> & {
11
- fold<Tag extends string>(
12
- key: Tag
13
- ): <U extends SelectorSource>(cases: {
14
- [key in T[Tag & keyof T] & string]: (v: UnknownSelector<T>) => U;
15
- }) => SelectorOf<U>;
16
-
17
- andThen<U extends SelectorSource>(
18
- f: (v: UnknownSelector<NonNullable<T>>) => U
19
- ): SelectorOf<U>;
20
- } & {
21
- readonly [key in keyof T]: UnknownSelector<T[key]>;
22
- };
5
+ export type Selector<T extends SourceObject> = GenericSelector<T>;
@@ -1,17 +1,4 @@
1
- import {
2
- Selector as UnknownSelector,
3
- GenericSelector,
4
- SelectorOf,
5
- SelectorSource,
6
- } from ".";
7
- import { Source, SourcePrimitive } from "../source";
8
- import { Selector as BooleanSelector } from "./boolean";
1
+ import { GenericSelector } from "./index";
2
+ import { SourcePrimitive } from "../source";
9
3
 
10
- export type Selector<T extends SourcePrimitive> = GenericSelector<T> & {
11
- eq(other: Source): BooleanSelector<boolean>;
12
- andThen<U extends SelectorSource>(
13
- f: (v: UnknownSelector<NonNullable<T>>) => U
14
- ): SelectorOf<U | NullableOf<T>>;
15
- };
16
-
17
- type NullableOf<T extends Source> = T extends null ? null : never;
4
+ export type Selector<T extends SourcePrimitive> = GenericSelector<T>;
@@ -1,6 +1,6 @@
1
1
  import { F } from "ts-toolbelt";
2
- import { SourcePrimitive, VAL_EXTENSION } from ".";
3
- import { FileSource } from "./file";
2
+ import { SourcePrimitive, VAL_EXTENSION } from "..";
3
+ import { FileSource } from "../file";
4
4
 
5
5
  /**
6
6
  * I18n sources cannot have nested remote sources.
@@ -1,7 +1,7 @@
1
- import { SourcePrimitive, VAL_EXTENSION, PhantomType } from ".";
2
- import { FileSource } from "./file";
1
+ import { SourcePrimitive, VAL_EXTENSION, PhantomType } from "..";
2
+ import { FileSource } from "../file";
3
3
  import { I18nCompatibleSource, I18nSource } from "./i18n";
4
- import { RichTextSource } from "./richtext";
4
+ import { RichTextSource } from "../richtext";
5
5
 
6
6
  /**
7
7
  * Remote sources cannot include other remote sources.
@@ -1,6 +1,6 @@
1
1
  import { FileSource } from "./file";
2
- import { I18nSource, I18nCompatibleSource } from "./i18n";
3
- import { RemoteSource, RemoteCompatibleSource } from "./remote";
2
+ import { I18nSource, I18nCompatibleSource } from "./future/i18n";
3
+ import { RemoteSource, RemoteCompatibleSource } from "./future/remote";
4
4
  import { RichTextSource } from "./richtext";
5
5
 
6
6
  export type Source =
@@ -15,6 +15,7 @@ export type Source =
15
15
  export type SourceObject = { [key in string]: Source } & {
16
16
  // TODO: update these restricted parameters:
17
17
  fold?: never;
18
+ assert?: never;
18
19
  andThen?: never;
19
20
  _ref?: never;
20
21
  _type?: never;
package/src/val/array.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { SourcePath, Val as UnknownVal } from ".";
2
2
  import { JsonArray } from "../Json";
3
- import { Path } from "../selector";
3
+ import { Path } from "../selector/index";
4
4
 
5
5
  export type Val<T extends JsonArray> = {
6
6
  readonly [key in keyof T]: UnknownVal<T[key]>;
package/src/val/index.ts CHANGED
@@ -4,8 +4,8 @@ import { Val as ArrayVal } from "./array";
4
4
  import { Val as PrimitiveVal } from "./primitive";
5
5
  import { Json, JsonArray, JsonObject, JsonPrimitive } from "../Json";
6
6
  import { Path, Selector } from "../selector";
7
- import { I18nSource } from "../source/i18n";
8
- import { RemoteSource } from "../source/remote";
7
+ import { I18nSource } from "../source/future/i18n";
8
+ import { RemoteSource } from "../source/future/remote";
9
9
  import { FileSource } from "../source/file";
10
10
 
11
11
  export type SerializedVal = {
package/src/val/object.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { SourcePath, Val as UnknownVal } from ".";
2
2
  import { JsonObject } from "../Json";
3
- import { Path } from "../selector";
3
+ import { Path } from "../selector/index";
4
4
 
5
5
  export type Val<T extends JsonObject> = Omit<
6
6
  {
@@ -1,5 +0,0 @@
1
- import { GenericSelector, SelectorOf, SelectorSource } from "./selector/index.js";
2
- import { JsonOfSource, Val } from "./val/index.js";
3
- export declare function fetchVal<T extends SelectorSource>(selector: T, locale?: string): SelectorOf<T> extends GenericSelector<infer S> ? Promise<Val<JsonOfSource<S>>> : never;
4
- export declare function getVal<T extends SelectorSource>(selector: T, locale?: string): SelectorOf<T> extends GenericSelector<infer S> ? Val<JsonOfSource<S>> : never;
5
- export declare function serializedValOfSelectorSource<T extends SelectorSource>(selector: T): any;
@@ -1,22 +0,0 @@
1
- import { Schema, SchemaTypeOf, SerializedSchema } from "./index.js";
2
- import { I18nCompatibleSource, I18nSource } from "../source/i18n.js";
3
- import { SourcePath } from "../val/index.js";
4
- import { ValidationErrors } from "./validation/ValidationError.js";
5
- export type SerializedI18nSchema = {
6
- type: "i18n";
7
- locales: readonly string[];
8
- item: SerializedSchema;
9
- opt: boolean;
10
- };
11
- export declare class I18nSchema<Locales extends readonly string[]> extends Schema<I18nSource<Locales, SchemaTypeOf<Schema<I18nCompatibleSource>>>> {
12
- readonly locales: Locales;
13
- readonly item: Schema<SchemaTypeOf<Schema<I18nCompatibleSource>>>;
14
- readonly opt: boolean;
15
- constructor(locales: Locales, item: Schema<SchemaTypeOf<Schema<I18nCompatibleSource>>>, opt?: boolean);
16
- validate(path: SourcePath, src: I18nSource<Locales, SchemaTypeOf<Schema<I18nCompatibleSource>>>): ValidationErrors;
17
- assert(src: I18nSource<Locales, SchemaTypeOf<Schema<I18nCompatibleSource>>>): boolean;
18
- optional(): Schema<I18nSource<Locales, SchemaTypeOf<Schema<I18nCompatibleSource>>> | null>;
19
- serialize(): SerializedSchema;
20
- }
21
- export type I18n<Locales extends readonly string[]> = <S extends Schema<I18nCompatibleSource>>(schema: S) => Schema<I18nSource<Locales, SchemaTypeOf<S>>>;
22
- export declare const i18n: <Locales extends readonly string[]>(locales: Locales) => <S extends Schema<I18nCompatibleSource>>(schema: S) => Schema<I18nSource<Locales, SchemaTypeOf<S>>>;
@@ -1,23 +0,0 @@
1
- import { Schema, SerializedSchema } from "./index.js";
2
- import { ValModuleBrand } from "../module.js";
3
- import { GenericSelector } from "../selector/index.js";
4
- import { Source, SourceArray } from "../source/index.js";
5
- import { SourcePath } from "../val/index.js";
6
- import { ValidationErrors } from "./validation/ValidationError.js";
7
- export type SerializedOneOfSchema = {
8
- type: "oneOf";
9
- selector: SourcePath;
10
- opt: boolean;
11
- };
12
- type OneOfSelector<Sel extends GenericSelector<SourceArray>> = Sel extends GenericSelector<infer S> ? S extends (infer IS)[] ? IS extends Source ? GenericSelector<IS> : never : never : never;
13
- export declare class OneOfSchema<Sel extends GenericSelector<SourceArray>> extends Schema<OneOfSelector<Sel>> {
14
- readonly selector: Sel;
15
- readonly opt: boolean;
16
- constructor(selector: Sel, opt?: boolean);
17
- validate(path: SourcePath, src: OneOfSelector<Sel>): ValidationErrors;
18
- assert(src: OneOfSelector<Sel>): boolean;
19
- optional(): Schema<OneOfSelector<Sel> | null>;
20
- serialize(): SerializedSchema;
21
- }
22
- export declare const oneOf: <Src extends GenericSelector<SourceArray, undefined> & ValModuleBrand>(valModule: Src) => Schema<OneOfSelector<Src>>;
23
- export {};