@kimdaegyu/babmukdang-shared 1.1.11 → 2.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/dist/chunk-3TY6OPD3.js +91 -0
- package/dist/{chunk-W4C7XHTX.js → chunk-6O2YTBVC.js} +3 -3
- package/dist/{chunk-GTVEQYJW.js → chunk-7JYVBXKQ.js} +1 -1
- package/dist/chunk-7UZD4LBQ.js +459 -0
- package/dist/chunk-BSJC7OVV.js +10 -0
- package/dist/chunk-C63TN7L3.js +148 -0
- package/dist/chunk-CGFW5LYV.js +143 -0
- package/dist/chunk-GOOH2LGN.js +829 -0
- package/dist/chunk-LEH6UFL7.js +314 -0
- package/dist/{chunk-K3CZKI2F.js → chunk-NENVUHL5.js} +11 -8
- package/dist/chunk-OPMBGBYS.js +632 -0
- package/dist/{chunk-OJVXYCSH.js → chunk-QFPVAJ2U.js} +1 -1
- package/dist/{chunk-AI2YMBJX.js → chunk-RZPNVRRS.js} +5 -5
- package/dist/{chunk-4E5E3PFW.js → chunk-VD3VGLBQ.js} +13 -5
- package/dist/chunk-WYBFBLQC.js +111 -0
- package/dist/{chunk-H77ISYYC.js → chunk-XMRYAG3V.js} +20 -8
- package/dist/domain/article/index.cjs +71 -7
- package/dist/domain/article/index.d.cts +79 -796
- package/dist/domain/article/index.d.ts +79 -796
- package/dist/domain/article/index.js +4 -4
- package/dist/domain/auth/index.cjs +68 -6
- package/dist/domain/auth/index.d.cts +6 -46
- package/dist/domain/auth/index.d.ts +6 -46
- package/dist/domain/auth/index.js +3 -3
- package/dist/domain/common/index.cjs +1438 -330
- package/dist/domain/common/index.d.cts +212 -3037
- package/dist/domain/common/index.d.ts +212 -3037
- package/dist/domain/common/index.js +65 -30
- package/dist/domain/food/index.cjs +225 -0
- package/dist/domain/food/index.d.cts +321 -0
- package/dist/domain/food/index.d.ts +321 -0
- package/dist/domain/food/index.js +46 -0
- package/dist/domain/friend/index.cjs +78 -7
- package/dist/domain/friend/index.d.cts +39 -98
- package/dist/domain/friend/index.d.ts +39 -98
- package/dist/domain/friend/index.js +5 -3
- package/dist/domain/index.cjs +1930 -456
- package/dist/domain/index.d.cts +382 -123
- package/dist/domain/index.d.ts +382 -123
- package/dist/domain/index.js +429 -140
- package/dist/domain/live-activity/index.cjs +1112 -0
- package/dist/domain/live-activity/index.d.cts +177 -0
- package/dist/domain/live-activity/index.d.ts +177 -0
- package/dist/domain/live-activity/index.js +28 -0
- package/dist/domain/meal/index.cjs +68 -6
- package/dist/domain/meal/index.d.cts +21 -40
- package/dist/domain/meal/index.d.ts +21 -40
- package/dist/domain/meal/index.js +4 -4
- package/dist/domain/meal-plan/index.cjs +1540 -0
- package/dist/domain/meal-plan/index.d.cts +4523 -0
- package/dist/domain/meal-plan/index.d.ts +4523 -0
- package/dist/domain/meal-plan/index.js +255 -0
- package/dist/domain/member/index.cjs +94 -6
- package/dist/domain/member/index.d.cts +263 -273
- package/dist/domain/member/index.d.ts +263 -273
- package/dist/domain/member/index.js +26 -2
- package/dist/domain/promotion/index.cjs +10 -4
- package/dist/domain/promotion/index.d.cts +35 -112
- package/dist/domain/promotion/index.d.ts +35 -112
- package/dist/domain/promotion/index.js +2 -2
- package/dist/domain/push/index.cjs +1055 -0
- package/dist/domain/push/index.d.cts +169 -0
- package/dist/domain/push/index.d.ts +169 -0
- package/dist/domain/push/index.js +36 -0
- package/dist/domain/restaurant/index.cjs +10 -4
- package/dist/domain/restaurant/index.d.cts +27 -1
- package/dist/domain/restaurant/index.d.ts +27 -1
- package/dist/domain/restaurant/index.js +2 -2
- package/dist/index.cjs +1731 -399
- package/dist/index.d.cts +5 -7
- package/dist/index.d.ts +5 -7
- package/dist/index.js +17 -15
- package/package.json +52 -55
- package/dist/chunk-PFSZSKD5.js +0 -0
- package/dist/chunk-PQMEXOPZ.js +0 -232
- package/dist/chunk-W4TUW2GY.js +0 -40
- package/dist/chunk-WNYCCQM4.js +0 -342
- package/dist/chunk-YGFAVC5N.js +0 -34
- package/dist/chunk-YM7YU7IR.js +0 -319
- package/dist/chunk-ZH7D7B2Y.js +0 -78
- package/dist/domain/invitation/index.cjs +0 -82
- package/dist/domain/invitation/index.d.cts +0 -64
- package/dist/domain/invitation/index.d.ts +0 -64
- package/dist/domain/invitation/index.js +0 -13
- package/dist/domain/plan/index.cjs +0 -327
- package/dist/domain/plan/index.d.cts +0 -178
- package/dist/domain/plan/index.d.ts +0 -178
- package/dist/domain/plan/index.js +0 -18
- package/dist/domain/recruit/index.cjs +0 -189
- package/dist/domain/recruit/index.d.cts +0 -214
- package/dist/domain/recruit/index.d.ts +0 -214
- package/dist/domain/recruit/index.js +0 -30
- package/dist/domain/room/index.cjs +0 -401
- package/dist/domain/room/index.d.cts +0 -2643
- package/dist/domain/room/index.d.ts +0 -2643
- package/dist/domain/room/index.js +0 -82
- package/dist/id-dAYxfjZn.d.cts +0 -64
- package/dist/id-dAYxfjZn.d.ts +0 -64
- package/dist/restaurant.schema-CuEcX3S3.d.cts +0 -78
- package/dist/restaurant.schema-CuEcX3S3.d.ts +0 -78
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import {
|
|
2
|
+
FoodSchema,
|
|
3
|
+
MemberIdSchema
|
|
4
|
+
} from "./chunk-XMRYAG3V.js";
|
|
5
|
+
|
|
6
|
+
// src/domain/member/member.schema.ts
|
|
7
|
+
import { z as z2 } from "zod";
|
|
8
|
+
|
|
9
|
+
// src/domain/common/contracts/upload.ts
|
|
10
|
+
import z from "zod";
|
|
11
|
+
var UploadPresignImageResponseSchema = z.object({
|
|
12
|
+
key: z.string(),
|
|
13
|
+
putUrl: z.string().url(),
|
|
14
|
+
cdnUrl: z.string().url()
|
|
15
|
+
});
|
|
16
|
+
var UploadPresignImageRequestSchema = z.object({
|
|
17
|
+
contentType: z.string()
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
// src/domain/member/member.schema.ts
|
|
21
|
+
var MemberRoleSchema = z2.enum(["USER", "ADMIN"]);
|
|
22
|
+
var LocationConsentStatusSchema = z2.enum(["UNKNOWN", "GRANTED", "DENIED"]);
|
|
23
|
+
var OnboardingStatusSchema = z2.enum(["REQUIRED", "COMPLETED"]);
|
|
24
|
+
var PermissionKindSchema = z2.enum(["LOCATION", "NOTIFICATION", "CAMERA"]);
|
|
25
|
+
var PermissionStatusSchema = z2.enum([
|
|
26
|
+
"UNKNOWN",
|
|
27
|
+
"PROMPT",
|
|
28
|
+
"GRANTED",
|
|
29
|
+
"DENIED",
|
|
30
|
+
"LIMITED",
|
|
31
|
+
"UNSUPPORTED"
|
|
32
|
+
]);
|
|
33
|
+
var PermissionPlatformSchema = z2.enum(["WEB", "IOS", "ANDROID", "UNKNOWN"]);
|
|
34
|
+
var DevicePermissionSnapshotSchema = z2.object({
|
|
35
|
+
kind: PermissionKindSchema,
|
|
36
|
+
status: PermissionStatusSchema,
|
|
37
|
+
platform: PermissionPlatformSchema.default("UNKNOWN"),
|
|
38
|
+
canAskAgain: z2.boolean().optional(),
|
|
39
|
+
checkedAt: z2.string().datetime()
|
|
40
|
+
});
|
|
41
|
+
var MemberLocationSchema = z2.object({
|
|
42
|
+
latitude: z2.number().min(-90).max(90),
|
|
43
|
+
longitude: z2.number().min(-180).max(180),
|
|
44
|
+
accuracyMeters: z2.number().min(0).nullable().optional(),
|
|
45
|
+
capturedAt: z2.string().datetime()
|
|
46
|
+
});
|
|
47
|
+
var UpdateMemberLocationRequestSchema = MemberLocationSchema;
|
|
48
|
+
var UpdateMemberLocationConsentRequestSchema = z2.object({
|
|
49
|
+
locationConsentStatus: LocationConsentStatusSchema,
|
|
50
|
+
nearbyMealPlanExposureAllowed: z2.boolean().default(false),
|
|
51
|
+
mealSuggestionAllowed: z2.boolean().optional(),
|
|
52
|
+
permissionSnapshot: DevicePermissionSnapshotSchema.optional()
|
|
53
|
+
});
|
|
54
|
+
var MemberLocationSettingsResponseSchema = z2.object({
|
|
55
|
+
locationConsentStatus: LocationConsentStatusSchema,
|
|
56
|
+
nearbyMealPlanExposureAllowed: z2.boolean(),
|
|
57
|
+
mealSuggestionAllowed: z2.boolean(),
|
|
58
|
+
lastKnownLocation: MemberLocationSchema.nullable(),
|
|
59
|
+
permissionSnapshot: DevicePermissionSnapshotSchema.nullable().optional(),
|
|
60
|
+
updatedAt: z2.string().datetime().nullable()
|
|
61
|
+
});
|
|
62
|
+
var MemberCoreSchema = z2.object({
|
|
63
|
+
memberId: MemberIdSchema,
|
|
64
|
+
username: z2.string().min(1).max(50),
|
|
65
|
+
profileImageUrl: z2.string().url().nullable().optional()
|
|
66
|
+
});
|
|
67
|
+
var UploadProfileImageResponseSchema = UploadPresignImageResponseSchema.extend({});
|
|
68
|
+
var UploadProfileImageRequestSchema = UploadPresignImageRequestSchema.extend({});
|
|
69
|
+
var MemberResponseSchema = MemberCoreSchema.pick({
|
|
70
|
+
memberId: true,
|
|
71
|
+
username: true,
|
|
72
|
+
profileImageUrl: true
|
|
73
|
+
}).extend({
|
|
74
|
+
onboardingStatus: OnboardingStatusSchema.default("REQUIRED"),
|
|
75
|
+
onboardingCompletedAt: z2.string().datetime().nullable().default(null),
|
|
76
|
+
locationConsentStatus: LocationConsentStatusSchema.optional(),
|
|
77
|
+
nearbyMealPlanExposureAllowed: z2.boolean().optional()
|
|
78
|
+
});
|
|
79
|
+
var MemberSearchQuerySchema = z2.object({
|
|
80
|
+
email: z2.string().email().optional(),
|
|
81
|
+
username: z2.string().optional()
|
|
82
|
+
});
|
|
83
|
+
var MemberSerachResponseSchema = z2.array(MemberCoreSchema);
|
|
84
|
+
var MemberDetailSchema = MemberCoreSchema.extend({
|
|
85
|
+
bio: z2.string().nullable(),
|
|
86
|
+
friendConunt: z2.number().int().min(0).default(0),
|
|
87
|
+
completedPlans: z2.number().int().min(0).default(0),
|
|
88
|
+
uncompletedPlans: z2.number().int().min(0).default(0),
|
|
89
|
+
onboardingStatus: OnboardingStatusSchema.default("REQUIRED"),
|
|
90
|
+
onboardingCompletedAt: z2.string().datetime().nullable().default(null),
|
|
91
|
+
locationConsentStatus: LocationConsentStatusSchema.default("UNKNOWN"),
|
|
92
|
+
nearbyMealPlanExposureAllowed: z2.boolean().default(false)
|
|
93
|
+
});
|
|
94
|
+
var FoodPreferenceItemSchema = FoodSchema.extend({});
|
|
95
|
+
var MemberFoodPreferenceSchema = z2.object({
|
|
96
|
+
liked: z2.array(FoodPreferenceItemSchema).optional(),
|
|
97
|
+
disliked: z2.array(FoodPreferenceItemSchema).optional(),
|
|
98
|
+
allergy: z2.array(FoodPreferenceItemSchema).optional()
|
|
99
|
+
});
|
|
100
|
+
var ProfileDetailResponseSchema = MemberDetailSchema;
|
|
101
|
+
var UpdateProfileRequestSchema = z2.object({
|
|
102
|
+
username: z2.string().min(1).max(50),
|
|
103
|
+
profileImageUrl: z2.string().url().nullable(),
|
|
104
|
+
bio: z2.string().max(500).nullable()
|
|
105
|
+
});
|
|
106
|
+
var UpdatePreferenceRequestSchema = MemberFoodPreferenceSchema;
|
|
107
|
+
var CompleteOnboardingRequestSchema = UpdateProfileRequestSchema.merge(
|
|
108
|
+
UpdatePreferenceRequestSchema
|
|
109
|
+
);
|
|
110
|
+
var OnboardingDraftSchema = z2.object({
|
|
111
|
+
username: z2.string().min(1).max(50).optional(),
|
|
112
|
+
profileImageUrl: z2.string().url().nullable().optional(),
|
|
113
|
+
bio: z2.string().max(500).nullable().optional(),
|
|
114
|
+
liked: z2.array(FoodPreferenceItemSchema).optional(),
|
|
115
|
+
disliked: z2.array(FoodPreferenceItemSchema).optional(),
|
|
116
|
+
allergy: z2.array(FoodPreferenceItemSchema).optional()
|
|
117
|
+
});
|
|
118
|
+
var CreateProfileRequestSchema = CompleteOnboardingRequestSchema;
|
|
119
|
+
|
|
120
|
+
export {
|
|
121
|
+
UploadPresignImageResponseSchema,
|
|
122
|
+
UploadPresignImageRequestSchema,
|
|
123
|
+
MemberRoleSchema,
|
|
124
|
+
LocationConsentStatusSchema,
|
|
125
|
+
OnboardingStatusSchema,
|
|
126
|
+
PermissionKindSchema,
|
|
127
|
+
PermissionStatusSchema,
|
|
128
|
+
PermissionPlatformSchema,
|
|
129
|
+
DevicePermissionSnapshotSchema,
|
|
130
|
+
MemberLocationSchema,
|
|
131
|
+
UpdateMemberLocationRequestSchema,
|
|
132
|
+
UpdateMemberLocationConsentRequestSchema,
|
|
133
|
+
MemberLocationSettingsResponseSchema,
|
|
134
|
+
MemberCoreSchema,
|
|
135
|
+
UploadProfileImageResponseSchema,
|
|
136
|
+
UploadProfileImageRequestSchema,
|
|
137
|
+
MemberResponseSchema,
|
|
138
|
+
MemberSearchQuerySchema,
|
|
139
|
+
MemberSerachResponseSchema,
|
|
140
|
+
MemberDetailSchema,
|
|
141
|
+
MemberFoodPreferenceSchema,
|
|
142
|
+
ProfileDetailResponseSchema,
|
|
143
|
+
UpdateProfileRequestSchema,
|
|
144
|
+
UpdatePreferenceRequestSchema,
|
|
145
|
+
CompleteOnboardingRequestSchema,
|
|
146
|
+
OnboardingDraftSchema,
|
|
147
|
+
CreateProfileRequestSchema
|
|
148
|
+
};
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ISODateTimeStringSchema
|
|
3
|
+
} from "./chunk-HRM3FQPL.js";
|
|
4
|
+
import {
|
|
5
|
+
FoodCodeSchema,
|
|
6
|
+
FoodLabelSchema
|
|
7
|
+
} from "./chunk-XMRYAG3V.js";
|
|
8
|
+
|
|
9
|
+
// src/domain/food/food.schema.ts
|
|
10
|
+
import { z } from "zod";
|
|
11
|
+
var FoodGranularitySchema = z.enum(["main_dish", "side_dish", "beverage", "sauce"]);
|
|
12
|
+
var CuisineTagSchema = z.enum([
|
|
13
|
+
"korean",
|
|
14
|
+
"western",
|
|
15
|
+
"chinese",
|
|
16
|
+
"japanese",
|
|
17
|
+
"mexican",
|
|
18
|
+
"indian",
|
|
19
|
+
"asian",
|
|
20
|
+
"snack",
|
|
21
|
+
"dessert",
|
|
22
|
+
"beverage",
|
|
23
|
+
"unknown"
|
|
24
|
+
]);
|
|
25
|
+
var FoodResolvedMatchSourceSchema = z.enum(["category", "alias", "lexical", "semantic"]);
|
|
26
|
+
var FoodCodeManifestImageSchema = z.object({
|
|
27
|
+
src: z.string().min(1),
|
|
28
|
+
avifSrcset: z.string().min(1).optional(),
|
|
29
|
+
thumbhashDataURL: z.string().min(1).optional(),
|
|
30
|
+
aspectRatio: z.number().positive().optional()
|
|
31
|
+
});
|
|
32
|
+
var FoodCodeManifestItemSchema = z.object({
|
|
33
|
+
code: FoodCodeSchema,
|
|
34
|
+
label: FoodLabelSchema,
|
|
35
|
+
aliases: z.array(z.string().min(1)).default([]),
|
|
36
|
+
parentCategory: z.string().min(1),
|
|
37
|
+
cuisineTags: z.array(CuisineTagSchema).default([]),
|
|
38
|
+
categoryTags: z.array(z.string().min(1)).default([]),
|
|
39
|
+
semanticTags: z.array(z.string().min(1)).default([]),
|
|
40
|
+
granularity: FoodGranularitySchema,
|
|
41
|
+
searchable: z.boolean(),
|
|
42
|
+
recommendable: z.boolean(),
|
|
43
|
+
previewEnabled: z.boolean(),
|
|
44
|
+
imageUrl: z.string().min(1).nullable().optional(),
|
|
45
|
+
image: FoodCodeManifestImageSchema.nullable().optional(),
|
|
46
|
+
popularity: z.number().nonnegative().optional(),
|
|
47
|
+
source: z.enum(["foodname", "manual", "foodai", "legacy"]).optional()
|
|
48
|
+
});
|
|
49
|
+
var FoodCodeManifestSchema = z.object({
|
|
50
|
+
version: z.string().min(1),
|
|
51
|
+
updatedAt: ISODateTimeStringSchema,
|
|
52
|
+
taxonomyVersion: z.string().min(1),
|
|
53
|
+
etag: z.string().min(1).optional(),
|
|
54
|
+
items: z.array(FoodCodeManifestItemSchema),
|
|
55
|
+
categoryIndex: z.record(z.string(), z.array(FoodCodeSchema)),
|
|
56
|
+
aliasIndex: z.record(z.string(), z.array(FoodCodeSchema)).optional()
|
|
57
|
+
});
|
|
58
|
+
var FoodImageIndexItemSchema = z.object({
|
|
59
|
+
code: FoodCodeSchema,
|
|
60
|
+
label: FoodLabelSchema,
|
|
61
|
+
imageUrl: z.string().min(1).nullable(),
|
|
62
|
+
image: FoodCodeManifestImageSchema.nullable(),
|
|
63
|
+
source: z.enum(["foodname", "manual", "foodai", "legacy"]).optional()
|
|
64
|
+
});
|
|
65
|
+
var FoodImageIndexManifestSchema = z.object({
|
|
66
|
+
version: z.string().min(1),
|
|
67
|
+
updatedAt: ISODateTimeStringSchema,
|
|
68
|
+
taxonomyVersion: z.string().min(1),
|
|
69
|
+
items: z.array(FoodImageIndexItemSchema)
|
|
70
|
+
});
|
|
71
|
+
var ResolvedFoodCodeSchema = z.object({
|
|
72
|
+
code: FoodCodeSchema,
|
|
73
|
+
label: FoodLabelSchema,
|
|
74
|
+
matchedBy: FoodResolvedMatchSourceSchema,
|
|
75
|
+
score: z.number(),
|
|
76
|
+
granularity: FoodGranularitySchema,
|
|
77
|
+
imageUrl: z.string().min(1).nullable().optional()
|
|
78
|
+
});
|
|
79
|
+
var BooleanQuerySchema = z.preprocess((value) => {
|
|
80
|
+
if (value === "true") return true;
|
|
81
|
+
if (value === "false") return false;
|
|
82
|
+
return value;
|
|
83
|
+
}, z.boolean());
|
|
84
|
+
var FoodResolveQuerySchema = z.object({
|
|
85
|
+
q: z.string().default(""),
|
|
86
|
+
limit: z.coerce.number().int().min(1).max(100).optional().default(30),
|
|
87
|
+
recommendableOnly: BooleanQuerySchema.optional().default(true)
|
|
88
|
+
});
|
|
89
|
+
var FoodSearchQuerySchema = z.object({
|
|
90
|
+
q: z.string().default(""),
|
|
91
|
+
limit: z.coerce.number().int().min(1).max(100).optional().default(20)
|
|
92
|
+
});
|
|
93
|
+
var FoodResolveResponseSchema = z.object({
|
|
94
|
+
query: z.string(),
|
|
95
|
+
items: z.array(ResolvedFoodCodeSchema)
|
|
96
|
+
});
|
|
97
|
+
var FoodSearchResponseSchema = FoodResolveResponseSchema;
|
|
98
|
+
var FoodAiClassMappingStatusSchema = z.enum([
|
|
99
|
+
"exact",
|
|
100
|
+
"broad",
|
|
101
|
+
"narrow",
|
|
102
|
+
"merged",
|
|
103
|
+
"ignored",
|
|
104
|
+
"review_required"
|
|
105
|
+
]);
|
|
106
|
+
var AiClassFoodCodeMappingSchema = z.object({
|
|
107
|
+
classId: z.number().int().nonnegative(),
|
|
108
|
+
aiLabel: z.string().min(1),
|
|
109
|
+
aiAliases: z.array(z.string().min(1)).default([]),
|
|
110
|
+
representativeCode: FoodCodeSchema.nullable(),
|
|
111
|
+
candidateCodes: z.array(FoodCodeSchema).default([]),
|
|
112
|
+
mappingStatus: FoodAiClassMappingStatusSchema,
|
|
113
|
+
granularity: FoodGranularitySchema,
|
|
114
|
+
searchable: z.boolean(),
|
|
115
|
+
recommendable: z.boolean(),
|
|
116
|
+
reason: z.string().min(1).optional()
|
|
117
|
+
});
|
|
118
|
+
var AiClassToFoodCodeMapManifestSchema = z.object({
|
|
119
|
+
version: z.string().min(1),
|
|
120
|
+
updatedAt: ISODateTimeStringSchema,
|
|
121
|
+
modelTaxonomyVersion: z.string().min(1),
|
|
122
|
+
serviceTaxonomyVersion: z.string().min(1),
|
|
123
|
+
classes: z.array(AiClassFoodCodeMappingSchema)
|
|
124
|
+
});
|
|
125
|
+
|
|
126
|
+
export {
|
|
127
|
+
FoodGranularitySchema,
|
|
128
|
+
CuisineTagSchema,
|
|
129
|
+
FoodResolvedMatchSourceSchema,
|
|
130
|
+
FoodCodeManifestImageSchema,
|
|
131
|
+
FoodCodeManifestItemSchema,
|
|
132
|
+
FoodCodeManifestSchema,
|
|
133
|
+
FoodImageIndexItemSchema,
|
|
134
|
+
FoodImageIndexManifestSchema,
|
|
135
|
+
ResolvedFoodCodeSchema,
|
|
136
|
+
FoodResolveQuerySchema,
|
|
137
|
+
FoodSearchQuerySchema,
|
|
138
|
+
FoodResolveResponseSchema,
|
|
139
|
+
FoodSearchResponseSchema,
|
|
140
|
+
FoodAiClassMappingStatusSchema,
|
|
141
|
+
AiClassFoodCodeMappingSchema,
|
|
142
|
+
AiClassToFoodCodeMapManifestSchema
|
|
143
|
+
};
|