@shoplix-ai/sdui-schema 1.13.0 → 1.14.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.
- package/dist/account-settings.d.ts +187 -0
- package/dist/account-settings.d.ts.map +1 -0
- package/dist/account-settings.js +113 -0
- package/dist/account-settings.js.map +1 -0
- package/dist/action.d.ts +18 -3
- package/dist/action.d.ts.map +1 -1
- package/dist/action.js +11 -3
- package/dist/action.js.map +1 -1
- package/dist/assets.d.ts.map +1 -1
- package/dist/assets.js +47 -4
- package/dist/assets.js.map +1 -1
- package/dist/binding.d.ts +76 -1
- package/dist/binding.d.ts.map +1 -1
- package/dist/binding.js +49 -1
- package/dist/binding.js.map +1 -1
- package/dist/block-definition.d.ts +470 -3
- package/dist/block-definition.d.ts.map +1 -1
- package/dist/block-definition.js +9 -3
- package/dist/block-definition.js.map +1 -1
- package/dist/blocks.d.ts +491 -12
- package/dist/blocks.d.ts.map +1 -1
- package/dist/blocks.js +108 -3
- package/dist/blocks.js.map +1 -1
- package/dist/deep-link.d.ts +37 -0
- package/dist/deep-link.d.ts.map +1 -0
- package/dist/deep-link.js +51 -0
- package/dist/deep-link.js.map +1 -0
- package/dist/definition-validator.d.ts +1 -0
- package/dist/definition-validator.d.ts.map +1 -1
- package/dist/definition-validator.js +10 -4
- package/dist/definition-validator.js.map +1 -1
- package/dist/display.d.ts +218 -2
- package/dist/display.d.ts.map +1 -1
- package/dist/display.js +123 -1
- package/dist/display.js.map +1 -1
- package/dist/envelope.d.ts +954 -0
- package/dist/envelope.d.ts.map +1 -1
- package/dist/envelope.js +2 -0
- package/dist/envelope.js.map +1 -1
- package/dist/index.d.ts +12 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -5
- package/dist/index.js.map +1 -1
- package/dist/manifest.d.ts.map +1 -1
- package/dist/manifest.js +5 -0
- package/dist/manifest.js.map +1 -1
- package/dist/parse.d.ts +6 -1
- package/dist/parse.d.ts.map +1 -1
- package/dist/parse.js +14 -1
- package/dist/parse.js.map +1 -1
- package/dist/primitives.d.ts +28 -0
- package/dist/primitives.d.ts.map +1 -1
- package/dist/screen.d.ts +31 -5
- package/dist/screen.d.ts.map +1 -1
- package/dist/screen.js +39 -10
- package/dist/screen.js.map +1 -1
- package/dist/theme.d.ts +4 -0
- package/dist/theme.d.ts.map +1 -1
- package/dist/theme.js +12 -4
- package/dist/theme.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* The key of one Profile Field: the metafield key a custom field is written
|
|
4
|
+
* under, and the name a fixed field is read by. Snake case, the way a
|
|
5
|
+
* setting key is written.
|
|
6
|
+
*/
|
|
7
|
+
export declare const profileFieldKeySchema: z.ZodString;
|
|
8
|
+
/** What the merchant decides for each Profile Field: not asked, asked, or asked and needed. */
|
|
9
|
+
export declare const PROFILE_FIELD_STATES: readonly ["hidden", "optional", "required"];
|
|
10
|
+
export type ProfileFieldState = (typeof PROFILE_FIELD_STATES)[number];
|
|
11
|
+
/** The fixed catalog: the two names on the customer record, and two app-owned metafields. */
|
|
12
|
+
export declare const FIXED_PROFILE_FIELDS: readonly ["first_name", "last_name", "birthday", "gender"];
|
|
13
|
+
/** What a merchant-defined field asks for: a short text, or one choice from a list. */
|
|
14
|
+
export declare const CUSTOM_PROFILE_FIELD_TYPES: readonly ["short_text", "single_choice"];
|
|
15
|
+
export type CustomProfileFieldType = (typeof CUSTOM_PROFILE_FIELD_TYPES)[number];
|
|
16
|
+
export declare const PROFILE_FIELD_LIMITS: {
|
|
17
|
+
readonly maxCustomFields: 5;
|
|
18
|
+
readonly maxChoices: 12;
|
|
19
|
+
};
|
|
20
|
+
declare const fixedProfileFieldSchema: z.ZodObject<{
|
|
21
|
+
state: z.ZodEnum<{
|
|
22
|
+
optional: "optional";
|
|
23
|
+
hidden: "hidden";
|
|
24
|
+
required: "required";
|
|
25
|
+
}>;
|
|
26
|
+
label: z.ZodRecord<z.ZodString, z.ZodString>;
|
|
27
|
+
}, z.core.$strict>;
|
|
28
|
+
declare const customProfileFieldSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
29
|
+
type: z.ZodLiteral<"short_text">;
|
|
30
|
+
key: z.ZodString;
|
|
31
|
+
state: z.ZodEnum<{
|
|
32
|
+
optional: "optional";
|
|
33
|
+
hidden: "hidden";
|
|
34
|
+
required: "required";
|
|
35
|
+
}>;
|
|
36
|
+
label: z.ZodRecord<z.ZodString, z.ZodString>;
|
|
37
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
38
|
+
type: z.ZodLiteral<"single_choice">;
|
|
39
|
+
choices: z.ZodArray<z.ZodObject<{
|
|
40
|
+
value: z.ZodString;
|
|
41
|
+
label: z.ZodRecord<z.ZodString, z.ZodString>;
|
|
42
|
+
}, z.core.$strict>>;
|
|
43
|
+
key: z.ZodString;
|
|
44
|
+
state: z.ZodEnum<{
|
|
45
|
+
optional: "optional";
|
|
46
|
+
hidden: "hidden";
|
|
47
|
+
required: "required";
|
|
48
|
+
}>;
|
|
49
|
+
label: z.ZodRecord<z.ZodString, z.ZodString>;
|
|
50
|
+
}, z.core.$strict>], "type">;
|
|
51
|
+
/**
|
|
52
|
+
* The Profile Fields catalog: the fixed four, each hidden, optional or
|
|
53
|
+
* required under its own label, and up to five fields of the merchant's
|
|
54
|
+
* own, each under a key no fixed field owns.
|
|
55
|
+
*/
|
|
56
|
+
declare const profileFieldsSchema: z.ZodObject<{
|
|
57
|
+
firstName: z.ZodObject<{
|
|
58
|
+
state: z.ZodEnum<{
|
|
59
|
+
optional: "optional";
|
|
60
|
+
hidden: "hidden";
|
|
61
|
+
required: "required";
|
|
62
|
+
}>;
|
|
63
|
+
label: z.ZodRecord<z.ZodString, z.ZodString>;
|
|
64
|
+
}, z.core.$strict>;
|
|
65
|
+
lastName: z.ZodObject<{
|
|
66
|
+
state: z.ZodEnum<{
|
|
67
|
+
optional: "optional";
|
|
68
|
+
hidden: "hidden";
|
|
69
|
+
required: "required";
|
|
70
|
+
}>;
|
|
71
|
+
label: z.ZodRecord<z.ZodString, z.ZodString>;
|
|
72
|
+
}, z.core.$strict>;
|
|
73
|
+
birthday: z.ZodObject<{
|
|
74
|
+
state: z.ZodEnum<{
|
|
75
|
+
optional: "optional";
|
|
76
|
+
hidden: "hidden";
|
|
77
|
+
required: "required";
|
|
78
|
+
}>;
|
|
79
|
+
label: z.ZodRecord<z.ZodString, z.ZodString>;
|
|
80
|
+
}, z.core.$strict>;
|
|
81
|
+
gender: z.ZodObject<{
|
|
82
|
+
state: z.ZodEnum<{
|
|
83
|
+
optional: "optional";
|
|
84
|
+
hidden: "hidden";
|
|
85
|
+
required: "required";
|
|
86
|
+
}>;
|
|
87
|
+
label: z.ZodRecord<z.ZodString, z.ZodString>;
|
|
88
|
+
}, z.core.$strict>;
|
|
89
|
+
custom: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
90
|
+
type: z.ZodLiteral<"short_text">;
|
|
91
|
+
key: z.ZodString;
|
|
92
|
+
state: z.ZodEnum<{
|
|
93
|
+
optional: "optional";
|
|
94
|
+
hidden: "hidden";
|
|
95
|
+
required: "required";
|
|
96
|
+
}>;
|
|
97
|
+
label: z.ZodRecord<z.ZodString, z.ZodString>;
|
|
98
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
99
|
+
type: z.ZodLiteral<"single_choice">;
|
|
100
|
+
choices: z.ZodArray<z.ZodObject<{
|
|
101
|
+
value: z.ZodString;
|
|
102
|
+
label: z.ZodRecord<z.ZodString, z.ZodString>;
|
|
103
|
+
}, z.core.$strict>>;
|
|
104
|
+
key: z.ZodString;
|
|
105
|
+
state: z.ZodEnum<{
|
|
106
|
+
optional: "optional";
|
|
107
|
+
hidden: "hidden";
|
|
108
|
+
required: "required";
|
|
109
|
+
}>;
|
|
110
|
+
label: z.ZodRecord<z.ZodString, z.ZodString>;
|
|
111
|
+
}, z.core.$strict>], "type">>;
|
|
112
|
+
}, z.core.$strict>;
|
|
113
|
+
/**
|
|
114
|
+
* The Account settings, a theme-level group the Shell carries beside the
|
|
115
|
+
* drawer setting: the Profile Fields catalog, and the merchant's own copy
|
|
116
|
+
* the Deletion Sheet shows above the facts the law requires. A Shell that
|
|
117
|
+
* carries none is a design that chose nothing, which a device reads as the
|
|
118
|
+
* default settings.
|
|
119
|
+
*/
|
|
120
|
+
export declare const accountSettingsSchema: z.ZodObject<{
|
|
121
|
+
profileFields: z.ZodObject<{
|
|
122
|
+
firstName: z.ZodObject<{
|
|
123
|
+
state: z.ZodEnum<{
|
|
124
|
+
optional: "optional";
|
|
125
|
+
hidden: "hidden";
|
|
126
|
+
required: "required";
|
|
127
|
+
}>;
|
|
128
|
+
label: z.ZodRecord<z.ZodString, z.ZodString>;
|
|
129
|
+
}, z.core.$strict>;
|
|
130
|
+
lastName: z.ZodObject<{
|
|
131
|
+
state: z.ZodEnum<{
|
|
132
|
+
optional: "optional";
|
|
133
|
+
hidden: "hidden";
|
|
134
|
+
required: "required";
|
|
135
|
+
}>;
|
|
136
|
+
label: z.ZodRecord<z.ZodString, z.ZodString>;
|
|
137
|
+
}, z.core.$strict>;
|
|
138
|
+
birthday: z.ZodObject<{
|
|
139
|
+
state: z.ZodEnum<{
|
|
140
|
+
optional: "optional";
|
|
141
|
+
hidden: "hidden";
|
|
142
|
+
required: "required";
|
|
143
|
+
}>;
|
|
144
|
+
label: z.ZodRecord<z.ZodString, z.ZodString>;
|
|
145
|
+
}, z.core.$strict>;
|
|
146
|
+
gender: z.ZodObject<{
|
|
147
|
+
state: z.ZodEnum<{
|
|
148
|
+
optional: "optional";
|
|
149
|
+
hidden: "hidden";
|
|
150
|
+
required: "required";
|
|
151
|
+
}>;
|
|
152
|
+
label: z.ZodRecord<z.ZodString, z.ZodString>;
|
|
153
|
+
}, z.core.$strict>;
|
|
154
|
+
custom: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
155
|
+
type: z.ZodLiteral<"short_text">;
|
|
156
|
+
key: z.ZodString;
|
|
157
|
+
state: z.ZodEnum<{
|
|
158
|
+
optional: "optional";
|
|
159
|
+
hidden: "hidden";
|
|
160
|
+
required: "required";
|
|
161
|
+
}>;
|
|
162
|
+
label: z.ZodRecord<z.ZodString, z.ZodString>;
|
|
163
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
164
|
+
type: z.ZodLiteral<"single_choice">;
|
|
165
|
+
choices: z.ZodArray<z.ZodObject<{
|
|
166
|
+
value: z.ZodString;
|
|
167
|
+
label: z.ZodRecord<z.ZodString, z.ZodString>;
|
|
168
|
+
}, z.core.$strict>>;
|
|
169
|
+
key: z.ZodString;
|
|
170
|
+
state: z.ZodEnum<{
|
|
171
|
+
optional: "optional";
|
|
172
|
+
hidden: "hidden";
|
|
173
|
+
required: "required";
|
|
174
|
+
}>;
|
|
175
|
+
label: z.ZodRecord<z.ZodString, z.ZodString>;
|
|
176
|
+
}, z.core.$strict>], "type">>;
|
|
177
|
+
}, z.core.$strict>;
|
|
178
|
+
deletionCopy: z.ZodRecord<z.ZodString, z.ZodString>;
|
|
179
|
+
}, z.core.$strict>;
|
|
180
|
+
export type FixedProfileField = z.infer<typeof fixedProfileFieldSchema>;
|
|
181
|
+
export type CustomProfileField = z.infer<typeof customProfileFieldSchema>;
|
|
182
|
+
export type ProfileFields = z.infer<typeof profileFieldsSchema>;
|
|
183
|
+
export type AccountSettings = z.infer<typeof accountSettingsSchema>;
|
|
184
|
+
/** What a theme that chooses nothing gets: the names asked for, the rest hidden, and the plain deletion copy. */
|
|
185
|
+
export declare const DEFAULT_ACCOUNT_SETTINGS: AccountSettings;
|
|
186
|
+
export {};
|
|
187
|
+
//# sourceMappingURL=account-settings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account-settings.d.ts","sourceRoot":"","sources":["../src/account-settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,aAEmD,CAAC;AAEtF,+FAA+F;AAC/F,eAAO,MAAM,oBAAoB,6CAA8C,CAAC;AAChF,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEtE,6FAA6F;AAC7F,eAAO,MAAM,oBAAoB,4DAA6D,CAAC;AAE/F,uFAAuF;AACvF,eAAO,MAAM,0BAA0B,0CAA2C,CAAC;AACnF,MAAM,MAAM,sBAAsB,GAAG,CAAC,OAAO,0BAA0B,CAAC,CAAC,MAAM,CAAC,CAAC;AAEjF,eAAO,MAAM,oBAAoB;;;CAAkD,CAAC;AAEpF,QAAA,MAAM,uBAAuB;;;;;;;kBAG3B,CAAC;AAaH,QAAA,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;4BAqB5B,CAAC;AAIH;;;;GAIG;AACH,QAAA,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA4BvB,CAAC;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAGhC,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AACxE,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAC1E,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAChE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,iHAAiH;AACjH,eAAO,MAAM,wBAAwB,EAAE,eAYtC,CAAC"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { localizedTextSchema } from './locale.js';
|
|
3
|
+
/**
|
|
4
|
+
* The key of one Profile Field: the metafield key a custom field is written
|
|
5
|
+
* under, and the name a fixed field is read by. Snake case, the way a
|
|
6
|
+
* setting key is written.
|
|
7
|
+
*/
|
|
8
|
+
export const profileFieldKeySchema = z
|
|
9
|
+
.string()
|
|
10
|
+
.regex(/^[a-z][a-z0-9_]{1,31}$/, 'expected a snake_case key of 2 to 32 characters');
|
|
11
|
+
/** What the merchant decides for each Profile Field: not asked, asked, or asked and needed. */
|
|
12
|
+
export const PROFILE_FIELD_STATES = ['hidden', 'optional', 'required'];
|
|
13
|
+
/** The fixed catalog: the two names on the customer record, and two app-owned metafields. */
|
|
14
|
+
export const FIXED_PROFILE_FIELDS = ['first_name', 'last_name', 'birthday', 'gender'];
|
|
15
|
+
/** What a merchant-defined field asks for: a short text, or one choice from a list. */
|
|
16
|
+
export const CUSTOM_PROFILE_FIELD_TYPES = ['short_text', 'single_choice'];
|
|
17
|
+
export const PROFILE_FIELD_LIMITS = { maxCustomFields: 5, maxChoices: 12 };
|
|
18
|
+
const fixedProfileFieldSchema = z.strictObject({
|
|
19
|
+
state: z.enum(PROFILE_FIELD_STATES),
|
|
20
|
+
label: localizedTextSchema,
|
|
21
|
+
});
|
|
22
|
+
const profileChoiceSchema = z.strictObject({
|
|
23
|
+
value: z.string().min(1).max(64),
|
|
24
|
+
label: localizedTextSchema,
|
|
25
|
+
});
|
|
26
|
+
const customFieldBase = {
|
|
27
|
+
key: profileFieldKeySchema,
|
|
28
|
+
state: z.enum(PROFILE_FIELD_STATES),
|
|
29
|
+
label: localizedTextSchema,
|
|
30
|
+
};
|
|
31
|
+
const customProfileFieldSchema = z.discriminatedUnion('type', [
|
|
32
|
+
z.strictObject({ ...customFieldBase, type: z.literal('short_text') }),
|
|
33
|
+
z
|
|
34
|
+
.strictObject({
|
|
35
|
+
...customFieldBase,
|
|
36
|
+
type: z.literal('single_choice'),
|
|
37
|
+
choices: z.array(profileChoiceSchema).min(1).max(PROFILE_FIELD_LIMITS.maxChoices),
|
|
38
|
+
})
|
|
39
|
+
.superRefine((field, ctx) => {
|
|
40
|
+
const seen = new Set();
|
|
41
|
+
field.choices.forEach((choice, index) => {
|
|
42
|
+
if (seen.has(choice.value)) {
|
|
43
|
+
ctx.addIssue({
|
|
44
|
+
code: 'custom',
|
|
45
|
+
message: `duplicate choice "${choice.value}"`,
|
|
46
|
+
path: ['choices', index, 'value'],
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
seen.add(choice.value);
|
|
50
|
+
});
|
|
51
|
+
}),
|
|
52
|
+
]);
|
|
53
|
+
const FIXED_KEYS = new Set(FIXED_PROFILE_FIELDS);
|
|
54
|
+
/**
|
|
55
|
+
* The Profile Fields catalog: the fixed four, each hidden, optional or
|
|
56
|
+
* required under its own label, and up to five fields of the merchant's
|
|
57
|
+
* own, each under a key no fixed field owns.
|
|
58
|
+
*/
|
|
59
|
+
const profileFieldsSchema = z.strictObject({
|
|
60
|
+
firstName: fixedProfileFieldSchema,
|
|
61
|
+
lastName: fixedProfileFieldSchema,
|
|
62
|
+
birthday: fixedProfileFieldSchema,
|
|
63
|
+
gender: fixedProfileFieldSchema,
|
|
64
|
+
custom: z
|
|
65
|
+
.array(customProfileFieldSchema)
|
|
66
|
+
.max(PROFILE_FIELD_LIMITS.maxCustomFields)
|
|
67
|
+
.superRefine((fields, ctx) => {
|
|
68
|
+
const seen = new Set();
|
|
69
|
+
fields.forEach((field, index) => {
|
|
70
|
+
if (FIXED_KEYS.has(field.key)) {
|
|
71
|
+
ctx.addIssue({
|
|
72
|
+
code: 'custom',
|
|
73
|
+
message: `"${field.key}" is a fixed Profile Field`,
|
|
74
|
+
path: [index, 'key'],
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
if (seen.has(field.key)) {
|
|
78
|
+
ctx.addIssue({
|
|
79
|
+
code: 'custom',
|
|
80
|
+
message: `duplicate Profile Field "${field.key}"`,
|
|
81
|
+
path: [index, 'key'],
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
seen.add(field.key);
|
|
85
|
+
});
|
|
86
|
+
}),
|
|
87
|
+
});
|
|
88
|
+
/**
|
|
89
|
+
* The Account settings, a theme-level group the Shell carries beside the
|
|
90
|
+
* drawer setting: the Profile Fields catalog, and the merchant's own copy
|
|
91
|
+
* the Deletion Sheet shows above the facts the law requires. A Shell that
|
|
92
|
+
* carries none is a design that chose nothing, which a device reads as the
|
|
93
|
+
* default settings.
|
|
94
|
+
*/
|
|
95
|
+
export const accountSettingsSchema = z.strictObject({
|
|
96
|
+
profileFields: profileFieldsSchema,
|
|
97
|
+
deletionCopy: localizedTextSchema,
|
|
98
|
+
});
|
|
99
|
+
/** What a theme that chooses nothing gets: the names asked for, the rest hidden, and the plain deletion copy. */
|
|
100
|
+
export const DEFAULT_ACCOUNT_SETTINGS = {
|
|
101
|
+
profileFields: {
|
|
102
|
+
firstName: { state: 'optional', label: { en: 'First name', ar: 'الاسم الأول' } },
|
|
103
|
+
lastName: { state: 'optional', label: { en: 'Last name', ar: 'اسم العائلة' } },
|
|
104
|
+
birthday: { state: 'hidden', label: { en: 'Birthday', ar: 'تاريخ الميلاد' } },
|
|
105
|
+
gender: { state: 'hidden', label: { en: 'Gender', ar: 'الجنس' } },
|
|
106
|
+
custom: [],
|
|
107
|
+
},
|
|
108
|
+
deletionCopy: {
|
|
109
|
+
en: 'Deleting your account asks the store to erase your profile and your saved addresses.',
|
|
110
|
+
ar: 'حذف حسابك يطلب من المتجر مسح ملفك الشخصي وعناوينك المحفوظة.',
|
|
111
|
+
},
|
|
112
|
+
};
|
|
113
|
+
//# sourceMappingURL=account-settings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account-settings.js","sourceRoot":"","sources":["../src/account-settings.ts"],"names":[],"mappings":"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"}
|
package/dist/action.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
/**
|
|
3
|
-
* The closed action set for standalone tappable blocks.
|
|
4
|
-
*
|
|
5
|
-
*
|
|
3
|
+
* The closed action set for standalone tappable blocks. Cards inside bound
|
|
4
|
+
* lists navigate implicitly and never carry an action. The seven account
|
|
5
|
+
* actions reach the account from any screen: the host gates the ones that
|
|
6
|
+
* need an Account Session behind the sign-in page and returns afterwards.
|
|
6
7
|
*/
|
|
7
8
|
export declare const actionSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
8
9
|
type: z.ZodLiteral<"open_screen">;
|
|
@@ -14,6 +15,20 @@ export declare const actionSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
14
15
|
url: z.ZodURL;
|
|
15
16
|
}, z.core.$strip>, z.ZodObject<{
|
|
16
17
|
type: z.ZodLiteral<"none">;
|
|
18
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
19
|
+
type: z.ZodLiteral<"sign_in">;
|
|
20
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
21
|
+
type: z.ZodLiteral<"sign_out">;
|
|
22
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
23
|
+
type: z.ZodLiteral<"open_orders">;
|
|
24
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
25
|
+
type: z.ZodLiteral<"open_addresses">;
|
|
26
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
27
|
+
type: z.ZodLiteral<"open_profile">;
|
|
28
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
29
|
+
type: z.ZodLiteral<"add_address">;
|
|
30
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
31
|
+
type: z.ZodLiteral<"delete_account">;
|
|
17
32
|
}, z.core.$strip>], "type">;
|
|
18
33
|
export type Action = z.infer<typeof actionSchema>;
|
|
19
34
|
export type ActionType = Action['type'];
|
package/dist/action.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../src/action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB
|
|
1
|
+
{"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../src/action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;GAKG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;2BAiBvB,CAAC;AAEH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAClD,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAExC;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAG3D"}
|
package/dist/action.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
/**
|
|
3
|
-
* The closed action set for standalone tappable blocks.
|
|
4
|
-
*
|
|
5
|
-
*
|
|
3
|
+
* The closed action set for standalone tappable blocks. Cards inside bound
|
|
4
|
+
* lists navigate implicitly and never carry an action. The seven account
|
|
5
|
+
* actions reach the account from any screen: the host gates the ones that
|
|
6
|
+
* need an Account Session behind the sign-in page and returns afterwards.
|
|
6
7
|
*/
|
|
7
8
|
export const actionSchema = z.discriminatedUnion('type', [
|
|
8
9
|
z.object({ type: z.literal('open_screen'), screenId: z.uuid() }),
|
|
@@ -14,6 +15,13 @@ export const actionSchema = z.discriminatedUnion('type', [
|
|
|
14
15
|
.refine((value) => value.startsWith('https://'), { message: 'external links must be https' }),
|
|
15
16
|
}),
|
|
16
17
|
z.object({ type: z.literal('none') }),
|
|
18
|
+
z.object({ type: z.literal('sign_in') }),
|
|
19
|
+
z.object({ type: z.literal('sign_out') }),
|
|
20
|
+
z.object({ type: z.literal('open_orders') }),
|
|
21
|
+
z.object({ type: z.literal('open_addresses') }),
|
|
22
|
+
z.object({ type: z.literal('open_profile') }),
|
|
23
|
+
z.object({ type: z.literal('add_address') }),
|
|
24
|
+
z.object({ type: z.literal('delete_account') }),
|
|
17
25
|
]);
|
|
18
26
|
/**
|
|
19
27
|
* One resolved value read back as an action, or nothing when it is not one.
|
package/dist/action.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action.js","sourceRoot":"","sources":["../src/action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB
|
|
1
|
+
{"version":3,"file":"action.js","sourceRoot":"","sources":["../src/action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE;IACvD,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;IAChE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;IAC1C,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;QAC3B,GAAG,EAAE,CAAC;aACH,GAAG,EAAE;aACL,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,EAAE,8BAA8B,EAAE,CAAC;KAChG,CAAC;IACF,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;IACrC,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;IACxC,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;IACzC,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;IAC5C,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC;IAC/C,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;IAC7C,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;IAC5C,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC;CAChD,CAAC,CAAC;AAKH;;;;GAIG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC7C,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AAClD,CAAC"}
|
package/dist/assets.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assets.d.ts","sourceRoot":"","sources":["../src/assets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAe,KAAK,KAAK,EAAmB,MAAM,aAAa,CAAC;AAIvE,+EAA+E;AAC/E,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;CAC7C;
|
|
1
|
+
{"version":3,"file":"assets.d.ts","sourceRoot":"","sources":["../src/assets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAe,KAAK,KAAK,EAAmB,MAAM,aAAa,CAAC;AAIvE,+EAA+E;AAC/E,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;CAC7C;AAsBD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,cAAc,EAAE,CA+BzE;AAED,8EAA8E;AAC9E,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IAC5C,iEAAiE;IACjE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,YAAY,EAAE,CAoBpE;AAaD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,KAAK,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CA2BjE;AAED,QAAA,MAAM,oBAAoB;;;;iBAIxB,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;iBAS7B,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;mBAAqD,CAAC;AAEvF,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
|
package/dist/assets.js
CHANGED
|
@@ -1,6 +1,20 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { BLOCK_TYPES } from './blocks.js';
|
|
3
3
|
const KNOWN_TYPES = new Set(BLOCK_TYPES);
|
|
4
|
+
/** The one picture a block carries in its own props, where it carries any. */
|
|
5
|
+
function ownImageOf(image) {
|
|
6
|
+
return image ? [{ assetId: image.assetId, path: ['props', 'image', 'assetId'] }] : [];
|
|
7
|
+
}
|
|
8
|
+
/** The picture of every entry of a list of them, each at its own place in the list. */
|
|
9
|
+
function listImagesOf(prop, entries) {
|
|
10
|
+
const refs = [];
|
|
11
|
+
entries.forEach((entry, index) => {
|
|
12
|
+
if (entry.image) {
|
|
13
|
+
refs.push({ assetId: entry.image.assetId, path: ['props', prop, index, 'image', 'assetId'] });
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
return refs;
|
|
17
|
+
}
|
|
4
18
|
/**
|
|
5
19
|
* Every asset id a block references. Owned here so the api never learns
|
|
6
20
|
* which prop of which block type carries an asset — a new asset-bearing
|
|
@@ -26,11 +40,15 @@ export function assetReferencesOf(block) {
|
|
|
26
40
|
return refs;
|
|
27
41
|
}
|
|
28
42
|
case 'hero_banner':
|
|
43
|
+
return known.props.slides === undefined
|
|
44
|
+
? ownImageOf(known.props.image)
|
|
45
|
+
: listImagesOf('slides', known.props.slides);
|
|
29
46
|
case 'promo_banner':
|
|
47
|
+
return known.props.cards === undefined
|
|
48
|
+
? ownImageOf(known.props.image)
|
|
49
|
+
: listImagesOf('cards', known.props.cards);
|
|
30
50
|
case 'cart_empty':
|
|
31
|
-
return known.props.image
|
|
32
|
-
? [{ assetId: known.props.image.assetId, path: ['props', 'image', 'assetId'] }]
|
|
33
|
-
: [];
|
|
51
|
+
return ownImageOf(known.props.image);
|
|
34
52
|
default:
|
|
35
53
|
return [];
|
|
36
54
|
}
|
|
@@ -46,14 +64,29 @@ export function missingMediaOf(block) {
|
|
|
46
64
|
const known = block;
|
|
47
65
|
switch (known.type) {
|
|
48
66
|
case 'image':
|
|
49
|
-
case 'promo_banner':
|
|
50
67
|
return known.props.image ? [] : [{ path: ['props', 'image'], label: 'an image' }];
|
|
68
|
+
case 'promo_banner': {
|
|
69
|
+
const cards = known.props.cards;
|
|
70
|
+
if (cards === undefined) {
|
|
71
|
+
return known.props.image ? [] : [{ path: ['props', 'image'], label: 'an image' }];
|
|
72
|
+
}
|
|
73
|
+
return cards.flatMap((card, index) => card.image ? [] : [{ path: ['props', 'cards', index, 'image'], label: 'an image' }]);
|
|
74
|
+
}
|
|
51
75
|
case 'video':
|
|
52
76
|
return known.props.assetId ? [] : [{ path: ['props', 'assetId'], label: 'a video' }];
|
|
53
77
|
default:
|
|
54
78
|
return [];
|
|
55
79
|
}
|
|
56
80
|
}
|
|
81
|
+
/** A slide or a card whose picture field was opened and left empty carries no picture at all. */
|
|
82
|
+
function withoutUnchosenEntryImage(entry) {
|
|
83
|
+
const ref = entry?.image;
|
|
84
|
+
if (!ref || ref.assetId)
|
|
85
|
+
return entry;
|
|
86
|
+
const rest = { ...entry };
|
|
87
|
+
delete rest.image;
|
|
88
|
+
return rest;
|
|
89
|
+
}
|
|
57
90
|
/**
|
|
58
91
|
* An editor holds half-filled media while the merchant works: alt text typed
|
|
59
92
|
* before the picture is chosen, a poster field opened and left empty. The
|
|
@@ -77,6 +110,16 @@ export function withoutUnchosenMedia(block) {
|
|
|
77
110
|
delete cleaned.assetId;
|
|
78
111
|
changed = true;
|
|
79
112
|
}
|
|
113
|
+
for (const key of ['slides', 'cards']) {
|
|
114
|
+
if (!Array.isArray(cleaned[key]))
|
|
115
|
+
continue;
|
|
116
|
+
const entries = cleaned[key];
|
|
117
|
+
const kept = entries.map(withoutUnchosenEntryImage);
|
|
118
|
+
if (kept.some((entry, index) => entry !== entries[index])) {
|
|
119
|
+
cleaned[key] = kept;
|
|
120
|
+
changed = true;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
80
123
|
return changed ? { ...block, props: cleaned } : block;
|
|
81
124
|
}
|
|
82
125
|
const assetRenditionSchema = z.object({
|
package/dist/assets.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assets.js","sourceRoot":"","sources":["../src/assets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAA+B,MAAM,aAAa,CAAC;AAEvE,MAAM,WAAW,GAAG,IAAI,GAAG,CAAS,WAAW,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"assets.js","sourceRoot":"","sources":["../src/assets.ts"],"names":[],"mappings":"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"}
|
package/dist/binding.d.ts
CHANGED
|
@@ -98,10 +98,56 @@ export declare const cartBindingSchema: z.ZodObject<{
|
|
|
98
98
|
form: z.ZodLiteral<"subject">;
|
|
99
99
|
}, z.core.$strip>;
|
|
100
100
|
}, z.core.$strip>;
|
|
101
|
+
/** How many orders one page of the orders list holds, the same bounds a products page has. */
|
|
102
|
+
export declare const ORDERS_PAGE_LIMITS: {
|
|
103
|
+
readonly min: 1;
|
|
104
|
+
readonly max: 24;
|
|
105
|
+
};
|
|
101
106
|
/**
|
|
102
|
-
* The
|
|
107
|
+
* The signed-in shopper, read with the Account Session: subject form only,
|
|
108
|
+
* and answered on the account hub alone.
|
|
109
|
+
*/
|
|
110
|
+
export declare const customerBindingSchema: z.ZodObject<{
|
|
111
|
+
kind: z.ZodLiteral<"customer">;
|
|
112
|
+
target: z.ZodObject<{
|
|
113
|
+
form: z.ZodLiteral<"subject">;
|
|
114
|
+
}, z.core.$strip>;
|
|
115
|
+
}, z.core.$strip>;
|
|
116
|
+
/**
|
|
117
|
+
* The shopper's own orders, newest first, one page at a time like a products
|
|
118
|
+
* Binding from a collection. There is no sort to choose and no id to name.
|
|
119
|
+
*/
|
|
120
|
+
export declare const ordersBindingSchema: z.ZodObject<{
|
|
121
|
+
kind: z.ZodLiteral<"orders">;
|
|
122
|
+
target: z.ZodObject<{
|
|
123
|
+
form: z.ZodLiteral<"subject">;
|
|
124
|
+
}, z.core.$strip>;
|
|
125
|
+
limit: z.ZodNumber;
|
|
126
|
+
paged: z.ZodOptional<z.ZodBoolean>;
|
|
127
|
+
}, z.core.$strip>;
|
|
128
|
+
/** The order the shopper opened from their orders: the Screen Subject of the order screen. */
|
|
129
|
+
export declare const orderBindingSchema: z.ZodObject<{
|
|
130
|
+
kind: z.ZodLiteral<"order">;
|
|
131
|
+
target: z.ZodObject<{
|
|
132
|
+
form: z.ZodLiteral<"subject">;
|
|
133
|
+
}, z.core.$strip>;
|
|
134
|
+
}, z.core.$strip>;
|
|
135
|
+
/** The shopper's address book, the default flagged, on the addresses screen alone. */
|
|
136
|
+
export declare const addressesBindingSchema: z.ZodObject<{
|
|
137
|
+
kind: z.ZodLiteral<"addresses">;
|
|
138
|
+
target: z.ZodObject<{
|
|
139
|
+
form: z.ZodLiteral<"subject">;
|
|
140
|
+
}, z.core.$strip>;
|
|
141
|
+
}, z.core.$strip>;
|
|
142
|
+
/** The four Binding kinds read with the shopper's own Account Session, never a public token. */
|
|
143
|
+
export declare const ACCOUNT_BINDING_KINDS: readonly ["customer", "orders", "order", "addresses"];
|
|
144
|
+
export type AccountBindingKind = (typeof ACCOUNT_BINDING_KINDS)[number];
|
|
145
|
+
/**
|
|
146
|
+
* The nine provider-silent Binding kinds. A Binding never names a data
|
|
103
147
|
* source; resolving it into display shapes is a Provider's job, except the
|
|
104
148
|
* cart, which the runtime answers from the cart the device already holds.
|
|
149
|
+
* The four account kinds are subject form only: a shopper's own data is
|
|
150
|
+
* never chosen by id, and it exists only while they are signed in.
|
|
105
151
|
*/
|
|
106
152
|
export declare const bindingSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
107
153
|
kind: z.ZodLiteral<"product">;
|
|
@@ -151,6 +197,28 @@ export declare const bindingSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
151
197
|
target: z.ZodObject<{
|
|
152
198
|
form: z.ZodLiteral<"subject">;
|
|
153
199
|
}, z.core.$strip>;
|
|
200
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
201
|
+
kind: z.ZodLiteral<"customer">;
|
|
202
|
+
target: z.ZodObject<{
|
|
203
|
+
form: z.ZodLiteral<"subject">;
|
|
204
|
+
}, z.core.$strip>;
|
|
205
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
206
|
+
kind: z.ZodLiteral<"orders">;
|
|
207
|
+
target: z.ZodObject<{
|
|
208
|
+
form: z.ZodLiteral<"subject">;
|
|
209
|
+
}, z.core.$strip>;
|
|
210
|
+
limit: z.ZodNumber;
|
|
211
|
+
paged: z.ZodOptional<z.ZodBoolean>;
|
|
212
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
213
|
+
kind: z.ZodLiteral<"order">;
|
|
214
|
+
target: z.ZodObject<{
|
|
215
|
+
form: z.ZodLiteral<"subject">;
|
|
216
|
+
}, z.core.$strip>;
|
|
217
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
218
|
+
kind: z.ZodLiteral<"addresses">;
|
|
219
|
+
target: z.ZodObject<{
|
|
220
|
+
form: z.ZodLiteral<"subject">;
|
|
221
|
+
}, z.core.$strip>;
|
|
154
222
|
}, z.core.$strip>], "kind">;
|
|
155
223
|
export type EntityTarget = z.infer<typeof entityTargetSchema>;
|
|
156
224
|
export type BindingTargetForm = EntityTarget['form'];
|
|
@@ -160,8 +228,15 @@ export type ProductsBinding = z.infer<typeof productsBindingSchema>;
|
|
|
160
228
|
export type CollectionBinding = z.infer<typeof collectionBindingSchema>;
|
|
161
229
|
export type CollectionsBinding = z.infer<typeof collectionsBindingSchema>;
|
|
162
230
|
export type CartBinding = z.infer<typeof cartBindingSchema>;
|
|
231
|
+
export type CustomerBinding = z.infer<typeof customerBindingSchema>;
|
|
232
|
+
export type OrdersBinding = z.infer<typeof ordersBindingSchema>;
|
|
233
|
+
export type OrderBinding = z.infer<typeof orderBindingSchema>;
|
|
234
|
+
export type AddressesBinding = z.infer<typeof addressesBindingSchema>;
|
|
235
|
+
export type AccountBinding = CustomerBinding | OrdersBinding | OrderBinding | AddressesBinding;
|
|
163
236
|
export type Binding = z.infer<typeof bindingSchema>;
|
|
164
237
|
export type BindingKind = Binding['kind'];
|
|
238
|
+
/** Whether a Binding kind is one the shopper's own Account Session answers. */
|
|
239
|
+
export declare function isAccountBindingKind(kind: string): kind is AccountBindingKind;
|
|
165
240
|
/** A JSON Schema for one Binding kind, for an editor completing a file that carries one. */
|
|
166
241
|
export declare function describeBinding(kind: BindingKind): Record<string, unknown>;
|
|
167
242
|
export {};
|
package/dist/binding.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"binding.d.ts","sourceRoot":"","sources":["../src/binding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,iBAAiB,+FAOpB,CAAC;AAEX,QAAA,MAAM,oBAAoB;;;;;;;EAA4B,CAAC;AAEvD,uFAAuF;AACvF,eAAO,MAAM,oBAAoB,iCAAkC,CAAC;AAEpE;;;;GAIG;AACH,QAAA,MAAM,kBAAkB;;;;;2BAGtB,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;iBAG/B,CAAC;AAEH,8EAA8E;AAC9E,eAAO,MAAM,2BAA2B;;;;;iBAGtC,CAAC;AAEH,gFAAgF;AAChF,eAAO,MAAM,2BAA2B;;;;;;iBAGtC,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;iBAuBhC,CAAC;AAEH,eAAO,MAAM,uBAAuB;;;;;;;;iBAGlC,CAAC;AAEH,eAAO,MAAM,wBAAwB;;;iBAGnC,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,iBAAiB;;;;;iBAG5B,CAAC;AAEH
|
|
1
|
+
{"version":3,"file":"binding.d.ts","sourceRoot":"","sources":["../src/binding.ts"],"names":[],"mappings":"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"}
|