@wovin/core 0.2.2 → 0.3.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 (98) hide show
  1. package/dist/applog/datom-types.d.ts.map +1 -1
  2. package/dist/applog.js +1 -1
  3. package/dist/blockstore.js +2 -0
  4. package/dist/blockstore.js.map +1 -1
  5. package/dist/{chunk-SHUHRHOT.js → chunk-2OXLPZQI.js} +10 -3
  6. package/dist/chunk-2OXLPZQI.js.map +1 -0
  7. package/dist/{chunk-3SUFNJEZ.js → chunk-2PJFLZRC.js} +7 -2
  8. package/dist/{chunk-3SUFNJEZ.js.map → chunk-2PJFLZRC.js.map} +1 -1
  9. package/dist/chunk-64EJIJAJ.js +17 -0
  10. package/dist/chunk-64EJIJAJ.js.map +1 -0
  11. package/dist/chunk-7QEGHKR4.js +17 -0
  12. package/dist/chunk-7QEGHKR4.js.map +1 -0
  13. package/dist/{chunk-OC6Z6CQW.js → chunk-EHO2BFFY.js} +2 -2
  14. package/dist/chunk-ICBK7NC4.js +27 -0
  15. package/dist/chunk-ICBK7NC4.js.map +1 -0
  16. package/dist/{chunk-22WDFLXO.js → chunk-OKXRRWNS.js} +3 -3
  17. package/dist/{chunk-6ALNRM3J.js → chunk-Q4EMPWA3.js} +15 -8
  18. package/dist/chunk-Q4EMPWA3.js.map +1 -0
  19. package/dist/{chunk-HUIQ54TT.js → chunk-VGIACGWX.js} +3 -3
  20. package/dist/{chunk-BLF5MAWU.js → chunk-WVW4YXB5.js} +2 -2
  21. package/dist/chunk-XF4DWOAE.js +25 -0
  22. package/dist/chunk-XF4DWOAE.js.map +1 -0
  23. package/dist/index.js +7 -7
  24. package/dist/ipfs/car.d.ts.map +1 -1
  25. package/dist/ipfs.js +4 -4
  26. package/dist/ipns/gateway-resolver.d.ts +21 -0
  27. package/dist/ipns/gateway-resolver.d.ts.map +1 -0
  28. package/dist/ipns/ipns-record.d.ts +28 -7
  29. package/dist/ipns/ipns-record.d.ts.map +1 -1
  30. package/dist/ipns/ipns-w3name.d.ts +15 -0
  31. package/dist/ipns/ipns-w3name.d.ts.map +1 -0
  32. package/dist/ipns/ipns-watcher.d.ts +190 -0
  33. package/dist/ipns/ipns-watcher.d.ts.map +1 -0
  34. package/dist/ipns.d.ts +3 -0
  35. package/dist/ipns.d.ts.map +1 -1
  36. package/dist/ipns.js +488 -8
  37. package/dist/ipns.js.map +1 -1
  38. package/dist/pubsub/snap-push.d.ts +2 -2
  39. package/dist/pubsub/snap-push.d.ts.map +1 -1
  40. package/dist/pubsub.js +4 -4
  41. package/dist/query.js +3 -3
  42. package/dist/retrieve.js +4 -4
  43. package/dist/thread.js +1 -1
  44. package/dist/viewmodel/adapters/arktype.d.ts +33 -0
  45. package/dist/viewmodel/adapters/arktype.d.ts.map +1 -0
  46. package/dist/viewmodel/adapters/arktype.js +7 -0
  47. package/dist/viewmodel/adapters/arktype.js.map +1 -0
  48. package/dist/viewmodel/adapters/typebox.d.ts +35 -0
  49. package/dist/viewmodel/adapters/typebox.d.ts.map +1 -0
  50. package/dist/viewmodel/adapters/typebox.js +7 -0
  51. package/dist/viewmodel/adapters/typebox.js.map +1 -0
  52. package/dist/viewmodel/adapters/typia.d.ts +40 -0
  53. package/dist/viewmodel/adapters/typia.d.ts.map +1 -0
  54. package/dist/viewmodel/adapters/typia.js +7 -0
  55. package/dist/viewmodel/adapters/typia.js.map +1 -0
  56. package/dist/viewmodel/adapters/zod.d.ts +30 -0
  57. package/dist/viewmodel/adapters/zod.d.ts.map +1 -0
  58. package/dist/viewmodel/adapters/zod.js +7 -0
  59. package/dist/viewmodel/adapters/zod.js.map +1 -0
  60. package/dist/viewmodel/builder.d.ts +40 -0
  61. package/dist/viewmodel/builder.d.ts.map +1 -0
  62. package/dist/viewmodel/examples/all-adapters.d.ts +26 -0
  63. package/dist/viewmodel/examples/all-adapters.d.ts.map +1 -0
  64. package/dist/viewmodel/factory.d.ts +38 -0
  65. package/dist/viewmodel/factory.d.ts.map +1 -0
  66. package/dist/viewmodel/index.d.ts +10 -0
  67. package/dist/viewmodel/index.d.ts.map +1 -0
  68. package/dist/viewmodel/index.js +313 -0
  69. package/dist/viewmodel/index.js.map +1 -0
  70. package/dist/viewmodel/schema-adapter.d.ts +16 -0
  71. package/dist/viewmodel/schema-adapter.d.ts.map +1 -0
  72. package/dist/viewmodel/types.d.ts +97 -0
  73. package/dist/viewmodel/types.d.ts.map +1 -0
  74. package/package.json +29 -3
  75. package/src/applog/datom-types.ts +2 -2
  76. package/src/ipfs/car.ts +8 -2
  77. package/src/ipns/gateway-resolver.ts +63 -0
  78. package/src/ipns/ipns-record.ts +68 -17
  79. package/src/ipns/ipns-w3name.ts +103 -0
  80. package/src/ipns/ipns-watcher.ts +607 -0
  81. package/src/ipns.ts +3 -0
  82. package/src/pubsub/snap-push.ts +6 -5
  83. package/src/viewmodel/adapters/arktype.ts +44 -0
  84. package/src/viewmodel/adapters/typebox.ts +59 -0
  85. package/src/viewmodel/adapters/typia.ts +50 -0
  86. package/src/viewmodel/adapters/zod.ts +55 -0
  87. package/src/viewmodel/builder.ts +71 -0
  88. package/src/viewmodel/examples/all-adapters.ts +206 -0
  89. package/src/viewmodel/factory.ts +330 -0
  90. package/src/viewmodel/index.ts +22 -0
  91. package/src/viewmodel/schema-adapter.ts +27 -0
  92. package/src/viewmodel/types.ts +152 -0
  93. package/dist/chunk-6ALNRM3J.js.map +0 -1
  94. package/dist/chunk-SHUHRHOT.js.map +0 -1
  95. /package/dist/{chunk-OC6Z6CQW.js.map → chunk-EHO2BFFY.js.map} +0 -0
  96. /package/dist/{chunk-22WDFLXO.js.map → chunk-OKXRRWNS.js.map} +0 -0
  97. /package/dist/{chunk-HUIQ54TT.js.map → chunk-VGIACGWX.js.map} +0 -0
  98. /package/dist/{chunk-BLF5MAWU.js.map → chunk-WVW4YXB5.js.map} +0 -0
