@voidhash/mimic 0.0.2 → 0.0.3
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/.turbo/turbo-build.log +257 -42
- package/dist/Document.cjs +152 -0
- package/dist/Document.d.cts +67 -0
- package/dist/Document.d.cts.map +1 -0
- package/dist/Document.d.mts +68 -0
- package/dist/Document.d.mts.map +1 -0
- package/dist/Document.mjs +147 -0
- package/dist/Document.mjs.map +1 -0
- package/dist/EffectSchema.cjs +180 -0
- package/dist/EffectSchema.d.cts +84 -0
- package/dist/EffectSchema.d.cts.map +1 -0
- package/dist/EffectSchema.d.mts +84 -0
- package/dist/EffectSchema.d.mts.map +1 -0
- package/dist/EffectSchema.mjs +176 -0
- package/dist/EffectSchema.mjs.map +1 -0
- package/dist/FractionalIndex.cjs +365 -0
- package/dist/FractionalIndex.mjs +364 -0
- package/dist/FractionalIndex.mjs.map +1 -0
- package/dist/Operation.cjs +53 -0
- package/dist/Operation.d.cts +39 -0
- package/dist/Operation.d.cts.map +1 -0
- package/dist/Operation.d.mts +39 -0
- package/dist/Operation.d.mts.map +1 -0
- package/dist/Operation.mjs +46 -0
- package/dist/Operation.mjs.map +1 -0
- package/dist/OperationDefinition.cjs +13 -0
- package/dist/OperationDefinition.d.cts +12 -0
- package/dist/OperationDefinition.d.cts.map +1 -0
- package/dist/OperationDefinition.d.mts +12 -0
- package/dist/OperationDefinition.d.mts.map +1 -0
- package/dist/OperationDefinition.mjs +13 -0
- package/dist/OperationDefinition.mjs.map +1 -0
- package/dist/OperationPath.cjs +148 -0
- package/dist/OperationPath.d.cts +60 -0
- package/dist/OperationPath.d.cts.map +1 -0
- package/dist/OperationPath.d.mts +60 -0
- package/dist/OperationPath.d.mts.map +1 -0
- package/dist/OperationPath.mjs +138 -0
- package/dist/OperationPath.mjs.map +1 -0
- package/dist/{Presence-gWrmGBeu.cjs → Presence.cjs} +4 -39
- package/dist/{Presence-N8u7Eppr.d.mts → Presence.d.cts} +2 -2
- package/dist/Presence.d.cts.map +1 -0
- package/dist/{Presence-DKKP4v5X.d.cts → Presence.d.mts} +2 -2
- package/dist/Presence.d.mts.map +1 -0
- package/dist/{Presence-DdMVKcOv.mjs → Presence.mjs} +3 -28
- package/dist/Presence.mjs.map +1 -0
- package/dist/Primitive.cjs +52 -0
- package/dist/Primitive.d.cts +20 -0
- package/dist/Primitive.d.cts.map +1 -0
- package/dist/Primitive.d.mts +20 -0
- package/dist/Primitive.d.mts.map +1 -0
- package/dist/Primitive.mjs +48 -0
- package/dist/Primitive.mjs.map +1 -0
- package/dist/ProxyEnvironment.cjs +34 -0
- package/dist/ProxyEnvironment.d.cts +31 -0
- package/dist/ProxyEnvironment.d.cts.map +1 -0
- package/dist/ProxyEnvironment.d.mts +31 -0
- package/dist/ProxyEnvironment.d.mts.map +1 -0
- package/dist/ProxyEnvironment.mjs +29 -0
- package/dist/ProxyEnvironment.mjs.map +1 -0
- package/dist/Transaction.cjs +66 -0
- package/dist/Transaction.d.cts +56 -0
- package/dist/Transaction.d.cts.map +1 -0
- package/dist/Transaction.d.mts +56 -0
- package/dist/Transaction.d.mts.map +1 -0
- package/dist/Transaction.mjs +58 -0
- package/dist/Transaction.mjs.map +1 -0
- package/dist/Transform.cjs +11 -0
- package/dist/Transform.d.cts +21 -0
- package/dist/Transform.d.cts.map +1 -0
- package/dist/Transform.d.mts +21 -0
- package/dist/Transform.d.mts.map +1 -0
- package/dist/Transform.mjs +6 -0
- package/dist/Transform.mjs.map +1 -0
- package/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/defineProperty.cjs +14 -0
- package/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/defineProperty.mjs +14 -0
- package/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/objectSpread2.cjs +27 -0
- package/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/objectSpread2.mjs +27 -0
- package/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/toPrimitive.cjs +16 -0
- package/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/toPrimitive.mjs +16 -0
- package/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/toPropertyKey.cjs +11 -0
- package/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/toPropertyKey.mjs +11 -0
- package/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/typeof.cjs +18 -0
- package/dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/typeof.mjs +12 -0
- package/dist/_virtual/rolldown_runtime.cjs +43 -0
- package/dist/{chunk-CLMFDpHK.mjs → _virtual/rolldown_runtime.mjs} +1 -1
- package/dist/client/ClientDocument.cjs +590 -0
- package/dist/client/ClientDocument.d.cts +161 -0
- package/dist/client/ClientDocument.d.cts.map +1 -0
- package/dist/client/ClientDocument.d.mts +162 -0
- package/dist/client/ClientDocument.d.mts.map +1 -0
- package/dist/client/ClientDocument.mjs +586 -0
- package/dist/client/ClientDocument.mjs.map +1 -0
- package/dist/client/Rebase.cjs +204 -0
- package/dist/client/Rebase.d.cts +87 -0
- package/dist/client/Rebase.d.cts.map +1 -0
- package/dist/client/Rebase.d.mts +88 -0
- package/dist/client/Rebase.d.mts.map +1 -0
- package/dist/client/Rebase.mjs +198 -0
- package/dist/client/Rebase.mjs.map +1 -0
- package/dist/client/StateMonitor.cjs +133 -0
- package/dist/client/StateMonitor.d.cts +122 -0
- package/dist/client/StateMonitor.d.cts.map +1 -0
- package/dist/client/StateMonitor.d.mts +122 -0
- package/dist/client/StateMonitor.d.mts.map +1 -0
- package/dist/client/StateMonitor.mjs +129 -0
- package/dist/client/StateMonitor.mjs.map +1 -0
- package/dist/client/Transport.cjs +11 -0
- package/dist/client/Transport.d.cts +237 -0
- package/dist/client/Transport.d.cts.map +1 -0
- package/dist/client/Transport.d.mts +237 -0
- package/dist/client/Transport.d.mts.map +1 -0
- package/dist/client/Transport.mjs +6 -0
- package/dist/client/Transport.mjs.map +1 -0
- package/dist/client/WebSocketTransport.cjs +396 -0
- package/dist/client/WebSocketTransport.d.cts +29 -0
- package/dist/client/WebSocketTransport.d.cts.map +1 -0
- package/dist/client/WebSocketTransport.d.mts +29 -0
- package/dist/client/WebSocketTransport.d.mts.map +1 -0
- package/dist/client/WebSocketTransport.mjs +392 -0
- package/dist/client/WebSocketTransport.mjs.map +1 -0
- package/dist/client/errors.cjs +135 -0
- package/dist/client/errors.d.cts +87 -0
- package/dist/client/errors.d.cts.map +1 -0
- package/dist/client/errors.d.mts +87 -0
- package/dist/client/errors.d.mts.map +1 -0
- package/dist/client/errors.mjs +127 -0
- package/dist/client/errors.mjs.map +1 -0
- package/dist/client/index.cjs +22 -1424
- package/dist/client/index.d.cts +8 -692
- package/dist/client/index.d.mts +8 -692
- package/dist/client/index.mjs +9 -1413
- package/dist/index.cjs +20 -2973
- package/dist/index.d.cts +12 -419
- package/dist/index.d.mts +12 -419
- package/dist/index.mjs +13 -2968
- package/dist/primitives/Array.cjs +302 -0
- package/dist/primitives/Array.d.cts +95 -0
- package/dist/primitives/Array.d.cts.map +1 -0
- package/dist/primitives/Array.d.mts +95 -0
- package/dist/primitives/Array.d.mts.map +1 -0
- package/dist/primitives/Array.mjs +301 -0
- package/dist/primitives/Array.mjs.map +1 -0
- package/dist/primitives/Boolean.cjs +95 -0
- package/dist/primitives/Boolean.d.cts +44 -0
- package/dist/primitives/Boolean.d.cts.map +1 -0
- package/dist/primitives/Boolean.d.mts +44 -0
- package/dist/primitives/Boolean.d.mts.map +1 -0
- package/dist/primitives/Boolean.mjs +94 -0
- package/dist/primitives/Boolean.mjs.map +1 -0
- package/dist/primitives/Either.cjs +200 -0
- package/dist/primitives/Either.d.cts +113 -0
- package/dist/primitives/Either.d.cts.map +1 -0
- package/dist/primitives/Either.d.mts +113 -0
- package/dist/primitives/Either.d.mts.map +1 -0
- package/dist/primitives/Either.mjs +199 -0
- package/dist/primitives/Either.mjs.map +1 -0
- package/dist/primitives/Lazy.cjs +46 -0
- package/dist/primitives/Lazy.d.cts +46 -0
- package/dist/primitives/Lazy.d.cts.map +1 -0
- package/dist/primitives/Lazy.d.mts +46 -0
- package/dist/primitives/Lazy.d.mts.map +1 -0
- package/dist/primitives/Lazy.mjs +46 -0
- package/dist/primitives/Lazy.mjs.map +1 -0
- package/dist/primitives/Literal.cjs +91 -0
- package/dist/primitives/Literal.d.cts +46 -0
- package/dist/primitives/Literal.d.cts.map +1 -0
- package/dist/primitives/Literal.d.mts +46 -0
- package/dist/primitives/Literal.d.mts.map +1 -0
- package/dist/primitives/Literal.mjs +90 -0
- package/dist/primitives/Literal.mjs.map +1 -0
- package/dist/primitives/Number.cjs +115 -0
- package/dist/primitives/Number.d.cts +54 -0
- package/dist/primitives/Number.d.cts.map +1 -0
- package/dist/primitives/Number.d.mts +54 -0
- package/dist/primitives/Number.d.mts.map +1 -0
- package/dist/primitives/Number.mjs +114 -0
- package/dist/primitives/Number.mjs.map +1 -0
- package/dist/primitives/String.cjs +127 -0
- package/dist/primitives/String.d.cts +56 -0
- package/dist/primitives/String.d.cts.map +1 -0
- package/dist/primitives/String.d.mts +56 -0
- package/dist/primitives/String.d.mts.map +1 -0
- package/dist/primitives/String.mjs +126 -0
- package/dist/primitives/String.mjs.map +1 -0
- package/dist/primitives/Struct.cjs +207 -0
- package/dist/primitives/Struct.d.cts +96 -0
- package/dist/primitives/Struct.d.cts.map +1 -0
- package/dist/primitives/Struct.d.mts +97 -0
- package/dist/primitives/Struct.d.mts.map +1 -0
- package/dist/primitives/Struct.mjs +206 -0
- package/dist/primitives/Struct.mjs.map +1 -0
- package/dist/primitives/Tree.cjs +575 -0
- package/dist/primitives/Tree.d.cts +185 -0
- package/dist/primitives/Tree.d.cts.map +1 -0
- package/dist/primitives/Tree.d.mts +185 -0
- package/dist/primitives/Tree.d.mts.map +1 -0
- package/dist/primitives/Tree.mjs +574 -0
- package/dist/primitives/Tree.mjs.map +1 -0
- package/dist/primitives/TreeNode.cjs +73 -0
- package/dist/primitives/TreeNode.d.cts +92 -0
- package/dist/primitives/TreeNode.d.cts.map +1 -0
- package/dist/primitives/TreeNode.d.mts +93 -0
- package/dist/primitives/TreeNode.d.mts.map +1 -0
- package/dist/primitives/TreeNode.mjs +72 -0
- package/dist/primitives/TreeNode.mjs.map +1 -0
- package/dist/primitives/Union.cjs +170 -0
- package/dist/primitives/Union.d.cts +81 -0
- package/dist/primitives/Union.d.cts.map +1 -0
- package/dist/primitives/Union.d.mts +81 -0
- package/dist/primitives/Union.d.mts.map +1 -0
- package/dist/primitives/Union.mjs +169 -0
- package/dist/primitives/Union.mjs.map +1 -0
- package/dist/primitives/shared.cjs +60 -0
- package/dist/primitives/shared.d.cts +147 -0
- package/dist/primitives/shared.d.cts.map +1 -0
- package/dist/primitives/shared.d.mts +147 -0
- package/dist/primitives/shared.d.mts.map +1 -0
- package/dist/primitives/shared.mjs +58 -0
- package/dist/primitives/shared.mjs.map +1 -0
- package/dist/server/ServerDocument.cjs +110 -0
- package/dist/server/ServerDocument.d.cts +98 -0
- package/dist/server/ServerDocument.d.cts.map +1 -0
- package/dist/server/ServerDocument.d.mts +99 -0
- package/dist/server/ServerDocument.d.mts.map +1 -0
- package/dist/server/ServerDocument.mjs +106 -0
- package/dist/server/ServerDocument.mjs.map +1 -0
- package/dist/server/errors.cjs +85 -0
- package/dist/server/errors.d.cts +53 -0
- package/dist/server/errors.d.cts.map +1 -0
- package/dist/server/errors.d.mts +53 -0
- package/dist/server/errors.d.mts.map +1 -0
- package/dist/server/errors.mjs +81 -0
- package/dist/server/errors.mjs.map +1 -0
- package/dist/server/index.cjs +9 -185
- package/dist/server/index.d.cts +3 -148
- package/dist/server/index.d.mts +3 -148
- package/dist/server/index.mjs +3 -181
- package/dist/types/index.cjs +16 -0
- package/dist/types/index.d.cts +16 -0
- package/dist/types/index.d.cts.map +1 -0
- package/dist/types/index.d.mts +16 -0
- package/dist/types/index.d.mts.map +1 -0
- package/dist/types/index.mjs +12 -0
- package/dist/types/index.mjs.map +1 -0
- package/dist/utils/tree-helpers.cjs +443 -0
- package/dist/utils/tree-helpers.d.cts +280 -0
- package/dist/utils/tree-helpers.d.cts.map +1 -0
- package/dist/utils/tree-helpers.d.mts +280 -0
- package/dist/utils/tree-helpers.d.mts.map +1 -0
- package/dist/utils/tree-helpers.mjs +439 -0
- package/dist/utils/tree-helpers.mjs.map +1 -0
- package/package.json +2 -2
- package/tsdown.config.ts +1 -1
- package/dist/Document-ChuFrTk1.cjs +0 -571
- package/dist/Document-CwiAFTIq.mjs +0 -438
- package/dist/Document-CwiAFTIq.mjs.map +0 -1
- package/dist/Presence-DKKP4v5X.d.cts.map +0 -1
- package/dist/Presence-DdMVKcOv.mjs.map +0 -1
- package/dist/Presence-N8u7Eppr.d.mts.map +0 -1
- package/dist/Primitive-DqQFc3Gu.d.mts +0 -1180
- package/dist/Primitive-DqQFc3Gu.d.mts.map +0 -1
- package/dist/Primitive-awpEjnKL.d.cts +0 -1180
- package/dist/Primitive-awpEjnKL.d.cts.map +0 -1
- package/dist/client/index.d.cts.map +0 -1
- package/dist/client/index.d.mts.map +0 -1
- package/dist/client/index.mjs.map +0 -1
- package/dist/index.d.cts.map +0 -1
- package/dist/index.d.mts.map +0 -1
- package/dist/index.mjs.map +0 -1
- package/dist/server/index.d.cts.map +0 -1
- package/dist/server/index.d.mts.map +0 -1
- package/dist/server/index.mjs.map +0 -1
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { _defineProperty } from "../_virtual/_@oxc-project_runtime@0.103.0/helpers/defineProperty.mjs";
|
|
2
|
+
import { _objectSpread2 } from "../_virtual/_@oxc-project_runtime@0.103.0/helpers/objectSpread2.mjs";
|
|
3
|
+
import { ValidationError, isCompatibleOperation, runValidators } from "./shared.mjs";
|
|
4
|
+
import { make } from "../OperationDefinition.mjs";
|
|
5
|
+
import { pathsOverlap } from "../OperationPath.mjs";
|
|
6
|
+
import { fromDefinition } from "../Operation.mjs";
|
|
7
|
+
import { Schema } from "effect";
|
|
8
|
+
|
|
9
|
+
//#region src/primitives/String.ts
|
|
10
|
+
var StringPrimitive = class StringPrimitive {
|
|
11
|
+
constructor(schema) {
|
|
12
|
+
_defineProperty(this, "_tag", "StringPrimitive");
|
|
13
|
+
_defineProperty(this, "_State", void 0);
|
|
14
|
+
_defineProperty(this, "_Proxy", void 0);
|
|
15
|
+
_defineProperty(this, "_TRequired", void 0);
|
|
16
|
+
_defineProperty(this, "_THasDefault", void 0);
|
|
17
|
+
_defineProperty(this, "TUpdateInput", void 0);
|
|
18
|
+
_defineProperty(this, "TSetInput", void 0);
|
|
19
|
+
_defineProperty(this, "_schema", void 0);
|
|
20
|
+
_defineProperty(this, "_opDefinitions", { set: make({
|
|
21
|
+
kind: "string.set",
|
|
22
|
+
payload: Schema.String,
|
|
23
|
+
target: Schema.String,
|
|
24
|
+
apply: (payload) => payload
|
|
25
|
+
}) });
|
|
26
|
+
_defineProperty(this, "_internal", {
|
|
27
|
+
createProxy: (env, operationPath) => {
|
|
28
|
+
const defaultValue = this._schema.defaultValue;
|
|
29
|
+
return {
|
|
30
|
+
get: () => {
|
|
31
|
+
const state = env.getState(operationPath);
|
|
32
|
+
return state !== null && state !== void 0 ? state : defaultValue;
|
|
33
|
+
},
|
|
34
|
+
set: (value) => {
|
|
35
|
+
env.addOperation(fromDefinition(operationPath, this._opDefinitions.set, value));
|
|
36
|
+
},
|
|
37
|
+
update: (value) => {
|
|
38
|
+
env.addOperation(fromDefinition(operationPath, this._opDefinitions.set, value));
|
|
39
|
+
},
|
|
40
|
+
toSnapshot: () => {
|
|
41
|
+
const state = env.getState(operationPath);
|
|
42
|
+
return state !== null && state !== void 0 ? state : defaultValue;
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
},
|
|
46
|
+
applyOperation: (_state, operation) => {
|
|
47
|
+
if (!isCompatibleOperation(operation, this._opDefinitions)) throw new ValidationError(`StringPrimitive cannot apply operation of kind: ${operation.kind}`);
|
|
48
|
+
const payload = operation.payload;
|
|
49
|
+
if (typeof payload !== "string") throw new ValidationError(`StringPrimitive.set requires a string payload, got: ${typeof payload}`);
|
|
50
|
+
runValidators(payload, this._schema.validators);
|
|
51
|
+
return payload;
|
|
52
|
+
},
|
|
53
|
+
getInitialState: () => {
|
|
54
|
+
return this._schema.defaultValue;
|
|
55
|
+
},
|
|
56
|
+
transformOperation: (clientOp, serverOp) => {
|
|
57
|
+
if (!pathsOverlap(clientOp.path, serverOp.path)) return {
|
|
58
|
+
type: "transformed",
|
|
59
|
+
operation: clientOp
|
|
60
|
+
};
|
|
61
|
+
return {
|
|
62
|
+
type: "transformed",
|
|
63
|
+
operation: clientOp
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
this._schema = schema;
|
|
68
|
+
}
|
|
69
|
+
/** Mark this string as required */
|
|
70
|
+
required() {
|
|
71
|
+
return new StringPrimitive(_objectSpread2(_objectSpread2({}, this._schema), {}, { required: true }));
|
|
72
|
+
}
|
|
73
|
+
/** Set a default value for this string */
|
|
74
|
+
default(defaultValue) {
|
|
75
|
+
return new StringPrimitive(_objectSpread2(_objectSpread2({}, this._schema), {}, { defaultValue }));
|
|
76
|
+
}
|
|
77
|
+
/** Add a custom validation rule */
|
|
78
|
+
refine(fn, message) {
|
|
79
|
+
return new StringPrimitive(_objectSpread2(_objectSpread2({}, this._schema), {}, { validators: [...this._schema.validators, {
|
|
80
|
+
validate: fn,
|
|
81
|
+
message
|
|
82
|
+
}] }));
|
|
83
|
+
}
|
|
84
|
+
/** Minimum string length */
|
|
85
|
+
min(length) {
|
|
86
|
+
return this.refine((v) => v.length >= length, `String must be at least ${length} characters`);
|
|
87
|
+
}
|
|
88
|
+
/** Maximum string length */
|
|
89
|
+
max(length) {
|
|
90
|
+
return this.refine((v) => v.length <= length, `String must be at most ${length} characters`);
|
|
91
|
+
}
|
|
92
|
+
/** Exact string length */
|
|
93
|
+
length(exact) {
|
|
94
|
+
return this.refine((v) => v.length === exact, `String must be exactly ${exact} characters`);
|
|
95
|
+
}
|
|
96
|
+
/** Match a regex pattern */
|
|
97
|
+
regex(pattern, message) {
|
|
98
|
+
return this.refine((v) => pattern.test(v), message !== null && message !== void 0 ? message : `String must match pattern ${pattern}`);
|
|
99
|
+
}
|
|
100
|
+
/** Validate as email format */
|
|
101
|
+
email() {
|
|
102
|
+
const emailPattern = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
103
|
+
return this.refine((v) => emailPattern.test(v), "Invalid email format");
|
|
104
|
+
}
|
|
105
|
+
/** Validate as URL format */
|
|
106
|
+
url() {
|
|
107
|
+
return this.refine((v) => {
|
|
108
|
+
try {
|
|
109
|
+
new URL(v);
|
|
110
|
+
return true;
|
|
111
|
+
} catch (_unused) {
|
|
112
|
+
return false;
|
|
113
|
+
}
|
|
114
|
+
}, "Invalid URL format");
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
/** Creates a new StringPrimitive */
|
|
118
|
+
const String = () => new StringPrimitive({
|
|
119
|
+
required: false,
|
|
120
|
+
defaultValue: void 0,
|
|
121
|
+
validators: []
|
|
122
|
+
});
|
|
123
|
+
|
|
124
|
+
//#endregion
|
|
125
|
+
export { String, StringPrimitive };
|
|
126
|
+
//# sourceMappingURL=String.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"String.mjs","names":["OperationDefinition.make","Operation.fromDefinition","OperationPath.pathsOverlap"],"sources":["../../src/primitives/String.ts"],"sourcesContent":["import { Schema } from \"effect\";\nimport * as OperationDefinition from \"../OperationDefinition\";\nimport * as Operation from \"../Operation\";\nimport * as OperationPath from \"../OperationPath\";\nimport * as ProxyEnvironment from \"../ProxyEnvironment\";\nimport * as Transform from \"../Transform\";\nimport type { Primitive, PrimitiveInternal, MaybeUndefined, Validator, NeedsValue } from \"./shared\";\nimport { runValidators, isCompatibleOperation, ValidationError } from \"./shared\";\n\n\ntype InferSetInput<TRequired extends boolean = false, THasDefault extends boolean = false> = NeedsValue<string, TRequired, THasDefault>\ntype InferUpdateInput<TRequired extends boolean = false, THasDefault extends boolean = false> = NeedsValue<string, TRequired, THasDefault>\n\n// =============================================================================\n// String Primitive\n// =============================================================================\n\nexport interface StringProxy<TRequired extends boolean = false, THasDefault extends boolean = false> {\n /** Gets the current string value */\n get(): MaybeUndefined<string, TRequired, THasDefault>;\n /** Sets the string value, generating a string.set operation */\n set(value: InferSetInput<TRequired, THasDefault>): void;\n /** This is the same as set. Updates the string value, generating a string.set operation */\n update(value: InferUpdateInput<TRequired, THasDefault>): void;\n /** Returns a readonly snapshot of the string value for rendering */\n toSnapshot(): MaybeUndefined<string, TRequired, THasDefault>;\n}\n\ninterface StringPrimitiveSchema {\n readonly required: boolean;\n readonly defaultValue: string | undefined;\n readonly validators: readonly Validator<string>[];\n}\n\nexport class StringPrimitive<TRequired extends boolean = false, THasDefault extends boolean = false> implements Primitive<string, StringProxy<TRequired, THasDefault>, TRequired, THasDefault, InferSetInput<TRequired, THasDefault>, InferUpdateInput<TRequired, THasDefault>> {\n readonly _tag = \"StringPrimitive\" as const;\n readonly _State!: string;\n readonly _Proxy!: StringProxy<TRequired, THasDefault>;\n readonly _TRequired!: TRequired;\n readonly _THasDefault!: THasDefault;\n readonly TUpdateInput!: InferUpdateInput<TRequired, THasDefault>;\n readonly TSetInput!: InferSetInput<TRequired, THasDefault>;\n\n private readonly _schema: StringPrimitiveSchema;\n\n private readonly _opDefinitions = {\n set: OperationDefinition.make({\n kind: \"string.set\" as const,\n payload: Schema.String,\n target: Schema.String,\n apply: (payload) => payload,\n }),\n };\n\n constructor(schema: StringPrimitiveSchema) {\n this._schema = schema;\n }\n\n /** Mark this string as required */\n required(): StringPrimitive<true, THasDefault> {\n return new StringPrimitive({\n ...this._schema,\n required: true,\n });\n }\n\n /** Set a default value for this string */\n default(defaultValue: string): StringPrimitive<TRequired, true> {\n return new StringPrimitive({\n ...this._schema,\n defaultValue,\n });\n }\n\n /** Add a custom validation rule */\n refine(fn: (value: string) => boolean, message: string): StringPrimitive<TRequired, THasDefault> {\n return new StringPrimitive({\n ...this._schema,\n validators: [...this._schema.validators, { validate: fn, message }],\n });\n }\n\n /** Minimum string length */\n min(length: number): StringPrimitive<TRequired, THasDefault> {\n return this.refine(\n (v) => v.length >= length,\n `String must be at least ${length} characters`\n );\n }\n\n /** Maximum string length */\n max(length: number): StringPrimitive<TRequired, THasDefault> {\n return this.refine(\n (v) => v.length <= length,\n `String must be at most ${length} characters`\n );\n }\n\n /** Exact string length */\n length(exact: number): StringPrimitive<TRequired, THasDefault> {\n return this.refine(\n (v) => v.length === exact,\n `String must be exactly ${exact} characters`\n );\n }\n\n /** Match a regex pattern */\n regex(pattern: RegExp, message?: string): StringPrimitive<TRequired, THasDefault> {\n return this.refine(\n (v) => pattern.test(v),\n message ?? `String must match pattern ${pattern}`\n );\n }\n\n /** Validate as email format */\n email(): StringPrimitive<TRequired, THasDefault> {\n // Simple email regex - covers most common cases\n const emailPattern = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n return this.refine(\n (v) => emailPattern.test(v),\n \"Invalid email format\"\n );\n }\n\n /** Validate as URL format */\n url(): StringPrimitive<TRequired, THasDefault> {\n return this.refine(\n (v) => {\n try {\n new URL(v);\n return true;\n } catch {\n return false;\n }\n },\n \"Invalid URL format\"\n );\n }\n\n readonly _internal: PrimitiveInternal<string, StringProxy<TRequired, THasDefault>> = {\n createProxy: (env: ProxyEnvironment.ProxyEnvironment, operationPath: OperationPath.OperationPath): StringProxy<TRequired, THasDefault> => {\n const defaultValue = this._schema.defaultValue;\n return {\n get: (): MaybeUndefined<string, TRequired, THasDefault> => {\n const state = env.getState(operationPath) as string | undefined;\n return (state ?? defaultValue) as MaybeUndefined<string, TRequired, THasDefault>;\n },\n set: (value: InferSetInput<TRequired, THasDefault>) => {\n env.addOperation(\n Operation.fromDefinition(operationPath, this._opDefinitions.set, value)\n );\n },\n update: (value: InferUpdateInput<TRequired, THasDefault>) => {\n env.addOperation(\n Operation.fromDefinition(operationPath, this._opDefinitions.set, value)\n );\n },\n toSnapshot: (): MaybeUndefined<string, TRequired, THasDefault> => {\n const state = env.getState(operationPath) as string | undefined;\n return (state ?? defaultValue) as MaybeUndefined<string, TRequired, THasDefault>;\n },\n };\n },\n\n applyOperation: (_state: string | undefined, operation: Operation.Operation<any, any, any>): string => {\n if (!isCompatibleOperation(operation, this._opDefinitions)) {\n throw new ValidationError(`StringPrimitive cannot apply operation of kind: ${operation.kind}`);\n }\n\n const payload = operation.payload;\n if (typeof payload !== \"string\") {\n throw new ValidationError(`StringPrimitive.set requires a string payload, got: ${typeof payload}`);\n }\n\n // Run validators\n runValidators(payload, this._schema.validators);\n\n return payload;\n },\n\n getInitialState: (): string | undefined => {\n return this._schema.defaultValue;\n },\n\n transformOperation: (\n clientOp: Operation.Operation<any, any, any>,\n serverOp: Operation.Operation<any, any, any>\n ): Transform.TransformResult => {\n // If paths don't overlap, no transformation needed\n if (!OperationPath.pathsOverlap(clientOp.path, serverOp.path)) {\n return { type: \"transformed\", operation: clientOp };\n }\n\n // For same path, client wins (last-write-wins)\n // Client operation proceeds as-is\n return { type: \"transformed\", operation: clientOp };\n },\n };\n}\n\n/** Creates a new StringPrimitive */\nexport const String = (): StringPrimitive<false, false> =>\n new StringPrimitive({ required: false, defaultValue: undefined, validators: [] });\n\n"],"mappings":";;;;;;;;;AAkCA,IAAa,kBAAb,MAAa,gBAAmQ;CAoB9Q,YAAY,QAA+B;wBAnBlC,QAAO;wBACP;wBACA;wBACA;wBACA;wBACA;wBACA;wBAEQ;wBAEA,kBAAiB,EAChC,KAAKA,KAAyB;GAC5B,MAAM;GACN,SAAS,OAAO;GAChB,QAAQ,OAAO;GACf,QAAQ,YAAY;GACrB,CAAC,EACH;wBAuFQ,aAA4E;GACnF,cAAc,KAAwC,kBAAoF;IACxI,MAAM,eAAe,KAAK,QAAQ;AAClC,WAAO;KACL,WAA2D;MACzD,MAAM,QAAQ,IAAI,SAAS,cAAc;AACzC,aAAQ,6CAAS;;KAEnB,MAAM,UAAiD;AACrD,UAAI,aACFC,eAAyB,eAAe,KAAK,eAAe,KAAK,MAAM,CACxE;;KAEH,SAAS,UAAoD;AAC3D,UAAI,aACFA,eAAyB,eAAe,KAAK,eAAe,KAAK,MAAM,CACxE;;KAEH,kBAAkE;MAChE,MAAM,QAAQ,IAAI,SAAS,cAAc;AACzC,aAAQ,6CAAS;;KAEpB;;GAGH,iBAAiB,QAA4B,cAA0D;AACrG,QAAI,CAAC,sBAAsB,WAAW,KAAK,eAAe,CACxD,OAAM,IAAI,gBAAgB,mDAAmD,UAAU,OAAO;IAGhG,MAAM,UAAU,UAAU;AAC1B,QAAI,OAAO,YAAY,SACrB,OAAM,IAAI,gBAAgB,uDAAuD,OAAO,UAAU;AAIpG,kBAAc,SAAS,KAAK,QAAQ,WAAW;AAE/C,WAAO;;GAGT,uBAA2C;AACzC,WAAO,KAAK,QAAQ;;GAGtB,qBACE,UACA,aAC8B;AAE9B,QAAI,CAACC,aAA2B,SAAS,MAAM,SAAS,KAAK,CAC3D,QAAO;KAAE,MAAM;KAAe,WAAW;KAAU;AAKrD,WAAO;KAAE,MAAM;KAAe,WAAW;KAAU;;GAEtD;AA9IC,OAAK,UAAU;;;CAIjB,WAA+C;AAC7C,SAAO,IAAI,kDACN,KAAK,gBACR,UAAU,QACV;;;CAIJ,QAAQ,cAAwD;AAC9D,SAAO,IAAI,kDACN,KAAK,gBACR,gBACA;;;CAIJ,OAAO,IAAgC,SAA0D;AAC/F,SAAO,IAAI,kDACN,KAAK,gBACR,YAAY,CAAC,GAAG,KAAK,QAAQ,YAAY;GAAE,UAAU;GAAI;GAAS,CAAC,IACnE;;;CAIJ,IAAI,QAAyD;AAC3D,SAAO,KAAK,QACT,MAAM,EAAE,UAAU,QACnB,2BAA2B,OAAO,aACnC;;;CAIH,IAAI,QAAyD;AAC3D,SAAO,KAAK,QACT,MAAM,EAAE,UAAU,QACnB,0BAA0B,OAAO,aAClC;;;CAIH,OAAO,OAAwD;AAC7D,SAAO,KAAK,QACT,MAAM,EAAE,WAAW,OACpB,0BAA0B,MAAM,aACjC;;;CAIH,MAAM,SAAiB,SAA2D;AAChF,SAAO,KAAK,QACT,MAAM,QAAQ,KAAK,EAAE,EACtB,mDAAW,6BAA6B,UACzC;;;CAIH,QAAiD;EAE/C,MAAM,eAAe;AACrB,SAAO,KAAK,QACT,MAAM,aAAa,KAAK,EAAE,EAC3B,uBACD;;;CAIH,MAA+C;AAC7C,SAAO,KAAK,QACT,MAAM;AACL,OAAI;AACF,QAAI,IAAI,EAAE;AACV,WAAO;qBACD;AACN,WAAO;;KAGX,qBACD;;;;AAiEL,MAAa,eACX,IAAI,gBAAgB;CAAE,UAAU;CAAO,cAAc;CAAW,YAAY,EAAE;CAAE,CAAC"}
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
|
|
2
|
+
const require_defineProperty = require('../_virtual/_@oxc-project_runtime@0.103.0/helpers/defineProperty.cjs');
|
|
3
|
+
const require_objectSpread2 = require('../_virtual/_@oxc-project_runtime@0.103.0/helpers/objectSpread2.cjs');
|
|
4
|
+
const require_shared = require('./shared.cjs');
|
|
5
|
+
const require_OperationDefinition = require('../OperationDefinition.cjs');
|
|
6
|
+
const require_OperationPath = require('../OperationPath.cjs');
|
|
7
|
+
const require_Operation = require('../Operation.cjs');
|
|
8
|
+
require('../Primitive.cjs');
|
|
9
|
+
let effect = require("effect");
|
|
10
|
+
|
|
11
|
+
//#region src/primitives/Struct.ts
|
|
12
|
+
var StructPrimitive = class StructPrimitive {
|
|
13
|
+
constructor(schema) {
|
|
14
|
+
require_defineProperty._defineProperty(this, "_tag", "StructPrimitive");
|
|
15
|
+
require_defineProperty._defineProperty(this, "_State", void 0);
|
|
16
|
+
require_defineProperty._defineProperty(this, "_Proxy", void 0);
|
|
17
|
+
require_defineProperty._defineProperty(this, "_TRequired", void 0);
|
|
18
|
+
require_defineProperty._defineProperty(this, "_THasDefault", void 0);
|
|
19
|
+
require_defineProperty._defineProperty(this, "TSetInput", void 0);
|
|
20
|
+
require_defineProperty._defineProperty(this, "TUpdateInput", void 0);
|
|
21
|
+
require_defineProperty._defineProperty(this, "_schema", void 0);
|
|
22
|
+
require_defineProperty._defineProperty(this, "_opDefinitions", { set: require_OperationDefinition.make({
|
|
23
|
+
kind: "struct.set",
|
|
24
|
+
payload: effect.Schema.Unknown,
|
|
25
|
+
target: effect.Schema.Unknown,
|
|
26
|
+
apply: (payload) => payload
|
|
27
|
+
}) });
|
|
28
|
+
require_defineProperty._defineProperty(this, "_internal", {
|
|
29
|
+
createProxy: (env, operationPath) => {
|
|
30
|
+
const fields = this._schema.fields;
|
|
31
|
+
const defaultValue = this._schema.defaultValue;
|
|
32
|
+
const buildSnapshot = () => {
|
|
33
|
+
const state = env.getState(operationPath);
|
|
34
|
+
const snapshot = {};
|
|
35
|
+
let hasAnyDefinedField = false;
|
|
36
|
+
for (const key in fields) {
|
|
37
|
+
const fieldPrimitive = fields[key];
|
|
38
|
+
const fieldPath = operationPath.append(key);
|
|
39
|
+
const fieldSnapshot = fieldPrimitive._internal.createProxy(env, fieldPath).toSnapshot();
|
|
40
|
+
snapshot[key] = fieldSnapshot;
|
|
41
|
+
if (fieldSnapshot !== void 0) hasAnyDefinedField = true;
|
|
42
|
+
}
|
|
43
|
+
if (state === void 0 && defaultValue === void 0 && !hasAnyDefinedField) return;
|
|
44
|
+
return snapshot;
|
|
45
|
+
};
|
|
46
|
+
return new globalThis.Proxy({
|
|
47
|
+
get: () => {
|
|
48
|
+
const state = env.getState(operationPath);
|
|
49
|
+
return state !== null && state !== void 0 ? state : defaultValue;
|
|
50
|
+
},
|
|
51
|
+
set: (value) => {
|
|
52
|
+
const merged = require_shared.applyDefaults(this, value);
|
|
53
|
+
env.addOperation(require_Operation.fromDefinition(operationPath, this._opDefinitions.set, merged));
|
|
54
|
+
},
|
|
55
|
+
update: (value) => {
|
|
56
|
+
for (const key in value) if (Object.prototype.hasOwnProperty.call(value, key)) {
|
|
57
|
+
const fieldValue = value[key];
|
|
58
|
+
if (fieldValue === void 0) continue;
|
|
59
|
+
const fieldPrimitive = fields[key];
|
|
60
|
+
if (!fieldPrimitive) continue;
|
|
61
|
+
const fieldPath = operationPath.append(key);
|
|
62
|
+
const fieldProxy = fieldPrimitive._internal.createProxy(env, fieldPath);
|
|
63
|
+
if (fieldPrimitive._tag === "StructPrimitive" && typeof fieldValue === "object" && fieldValue !== null && !Array.isArray(fieldValue)) fieldProxy.update(fieldValue);
|
|
64
|
+
else fieldProxy.set(fieldValue);
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
toSnapshot: () => {
|
|
68
|
+
return buildSnapshot();
|
|
69
|
+
}
|
|
70
|
+
}, {
|
|
71
|
+
get: (target, prop, _receiver) => {
|
|
72
|
+
if (prop === "get") return target.get;
|
|
73
|
+
if (prop === "set") return target.set;
|
|
74
|
+
if (prop === "update") return target.update;
|
|
75
|
+
if (prop === "toSnapshot") return target.toSnapshot;
|
|
76
|
+
if (typeof prop === "symbol") return;
|
|
77
|
+
if (prop in fields) {
|
|
78
|
+
const fieldPrimitive = fields[prop];
|
|
79
|
+
const fieldPath = operationPath.append(prop);
|
|
80
|
+
return fieldPrimitive._internal.createProxy(env, fieldPath);
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
has: (_target, prop) => {
|
|
84
|
+
if (prop === "get" || prop === "set" || prop === "update" || prop === "toSnapshot") return true;
|
|
85
|
+
if (typeof prop === "string" && prop in fields) return true;
|
|
86
|
+
return false;
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
},
|
|
90
|
+
applyOperation: (state, operation) => {
|
|
91
|
+
const path = operation.path;
|
|
92
|
+
const tokens = path.toTokens().filter((t) => t !== "");
|
|
93
|
+
let newState;
|
|
94
|
+
if (tokens.length === 0) {
|
|
95
|
+
if (operation.kind !== "struct.set") throw new require_shared.ValidationError(`StructPrimitive root cannot apply operation of kind: ${operation.kind}`);
|
|
96
|
+
const payload = operation.payload;
|
|
97
|
+
if (typeof payload !== "object" || payload === null) throw new require_shared.ValidationError(`StructPrimitive.set requires an object payload`);
|
|
98
|
+
newState = payload;
|
|
99
|
+
} else {
|
|
100
|
+
const fieldName = tokens[0];
|
|
101
|
+
if (!(fieldName in this._schema.fields)) throw new require_shared.ValidationError(`Unknown field: ${globalThis.String(fieldName)}`);
|
|
102
|
+
const fieldPrimitive = this._schema.fields[fieldName];
|
|
103
|
+
const remainingPath = path.shift();
|
|
104
|
+
const fieldOperation = require_objectSpread2._objectSpread2(require_objectSpread2._objectSpread2({}, operation), {}, { path: remainingPath });
|
|
105
|
+
const currentState = state !== null && state !== void 0 ? state : {};
|
|
106
|
+
const currentFieldState = currentState[fieldName];
|
|
107
|
+
const newFieldState = fieldPrimitive._internal.applyOperation(currentFieldState, fieldOperation);
|
|
108
|
+
newState = require_objectSpread2._objectSpread2(require_objectSpread2._objectSpread2({}, currentState), {}, { [fieldName]: newFieldState });
|
|
109
|
+
}
|
|
110
|
+
require_shared.runValidators(newState, this._schema.validators);
|
|
111
|
+
return newState;
|
|
112
|
+
},
|
|
113
|
+
getInitialState: () => {
|
|
114
|
+
if (this._schema.defaultValue !== void 0) return this._schema.defaultValue;
|
|
115
|
+
const fields = this._schema.fields;
|
|
116
|
+
const initialState = {};
|
|
117
|
+
let hasAnyDefault = false;
|
|
118
|
+
for (const key in fields) {
|
|
119
|
+
const fieldDefault = fields[key]._internal.getInitialState();
|
|
120
|
+
if (fieldDefault !== void 0) {
|
|
121
|
+
initialState[key] = fieldDefault;
|
|
122
|
+
hasAnyDefault = true;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
return hasAnyDefault ? initialState : void 0;
|
|
126
|
+
},
|
|
127
|
+
transformOperation: (clientOp, serverOp) => {
|
|
128
|
+
const clientPath = clientOp.path;
|
|
129
|
+
const serverPath = serverOp.path;
|
|
130
|
+
if (!require_OperationPath.pathsOverlap(clientPath, serverPath)) return {
|
|
131
|
+
type: "transformed",
|
|
132
|
+
operation: clientOp
|
|
133
|
+
};
|
|
134
|
+
const clientTokens = clientPath.toTokens().filter((t) => t !== "");
|
|
135
|
+
const serverTokens = serverPath.toTokens().filter((t) => t !== "");
|
|
136
|
+
if (clientTokens.length === 0 && serverTokens.length === 0) return {
|
|
137
|
+
type: "transformed",
|
|
138
|
+
operation: clientOp
|
|
139
|
+
};
|
|
140
|
+
if (serverTokens.length === 0 && serverOp.kind === "struct.set") return {
|
|
141
|
+
type: "transformed",
|
|
142
|
+
operation: clientOp
|
|
143
|
+
};
|
|
144
|
+
if (clientTokens.length === 0 && clientOp.kind === "struct.set") return {
|
|
145
|
+
type: "transformed",
|
|
146
|
+
operation: clientOp
|
|
147
|
+
};
|
|
148
|
+
if (clientTokens.length > 0 && serverTokens.length > 0) {
|
|
149
|
+
const clientField = clientTokens[0];
|
|
150
|
+
if (clientField !== serverTokens[0]) return {
|
|
151
|
+
type: "transformed",
|
|
152
|
+
operation: clientOp
|
|
153
|
+
};
|
|
154
|
+
const fieldPrimitive = this._schema.fields[clientField];
|
|
155
|
+
if (!fieldPrimitive) return {
|
|
156
|
+
type: "transformed",
|
|
157
|
+
operation: clientOp
|
|
158
|
+
};
|
|
159
|
+
const clientOpForField = require_objectSpread2._objectSpread2(require_objectSpread2._objectSpread2({}, clientOp), {}, { path: clientOp.path.shift() });
|
|
160
|
+
const serverOpForField = require_objectSpread2._objectSpread2(require_objectSpread2._objectSpread2({}, serverOp), {}, { path: serverOp.path.shift() });
|
|
161
|
+
const result = fieldPrimitive._internal.transformOperation(clientOpForField, serverOpForField);
|
|
162
|
+
if (result.type === "transformed") return {
|
|
163
|
+
type: "transformed",
|
|
164
|
+
operation: require_objectSpread2._objectSpread2(require_objectSpread2._objectSpread2({}, result.operation), {}, { path: clientOp.path })
|
|
165
|
+
};
|
|
166
|
+
return result;
|
|
167
|
+
}
|
|
168
|
+
return {
|
|
169
|
+
type: "transformed",
|
|
170
|
+
operation: clientOp
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
});
|
|
174
|
+
this._schema = schema;
|
|
175
|
+
}
|
|
176
|
+
/** Mark this struct as required */
|
|
177
|
+
required() {
|
|
178
|
+
return new StructPrimitive(require_objectSpread2._objectSpread2(require_objectSpread2._objectSpread2({}, this._schema), {}, { required: true }));
|
|
179
|
+
}
|
|
180
|
+
/** Set a default value for this struct */
|
|
181
|
+
default(defaultValue) {
|
|
182
|
+
const merged = require_shared.applyDefaults(this, defaultValue);
|
|
183
|
+
return new StructPrimitive(require_objectSpread2._objectSpread2(require_objectSpread2._objectSpread2({}, this._schema), {}, { defaultValue: merged }));
|
|
184
|
+
}
|
|
185
|
+
/** Get the fields schema */
|
|
186
|
+
get fields() {
|
|
187
|
+
return this._schema.fields;
|
|
188
|
+
}
|
|
189
|
+
/** Add a custom validation rule (useful for cross-field validation) */
|
|
190
|
+
refine(fn, message) {
|
|
191
|
+
return new StructPrimitive(require_objectSpread2._objectSpread2(require_objectSpread2._objectSpread2({}, this._schema), {}, { validators: [...this._schema.validators, {
|
|
192
|
+
validate: fn,
|
|
193
|
+
message
|
|
194
|
+
}] }));
|
|
195
|
+
}
|
|
196
|
+
};
|
|
197
|
+
/** Creates a new StructPrimitive with the given fields */
|
|
198
|
+
const Struct = (fields) => new StructPrimitive({
|
|
199
|
+
required: false,
|
|
200
|
+
defaultValue: void 0,
|
|
201
|
+
fields,
|
|
202
|
+
validators: []
|
|
203
|
+
});
|
|
204
|
+
|
|
205
|
+
//#endregion
|
|
206
|
+
exports.Struct = Struct;
|
|
207
|
+
exports.StructPrimitive = StructPrimitive;
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { AnyPrimitive, InferProxy, InferSetInput, InferSnapshot, InferState, InferUpdateInput, MaybeUndefined, NeedsValue, Primitive, PrimitiveInternal, Validator } from "./shared.cjs";
|
|
2
|
+
|
|
3
|
+
//#region src/primitives/Struct.d.ts
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Determines if a field is required for set() operations.
|
|
7
|
+
* A field is required if: TRequired is true AND THasDefault is false
|
|
8
|
+
*/
|
|
9
|
+
type IsRequiredForSet<T> = T extends Primitive<any, any, true, false> ? true : false;
|
|
10
|
+
/**
|
|
11
|
+
* Extract keys of fields that are required for set() (required without default).
|
|
12
|
+
*/
|
|
13
|
+
type RequiredSetKeys<TFields extends Record<string, AnyPrimitive>> = { [K in keyof TFields]: IsRequiredForSet<TFields[K]> extends true ? K : never }[keyof TFields];
|
|
14
|
+
/**
|
|
15
|
+
* Extract keys of fields that are optional for set() (has default OR not required).
|
|
16
|
+
*/
|
|
17
|
+
type OptionalSetKeys<TFields extends Record<string, AnyPrimitive>> = { [K in keyof TFields]: IsRequiredForSet<TFields[K]> extends true ? never : K }[keyof TFields];
|
|
18
|
+
/**
|
|
19
|
+
* Compute the input type for set() operations on a struct.
|
|
20
|
+
* Required fields (required without default) must be provided.
|
|
21
|
+
* Optional fields (has default or not required) can be omitted.
|
|
22
|
+
* Uses each field's TSetInput type to handle nested structs correctly.
|
|
23
|
+
*/
|
|
24
|
+
type StructSetInput<TFields extends Record<string, AnyPrimitive>> = { readonly [K in RequiredSetKeys<TFields>]: InferSetInput<TFields[K]> } & { readonly [K in OptionalSetKeys<TFields>]?: InferSetInput<TFields[K]> };
|
|
25
|
+
/**
|
|
26
|
+
* Input type for set() - respects required/default status of the struct.
|
|
27
|
+
* If the struct is required without a default, the value must be provided.
|
|
28
|
+
* The value itself uses StructSetInput which handles field-level required/default logic.
|
|
29
|
+
*/
|
|
30
|
+
type InferStructSetInput<TFields extends Record<string, AnyPrimitive>, TRequired extends boolean, THasDefault extends boolean> = NeedsValue<StructSetInput<TFields>, TRequired, THasDefault>;
|
|
31
|
+
/**
|
|
32
|
+
* Input type for update() - always partial since update only modifies specified fields.
|
|
33
|
+
* For nested structs, allows recursive partial updates.
|
|
34
|
+
*/
|
|
35
|
+
type InferStructUpdateInput<TFields extends Record<string, AnyPrimitive>> = StructUpdateValue<TFields>;
|
|
36
|
+
/**
|
|
37
|
+
* Maps a schema definition to its state type.
|
|
38
|
+
* { name: StringPrimitive, age: NumberPrimitive } -> { name: string, age: number }
|
|
39
|
+
*/
|
|
40
|
+
type InferStructState<TFields extends Record<string, AnyPrimitive>> = { readonly [K in keyof TFields]: InferState<TFields[K]> };
|
|
41
|
+
/**
|
|
42
|
+
* Maps a schema definition to its snapshot type.
|
|
43
|
+
* Each field's snapshot type is inferred from the field primitive.
|
|
44
|
+
*/
|
|
45
|
+
type InferStructSnapshot<TFields extends Record<string, AnyPrimitive>> = { readonly [K in keyof TFields]: InferSnapshot<TFields[K]> };
|
|
46
|
+
/**
|
|
47
|
+
* Maps a schema definition to a partial update type.
|
|
48
|
+
* Uses each field's TUpdateInput type, which handles nested updates recursively.
|
|
49
|
+
*/
|
|
50
|
+
type StructUpdateValue<TFields extends Record<string, AnyPrimitive>> = { readonly [K in keyof TFields]?: InferUpdateInput<TFields[K]> };
|
|
51
|
+
/**
|
|
52
|
+
* Maps a schema definition to its proxy type.
|
|
53
|
+
* Provides nested field access + get()/set()/toSnapshot() methods for the whole struct.
|
|
54
|
+
*/
|
|
55
|
+
type StructProxy<TFields extends Record<string, AnyPrimitive>, TRequired extends boolean = false, THasDefault extends boolean = false> = { readonly [K in keyof TFields]: InferProxy<TFields[K]> } & {
|
|
56
|
+
/** Gets the entire struct value */
|
|
57
|
+
get(): MaybeUndefined<InferStructState<TFields>, TRequired, THasDefault>;
|
|
58
|
+
/** Sets the entire struct value (only fields that are required without defaults must be provided) */
|
|
59
|
+
set(value: InferStructSetInput<TFields, TRequired, THasDefault>): void;
|
|
60
|
+
/** Updates only the specified fields (partial update, handles nested structs recursively) */
|
|
61
|
+
update(value: InferStructUpdateInput<TFields>): void;
|
|
62
|
+
/** Returns a readonly snapshot of the struct for rendering */
|
|
63
|
+
toSnapshot(): MaybeUndefined<InferStructSnapshot<TFields>, TRequired, THasDefault>;
|
|
64
|
+
};
|
|
65
|
+
interface StructPrimitiveSchema<TFields extends Record<string, AnyPrimitive>> {
|
|
66
|
+
readonly required: boolean;
|
|
67
|
+
readonly defaultValue: InferStructState<TFields> | undefined;
|
|
68
|
+
readonly fields: TFields;
|
|
69
|
+
readonly validators: readonly Validator<InferStructState<TFields>>[];
|
|
70
|
+
}
|
|
71
|
+
declare class StructPrimitive<TFields extends Record<string, AnyPrimitive>, TRequired extends boolean = false, THasDefault extends boolean = false> implements Primitive<InferStructState<TFields>, StructProxy<TFields, TRequired, THasDefault>, TRequired, THasDefault, InferStructSetInput<TFields, TRequired, THasDefault>, InferStructUpdateInput<TFields>> {
|
|
72
|
+
readonly _tag: "StructPrimitive";
|
|
73
|
+
readonly _State: InferStructState<TFields>;
|
|
74
|
+
readonly _Proxy: StructProxy<TFields, TRequired, THasDefault>;
|
|
75
|
+
readonly _TRequired: TRequired;
|
|
76
|
+
readonly _THasDefault: THasDefault;
|
|
77
|
+
readonly TSetInput: InferStructSetInput<TFields, TRequired, THasDefault>;
|
|
78
|
+
readonly TUpdateInput: InferStructUpdateInput<TFields>;
|
|
79
|
+
private readonly _schema;
|
|
80
|
+
private readonly _opDefinitions;
|
|
81
|
+
constructor(schema: StructPrimitiveSchema<TFields>);
|
|
82
|
+
/** Mark this struct as required */
|
|
83
|
+
required(): StructPrimitive<TFields, true, THasDefault>;
|
|
84
|
+
/** Set a default value for this struct */
|
|
85
|
+
default(defaultValue: StructSetInput<TFields>): StructPrimitive<TFields, TRequired, true>;
|
|
86
|
+
/** Get the fields schema */
|
|
87
|
+
get fields(): TFields;
|
|
88
|
+
/** Add a custom validation rule (useful for cross-field validation) */
|
|
89
|
+
refine(fn: (value: InferStructState<TFields>) => boolean, message: string): StructPrimitive<TFields, TRequired, THasDefault>;
|
|
90
|
+
readonly _internal: PrimitiveInternal<InferStructState<TFields>, StructProxy<TFields, TRequired, THasDefault>>;
|
|
91
|
+
}
|
|
92
|
+
/** Creates a new StructPrimitive with the given fields */
|
|
93
|
+
declare const Struct: <TFields extends Record<string, AnyPrimitive>>(fields: TFields) => StructPrimitive<TFields, false, false>;
|
|
94
|
+
//#endregion
|
|
95
|
+
export { InferStructSnapshot, InferStructState, Struct, StructPrimitive, StructProxy, StructSetInput, StructUpdateValue };
|
|
96
|
+
//# sourceMappingURL=Struct.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Struct.d.cts","names":[],"sources":["../../src/primitives/Struct.ts"],"sourcesContent":[],"mappings":"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"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { AnyPrimitive, InferProxy, InferSetInput, InferSnapshot, InferState, InferUpdateInput, MaybeUndefined, NeedsValue, Primitive, PrimitiveInternal, Validator } from "./shared.mjs";
|
|
2
|
+
import "../Primitive.mjs";
|
|
3
|
+
|
|
4
|
+
//#region src/primitives/Struct.d.ts
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Determines if a field is required for set() operations.
|
|
8
|
+
* A field is required if: TRequired is true AND THasDefault is false
|
|
9
|
+
*/
|
|
10
|
+
type IsRequiredForSet<T> = T extends Primitive<any, any, true, false> ? true : false;
|
|
11
|
+
/**
|
|
12
|
+
* Extract keys of fields that are required for set() (required without default).
|
|
13
|
+
*/
|
|
14
|
+
type RequiredSetKeys<TFields extends Record<string, AnyPrimitive>> = { [K in keyof TFields]: IsRequiredForSet<TFields[K]> extends true ? K : never }[keyof TFields];
|
|
15
|
+
/**
|
|
16
|
+
* Extract keys of fields that are optional for set() (has default OR not required).
|
|
17
|
+
*/
|
|
18
|
+
type OptionalSetKeys<TFields extends Record<string, AnyPrimitive>> = { [K in keyof TFields]: IsRequiredForSet<TFields[K]> extends true ? never : K }[keyof TFields];
|
|
19
|
+
/**
|
|
20
|
+
* Compute the input type for set() operations on a struct.
|
|
21
|
+
* Required fields (required without default) must be provided.
|
|
22
|
+
* Optional fields (has default or not required) can be omitted.
|
|
23
|
+
* Uses each field's TSetInput type to handle nested structs correctly.
|
|
24
|
+
*/
|
|
25
|
+
type StructSetInput<TFields extends Record<string, AnyPrimitive>> = { readonly [K in RequiredSetKeys<TFields>]: InferSetInput<TFields[K]> } & { readonly [K in OptionalSetKeys<TFields>]?: InferSetInput<TFields[K]> };
|
|
26
|
+
/**
|
|
27
|
+
* Input type for set() - respects required/default status of the struct.
|
|
28
|
+
* If the struct is required without a default, the value must be provided.
|
|
29
|
+
* The value itself uses StructSetInput which handles field-level required/default logic.
|
|
30
|
+
*/
|
|
31
|
+
type InferStructSetInput<TFields extends Record<string, AnyPrimitive>, TRequired extends boolean, THasDefault extends boolean> = NeedsValue<StructSetInput<TFields>, TRequired, THasDefault>;
|
|
32
|
+
/**
|
|
33
|
+
* Input type for update() - always partial since update only modifies specified fields.
|
|
34
|
+
* For nested structs, allows recursive partial updates.
|
|
35
|
+
*/
|
|
36
|
+
type InferStructUpdateInput<TFields extends Record<string, AnyPrimitive>> = StructUpdateValue<TFields>;
|
|
37
|
+
/**
|
|
38
|
+
* Maps a schema definition to its state type.
|
|
39
|
+
* { name: StringPrimitive, age: NumberPrimitive } -> { name: string, age: number }
|
|
40
|
+
*/
|
|
41
|
+
type InferStructState<TFields extends Record<string, AnyPrimitive>> = { readonly [K in keyof TFields]: InferState<TFields[K]> };
|
|
42
|
+
/**
|
|
43
|
+
* Maps a schema definition to its snapshot type.
|
|
44
|
+
* Each field's snapshot type is inferred from the field primitive.
|
|
45
|
+
*/
|
|
46
|
+
type InferStructSnapshot<TFields extends Record<string, AnyPrimitive>> = { readonly [K in keyof TFields]: InferSnapshot<TFields[K]> };
|
|
47
|
+
/**
|
|
48
|
+
* Maps a schema definition to a partial update type.
|
|
49
|
+
* Uses each field's TUpdateInput type, which handles nested updates recursively.
|
|
50
|
+
*/
|
|
51
|
+
type StructUpdateValue<TFields extends Record<string, AnyPrimitive>> = { readonly [K in keyof TFields]?: InferUpdateInput<TFields[K]> };
|
|
52
|
+
/**
|
|
53
|
+
* Maps a schema definition to its proxy type.
|
|
54
|
+
* Provides nested field access + get()/set()/toSnapshot() methods for the whole struct.
|
|
55
|
+
*/
|
|
56
|
+
type StructProxy<TFields extends Record<string, AnyPrimitive>, TRequired extends boolean = false, THasDefault extends boolean = false> = { readonly [K in keyof TFields]: InferProxy<TFields[K]> } & {
|
|
57
|
+
/** Gets the entire struct value */
|
|
58
|
+
get(): MaybeUndefined<InferStructState<TFields>, TRequired, THasDefault>;
|
|
59
|
+
/** Sets the entire struct value (only fields that are required without defaults must be provided) */
|
|
60
|
+
set(value: InferStructSetInput<TFields, TRequired, THasDefault>): void;
|
|
61
|
+
/** Updates only the specified fields (partial update, handles nested structs recursively) */
|
|
62
|
+
update(value: InferStructUpdateInput<TFields>): void;
|
|
63
|
+
/** Returns a readonly snapshot of the struct for rendering */
|
|
64
|
+
toSnapshot(): MaybeUndefined<InferStructSnapshot<TFields>, TRequired, THasDefault>;
|
|
65
|
+
};
|
|
66
|
+
interface StructPrimitiveSchema<TFields extends Record<string, AnyPrimitive>> {
|
|
67
|
+
readonly required: boolean;
|
|
68
|
+
readonly defaultValue: InferStructState<TFields> | undefined;
|
|
69
|
+
readonly fields: TFields;
|
|
70
|
+
readonly validators: readonly Validator<InferStructState<TFields>>[];
|
|
71
|
+
}
|
|
72
|
+
declare class StructPrimitive<TFields extends Record<string, AnyPrimitive>, TRequired extends boolean = false, THasDefault extends boolean = false> implements Primitive<InferStructState<TFields>, StructProxy<TFields, TRequired, THasDefault>, TRequired, THasDefault, InferStructSetInput<TFields, TRequired, THasDefault>, InferStructUpdateInput<TFields>> {
|
|
73
|
+
readonly _tag: "StructPrimitive";
|
|
74
|
+
readonly _State: InferStructState<TFields>;
|
|
75
|
+
readonly _Proxy: StructProxy<TFields, TRequired, THasDefault>;
|
|
76
|
+
readonly _TRequired: TRequired;
|
|
77
|
+
readonly _THasDefault: THasDefault;
|
|
78
|
+
readonly TSetInput: InferStructSetInput<TFields, TRequired, THasDefault>;
|
|
79
|
+
readonly TUpdateInput: InferStructUpdateInput<TFields>;
|
|
80
|
+
private readonly _schema;
|
|
81
|
+
private readonly _opDefinitions;
|
|
82
|
+
constructor(schema: StructPrimitiveSchema<TFields>);
|
|
83
|
+
/** Mark this struct as required */
|
|
84
|
+
required(): StructPrimitive<TFields, true, THasDefault>;
|
|
85
|
+
/** Set a default value for this struct */
|
|
86
|
+
default(defaultValue: StructSetInput<TFields>): StructPrimitive<TFields, TRequired, true>;
|
|
87
|
+
/** Get the fields schema */
|
|
88
|
+
get fields(): TFields;
|
|
89
|
+
/** Add a custom validation rule (useful for cross-field validation) */
|
|
90
|
+
refine(fn: (value: InferStructState<TFields>) => boolean, message: string): StructPrimitive<TFields, TRequired, THasDefault>;
|
|
91
|
+
readonly _internal: PrimitiveInternal<InferStructState<TFields>, StructProxy<TFields, TRequired, THasDefault>>;
|
|
92
|
+
}
|
|
93
|
+
/** Creates a new StructPrimitive with the given fields */
|
|
94
|
+
declare const Struct: <TFields extends Record<string, AnyPrimitive>>(fields: TFields) => StructPrimitive<TFields, false, false>;
|
|
95
|
+
//#endregion
|
|
96
|
+
export { InferStructSnapshot, InferStructState, Struct, StructPrimitive, StructProxy, StructSetInput, StructUpdateValue };
|
|
97
|
+
//# sourceMappingURL=Struct.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Struct.d.mts","names":[],"sources":["../../src/primitives/Struct.ts"],"sourcesContent":[],"mappings":"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"}
|