@nakanoaas/notion-valibot-schema 0.0.4 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (134) hide show
  1. package/README.md +150 -81
  2. package/dist/checkbox.cjs +29 -0
  3. package/dist/checkbox.cjs.map +1 -1
  4. package/dist/checkbox.d.cts +30 -0
  5. package/dist/checkbox.d.mts +30 -0
  6. package/dist/checkbox.mjs +29 -0
  7. package/dist/checkbox.mjs.map +1 -1
  8. package/dist/created-by.cjs +75 -0
  9. package/dist/created-by.cjs.map +1 -1
  10. package/dist/created-by.d.cts +76 -0
  11. package/dist/created-by.d.mts +76 -0
  12. package/dist/created-by.mjs +75 -0
  13. package/dist/created-by.mjs.map +1 -1
  14. package/dist/created-time.cjs +27 -0
  15. package/dist/created-time.cjs.map +1 -1
  16. package/dist/created-time.d.cts +28 -0
  17. package/dist/created-time.d.mts +28 -0
  18. package/dist/created-time.mjs +27 -0
  19. package/dist/created-time.mjs.map +1 -1
  20. package/dist/date.cjs +188 -0
  21. package/dist/date.cjs.map +1 -1
  22. package/dist/date.d.cts +189 -0
  23. package/dist/date.d.mts +189 -0
  24. package/dist/date.mjs +188 -0
  25. package/dist/date.mjs.map +1 -1
  26. package/dist/email.cjs +58 -0
  27. package/dist/email.cjs.map +1 -1
  28. package/dist/email.d.cts +59 -0
  29. package/dist/email.d.mts +59 -0
  30. package/dist/email.mjs +58 -0
  31. package/dist/email.mjs.map +1 -1
  32. package/dist/files.cjs +39 -0
  33. package/dist/files.cjs.map +1 -1
  34. package/dist/files.d.cts +40 -0
  35. package/dist/files.d.mts +40 -0
  36. package/dist/files.mjs +39 -0
  37. package/dist/files.mjs.map +1 -1
  38. package/dist/formula.cjs +72 -0
  39. package/dist/formula.cjs.map +1 -1
  40. package/dist/formula.d.cts +73 -0
  41. package/dist/formula.d.mts +73 -0
  42. package/dist/formula.mjs +72 -0
  43. package/dist/formula.mjs.map +1 -1
  44. package/dist/last-edited-by.cjs +68 -0
  45. package/dist/last-edited-by.cjs.map +1 -1
  46. package/dist/last-edited-by.d.cts +69 -0
  47. package/dist/last-edited-by.d.mts +69 -0
  48. package/dist/last-edited-by.mjs +68 -0
  49. package/dist/last-edited-by.mjs.map +1 -1
  50. package/dist/last-edited-time.cjs +27 -0
  51. package/dist/last-edited-time.cjs.map +1 -1
  52. package/dist/last-edited-time.d.cts +28 -0
  53. package/dist/last-edited-time.d.mts +28 -0
  54. package/dist/last-edited-time.mjs +27 -0
  55. package/dist/last-edited-time.mjs.map +1 -1
  56. package/dist/multi-select.cjs +60 -0
  57. package/dist/multi-select.cjs.map +1 -1
  58. package/dist/multi-select.d.cts +79 -18
  59. package/dist/multi-select.d.mts +79 -18
  60. package/dist/multi-select.mjs +60 -0
  61. package/dist/multi-select.mjs.map +1 -1
  62. package/dist/number.cjs +58 -0
  63. package/dist/number.cjs.map +1 -1
  64. package/dist/number.d.cts +59 -0
  65. package/dist/number.d.mts +59 -0
  66. package/dist/number.mjs +58 -0
  67. package/dist/number.mjs.map +1 -1
  68. package/dist/people.cjs +84 -0
  69. package/dist/people.cjs.map +1 -1
  70. package/dist/people.d.cts +85 -0
  71. package/dist/people.d.mts +85 -0
  72. package/dist/people.mjs +84 -0
  73. package/dist/people.mjs.map +1 -1
  74. package/dist/phone-number.cjs +58 -0
  75. package/dist/phone-number.cjs.map +1 -1
  76. package/dist/phone-number.d.cts +59 -0
  77. package/dist/phone-number.d.mts +59 -0
  78. package/dist/phone-number.mjs +58 -0
  79. package/dist/phone-number.mjs.map +1 -1
  80. package/dist/place.cjs +128 -0
  81. package/dist/place.cjs.map +1 -1
  82. package/dist/place.d.cts +85 -0
  83. package/dist/place.d.mts +85 -0
  84. package/dist/place.mjs +128 -0
  85. package/dist/place.mjs.map +1 -1
  86. package/dist/relation.cjs +131 -0
  87. package/dist/relation.cjs.map +1 -1
  88. package/dist/relation.d.cts +94 -0
  89. package/dist/relation.d.mts +94 -0
  90. package/dist/relation.mjs +131 -0
  91. package/dist/relation.mjs.map +1 -1
  92. package/dist/rollup.cjs +200 -0
  93. package/dist/rollup.cjs.map +1 -1
  94. package/dist/rollup.d.cts +201 -0
  95. package/dist/rollup.d.mts +201 -0
  96. package/dist/rollup.mjs +200 -0
  97. package/dist/rollup.mjs.map +1 -1
  98. package/dist/select.cjs +120 -0
  99. package/dist/select.cjs.map +1 -1
  100. package/dist/select.d.cts +157 -36
  101. package/dist/select.d.mts +157 -36
  102. package/dist/select.mjs +120 -0
  103. package/dist/select.mjs.map +1 -1
  104. package/dist/status.cjs +120 -0
  105. package/dist/status.cjs.map +1 -1
  106. package/dist/status.d.cts +157 -36
  107. package/dist/status.d.mts +157 -36
  108. package/dist/status.mjs +120 -0
  109. package/dist/status.mjs.map +1 -1
  110. package/dist/text.cjs +100 -0
  111. package/dist/text.cjs.map +1 -1
  112. package/dist/text.d.cts +63 -0
  113. package/dist/text.d.mts +63 -0
  114. package/dist/text.mjs +100 -0
  115. package/dist/text.mjs.map +1 -1
  116. package/dist/unique-id.cjs +69 -0
  117. package/dist/unique-id.cjs.map +1 -1
  118. package/dist/unique-id.d.cts +70 -0
  119. package/dist/unique-id.d.mts +70 -0
  120. package/dist/unique-id.mjs +69 -0
  121. package/dist/unique-id.mjs.map +1 -1
  122. package/dist/url.cjs +58 -0
  123. package/dist/url.cjs.map +1 -1
  124. package/dist/url.d.cts +59 -0
  125. package/dist/url.d.mts +59 -0
  126. package/dist/url.mjs +58 -0
  127. package/dist/url.mjs.map +1 -1
  128. package/dist/verification.cjs +80 -0
  129. package/dist/verification.cjs.map +1 -1
  130. package/dist/verification.d.cts +81 -0
  131. package/dist/verification.d.mts +81 -0
  132. package/dist/verification.mjs +80 -0
  133. package/dist/verification.mjs.map +1 -1
  134. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"place.mjs","names":["v"],"sources":["../src/place.ts"],"sourcesContent":["import * as v from \"valibot\";\n\nconst PlaceObjectSchema = v.object({\n\tlat: v.number(),\n\tlon: v.number(),\n\tname: v.nullish(v.string()),\n\taddress: v.nullish(v.string()),\n});\n\nexport const PlaceSchema = v.pipe(\n\tv.object({\n\t\tplace: PlaceObjectSchema,\n\t}),\n\tv.transform((v) => v.place),\n);\n\nexport const NullablePlaceSchema = v.pipe(\n\tv.object({\n\t\tplace: v.nullable(PlaceObjectSchema),\n\t}),\n\tv.transform((v) => v.place),\n);\n"],"mappings":";;;AAEA,MAAM,oBAAoB,EAAE,OAAO;CAClC,KAAK,EAAE,QAAQ;CACf,KAAK,EAAE,QAAQ;CACf,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC;CAC3B,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC;CAC9B,CAAC;AAEF,MAAa,cAAc,EAAE,KAC5B,EAAE,OAAO,EACR,OAAO,mBACP,CAAC,EACF,EAAE,WAAW,QAAMA,IAAE,MAAM,CAC3B;AAED,MAAa,sBAAsB,EAAE,KACpC,EAAE,OAAO,EACR,OAAO,EAAE,SAAS,kBAAkB,EACpC,CAAC,EACF,EAAE,WAAW,QAAMA,IAAE,MAAM,CAC3B"}