package/dist/pubsub.js CHANGED
@@ -3,7 +3,7 @@ import {
3
3
  integratePub,
4
4
  isShare,
5
5
  isSubscription
6
- } from "./chunk-OC6Z6CQW.js";
6
+ } from "./chunk-EHO2BFFY.js";
7
7
  import {
8
8
  chunkApplogs,
9
9
  encodeSnapshotApplogsAsCar,
@@ -11,10 +11,10 @@ import {
11
11
  isSnapBlockChunks,
12
12
  prepareSnapshotForPush,
13
13
  unchunkApplogsBlock
14
- } from "./chunk-6ALNRM3J.js";
14
+ } from "./chunk-Q4EMPWA3.js";
15
15
  import "./chunk-YDAKBU6Q.js";
16
- import "./chunk-3SUFNJEZ.js";
17
- import "./chunk-SHUHRHOT.js";
16
+ import "./chunk-2PJFLZRC.js";
17
+ import "./chunk-2OXLPZQI.js";
18
18
  import "./chunk-ZAADLBSB.js";
19
19
  export {
20
20
  agentToShortHash,
package/dist/query.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  liveEntityCollection,
3
3
  queryDivergencesByPrev
4
- } from "./chunk-22WDFLXO.js";
4
+ } from "./chunk-OKXRRWNS.js";
5
5
  import {
6
6
  LiveQueryResult,
7
7
  QueryNode,
@@ -44,7 +44,7 @@ import {
44
44
  throwOnTimeout,
45
45
  withTimeout,
46
46
  withoutDeleted
47
- } from "./chunk-3SUFNJEZ.js";
47
+ } from "./chunk-2PJFLZRC.js";
48
48
  import {
49
49
  SubscribableArrayImpl,
50
50
  SubscribableImpl,
@@ -57,7 +57,7 @@ import {
57
57
  memoizedFn,
58
58
  prettifyThreadName,
59
59
  refCountedMemoizedFn
60
- } from "./chunk-SHUHRHOT.js";
60
+ } from "./chunk-2OXLPZQI.js";
61
61
  import "./chunk-ZAADLBSB.js";
