@nativemason/contracts 0.0.0-stage → 0.2.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.
@@ -0,0 +1,11 @@
1
+ import { z } from 'zod';
2
+ import { SpatialSnapshotSchema } from './graph.js';
3
+ import { SourceRevisionsSchema, BridgeErrorSchema } from './source.js';
4
+ export const NativeClientMessageSchema = z.discriminatedUnion('type', [
5
+ z.object({ type: z.literal('hello'), token: z.string(), scenarioId: z.string(), protocolVersion: z.union([z.literal(1), z.literal(2)]), platform: z.enum(['android', 'ios']).optional(), targetId: z.string().optional(), capabilities: z.object({ textFits: z.boolean(), scenarioActions: z.boolean() }).optional() }).strict(),
6
+ z.object({ type: z.literal('action_result'), requestId: z.string() }).strict(),
7
+ z.object({ type: z.literal('snapshot'), requestId: z.string(), snapshot: SpatialSnapshotSchema }).strict(),
8
+ z.object({ type: z.literal('error'), requestId: z.string(), error: BridgeErrorSchema }).strict()
9
+ ]).superRefine((message, ctx) => { if (message.type === 'hello' && message.protocolVersion === 2 && (!message.platform || !message.targetId || !message.capabilities))
10
+ ctx.addIssue({ code: 'custom', message: 'Protocol v2 requires platform, targetId and capabilities' }); });
11
+ export const NativeServerMessageSchema = z.discriminatedUnion('type', [z.object({ type: z.literal('capture'), requestId: z.string(), sessionId: z.string(), expectedRevisions: SourceRevisionsSchema }).strict(), z.object({ type: z.literal('action'), requestId: z.string(), sessionId: z.string(), name: z.string(), value: z.unknown().optional() }).strict()]);
@@ -0,0 +1,221 @@
1
+ import { z } from 'zod';
2
+ export declare const SourceRefSchema: z.ZodEffects<z.ZodObject<{
3
+ path: z.ZodString;
4
+ styleForm: z.ZodOptional<z.ZodLiteral<"pressable-state">>;
5
+ dependencies: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
6
+ hash: z.ZodString;
7
+ start: z.ZodNumber;
8
+ end: z.ZodNumber;
9
+ line: z.ZodNumber;
10
+ column: z.ZodNumber;
11
+ }, "strict", z.ZodTypeAny, {
12
+ path: string;
13
+ start: number;
14
+ end: number;
15
+ hash: string;
16
+ line: number;
17
+ column: number;
18
+ styleForm?: "pressable-state" | undefined;
19
+ dependencies?: string[] | undefined;
20
+ }, {
21
+ path: string;
22
+ start: number;
23
+ end: number;
24
+ hash: string;
25
+ line: number;
26
+ column: number;
27
+ styleForm?: "pressable-state" | undefined;
28
+ dependencies?: string[] | undefined;
29
+ }>, {
30
+ path: string;
31
+ start: number;
32
+ end: number;
33
+ hash: string;
34
+ line: number;
35
+ column: number;
36
+ styleForm?: "pressable-state" | undefined;
37
+ dependencies?: string[] | undefined;
38
+ }, {
39
+ path: string;
40
+ start: number;
41
+ end: number;
42
+ hash: string;
43
+ line: number;
44
+ column: number;
45
+ styleForm?: "pressable-state" | undefined;
46
+ dependencies?: string[] | undefined;
47
+ }>;
48
+ export type SourceRef = z.infer<typeof SourceRefSchema>;
49
+ export declare const SourceRevisionsSchema: z.ZodRecord<z.ZodString, z.ZodString>;
50
+ export type SourceRevisions = z.infer<typeof SourceRevisionsSchema>;
51
+ export declare const ErrorCodeSchema: z.ZodEnum<["INVALID_INPUT", "MISSING_ELEMENT", "DUPLICATE_ELEMENT", "STALE_SNAPSHOT", "STALE_SOURCE", "UNSUPPORTED_EDIT", "UNSUPPORTED_PROFILE", "UNSTABLE_LAYOUT", "NATIVE_DISCONNECTED", "TIMEOUT", "VERIFICATION_FAILED", "SESSION_NOT_FOUND", "TRIAL_NOT_FOUND", "SOURCE_OUTSIDE_PROJECT", "INTERNAL_ERROR", "RECOVERY_CONFLICT", "TRANSACTION_CONFLICT", "UNSUPPORTED_ACTION", "PROTOCOL_MISMATCH"]>;
52
+ export type ErrorCode = z.infer<typeof ErrorCodeSchema>;
53
+ export declare const BridgeErrorSchema: z.ZodObject<{
54
+ code: z.ZodEnum<["INVALID_INPUT", "MISSING_ELEMENT", "DUPLICATE_ELEMENT", "STALE_SNAPSHOT", "STALE_SOURCE", "UNSUPPORTED_EDIT", "UNSUPPORTED_PROFILE", "UNSTABLE_LAYOUT", "NATIVE_DISCONNECTED", "TIMEOUT", "VERIFICATION_FAILED", "SESSION_NOT_FOUND", "TRIAL_NOT_FOUND", "SOURCE_OUTSIDE_PROJECT", "INTERNAL_ERROR", "RECOVERY_CONFLICT", "TRANSACTION_CONFLICT", "UNSUPPORTED_ACTION", "PROTOCOL_MISMATCH"]>;
55
+ message: z.ZodString;
56
+ details: z.ZodOptional<z.ZodUnknown>;
57
+ }, "strict", z.ZodTypeAny, {
58
+ code: "INVALID_INPUT" | "MISSING_ELEMENT" | "DUPLICATE_ELEMENT" | "STALE_SNAPSHOT" | "STALE_SOURCE" | "UNSUPPORTED_EDIT" | "UNSUPPORTED_PROFILE" | "UNSTABLE_LAYOUT" | "NATIVE_DISCONNECTED" | "TIMEOUT" | "VERIFICATION_FAILED" | "SESSION_NOT_FOUND" | "TRIAL_NOT_FOUND" | "SOURCE_OUTSIDE_PROJECT" | "INTERNAL_ERROR" | "RECOVERY_CONFLICT" | "TRANSACTION_CONFLICT" | "UNSUPPORTED_ACTION" | "PROTOCOL_MISMATCH";
59
+ message: string;
60
+ details?: unknown;
61
+ }, {
62
+ code: "INVALID_INPUT" | "MISSING_ELEMENT" | "DUPLICATE_ELEMENT" | "STALE_SNAPSHOT" | "STALE_SOURCE" | "UNSUPPORTED_EDIT" | "UNSUPPORTED_PROFILE" | "UNSTABLE_LAYOUT" | "NATIVE_DISCONNECTED" | "TIMEOUT" | "VERIFICATION_FAILED" | "SESSION_NOT_FOUND" | "TRIAL_NOT_FOUND" | "SOURCE_OUTSIDE_PROJECT" | "INTERNAL_ERROR" | "RECOVERY_CONFLICT" | "TRANSACTION_CONFLICT" | "UNSUPPORTED_ACTION" | "PROTOCOL_MISMATCH";
63
+ message: string;
64
+ details?: unknown;
65
+ }>;
66
+ export type BridgeError = z.infer<typeof BridgeErrorSchema>;
67
+ export type Result<T> = {
68
+ ok: true;
69
+ value: T;
70
+ } | {
71
+ ok: false;
72
+ error: BridgeError;
73
+ };
74
+ export declare class BridgeFault extends Error {
75
+ readonly code: ErrorCode;
76
+ readonly details?: unknown | undefined;
77
+ constructor(code: ErrorCode, message: string, details?: unknown | undefined);
78
+ }
79
+ export interface SourceFile {
80
+ path: string;
81
+ text: string;
82
+ hash: string;
83
+ }
84
+ export declare const EditPlanSchema: z.ZodObject<{
85
+ source: z.ZodEffects<z.ZodObject<{
86
+ path: z.ZodString;
87
+ styleForm: z.ZodOptional<z.ZodLiteral<"pressable-state">>;
88
+ dependencies: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
89
+ hash: z.ZodString;
90
+ start: z.ZodNumber;
91
+ end: z.ZodNumber;
92
+ line: z.ZodNumber;
93
+ column: z.ZodNumber;
94
+ }, "strict", z.ZodTypeAny, {
95
+ path: string;
96
+ start: number;
97
+ end: number;
98
+ hash: string;
99
+ line: number;
100
+ column: number;
101
+ styleForm?: "pressable-state" | undefined;
102
+ dependencies?: string[] | undefined;
103
+ }, {
104
+ path: string;
105
+ start: number;
106
+ end: number;
107
+ hash: string;
108
+ line: number;
109
+ column: number;
110
+ styleForm?: "pressable-state" | undefined;
111
+ dependencies?: string[] | undefined;
112
+ }>, {
113
+ path: string;
114
+ start: number;
115
+ end: number;
116
+ hash: string;
117
+ line: number;
118
+ column: number;
119
+ styleForm?: "pressable-state" | undefined;
120
+ dependencies?: string[] | undefined;
121
+ }, {
122
+ path: string;
123
+ start: number;
124
+ end: number;
125
+ hash: string;
126
+ line: number;
127
+ column: number;
128
+ styleForm?: "pressable-state" | undefined;
129
+ dependencies?: string[] | undefined;
130
+ }>;
131
+ expectedHash: z.ZodString;
132
+ updatedText: z.ZodString;
133
+ diff: z.ZodString;
134
+ }, "strict", z.ZodTypeAny, {
135
+ source: {
136
+ path: string;
137
+ start: number;
138
+ end: number;
139
+ hash: string;
140
+ line: number;
141
+ column: number;
142
+ styleForm?: "pressable-state" | undefined;
143
+ dependencies?: string[] | undefined;
144
+ };
145
+ expectedHash: string;
146
+ updatedText: string;
147
+ diff: string;
148
+ }, {
149
+ source: {
150
+ path: string;
151
+ start: number;
152
+ end: number;
153
+ hash: string;
154
+ line: number;
155
+ column: number;
156
+ styleForm?: "pressable-state" | undefined;
157
+ dependencies?: string[] | undefined;
158
+ };
159
+ expectedHash: string;
160
+ updatedText: string;
161
+ diff: string;
162
+ }>;
163
+ export type EditPlan = z.infer<typeof EditPlanSchema>;
164
+ export declare const CommitReceiptSchema: z.ZodObject<{
165
+ commitId: z.ZodString;
166
+ path: z.ZodString;
167
+ oldHash: z.ZodString;
168
+ newHash: z.ZodString;
169
+ diff: z.ZodString;
170
+ files: z.ZodOptional<z.ZodArray<z.ZodObject<{
171
+ path: z.ZodString;
172
+ oldHash: z.ZodString;
173
+ newHash: z.ZodString;
174
+ diff: z.ZodString;
175
+ }, "strict", z.ZodTypeAny, {
176
+ path: string;
177
+ diff: string;
178
+ oldHash: string;
179
+ newHash: string;
180
+ }, {
181
+ path: string;
182
+ diff: string;
183
+ oldHash: string;
184
+ newHash: string;
185
+ }>, "many">>;
186
+ revertsCommitId: z.ZodOptional<z.ZodString>;
187
+ nativeStatus: z.ZodEnum<["pending", "passed", "failed"]>;
188
+ }, "strict", z.ZodTypeAny, {
189
+ path: string;
190
+ diff: string;
191
+ commitId: string;
192
+ oldHash: string;
193
+ newHash: string;
194
+ nativeStatus: "pending" | "passed" | "failed";
195
+ files?: {
196
+ path: string;
197
+ diff: string;
198
+ oldHash: string;
199
+ newHash: string;
200
+ }[] | undefined;
201
+ revertsCommitId?: string | undefined;
202
+ }, {
203
+ path: string;
204
+ diff: string;
205
+ commitId: string;
206
+ oldHash: string;
207
+ newHash: string;
208
+ nativeStatus: "pending" | "passed" | "failed";
209
+ files?: {
210
+ path: string;
211
+ diff: string;
212
+ oldHash: string;
213
+ newHash: string;
214
+ }[] | undefined;
215
+ revertsCommitId?: string | undefined;
216
+ }>;
217
+ export type CommitReceipt = z.infer<typeof CommitReceiptSchema>;
218
+ export interface SourcePort {
219
+ read(path: string): Promise<SourceFile>;
220
+ apply(plan: EditPlan): Promise<CommitReceipt>;
221
+ }
package/dist/source.js ADDED
@@ -0,0 +1,17 @@
1
+ import { z } from 'zod';
2
+ export const SourceRefSchema = z.object({ path: z.string().min(1), styleForm: z.literal('pressable-state').optional(), dependencies: z.array(z.string().min(1)).optional(), hash: z.string().regex(/^[a-f0-9]{64}$/), start: z.number().int().nonnegative(), end: z.number().int().positive(), line: z.number().int().positive(), column: z.number().int().nonnegative() }).strict().refine(s => s.end > s.start, 'Invalid source range');
3
+ export const SourceRevisionsSchema = z.record(z.string(), z.string().regex(/^[a-f0-9]{64}$/));
4
+ export const ErrorCodeSchema = z.enum(['INVALID_INPUT', 'MISSING_ELEMENT', 'DUPLICATE_ELEMENT', 'STALE_SNAPSHOT', 'STALE_SOURCE', 'UNSUPPORTED_EDIT', 'UNSUPPORTED_PROFILE', 'UNSTABLE_LAYOUT', 'NATIVE_DISCONNECTED', 'TIMEOUT', 'VERIFICATION_FAILED', 'SESSION_NOT_FOUND', 'TRIAL_NOT_FOUND', 'SOURCE_OUTSIDE_PROJECT', 'INTERNAL_ERROR', 'RECOVERY_CONFLICT', 'TRANSACTION_CONFLICT', 'UNSUPPORTED_ACTION', 'PROTOCOL_MISMATCH']);
5
+ export const BridgeErrorSchema = z.object({ code: ErrorCodeSchema, message: z.string(), details: z.unknown().optional() }).strict();
6
+ export class BridgeFault extends Error {
7
+ code;
8
+ details;
9
+ constructor(code, message, details) {
10
+ super(message);
11
+ this.code = code;
12
+ this.details = details;
13
+ this.name = 'BridgeFault';
14
+ }
15
+ }
16
+ export const EditPlanSchema = z.object({ source: SourceRefSchema, expectedHash: z.string(), updatedText: z.string(), diff: z.string() }).strict();
17
+ export const CommitReceiptSchema = z.object({ commitId: z.string(), path: z.string(), oldHash: z.string(), newHash: z.string(), diff: z.string(), files: z.array(z.object({ path: z.string(), oldHash: z.string(), newHash: z.string(), diff: z.string() }).strict()).optional(), revertsCommitId: z.string().optional(), nativeStatus: z.enum(['pending', 'passed', 'failed']) }).strict();
@@ -0,0 +1,249 @@
1
+ import { z } from 'zod';
2
+ export declare const RnStylePatchSchema: z.ZodEffects<z.ZodObject<{
3
+ flex: z.ZodOptional<z.ZodNumber>;
4
+ flexWrap: z.ZodOptional<z.ZodEnum<["wrap", "nowrap", "wrap-reverse"]>>;
5
+ alignContent: z.ZodOptional<z.ZodEnum<["flex-start", "flex-end", "center", "stretch", "space-between", "space-around"]>>;
6
+ position: z.ZodOptional<z.ZodEnum<["relative", "absolute", "static"]>>;
7
+ top: z.ZodOptional<z.ZodNumber>;
8
+ bottom: z.ZodOptional<z.ZodNumber>;
9
+ left: z.ZodOptional<z.ZodNumber>;
10
+ right: z.ZodOptional<z.ZodNumber>;
11
+ start: z.ZodOptional<z.ZodNumber>;
12
+ end: z.ZodOptional<z.ZodNumber>;
13
+ aspectRatio: z.ZodOptional<z.ZodNumber>;
14
+ paddingStart: z.ZodOptional<z.ZodNumber>;
15
+ paddingEnd: z.ZodOptional<z.ZodNumber>;
16
+ marginStart: z.ZodOptional<z.ZodNumber>;
17
+ marginEnd: z.ZodOptional<z.ZodNumber>;
18
+ fontSize: z.ZodOptional<z.ZodNumber>;
19
+ lineHeight: z.ZodOptional<z.ZodNumber>;
20
+ fontFamily: z.ZodOptional<z.ZodString>;
21
+ fontWeight: z.ZodOptional<z.ZodEnum<["normal", "bold", "100", "200", "300", "400", "500", "600", "700", "800", "900"]>>;
22
+ flexDirection: z.ZodOptional<z.ZodEnum<["row", "column", "row-reverse", "column-reverse"]>>;
23
+ justifyContent: z.ZodOptional<z.ZodEnum<["flex-start", "flex-end", "center", "space-between", "space-around", "space-evenly"]>>;
24
+ alignItems: z.ZodOptional<z.ZodEnum<["flex-start", "flex-end", "center", "stretch", "baseline"]>>;
25
+ alignSelf: z.ZodOptional<z.ZodEnum<["auto", "flex-start", "flex-end", "center", "stretch", "baseline"]>>;
26
+ flexGrow: z.ZodOptional<z.ZodNumber>;
27
+ flexShrink: z.ZodOptional<z.ZodNumber>;
28
+ width: z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodString]>>;
29
+ height: z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodString]>>;
30
+ minWidth: z.ZodOptional<z.ZodNumber>;
31
+ maxWidth: z.ZodOptional<z.ZodNumber>;
32
+ minHeight: z.ZodOptional<z.ZodNumber>;
33
+ maxHeight: z.ZodOptional<z.ZodNumber>;
34
+ gap: z.ZodOptional<z.ZodNumber>;
35
+ rowGap: z.ZodOptional<z.ZodNumber>;
36
+ columnGap: z.ZodOptional<z.ZodNumber>;
37
+ padding: z.ZodOptional<z.ZodNumber>;
38
+ paddingHorizontal: z.ZodOptional<z.ZodNumber>;
39
+ paddingVertical: z.ZodOptional<z.ZodNumber>;
40
+ paddingTop: z.ZodOptional<z.ZodNumber>;
41
+ paddingBottom: z.ZodOptional<z.ZodNumber>;
42
+ paddingLeft: z.ZodOptional<z.ZodNumber>;
43
+ paddingRight: z.ZodOptional<z.ZodNumber>;
44
+ margin: z.ZodOptional<z.ZodNumber>;
45
+ marginHorizontal: z.ZodOptional<z.ZodNumber>;
46
+ marginVertical: z.ZodOptional<z.ZodNumber>;
47
+ marginTop: z.ZodOptional<z.ZodNumber>;
48
+ marginBottom: z.ZodOptional<z.ZodNumber>;
49
+ marginLeft: z.ZodOptional<z.ZodNumber>;
50
+ marginRight: z.ZodOptional<z.ZodNumber>;
51
+ }, "strict", z.ZodTypeAny, {
52
+ width?: string | number | undefined;
53
+ height?: string | number | undefined;
54
+ top?: number | undefined;
55
+ right?: number | undefined;
56
+ bottom?: number | undefined;
57
+ left?: number | undefined;
58
+ start?: number | undefined;
59
+ end?: number | undefined;
60
+ gap?: number | undefined;
61
+ flex?: number | undefined;
62
+ flexWrap?: "wrap" | "nowrap" | "wrap-reverse" | undefined;
63
+ alignContent?: "center" | "flex-start" | "flex-end" | "stretch" | "space-between" | "space-around" | undefined;
64
+ position?: "relative" | "absolute" | "static" | undefined;
65
+ aspectRatio?: number | undefined;
66
+ paddingStart?: number | undefined;
67
+ paddingEnd?: number | undefined;
68
+ marginStart?: number | undefined;
69
+ marginEnd?: number | undefined;
70
+ fontSize?: number | undefined;
71
+ lineHeight?: number | undefined;
72
+ fontFamily?: string | undefined;
73
+ fontWeight?: "normal" | "bold" | "100" | "200" | "300" | "400" | "500" | "600" | "700" | "800" | "900" | undefined;
74
+ flexDirection?: "column" | "row" | "row-reverse" | "column-reverse" | undefined;
75
+ justifyContent?: "center" | "flex-start" | "flex-end" | "space-between" | "space-around" | "space-evenly" | undefined;
76
+ alignItems?: "center" | "flex-start" | "flex-end" | "stretch" | "baseline" | undefined;
77
+ alignSelf?: "center" | "flex-start" | "flex-end" | "stretch" | "baseline" | "auto" | undefined;
78
+ flexGrow?: number | undefined;
79
+ flexShrink?: number | undefined;
80
+ minWidth?: number | undefined;
81
+ maxWidth?: number | undefined;
82
+ minHeight?: number | undefined;
83
+ maxHeight?: number | undefined;
84
+ rowGap?: number | undefined;
85
+ columnGap?: number | undefined;
86
+ padding?: number | undefined;
87
+ paddingHorizontal?: number | undefined;
88
+ paddingVertical?: number | undefined;
89
+ paddingTop?: number | undefined;
90
+ paddingBottom?: number | undefined;
91
+ paddingLeft?: number | undefined;
92
+ paddingRight?: number | undefined;
93
+ margin?: number | undefined;
94
+ marginHorizontal?: number | undefined;
95
+ marginVertical?: number | undefined;
96
+ marginTop?: number | undefined;
97
+ marginBottom?: number | undefined;
98
+ marginLeft?: number | undefined;
99
+ marginRight?: number | undefined;
100
+ }, {
101
+ width?: string | number | undefined;
102
+ height?: string | number | undefined;
103
+ top?: number | undefined;
104
+ right?: number | undefined;
105
+ bottom?: number | undefined;
106
+ left?: number | undefined;
107
+ start?: number | undefined;
108
+ end?: number | undefined;
109
+ gap?: number | undefined;
110
+ flex?: number | undefined;
111
+ flexWrap?: "wrap" | "nowrap" | "wrap-reverse" | undefined;
112
+ alignContent?: "center" | "flex-start" | "flex-end" | "stretch" | "space-between" | "space-around" | undefined;
113
+ position?: "relative" | "absolute" | "static" | undefined;
114
+ aspectRatio?: number | undefined;
115
+ paddingStart?: number | undefined;
116
+ paddingEnd?: number | undefined;
117
+ marginStart?: number | undefined;
118
+ marginEnd?: number | undefined;
119
+ fontSize?: number | undefined;
120
+ lineHeight?: number | undefined;
121
+ fontFamily?: string | undefined;
122
+ fontWeight?: "normal" | "bold" | "100" | "200" | "300" | "400" | "500" | "600" | "700" | "800" | "900" | undefined;
123
+ flexDirection?: "column" | "row" | "row-reverse" | "column-reverse" | undefined;
124
+ justifyContent?: "center" | "flex-start" | "flex-end" | "space-between" | "space-around" | "space-evenly" | undefined;
125
+ alignItems?: "center" | "flex-start" | "flex-end" | "stretch" | "baseline" | undefined;
126
+ alignSelf?: "center" | "flex-start" | "flex-end" | "stretch" | "baseline" | "auto" | undefined;
127
+ flexGrow?: number | undefined;
128
+ flexShrink?: number | undefined;
129
+ minWidth?: number | undefined;
130
+ maxWidth?: number | undefined;
131
+ minHeight?: number | undefined;
132
+ maxHeight?: number | undefined;
133
+ rowGap?: number | undefined;
134
+ columnGap?: number | undefined;
135
+ padding?: number | undefined;
136
+ paddingHorizontal?: number | undefined;
137
+ paddingVertical?: number | undefined;
138
+ paddingTop?: number | undefined;
139
+ paddingBottom?: number | undefined;
140
+ paddingLeft?: number | undefined;
141
+ paddingRight?: number | undefined;
142
+ margin?: number | undefined;
143
+ marginHorizontal?: number | undefined;
144
+ marginVertical?: number | undefined;
145
+ marginTop?: number | undefined;
146
+ marginBottom?: number | undefined;
147
+ marginLeft?: number | undefined;
148
+ marginRight?: number | undefined;
149
+ }>, {
150
+ width?: string | number | undefined;
151
+ height?: string | number | undefined;
152
+ top?: number | undefined;
153
+ right?: number | undefined;
154
+ bottom?: number | undefined;
155
+ left?: number | undefined;
156
+ start?: number | undefined;
157
+ end?: number | undefined;
158
+ gap?: number | undefined;
159
+ flex?: number | undefined;
160
+ flexWrap?: "wrap" | "nowrap" | "wrap-reverse" | undefined;
161
+ alignContent?: "center" | "flex-start" | "flex-end" | "stretch" | "space-between" | "space-around" | undefined;
162
+ position?: "relative" | "absolute" | "static" | undefined;
163
+ aspectRatio?: number | undefined;
164
+ paddingStart?: number | undefined;
165
+ paddingEnd?: number | undefined;
166
+ marginStart?: number | undefined;
167
+ marginEnd?: number | undefined;
168
+ fontSize?: number | undefined;
169
+ lineHeight?: number | undefined;
170
+ fontFamily?: string | undefined;
171
+ fontWeight?: "normal" | "bold" | "100" | "200" | "300" | "400" | "500" | "600" | "700" | "800" | "900" | undefined;
172
+ flexDirection?: "column" | "row" | "row-reverse" | "column-reverse" | undefined;
173
+ justifyContent?: "center" | "flex-start" | "flex-end" | "space-between" | "space-around" | "space-evenly" | undefined;
174
+ alignItems?: "center" | "flex-start" | "flex-end" | "stretch" | "baseline" | undefined;
175
+ alignSelf?: "center" | "flex-start" | "flex-end" | "stretch" | "baseline" | "auto" | undefined;
176
+ flexGrow?: number | undefined;
177
+ flexShrink?: number | undefined;
178
+ minWidth?: number | undefined;
179
+ maxWidth?: number | undefined;
180
+ minHeight?: number | undefined;
181
+ maxHeight?: number | undefined;
182
+ rowGap?: number | undefined;
183
+ columnGap?: number | undefined;
184
+ padding?: number | undefined;
185
+ paddingHorizontal?: number | undefined;
186
+ paddingVertical?: number | undefined;
187
+ paddingTop?: number | undefined;
188
+ paddingBottom?: number | undefined;
189
+ paddingLeft?: number | undefined;
190
+ paddingRight?: number | undefined;
191
+ margin?: number | undefined;
192
+ marginHorizontal?: number | undefined;
193
+ marginVertical?: number | undefined;
194
+ marginTop?: number | undefined;
195
+ marginBottom?: number | undefined;
196
+ marginLeft?: number | undefined;
197
+ marginRight?: number | undefined;
198
+ }, {
199
+ width?: string | number | undefined;
200
+ height?: string | number | undefined;
201
+ top?: number | undefined;
202
+ right?: number | undefined;
203
+ bottom?: number | undefined;
204
+ left?: number | undefined;
205
+ start?: number | undefined;
206
+ end?: number | undefined;
207
+ gap?: number | undefined;
208
+ flex?: number | undefined;
209
+ flexWrap?: "wrap" | "nowrap" | "wrap-reverse" | undefined;
210
+ alignContent?: "center" | "flex-start" | "flex-end" | "stretch" | "space-between" | "space-around" | undefined;
211
+ position?: "relative" | "absolute" | "static" | undefined;
212
+ aspectRatio?: number | undefined;
213
+ paddingStart?: number | undefined;
214
+ paddingEnd?: number | undefined;
215
+ marginStart?: number | undefined;
216
+ marginEnd?: number | undefined;
217
+ fontSize?: number | undefined;
218
+ lineHeight?: number | undefined;
219
+ fontFamily?: string | undefined;
220
+ fontWeight?: "normal" | "bold" | "100" | "200" | "300" | "400" | "500" | "600" | "700" | "800" | "900" | undefined;
221
+ flexDirection?: "column" | "row" | "row-reverse" | "column-reverse" | undefined;
222
+ justifyContent?: "center" | "flex-start" | "flex-end" | "space-between" | "space-around" | "space-evenly" | undefined;
223
+ alignItems?: "center" | "flex-start" | "flex-end" | "stretch" | "baseline" | undefined;
224
+ alignSelf?: "center" | "flex-start" | "flex-end" | "stretch" | "baseline" | "auto" | undefined;
225
+ flexGrow?: number | undefined;
226
+ flexShrink?: number | undefined;
227
+ minWidth?: number | undefined;
228
+ maxWidth?: number | undefined;
229
+ minHeight?: number | undefined;
230
+ maxHeight?: number | undefined;
231
+ rowGap?: number | undefined;
232
+ columnGap?: number | undefined;
233
+ padding?: number | undefined;
234
+ paddingHorizontal?: number | undefined;
235
+ paddingVertical?: number | undefined;
236
+ paddingTop?: number | undefined;
237
+ paddingBottom?: number | undefined;
238
+ paddingLeft?: number | undefined;
239
+ paddingRight?: number | undefined;
240
+ margin?: number | undefined;
241
+ marginHorizontal?: number | undefined;
242
+ marginVertical?: number | undefined;
243
+ marginTop?: number | undefined;
244
+ marginBottom?: number | undefined;
245
+ marginLeft?: number | undefined;
246
+ marginRight?: number | undefined;
247
+ }>;
248
+ export type RnStylePatch = z.infer<typeof RnStylePatchSchema>;
249
+ export type NormalizedPatch = Readonly<RnStylePatch>;
package/dist/styles.js ADDED
@@ -0,0 +1,3 @@
1
+ import { z } from 'zod';
2
+ const n = z.number().finite().nonnegative();
3
+ export const RnStylePatchSchema = z.object({ flex: z.number().finite().optional(), flexWrap: z.enum(['wrap', 'nowrap', 'wrap-reverse']).optional(), alignContent: z.enum(['flex-start', 'flex-end', 'center', 'stretch', 'space-between', 'space-around']).optional(), position: z.enum(['relative', 'absolute', 'static']).optional(), top: z.number().finite().optional(), bottom: z.number().finite().optional(), left: z.number().finite().optional(), right: z.number().finite().optional(), start: z.number().finite().optional(), end: z.number().finite().optional(), aspectRatio: z.number().positive().optional(), paddingStart: n.optional(), paddingEnd: n.optional(), marginStart: z.number().finite().optional(), marginEnd: z.number().finite().optional(), fontSize: n.optional(), lineHeight: n.optional(), fontFamily: z.string().min(1).optional(), fontWeight: z.enum(['normal', 'bold', '100', '200', '300', '400', '500', '600', '700', '800', '900']).optional(), flexDirection: z.enum(['row', 'column', 'row-reverse', 'column-reverse']).optional(), justifyContent: z.enum(['flex-start', 'flex-end', 'center', 'space-between', 'space-around', 'space-evenly']).optional(), alignItems: z.enum(['flex-start', 'flex-end', 'center', 'stretch', 'baseline']).optional(), alignSelf: z.enum(['auto', 'flex-start', 'flex-end', 'center', 'stretch', 'baseline']).optional(), flexGrow: n.optional(), flexShrink: n.optional(), width: z.union([n, z.string().regex(/^\d+(?:\.\d+)?%$/)]).optional(), height: z.union([n, z.string().regex(/^\d+(?:\.\d+)?%$/)]).optional(), minWidth: n.optional(), maxWidth: n.optional(), minHeight: n.optional(), maxHeight: n.optional(), gap: n.optional(), rowGap: n.optional(), columnGap: n.optional(), padding: n.optional(), paddingHorizontal: n.optional(), paddingVertical: n.optional(), paddingTop: n.optional(), paddingBottom: n.optional(), paddingLeft: n.optional(), paddingRight: n.optional(), margin: z.number().finite().optional(), marginHorizontal: z.number().finite().optional(), marginVertical: z.number().finite().optional(), marginTop: z.number().finite().optional(), marginBottom: z.number().finite().optional(), marginLeft: z.number().finite().optional(), marginRight: z.number().finite().optional() }).strict().refine(p => Object.keys(p).length > 0, 'Patch must not be empty');