1
+ {"version":3,"file":"place.mjs","names":["v"],"sources":["../src/place.ts"],"sourcesContent":["import * as v from \"valibot\";\n\n/**\n * Schema for a Notion place object structure.\n *\n * **Input:**\n * ```\n * {\n * lat: number;\n * lon: number;\n * name?: string | null;\n * address?: string | null;\n * }\n * ```\n *\n * **Output:**\n * ```\n * {\n * lat: number;\n * lon: number;\n * name?: string | null;\n * address?: string | null;\n * }\n * ```\n *\n * @example\n * ```ts\n * import * as v from \"valibot\";\n * import { PlaceObjectSchema } from \"@nakanoaas/notion-valibot-utils\";\n *\n * const PageSchema = v.object({\n * id: v.string(),\n * properties: v.object({\n * Location: v.object({\n * place: PlaceObjectSchema,\n * }),\n * }),\n * });\n *\n * const page = await notion.pages.retrieve({ page_id: \"...\" });\n * const parsed = v.parse(PageSchema, page);\n * // parsed.properties.Location.place: { lat: number; lon: number; name?: string | null; address?: string | null }\n * ```\n *\n * @internal\n */\nconst PlaceObjectSchema = v.object({\n\tlat: v.number(),\n\tlon: v.number(),\n\tname: v.nullish(v.string()),\n\taddress: v.nullish(v.string()),\n});\n\n/**\n * Schema to extract the `place` property from a Notion page property.\n *\n * **Input:**\n * ```\n * {\n * place: {\n * lat: number;\n * lon: number;\n * name?: string | null;\n * address?: string | null;\n * };\n * }\n * ```\n *\n * **Output:**\n * ```\n * {\n * lat: number;\n * lon: number;\n * name?: string | null;\n * address?: string | null;\n * }\n * ```\n *\n * @example\n * ```ts\n * import * as v from \"valibot\";\n * import { PlaceSchema } from \"@nakanoaas/notion-valibot-utils\";\n *\n * const PageSchema = v.object({\n * id: v.string(),\n * properties: v.object({\n * Location: PlaceSchema,\n * }),\n * });\n *\n * const page = await notion.pages.retrieve({ page_id: \"...\" });\n * const parsed = v.parse(PageSchema, page);\n * // parsed.properties.Location: { lat: number; lon: number; name?: string | null; address?: string | null }\n * ```\n */\nexport const PlaceSchema = v.pipe(\n\tv.object({\n\t\tplace: PlaceObjectSchema,\n\t}),\n\tv.transform((v) => v.place),\n);\n\n/**\n * Schema to extract the `place` property from a Notion page property or `null`.\n *\n * **Input:**\n * ```\n * {\n * place: {\n * lat: number;\n * lon: number;\n * name?: string | null;\n * address?: string | null;\n * } | null;\n * }\n * ```\n *\n * **Output:**\n * ```\n * {\n * lat: number;\n * lon: number;\n * name?: string | null;\n * address?: string | null;\n * } | null\n * ```\n *\n * @example\n * ```ts\n * import * as v from \"valibot\";\n * import { NullablePlaceSchema } from \"@nakanoaas/notion-valibot-utils\";\n *\n * const PageSchema = v.object({\n * id: v.string(),\n * properties: v.object({\n * Location: NullablePlaceSchema,\n * }),\n * });\n *\n * const page = await notion.pages.retrieve({ page_id: \"...\" });\n * const parsed = v.parse(PageSchema, page);\n * // parsed.properties.Location: { lat: number; lon: number; name?: string | null; address?: string | null } | null\n * ```\n */\nexport const NullablePlaceSchema = v.pipe(\n\tv.object({\n\t\tplace: v.nullable(PlaceObjectSchema),\n\t}),\n\tv.transform((v) => v.place),\n);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8CA,MAAM,oBAAoB,EAAE,OAAO;CAClC,KAAK,EAAE,QAAQ;CACf,KAAK,EAAE,QAAQ;CACf,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC;CAC3B,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC;CAC9B,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4CF,MAAa,cAAc,EAAE,KAC5B,EAAE,OAAO,EACR,OAAO,mBACP,CAAC,EACF,EAAE,WAAW,QAAMA,IAAE,MAAM,CAC3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4CD,MAAa,sBAAsB,EAAE,KACpC,EAAE,OAAO,EACR,OAAO,EAAE,SAAS,kBAAkB,EACpC,CAAC,EACF,EAAE,WAAW,QAAMA,IAAE,MAAM,CAC3B"}
package/dist/relation.cjs CHANGED
@@ -3,9 +3,140 @@ let valibot = require("valibot");
3
3
  valibot = require_rolldown_runtime.__toESM(valibot);
4
4
 
5
5
  //#region src/relation.ts
6
+ /**
7
+ * Schema for a Notion relation object structure.
8
+ *
9
+ * **Input:**
10
+ * ```
11
+ * {
12
+ * id: string;
13
+ * }
14
+ * ```
15
+ *
16
+ * **Output:**
17
+ * ```
18
+ * {
19
+ * id: string;
20
+ * }
21
+ * ```
22
+ *
23
+ * @example
24
+ * ```ts
25
+ * import * as v from "valibot";
26
+ * import { InnerRelationSchema } from "@nakanoaas/notion-valibot-utils";
27
+ *
28
+ * const PageSchema = v.object({
29
+ * id: v.string(),
30
+ * properties: v.object({
31
+ * Relation: v.object({
32
+ * relation: v.array(InnerRelationSchema),
33
+ * }),
34
+ * }),
35
+ * });
36
+ *
37
+ * const page = await notion.pages.retrieve({ page_id: "..." });
38
+ * const parsed = v.parse(PageSchema, page);
39
+ * // parsed.properties.Relation.relation: Array<{ id: string }>
40
+ * ```
41
+ *
42
+ * @internal
43
+ */
6
44
  const InnerRelationSchema = valibot.object({ id: valibot.string() });
45
+ /**
46
+ * Schema to extract the `relation` property from a Notion page property and transform it to an array of page IDs.
47
+ *
48
+ * **Input:**
49
+ * ```
50
+ * {
51
+ * relation: Array<{
52
+ * id: string;
53
+ * }>;
54
+ * }
55
+ * ```
56
+ *
57
+ * **Output:** `string[]`
58
+ *
59
+ * @example
60
+ * ```ts
61
+ * import * as v from "valibot";
62
+ * import { RelationSchema } from "@nakanoaas/notion-valibot-utils";
63
+ *
64
+ * const PageSchema = v.object({
65
+ * id: v.string(),
66
+ * properties: v.object({
67
+ * RelatedPages: RelationSchema,
68
+ * }),
69
+ * });
70
+ *
71
+ * const page = await notion.pages.retrieve({ page_id: "..." });
72
+ * const parsed = v.parse(PageSchema, page);
73
+ * // parsed.properties.RelatedPages: string[]
74
+ * ```
75
+ */
7
76
  const RelationSchema = valibot.pipe(valibot.object({ relation: valibot.array(InnerRelationSchema) }), valibot.transform((v) => v.relation.map((r) => r.id)));
77
+ /**
78
+ * Schema to extract the `relation` property from a Notion page property and transform it to a single page ID.
79
+ *
80
+ * **Input:**
81
+ * ```
82
+ * {
83
+ * relation: [{
84
+ * id: string;
85
+ * }];
86
+ * }
87
+ * ```
88
+ *
89
+ * **Output:** `string`
90
+ *
91
+ * @example
92
+ * ```ts
93
+ * import * as v from "valibot";
94
+ * import { SingleRelationSchema } from "@nakanoaas/notion-valibot-utils";
95
+ *
96
+ * const PageSchema = v.object({
97
+ * id: v.string(),
98
+ * properties: v.object({
99
+ * ParentPage: SingleRelationSchema,
100
+ * }),
101
+ * });
102
+ *
103
+ * const page = await notion.pages.retrieve({ page_id: "..." });
104
+ * const parsed = v.parse(PageSchema, page);
105
+ * // parsed.properties.ParentPage: string
106
+ * ```
107
+ */
8
108
  const SingleRelationSchema = valibot.pipe(valibot.object({ relation: valibot.tuple([InnerRelationSchema]) }), valibot.transform((v) => v.relation[0].id));
109
+ /**
110
+ * Schema to extract the `relation` property from a Notion page property and transform it to a single page ID or `null`.
111
+ *
112
+ * **Input:**
113
+ * ```
114
+ * {
115
+ * relation: Array<{
116
+ * id: string;
117
+ * }>;
118
+ * }
119
+ * ```
120
+ *
121
+ * **Output:** `string | null`
122
+ *
123
+ * @example
124
+ * ```ts
125
+ * import * as v from "valibot";
126
+ * import { NullableSingleRelationSchema } from "@nakanoaas/notion-valibot-utils";
127
+ *
128
+ * const PageSchema = v.object({
129
+ * id: v.string(),
130
+ * properties: v.object({
131
+ * ParentPage: NullableSingleRelationSchema,
132
+ * }),
133
+ * });
134
+ *
135
+ * const page = await notion.pages.retrieve({ page_id: "..." });
136
+ * const parsed = v.parse(PageSchema, page);
137
+ * // parsed.properties.ParentPage: string | null
138
+ * ```
139
+ */
9
140
  const NullableSingleRelationSchema = valibot.pipe(valibot.object({ relation: valibot.array(InnerRelationSchema) }), valibot.transform((v) => v.relation[0]?.id ?? null));
10
141
 
11
142
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"relation.cjs","names":["v"],"sources":["../src/relation.ts"],"sourcesContent":["import * as v from \"valibot\";\n\nconst InnerRelationSchema = v.object({ id: v.string() });\n\nexport const RelationSchema = v.pipe(\n\tv.object({\n\t\trelation: v.array(InnerRelationSchema),\n\t}),\n\tv.transform((v) => v.relation.map((r) => r.id)),\n);\n\nexport const SingleRelationSchema = v.pipe(\n\tv.object({\n\t\trelation: v.tuple([InnerRelationSchema]),\n\t}),\n\tv.transform((v) => v.relation[0].id),\n);\n\nexport const NullableSingleRelationSchema = v.pipe(\n\tv.object({\n\t\trelation: v.array(InnerRelationSchema),\n\t}),\n\tv.transform((v) => v.relation[0]?.id ?? null),\n);\n"],"mappings":";;;;;AAEA,MAAM,sBAAsBA,QAAE,OAAO,EAAE,IAAIA,QAAE,QAAQ,EAAE,CAAC;AAExD,MAAa,iBAAiBA,QAAE,KAC/BA,QAAE,OAAO,EACR,UAAUA,QAAE,MAAM,oBAAoB,EACtC,CAAC,EACFA,QAAE,WAAW,MAAM,EAAE,SAAS,KAAK,MAAM,EAAE,GAAG,CAAC,CAC/C;AAED,MAAa,uBAAuBA,QAAE,KACrCA,QAAE,OAAO,EACR,UAAUA,QAAE,MAAM,CAAC,oBAAoB,CAAC,EACxC,CAAC,EACFA,QAAE,WAAW,MAAM,EAAE,SAAS,GAAG,GAAG,CACpC;AAED,MAAa,+BAA+BA,QAAE,KAC7CA,QAAE,OAAO,EACR,UAAUA,QAAE,MAAM,oBAAoB,EACtC,CAAC,EACFA,QAAE,WAAW,MAAM,EAAE,SAAS,IAAI,MAAM,KAAK,CAC7C"}
1
+ {"version":3,"file":"relation.cjs","names":["v"],"sources":["../src/relation.ts"],"sourcesContent":["import * as v from \"valibot\";\n\n/**\n * Schema for a Notion relation object structure.\n *\n * **Input:**\n * ```\n * {\n * id: string;\n * }\n * ```\n *\n * **Output:**\n * ```\n * {\n * id: string;\n * }\n * ```\n *\n * @example\n * ```ts\n * import * as v from \"valibot\";\n * import { InnerRelationSchema } from \"@nakanoaas/notion-valibot-utils\";\n *\n * const PageSchema = v.object({\n * id: v.string(),\n * properties: v.object({\n * Relation: v.object({\n * relation: v.array(InnerRelationSchema),\n * }),\n * }),\n * });\n *\n * const page = await notion.pages.retrieve({ page_id: \"...\" });\n * const parsed = v.parse(PageSchema, page);\n * // parsed.properties.Relation.relation: Array<{ id: string }>\n * ```\n *\n * @internal\n */\nconst InnerRelationSchema = v.object({ id: v.string() });\n\n/**\n * Schema to extract the `relation` property from a Notion page property and transform it to an array of page IDs.\n *\n * **Input:**\n * ```\n * {\n * relation: Array<{\n * id: string;\n * }>;\n * }\n * ```\n *\n * **Output:** `string[]`\n *\n * @example\n * ```ts\n * import * as v from \"valibot\";\n * import { RelationSchema } from \"@nakanoaas/notion-valibot-utils\";\n *\n * const PageSchema = v.object({\n * id: v.string(),\n * properties: v.object({\n * RelatedPages: RelationSchema,\n * }),\n * });\n *\n * const page = await notion.pages.retrieve({ page_id: \"...\" });\n * const parsed = v.parse(PageSchema, page);\n * // parsed.properties.RelatedPages: string[]\n * ```\n */\nexport const RelationSchema = v.pipe(\n\tv.object({\n\t\trelation: v.array(InnerRelationSchema),\n\t}),\n\tv.transform((v) => v.relation.map((r) => r.id)),\n);\n\n/**\n * Schema to extract the `relation` property from a Notion page property and transform it to a single page ID.\n *\n * **Input:**\n * ```\n * {\n * relation: [{\n * id: string;\n * }];\n * }\n * ```\n *\n * **Output:** `string`\n *\n * @example\n * ```ts\n * import * as v from \"valibot\";\n * import { SingleRelationSchema } from \"@nakanoaas/notion-valibot-utils\";\n *\n * const PageSchema = v.object({\n * id: v.string(),\n * properties: v.object({\n * ParentPage: SingleRelationSchema,\n * }),\n * });\n *\n * const page = await notion.pages.retrieve({ page_id: \"...\" });\n * const parsed = v.parse(PageSchema, page);\n * // parsed.properties.ParentPage: string\n * ```\n */\nexport const SingleRelationSchema = v.pipe(\n\tv.object({\n\t\trelation: v.tuple([InnerRelationSchema]),\n\t}),\n\tv.transform((v) => v.relation[0].id),\n);\n\n/**\n * Schema to extract the `relation` property from a Notion page property and transform it to a single page ID or `null`.\n *\n * **Input:**\n * ```\n * {\n * relation: Array<{\n * id: string;\n * }>;\n * }\n * ```\n *\n * **Output:** `string | null`\n *\n * @example\n * ```ts\n * import * as v from \"valibot\";\n * import { NullableSingleRelationSchema } from \"@nakanoaas/notion-valibot-utils\";\n *\n * const PageSchema = v.object({\n * id: v.string(),\n * properties: v.object({\n * ParentPage: NullableSingleRelationSchema,\n * }),\n * });\n *\n * const page = await notion.pages.retrieve({ page_id: \"...\" });\n * const parsed = v.parse(PageSchema, page);\n * // parsed.properties.ParentPage: string | null\n * ```\n */\nexport const NullableSingleRelationSchema = v.pipe(\n\tv.object({\n\t\trelation: v.array(InnerRelationSchema),\n\t}),\n\tv.transform((v) => v.relation[0]?.id ?? null),\n);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwCA,MAAM,sBAAsBA,QAAE,OAAO,EAAE,IAAIA,QAAE,QAAQ,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCxD,MAAa,iBAAiBA,QAAE,KAC/BA,QAAE,OAAO,EACR,UAAUA,QAAE,MAAM,oBAAoB,EACtC,CAAC,EACFA,QAAE,WAAW,MAAM,EAAE,SAAS,KAAK,MAAM,EAAE,GAAG,CAAC,CAC/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCD,MAAa,uBAAuBA,QAAE,KACrCA,QAAE,OAAO,EACR,UAAUA,QAAE,MAAM,CAAC,oBAAoB,CAAC,EACxC,CAAC,EACFA,QAAE,WAAW,MAAM,EAAE,SAAS,GAAG,GAAG,CACpC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCD,MAAa,+BAA+BA,QAAE,KAC7CA,QAAE,OAAO,EACR,UAAUA,QAAE,MAAM,oBAAoB,EACtC,CAAC,EACFA,QAAE,WAAW,MAAM,EAAE,SAAS,IAAI,MAAM,KAAK,CAC7C"}
@@ -1,6 +1,38 @@
1
1
  import * as v from "valibot";
2
2
 
3
3
  //#region src/relation.d.ts
4
+
5
+ /**
6
+ * Schema to extract the `relation` property from a Notion page property and transform it to an array of page IDs.
7
+ *
8
+ * **Input:**
9
+ * ```
10
+ * {
11
+ * relation: Array<{
12
+ * id: string;
13
+ * }>;
14
+ * }
15
+ * ```
16
+ *
17
+ * **Output:** `string[]`
18
+ *
19
+ * @example
20
+ * ```ts
21
+ * import * as v from "valibot";
22
+ * import { RelationSchema } from "@nakanoaas/notion-valibot-utils";
23
+ *
24
+ * const PageSchema = v.object({
25
+ * id: v.string(),
26
+ * properties: v.object({
27
+ * RelatedPages: RelationSchema,
28
+ * }),
29
+ * });
30
+ *
31
+ * const page = await notion.pages.retrieve({ page_id: "..." });
32
+ * const parsed = v.parse(PageSchema, page);
33
+ * // parsed.properties.RelatedPages: string[]
34
+ * ```
35
+ */
4
36
  declare const RelationSchema: v.SchemaWithPipe<readonly [v.ObjectSchema<{
5
37
  readonly relation: v.ArraySchema<v.ObjectSchema<{
6
38
  readonly id: v.StringSchema<undefined>;
@@ -10,6 +42,37 @@ declare const RelationSchema: v.SchemaWithPipe<readonly [v.ObjectSchema<{
10
42
  id: string;
11
43
  }[];
12
44
  }, string[]>]>;
45
+ /**
46
+ * Schema to extract the `relation` property from a Notion page property and transform it to a single page ID.
47
+ *
48
+ * **Input:**
49
+ * ```
50
+ * {
51
+ * relation: [{
52
+ * id: string;
53
+ * }];
54
+ * }
55
+ * ```
56
+ *
57
+ * **Output:** `string`
58
+ *
59
+ * @example
60
+ * ```ts
61
+ * import * as v from "valibot";
62
+ * import { SingleRelationSchema } from "@nakanoaas/notion-valibot-utils";
63
+ *
64
+ * const PageSchema = v.object({
65
+ * id: v.string(),
66
+ * properties: v.object({
67
+ * ParentPage: SingleRelationSchema,
68
+ * }),
69
+ * });
70
+ *
71
+ * const page = await notion.pages.retrieve({ page_id: "..." });
72
+ * const parsed = v.parse(PageSchema, page);
73
+ * // parsed.properties.ParentPage: string
74
+ * ```
75
+ */
13
76
  declare const SingleRelationSchema: v.SchemaWithPipe<readonly [v.ObjectSchema<{
14
77
  readonly relation: v.TupleSchema<[v.ObjectSchema<{
15
78
  readonly id: v.StringSchema<undefined>;
@@ -19,6 +82,37 @@ declare const SingleRelationSchema: v.SchemaWithPipe<readonly [v.ObjectSchema<{
19
82
  id: string;
20
83
  }];
21
84
  }, string>]>;
85
+ /**
86
+ * Schema to extract the `relation` property from a Notion page property and transform it to a single page ID or `null`.
87
+ *
88
+ * **Input:**
89
+ * ```
90
+ * {
91
+ * relation: Array<{
92
+ * id: string;
93
+ * }>;
94
+ * }
95
+ * ```
96
+ *
97
+ * **Output:** `string | null`
98
+ *
99
+ * @example
100
+ * ```ts
101
+ * import * as v from "valibot";
102
+ * import { NullableSingleRelationSchema } from "@nakanoaas/notion-valibot-utils";
103
+ *
104
+ * const PageSchema = v.object({
105
+ * id: v.string(),
106
+ * properties: v.object({
107
+ * ParentPage: NullableSingleRelationSchema,
108
+ * }),
109
+ * });
110
+ *
111
+ * const page = await notion.pages.retrieve({ page_id: "..." });
112
+ * const parsed = v.parse(PageSchema, page);
113
+ * // parsed.properties.ParentPage: string | null
114
+ * ```
115
+ */
22
116
  declare const NullableSingleRelationSchema: v.SchemaWithPipe<readonly [v.ObjectSchema<{
23
117
  readonly relation: v.ArraySchema<v.ObjectSchema<{
24
118
  readonly id: v.StringSchema<undefined>;
@@ -1,6 +1,38 @@
1
1
  import * as v from "valibot";
2
2
 
3
3
  //#region src/relation.d.ts
4
+
5
+ /**
6
+ * Schema to extract the `relation` property from a Notion page property and transform it to an array of page IDs.
7
+ *
8
+ * **Input:**
9
+ * ```
10
+ * {
11
+ * relation: Array<{
12
+ * id: string;
13
+ * }>;
14
+ * }
15
+ * ```
16
+ *
17
+ * **Output:** `string[]`
18
+ *
19
+ * @example
20
+ * ```ts
21
+ * import * as v from "valibot";
22
+ * import { RelationSchema } from "@nakanoaas/notion-valibot-utils";
23
+ *
24
+ * const PageSchema = v.object({
25
+ * id: v.string(),
26
+ * properties: v.object({
27
+ * RelatedPages: RelationSchema,
28
+ * }),
29
+ * });
30
+ *
31
+ * const page = await notion.pages.retrieve({ page_id: "..." });
32
+ * const parsed = v.parse(PageSchema, page);
33
+ * // parsed.properties.RelatedPages: string[]
34
+ * ```
35
+ */
4
36
  declare const RelationSchema: v.SchemaWithPipe<readonly [v.ObjectSchema<{
5
37
  readonly relation: v.ArraySchema<v.ObjectSchema<{
6
38
  readonly id: v.StringSchema<undefined>;
@@ -10,6 +42,37 @@ declare const RelationSchema: v.SchemaWithPipe<readonly [v.ObjectSchema<{
10
42
  id: string;
11
43
  }[];
12
44
  }, string[]>]>;
45
+ /**
46
+ * Schema to extract the `relation` property from a Notion page property and transform it to a single page ID.
47
+ *
48
+ * **Input:**
49
+ * ```
50
+ * {
51
+ * relation: [{
52
+ * id: string;
53
+ * }];
54
+ * }
55
+ * ```
56
+ *
57
+ * **Output:** `string`
58
+ *
59
+ * @example
60
+ * ```ts
61
+ * import * as v from "valibot";
62
+ * import { SingleRelationSchema } from "@nakanoaas/notion-valibot-utils";
63
+ *
64
+ * const PageSchema = v.object({
65
+ * id: v.string(),
66
+ * properties: v.object({
67
+ * ParentPage: SingleRelationSchema,
68
+ * }),
69
+ * });
70
+ *
71
+ * const page = await notion.pages.retrieve({ page_id: "..." });
72
+ * const parsed = v.parse(PageSchema, page);
73
+ * // parsed.properties.ParentPage: string
74
+ * ```
75
+ */
13
76
  declare const SingleRelationSchema: v.SchemaWithPipe<readonly [v.ObjectSchema<{
14
77
  readonly relation: v.TupleSchema<[v.ObjectSchema<{
15
78
  readonly id: v.StringSchema<undefined>;
@@ -19,6 +82,37 @@ declare const SingleRelationSchema: v.SchemaWithPipe<readonly [v.ObjectSchema<{
19
82
  id: string;
20
83
  }];
21
84
  }, string>]>;
85
+ /**
86
+ * Schema to extract the `relation` property from a Notion page property and transform it to a single page ID or `null`.
87
+ *
88
+ * **Input:**
89
+ * ```
90
+ * {
91
+ * relation: Array<{
92
+ * id: string;
93
+ * }>;
94
+ * }
95
+ * ```
96
+ *
97
+ * **Output:** `string | null`
98
+ *
99
+ * @example
100
+ * ```ts
101
+ * import * as v from "valibot";
102
+ * import { NullableSingleRelationSchema } from "@nakanoaas/notion-valibot-utils";
103
+ *
104
+ * const PageSchema = v.object({
105
+ * id: v.string(),
106
+ * properties: v.object({
107
+ * ParentPage: NullableSingleRelationSchema,
108
+ * }),
109
+ * });
110
+ *
111
+ * const page = await notion.pages.retrieve({ page_id: "..." });
112
+ * const parsed = v.parse(PageSchema, page);
113
+ * // parsed.properties.ParentPage: string | null
114
+ * ```
115
+ */
22
116
  declare const NullableSingleRelationSchema: v.SchemaWithPipe<readonly [v.ObjectSchema<{
23
117
  readonly relation: v.ArraySchema<v.ObjectSchema<{
24
118
  readonly id: v.StringSchema<undefined>;
package/dist/relation.mjs CHANGED
@@ -1,9 +1,140 @@
1
1
  import * as v from "valibot";
2
2
 
3
3
  //#region src/relation.ts
4
+ /**
5
+ * Schema for a Notion relation object structure.
6
+ *
7
+ * **Input:**
8
+ * ```
9
+ * {
10
+ * id: string;
11
+ * }
12
+ * ```
13
+ *
14
+ * **Output:**
15
+ * ```
16
+ * {
17
+ * id: string;
18
+ * }
19
+ * ```
20
+ *
21
+ * @example
22
+ * ```ts
23
+ * import * as v from "valibot";
24
+ * import { InnerRelationSchema } from "@nakanoaas/notion-valibot-utils";
25
+ *
26
+ * const PageSchema = v.object({
27
+ * id: v.string(),
28
+ * properties: v.object({
29
+ * Relation: v.object({
30
+ * relation: v.array(InnerRelationSchema),
31
+ * }),
32
+ * }),
33
+ * });
34
+ *
35
+ * const page = await notion.pages.retrieve({ page_id: "..." });
36
+ * const parsed = v.parse(PageSchema, page);
37
+ * // parsed.properties.Relation.relation: Array<{ id: string }>
38
+ * ```
39
+ *
40
+ * @internal
41
+ */
4
42
  const InnerRelationSchema = v.object({ id: v.string() });
43
+ /**
44
+ * Schema to extract the `relation` property from a Notion page property and transform it to an array of page IDs.
45
+ *
46
+ * **Input:**
47
+ * ```
48
+ * {
49
+ * relation: Array<{
50
+ * id: string;
51
+ * }>;
52
+ * }
53
+ * ```
54
+ *
55
+ * **Output:** `string[]`
56
+ *
57
+ * @example
58
+ * ```ts
59
+ * import * as v from "valibot";
60
+ * import { RelationSchema } from "@nakanoaas/notion-valibot-utils";
61
+ *
62
+ * const PageSchema = v.object({
63
+ * id: v.string(),
64
+ * properties: v.object({
65
+ * RelatedPages: RelationSchema,
66
+ * }),
67
+ * });
68
+ *
69
+ * const page = await notion.pages.retrieve({ page_id: "..." });
70
+ * const parsed = v.parse(PageSchema, page);
71
+ * // parsed.properties.RelatedPages: string[]
72
+ * ```
73
+ */
5
74
  const RelationSchema = v.pipe(v.object({ relation: v.array(InnerRelationSchema) }), v.transform((v$1) => v$1.relation.map((r) => r.id)));
75
+ /**
76
+ * Schema to extract the `relation` property from a Notion page property and transform it to a single page ID.
77
+ *
78
+ * **Input:**
79
+ * ```
80
+ * {
81
+ * relation: [{
82
+ * id: string;
83
+ * }];
84
+ * }
85
+ * ```
86
+ *
87
+ * **Output:** `string`
88
+ *
89
+ * @example
90
+ * ```ts
91
+ * import * as v from "valibot";
92
+ * import { SingleRelationSchema } from "@nakanoaas/notion-valibot-utils";
93
+ *
94
+ * const PageSchema = v.object({
95
+ * id: v.string(),
96
+ * properties: v.object({
97
+ * ParentPage: SingleRelationSchema,
98
+ * }),
99
+ * });
100
+ *
101
+ * const page = await notion.pages.retrieve({ page_id: "..." });
102
+ * const parsed = v.parse(PageSchema, page);
103
+ * // parsed.properties.ParentPage: string
104
+ * ```
105
+ */
6
106
  const SingleRelationSchema = v.pipe(v.object({ relation: v.tuple([InnerRelationSchema]) }), v.transform((v$1) => v$1.relation[0].id));
107
+ /**
108
+ * Schema to extract the `relation` property from a Notion page property and transform it to a single page ID or `null`.
109
+ *
110
+ * **Input:**
111
+ * ```
112
+ * {
113
+ * relation: Array<{
114
+ * id: string;
115
+ * }>;
116
+ * }
117
+ * ```
118
+ *
119
+ * **Output:** `string | null`
120
+ *
121
+ * @example
122
+ * ```ts
123
+ * import * as v from "valibot";
124
+ * import { NullableSingleRelationSchema } from "@nakanoaas/notion-valibot-utils";
125
+ *
126
+ * const PageSchema = v.object({
127
+ * id: v.string(),
128
+ * properties: v.object({
129
+ * ParentPage: NullableSingleRelationSchema,
130
+ * }),
131
+ * });
132
+ *
133
+ * const page = await notion.pages.retrieve({ page_id: "..." });
134
+ * const parsed = v.parse(PageSchema, page);
135
+ * // parsed.properties.ParentPage: string | null
136
+ * ```
137
+ */
7
138
  const NullableSingleRelationSchema = v.pipe(v.object({ relation: v.array(InnerRelationSchema) }), v.transform((v$1) => v$1.relation[0]?.id ?? null));
8
139
 
9
140
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"relation.mjs","names":["v"],"sources":["../src/relation.ts"],"sourcesContent":["import * as v from \"valibot\";\n\nconst InnerRelationSchema = v.object({ id: v.string() });\n\nexport const RelationSchema = v.pipe(\n\tv.object({\n\t\trelation: v.array(InnerRelationSchema),\n\t}),\n\tv.transform((v) => v.relation.map((r) => r.id)),\n);\n\nexport const SingleRelationSchema = v.pipe(\n\tv.object({\n\t\trelation: v.tuple([InnerRelationSchema]),\n\t}),\n\tv.transform((v) => v.relation[0].id),\n);\n\nexport const NullableSingleRelationSchema = v.pipe(\n\tv.object({\n\t\trelation: v.array(InnerRelationSchema),\n\t}),\n\tv.transform((v) => v.relation[0]?.id ?? null),\n);\n"],"mappings":";;;AAEA,MAAM,sBAAsB,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AAExD,MAAa,iBAAiB,EAAE,KAC/B,EAAE,OAAO,EACR,UAAU,EAAE,MAAM,oBAAoB,EACtC,CAAC,EACF,EAAE,WAAW,QAAMA,IAAE,SAAS,KAAK,MAAM,EAAE,GAAG,CAAC,CAC/C;AAED,MAAa,uBAAuB,EAAE,KACrC,EAAE,OAAO,EACR,UAAU,EAAE,MAAM,CAAC,oBAAoB,CAAC,EACxC,CAAC,EACF,EAAE,WAAW,QAAMA,IAAE,SAAS,GAAG,GAAG,CACpC;AAED,MAAa,+BAA+B,EAAE,KAC7C,EAAE,OAAO,EACR,UAAU,EAAE,MAAM,oBAAoB,EACtC,CAAC,EACF,EAAE,WAAW,QAAMA,IAAE,SAAS,IAAI,MAAM,KAAK,CAC7C"}
1
+ {"version":3,"file":"relation.mjs","names":["v"],"sources":["../src/relation.ts"],"sourcesContent":["import * as v from \"valibot\";\n\n/**\n * Schema for a Notion relation object structure.\n *\n * **Input:**\n * ```\n * {\n * id: string;\n * }\n * ```\n *\n * **Output:**\n * ```\n * {\n * id: string;\n * }\n * ```\n *\n * @example\n * ```ts\n * import * as v from \"valibot\";\n * import { InnerRelationSchema } from \"@nakanoaas/notion-valibot-utils\";\n *\n * const PageSchema = v.object({\n * id: v.string(),\n * properties: v.object({\n * Relation: v.object({\n * relation: v.array(InnerRelationSchema),\n * }),\n * }),\n * });\n *\n * const page = await notion.pages.retrieve({ page_id: \"...\" });\n * const parsed = v.parse(PageSchema, page);\n * // parsed.properties.Relation.relation: Array<{ id: string }>\n * ```\n *\n * @internal\n */\nconst InnerRelationSchema = v.object({ id: v.string() });\n\n/**\n * Schema to extract the `relation` property from a Notion page property and transform it to an array of page IDs.\n *\n * **Input:**\n * ```\n * {\n * relation: Array<{\n * id: string;\n * }>;\n * }\n * ```\n *\n * **Output:** `string[]`\n *\n * @example\n * ```ts\n * import * as v from \"valibot\";\n * import { RelationSchema } from \"@nakanoaas/notion-valibot-utils\";\n *\n * const PageSchema = v.object({\n * id: v.string(),\n * properties: v.object({\n * RelatedPages: RelationSchema,\n * }),\n * });\n *\n * const page = await notion.pages.retrieve({ page_id: \"...\" });\n * const parsed = v.parse(PageSchema, page);\n * // parsed.properties.RelatedPages: string[]\n * ```\n */\nexport const RelationSchema = v.pipe(\n\tv.object({\n\t\trelation: v.array(InnerRelationSchema),\n\t}),\n\tv.transform((v) => v.relation.map((r) => r.id)),\n);\n\n/**\n * Schema to extract the `relation` property from a Notion page property and transform it to a single page ID.\n *\n * **Input:**\n * ```\n * {\n * relation: [{\n * id: string;\n * }];\n * }\n * ```\n *\n * **Output:** `string`\n *\n * @example\n * ```ts\n * import * as v from \"valibot\";\n * import { SingleRelationSchema } from \"@nakanoaas/notion-valibot-utils\";\n *\n * const PageSchema = v.object({\n * id: v.string(),\n * properties: v.object({\n * ParentPage: SingleRelationSchema,\n * }),\n * });\n *\n * const page = await notion.pages.retrieve({ page_id: \"...\" });\n * const parsed = v.parse(PageSchema, page);\n * // parsed.properties.ParentPage: string\n * ```\n */\nexport const SingleRelationSchema = v.pipe(\n\tv.object({\n\t\trelation: v.tuple([InnerRelationSchema]),\n\t}),\n\tv.transform((v) => v.relation[0].id),\n);\n\n/**\n * Schema to extract the `relation` property from a Notion page property and transform it to a single page ID or `null`.\n *\n * **Input:**\n * ```\n * {\n * relation: Array<{\n * id: string;\n * }>;\n * }\n * ```\n *\n * **Output:** `string | null`\n *\n * @example\n * ```ts\n * import * as v from \"valibot\";\n * import { NullableSingleRelationSchema } from \"@nakanoaas/notion-valibot-utils\";\n *\n * const PageSchema = v.object({\n * id: v.string(),\n * properties: v.object({\n * ParentPage: NullableSingleRelationSchema,\n * }),\n * });\n *\n * const page = await notion.pages.retrieve({ page_id: \"...\" });\n * const parsed = v.parse(PageSchema, page);\n * // parsed.properties.ParentPage: string | null\n * ```\n */\nexport const NullableSingleRelationSchema = v.pipe(\n\tv.object({\n\t\trelation: v.array(InnerRelationSchema),\n\t}),\n\tv.transform((v) => v.relation[0]?.id ?? null),\n);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwCA,MAAM,sBAAsB,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCxD,MAAa,iBAAiB,EAAE,KAC/B,EAAE,OAAO,EACR,UAAU,EAAE,MAAM,oBAAoB,EACtC,CAAC,EACF,EAAE,WAAW,QAAMA,IAAE,SAAS,KAAK,MAAM,EAAE,GAAG,CAAC,CAC/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCD,MAAa,uBAAuB,EAAE,KACrC,EAAE,OAAO,EACR,UAAU,EAAE,MAAM,CAAC,oBAAoB,CAAC,EACxC,CAAC,EACF,EAAE,WAAW,QAAMA,IAAE,SAAS,GAAG,GAAG,CACpC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCD,MAAa,+BAA+B,EAAE,KAC7C,EAAE,OAAO,EACR,UAAU,EAAE,MAAM,oBAAoB,EACtC,CAAC,EACF,EAAE,WAAW,QAAMA,IAAE,SAAS,IAAI,MAAM,KAAK,CAC7C"}