62
62
  export {
63
63
  LiveQueryResult,
package/dist/retrieve.js CHANGED
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  updateThreadFromSnapshot,
3
3
  withBlockCache
4
- } from "./chunk-HUIQ54TT.js";
5
- import "./chunk-6ALNRM3J.js";
4
+ } from "./chunk-VGIACGWX.js";
5
+ import "./chunk-Q4EMPWA3.js";
6
6
  import "./chunk-YDAKBU6Q.js";
7
- import "./chunk-3SUFNJEZ.js";
8
- import "./chunk-SHUHRHOT.js";
7
+ import "./chunk-2PJFLZRC.js";
8
+ import "./chunk-2OXLPZQI.js";
9
9
  import "./chunk-ZAADLBSB.js";
10
10
  export {
11
11
  updateThreadFromSnapshot,
package/dist/thread.js CHANGED
@@ -26,7 +26,7 @@ import {
26
26
  rollingFilter,
27
27
  rollingMapper,
28
28
  simpleApplogMapper
29
- } from "./chunk-SHUHRHOT.js";
29
+ } from "./chunk-2OXLPZQI.js";
30
30
  import "./chunk-ZAADLBSB.js";
31
31
  export {
32
32
  MappedThread,
@@ -0,0 +1,33 @@
1
+ import type { ApplogValue } from '../../applog/datom-types.ts';
2
+ import type { ISchemaAdapter, VMAttributeDef } from '../types.ts';
3
+ /**
4
+ * Pattern for creating a schema adapter from an ArkType schema.
5
+ *
6
+ * ArkType is NOT a runtime dependency of @wovin/core, so this adapter
7
+ * works by accepting the ArkType type object directly.
8
+ *
9
+ * Usage:
10
+ * ```ts
11
+ * import { type } from 'arktype'
12
+ * import { createArkTypeAdapter } from '@wovin/core/viewmodel/adapters/arktype'
13
+ *
14
+ * const MySchema = type({
15
+ * name: 'string',
16
+ * age: 'number | undefined',
17
+ * })
18
+ *
19
+ * const adapter = createArkTypeAdapter(MySchema, 'myEntity')
20
+ * ```
21
+ */
22
+ export declare function createArkTypeAdapter<T extends Record<string, ApplogValue>>(_arkTypeSchema: {
23
+ infer: T;
24
+ (input: unknown): T | string;
25
+ }, entityPrefix: string, options?: {
26
+ /** Override at-paths for specific attributes */
27
+ atOverrides?: Record<string, string>;
28
+ /** Attribute definitions (must be provided for ArkType since we can't introspect the type) */
29
+ attributes: VMAttributeDef[];
30
+ /** Default values */
31
+ defaults?: Partial<T>;
32
+ }): ISchemaAdapter<T>;
33
+ //# sourceMappingURL=arktype.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arktype.d.ts","sourceRoot":"","sources":["../../../src/viewmodel/adapters/arktype.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAEjE;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,EACzE,cAAc,EAAE;IAAE,KAAK,EAAE,CAAC,CAAC;IAAC,CAAC,KAAK,EAAE,OAAO,GAAG,CAAC,GAAG,MAAM,CAAA;CAAE,EAC1D,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE;IACT,gDAAgD;IAChD,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACpC,8FAA8F;IAC9F,UAAU,EAAE,cAAc,EAAE,CAAA;IAC5B,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;CACrB,GACC,cAAc,CAAC,CAAC,CAAC,CAUnB"}
@@ -0,0 +1,7 @@
1
+ import {
2
+ createArkTypeAdapter
3
+ } from "../../chunk-64EJIJAJ.js";
4
+ export {
5
+ createArkTypeAdapter
6
+ };
7
+ //# sourceMappingURL=arktype.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,35 @@
1
+ import type { ApplogValue } from '../../applog/datom-types.ts';
2
+ import type { ISchemaAdapter } from '../types.ts';
3
+ /**
4
+ * Create a schema adapter from a TypeBox object schema.
5
+ *
6
+ * Usage:
7
+ * ```ts
8
+ * import { Type } from '@sinclair/typebox'
9
+ * import { createTypeBoxAdapter } from '@wovin/core/viewmodel/adapters/typebox'
10
+ *
11
+ * const MySchema = Type.Object({
12
+ * name: Type.String(),
13
+ * age: Type.Optional(Type.Number()),
14
+ * })
15
+ *
16
+ * const adapter = createTypeBoxAdapter(MySchema, 'myEntity')
17
+ * ```
18
+ *
19
+ * The type parameter `T` is the inferred static type of the schema.
20
+ * Can pass a compiled validator separately if runtime validation is needed.
21
+ */
22
+ export declare function createTypeBoxAdapter<T extends Record<string, ApplogValue>>(typeBoxSchema: {
23
+ properties: Record<string, any>;
24
+ type?: string;
25
+ }, entityPrefix: string, options?: {
26
+ /** Override at-paths for specific attributes */
27
+ atOverrides?: Record<string, string>;
28
+ /** Default values */
29
+ defaults?: Partial<T>;
30
+ /** Property name to at-path mapping function */
31
+ toAtPath?: (entityPrefix: string, attrName: string) => string;
32
+ /** A pre-compiled validator function (e.g. from TypeCompiler.Compile) */
33
+ validator?: (value: unknown) => value is T;
34
+ }): ISchemaAdapter<T>;
35
+ //# sourceMappingURL=typebox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typebox.d.ts","sourceRoot":"","sources":["../../../src/viewmodel/adapters/typebox.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAkB,MAAM,aAAa,CAAA;AAEjE;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,EACzE,aAAa,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,EACjE,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE;IACT,gDAAgD;IAChD,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACpC,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;IACrB,gDAAgD;IAChD,QAAQ,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAA;IAC7D,yEAAyE;IACzE,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,KAAK,IAAI,CAAC,CAAA;CAC1C,GACC,cAAc,CAAC,CAAC,CAAC,CAuBnB"}
@@ -0,0 +1,7 @@
1
+ import {
2
+ createTypeBoxAdapter
3
+ } from "../../chunk-ICBK7NC4.js";
4
+ export {
5
+ createTypeBoxAdapter
6
+ };
7
+ //# sourceMappingURL=typebox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,40 @@
1
+ import type { ApplogValue } from '../../applog/datom-types.ts';
2
+ import type { ISchemaAdapter, VMAttributeDef } from '../types.ts';
3
+ /**
4
+ * Pattern for creating a schema adapter from a Typia-generated schema.
5
+ *
6
+ * Typia is NOT a runtime dependency of @wovin/core, so this adapter
7
+ * works by accepting the Typia type object directly along with the
8
+ * attribute definitions (which must be provided separately since
9
+ * Typia doesn't expose runtime property introspection by default).
10
+ *
11
+ * Usage:
12
+ * ```ts
13
+ * import typia from 'typia'
14
+ * import { createTypiaAdapter } from '@wovin/core/viewmodel/adapters/typia'
15
+ *
16
+ * interface MyEntity { name: string; age?: number }
17
+ *
18
+ * const adapter = createTypiaAdapter<MyEntity>(
19
+ * typia.createValidate<MyEntity>(),
20
+ * 'myEntity',
21
+ * {
22
+ * attributes: [
23
+ * { name: 'name', atPath: 'myEntity/name', optional: false },
24
+ * { name: 'age', atPath: 'myEntity/age', optional: true },
25
+ * ],
26
+ * },
27
+ * )
28
+ * ```
29
+ */
30
+ export declare function createTypiaAdapter<T extends Record<string, ApplogValue>>(_typiaValidator: (input: unknown) => {
31
+ success: boolean;
32
+ data: T | null;
33
+ errors?: any[];
34
+ }, entityPrefix: string, options: {
35
+ /** Attribute definitions (required for Typia since property introspection is compile-time) */
36
+ attributes: VMAttributeDef[];
37
+ /** Default values */
38
+ defaults?: Partial<T>;
39
+ }): ISchemaAdapter<T>;
40
+ //# sourceMappingURL=typia.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typia.d.ts","sourceRoot":"","sources":["../../../src/viewmodel/adapters/typia.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAEjE;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,EACvE,eAAe,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;IAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAA;CAAE,EACzF,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE;IACR,8FAA8F;IAC9F,UAAU,EAAE,cAAc,EAAE,CAAA;IAC5B,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;CACrB,GACC,cAAc,CAAC,CAAC,CAAC,CAUnB"}
@@ -0,0 +1,7 @@
1
+ import {
2
+ createTypiaAdapter
3
+ } from "../../chunk-7QEGHKR4.js";
4
+ export {
5
+ createTypiaAdapter
6
+ };
7
+ //# sourceMappingURL=typia.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,30 @@
1
+ import type { ApplogValue } from '../../applog/datom-types.ts';
2
+ import type { ISchemaAdapter } from '../types.ts';
3
+ import type { ZodObject, ZodTypeAny } from 'zod';
4
+ /**
5
+ * Create a schema adapter from a Zod object schema.
6
+ *
7
+ * Usage:
8
+ * ```ts
9
+ * import { z } from 'zod'
10
+ * import { createZodAdapter } from '@wovin/core/viewmodel/adapters/zod'
11
+ *
12
+ * const MySchema = z.object({
13
+ * name: z.string(),
14
+ * age: z.number().optional(),
15
+ * })
16
+ *
17
+ * const adapter = createZodAdapter(MySchema, 'myEntity')
18
+ * ```
19
+ *
20
+ * The type parameter `T` is the inferred type of the schema.
21
+ */
22
+ export declare function createZodAdapter<T extends Record<string, ApplogValue> = Record<string, ApplogValue>>(zodSchema: ZodObject<Record<string, ZodTypeAny>>, entityPrefix: string, options?: {
23
+ /** Override at-paths for specific attributes */
24
+ atOverrides?: Record<string, string>;
25
+ /** Default values */
26
+ defaults?: Partial<T>;
27
+ /** Property name to at-path mapping function */
28
+ toAtPath?: (entityPrefix: string, attrName: string) => string;
29
+ }): ISchemaAdapter<T>;
30
+ //# sourceMappingURL=zod.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zod.d.ts","sourceRoot":"","sources":["../../../src/viewmodel/adapters/zod.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAkB,MAAM,aAAa,CAAA;AACjE,OAAO,KAAK,EAAE,SAAS,EAAW,UAAU,EAAE,MAAM,KAAK,CAAA;AAEzD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,EACnG,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,EAChD,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE;IACT,gDAAgD;IAChD,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACpC,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;IACrB,gDAAgD;IAChD,QAAQ,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAA;CAC7D,GACC,cAAc,CAAC,CAAC,CAAC,CAqBnB"}
@@ -0,0 +1,7 @@
1
+ import {
2
+ createZodAdapter
3
+ } from "../../chunk-XF4DWOAE.js";
4
+ export {
5
+ createZodAdapter
6
+ };
7
+ //# sourceMappingURL=zod.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,40 @@
1
+ import type { ApplogForInsertOptionalAgent, ApplogValue, EntityID } from '../applog/datom-types.ts';
2
+ /**
3
+ * Generic ObjectBuilder for type-safe entity creation and updates.
4
+ *
5
+ * Provides a fluent API to build a set of applogs for an entity.
6
+ * Modeled after the note3 builder pattern.
7
+ *
8
+ * Usage:
9
+ * ```ts
10
+ * ObjectBuilder.create({ name: 'foo' })
11
+ * .update({ type: 'bar' })
12
+ * .build(thread)
13
+ * ```
14
+ */
15
+ export declare class ObjectBuilder<TARGET extends Record<string, ApplogValue> = Record<string, ApplogValue>> {
16
+ private _data;
17
+ en: EntityID | null;
18
+ private _atPrefix;
19
+ private _atOverrides;
20
+ constructor(_data: Partial<TARGET>, en?: EntityID | null, _atPrefix?: string | null, _atOverrides?: Partial<Record<keyof TARGET, string>>);
21
+ /**
22
+ * Create a new builder with initial data.
23
+ */
24
+ static create<TARGET extends Record<string, ApplogValue>>(init?: Partial<TARGET>, en?: EntityID, atPrefix?: string, atOverrides?: Partial<Record<keyof TARGET, string>>): ObjectBuilder<TARGET>;
25
+ /**
26
+ * Update the data being built.
27
+ */
28
+ update(updateObj: Partial<TARGET>): this;
29
+ /**
30
+ * Build the applogs for this entity, optionally resolving against a thread.
31
+ */
32
+ build(thread?: {
33
+ insert(applogs: ApplogForInsertOptionalAgent[]): ApplogForInsertOptionalAgent[];
34
+ }): ApplogForInsertOptionalAgent[];
35
+ /**
36
+ * Get the raw data being built.
37
+ */
38
+ get data(): Partial<TARGET>;
39
+ }
40
+ //# sourceMappingURL=builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/viewmodel/builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,4BAA4B,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AAEnG;;;;;;;;;;;;GAYG;AACH,qBAAa,aAAa,CACzB,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC;IAGvE,OAAO,CAAC,KAAK;IACN,EAAE,EAAE,QAAQ,GAAG,IAAI;IAC1B,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,YAAY;gBAHZ,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,EACvB,EAAE,GAAE,QAAQ,GAAG,IAAW,EACzB,SAAS,GAAE,MAAM,GAAG,IAAW,EAC/B,YAAY,GAAE,OAAO,CAAC,MAAM,CAAC,MAAM,MAAM,EAAE,MAAM,CAAC,CAAM;IAGjE;;OAEG;IACH,MAAM,CAAC,MAAM,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,EACvD,IAAI,GAAE,OAAO,CAAC,MAAM,CAAM,EAC1B,EAAE,CAAC,EAAE,QAAQ,EACb,QAAQ,CAAC,EAAE,MAAM,EACjB,WAAW,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,MAAM,EAAE,MAAM,CAAC,CAAC,GACjD,aAAa,CAAC,MAAM,CAAC;IAIxB;;OAEG;IACH,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI;IAKxC;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,EAAE;QACd,MAAM,CAAC,OAAO,EAAE,4BAA4B,EAAE,GAAG,4BAA4B,EAAE,CAAA;KAC/E,GAAG,4BAA4B,EAAE;IAclC;;OAEG;IACH,IAAI,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CAE1B;CACD"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * ═══════════════════════════════════════════════════════════════
3
+ * Schema Adapter Examples
4
+ * ═══════════════════════════════════════════════════════════════
5
+ *
6
+ * This file demonstrates how to use each schema adapter with the
7
+ * generic ViewModel factory. Uncomment the adapter you want to use.
8
+ *
9
+ * Each section is self-contained and shows:
10
+ * 1. Schema definition
11
+ * 2. Adapter creation
12
+ * 3. ViewModel factory usage
13
+ * 4. Basic VM usage
14
+ *
15
+ * Note: Not all schema libraries are installed as dependencies.
16
+ * ✓ TypeBox — peer dependency of @wovin/core (available)
17
+ * ✓ Zod — dependency of @wovin/core (available)
18
+ * ✗ ArkType — NOT installed (example shown for pattern reference)
19
+ * ✗ Typia — NOT installed (example shown for pattern reference)
20
+ */
21
+ export declare function typeBoxExample(): void;
22
+ export declare function zodExample(): void;
23
+ export declare function arkTypePattern(): void;
24
+ export declare function typiaPattern(): void;
25
+ export declare function minimalNoSchemaExample(): void;
26
+ //# sourceMappingURL=all-adapters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"all-adapters.d.ts","sourceRoot":"","sources":["../../../src/viewmodel/examples/all-adapters.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AA6BH,wBAAgB,cAAc,SA2B7B;AASD,wBAAgB,UAAU,SA2BzB;AASD,wBAAgB,cAAc,SAyB7B;AASD,wBAAgB,YAAY,SA0B3B;AAMD,wBAAgB,sBAAsB,SAmBrC"}
@@ -0,0 +1,38 @@
1
+ import type { ApplogValue, EntityID } from '../applog/datom-types.ts';
2
+ import type { Thread } from '../thread/basic.ts';
3
+ import { ObjectBuilder } from './builder.ts';
4
+ import { type ISignalAdapter, type IVMInstance, type ViewModelFactoryOptions } from './types.ts';
5
+ /**
6
+ * Default signal adapter — reads Subscribable values directly (snapshot).
7
+ * Subscribe-once to keep .value current. No framework reactivity.
8
+ */
9
+ export declare const DefaultSignalAdapter: ISignalAdapter;
10
+ /**
11
+ * Create a ViewModel factory for a given schema.
12
+ *
13
+ * Returns a base class that can be extended or used directly.
14
+ * The class provides:
15
+ * - Static `get(en, thread)` for singleton access
16
+ * - Static `buildNew(init, en)` for creating entities
17
+ * - Instance `buildUpdate(init)` for updating entities
18
+ * - Lazy reactive property accessors per attribute
19
+ * - `setDeleted()` for soft deletion
20
+ *
21
+ * Framework-specific reactivity (Solid, Vue, etc.) can be added by
22
+ * providing a custom `ISignalAdapter` in the options.
23
+ *
24
+ * @param options - Factory configuration
25
+ * @returns A VM class constructor with static methods
26
+ */
27
+ export declare function createViewModelFactory<T extends Record<string, ApplogValue>>(options: ViewModelFactoryOptions<T>): {
28
+ new (en: EntityID, thread: Thread, skipInit?: boolean): IVMInstance<T> & T;
29
+ /** Get or create a VM instance for the given entity ID */
30
+ get(en: EntityID, thread: Thread): IVMInstance<T> & T;
31
+ /** Create a builder for a new entity */
32
+ buildNew(init?: Partial<T>, en?: EntityID): ObjectBuilder<T>;
33
+ /** The VM name (for debugging) */
34
+ readonly vmName: string;
35
+ /** The entity prefix used for at-paths */
36
+ readonly entityPrefix: string;
37
+ };
38
+ //# sourceMappingURL=factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/viewmodel/factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAgC,WAAW,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AAMnG,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAGhD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,EACN,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,uBAAuB,EAG5B,MAAM,YAAY,CAAA;AAMnB;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,cAUlC,CAAA;AAoCD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,EAC3E,OAAO,EAAE,uBAAuB,CAAC,CAAC,CAAC,GA4NN;IAC5B,KACC,EAAE,EAAE,QAAQ,EACZ,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,OAAO,GAChB,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IAErB,0DAA0D;IAC1D,GAAG,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IAErD,wCAAwC;IACxC,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,CAAA;IAE5D,kCAAkC;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IAEvB,0CAA0C;IAC1C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;CAC7B,CACD"}
@@ -0,0 +1,10 @@
1
+ export { ObjectBuilder } from './builder.ts';
2
+ export { createViewModelFactory, DefaultSignalAdapter } from './factory.ts';
3
+ export { createAdapterFromAttributes, buildAtPath } from './schema-adapter.ts';
4
+ export type { ISchemaAdapter, ISignalAdapter, IVMInstance, IVMClass, VMAttributeDef, ViewModelFactoryOptions, VMInstanceMap, } from './types.ts';
5
+ export { GlobalVMInstances, getInstancesForThread } from './types.ts';
6
+ export { createTypeBoxAdapter } from './adapters/typebox.ts';
7
+ export { createZodAdapter } from './adapters/zod.ts';
8
+ export { createArkTypeAdapter } from './adapters/arktype.ts';
9
+ export { createTypiaAdapter } from './adapters/typia.ts';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/viewmodel/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AAC3E,OAAO,EAAE,2BAA2B,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAC9E,YAAY,EACX,cAAc,EACd,cAAc,EACd,WAAW,EACX,QAAQ,EACR,cAAc,EACd,uBAAuB,EACvB,aAAa,GACb,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAGrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA"}