chukyo-sdk 0.1.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.
Files changed (177) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +227 -0
  3. package/dist/cjs/albo/client.js +133 -0
  4. package/dist/cjs/albo/index.js +55 -0
  5. package/dist/cjs/albo/parser/albo.js +110 -0
  6. package/dist/cjs/albo/types/albo.js +351 -0
  7. package/dist/cjs/albo/types/alboCalendar.js +51 -0
  8. package/dist/cjs/albo/types/alboCommon.js +55 -0
  9. package/dist/cjs/albo/types/alboInformation.js +136 -0
  10. package/dist/cjs/albo/types/alboMenu.js +92 -0
  11. package/dist/cjs/albo/types/alboQuestionnaire.js +229 -0
  12. package/dist/cjs/albo/types/alboSharedItem.js +137 -0
  13. package/dist/cjs/albo/types/alboSystem.js +103 -0
  14. package/dist/cjs/albo/types/alboUniversalForm.js +51 -0
  15. package/dist/cjs/common/dom.js +137 -0
  16. package/dist/cjs/common/utils.js +29 -0
  17. package/dist/cjs/constants.js +127 -0
  18. package/dist/cjs/core/request.js +39 -0
  19. package/dist/cjs/cubics/client.js +49 -0
  20. package/dist/cjs/cubics/index.js +22 -0
  21. package/dist/cjs/cubics/parser/cubics.js +103 -0
  22. package/dist/cjs/cubics/types/cubics.js +90 -0
  23. package/dist/cjs/errors.js +55 -0
  24. package/dist/cjs/index.js +50 -0
  25. package/dist/cjs/manabo/client.js +135 -0
  26. package/dist/cjs/manabo/index.js +44 -0
  27. package/dist/cjs/manabo/parser/manaboClass.js +386 -0
  28. package/dist/cjs/manabo/parser/manaboEntry.js +38 -0
  29. package/dist/cjs/manabo/parser/manaboMail.js +153 -0
  30. package/dist/cjs/manabo/parser/manaboNews.js +26 -0
  31. package/dist/cjs/manabo/parser/manaboTimetable.js +93 -0
  32. package/dist/cjs/manabo/types/manaboClass.js +223 -0
  33. package/dist/cjs/manabo/types/manaboEntry.js +43 -0
  34. package/dist/cjs/manabo/types/manaboMail.js +117 -0
  35. package/dist/cjs/manabo/types/manaboNews.js +20 -0
  36. package/dist/cjs/manabo/types/manaboTimetable.js +79 -0
  37. package/dist/cjs/package.json +1 -0
  38. package/dist/cjs/shib/builder.js +239 -0
  39. package/dist/cjs/shib/index.js +32 -0
  40. package/dist/cjs/shib/parser/shibLogin.js +138 -0
  41. package/dist/cjs/shib/parser/shibUser.js +51 -0
  42. package/dist/cjs/shib/types/common.js +2 -0
  43. package/dist/cjs/shib/types/shibLogin.js +92 -0
  44. package/dist/cjs/shib/types/shibUser.js +44 -0
  45. package/dist/cjs/transports/fetch.js +84 -0
  46. package/dist/cjs/types.js +9 -0
  47. package/dist/esm/albo/client.d.ts +80 -0
  48. package/dist/esm/albo/client.d.ts.map +1 -0
  49. package/dist/esm/albo/client.js +129 -0
  50. package/dist/esm/albo/index.d.ts +12 -0
  51. package/dist/esm/albo/index.d.ts.map +1 -0
  52. package/dist/esm/albo/index.js +11 -0
  53. package/dist/esm/albo/parser/albo.d.ts +69 -0
  54. package/dist/esm/albo/parser/albo.d.ts.map +1 -0
  55. package/dist/esm/albo/parser/albo.js +84 -0
  56. package/dist/esm/albo/types/albo.d.ts +460 -0
  57. package/dist/esm/albo/types/albo.d.ts.map +1 -0
  58. package/dist/esm/albo/types/albo.js +348 -0
  59. package/dist/esm/albo/types/alboCalendar.d.ts +58 -0
  60. package/dist/esm/albo/types/alboCalendar.d.ts.map +1 -0
  61. package/dist/esm/albo/types/alboCalendar.js +48 -0
  62. package/dist/esm/albo/types/alboCommon.d.ts +52 -0
  63. package/dist/esm/albo/types/alboCommon.d.ts.map +1 -0
  64. package/dist/esm/albo/types/alboCommon.js +51 -0
  65. package/dist/esm/albo/types/alboInformation.d.ts +214 -0
  66. package/dist/esm/albo/types/alboInformation.d.ts.map +1 -0
  67. package/dist/esm/albo/types/alboInformation.js +133 -0
  68. package/dist/esm/albo/types/alboMenu.d.ts +114 -0
  69. package/dist/esm/albo/types/alboMenu.d.ts.map +1 -0
  70. package/dist/esm/albo/types/alboMenu.js +89 -0
  71. package/dist/esm/albo/types/alboQuestionnaire.d.ts +442 -0
  72. package/dist/esm/albo/types/alboQuestionnaire.d.ts.map +1 -0
  73. package/dist/esm/albo/types/alboQuestionnaire.js +226 -0
  74. package/dist/esm/albo/types/alboSharedItem.d.ts +205 -0
  75. package/dist/esm/albo/types/alboSharedItem.d.ts.map +1 -0
  76. package/dist/esm/albo/types/alboSharedItem.js +134 -0
  77. package/dist/esm/albo/types/alboSystem.d.ts +129 -0
  78. package/dist/esm/albo/types/alboSystem.d.ts.map +1 -0
  79. package/dist/esm/albo/types/alboSystem.js +100 -0
  80. package/dist/esm/albo/types/alboUniversalForm.d.ts +63 -0
  81. package/dist/esm/albo/types/alboUniversalForm.d.ts.map +1 -0
  82. package/dist/esm/albo/types/alboUniversalForm.js +48 -0
  83. package/dist/esm/common/dom.d.ts +35 -0
  84. package/dist/esm/common/dom.d.ts.map +1 -0
  85. package/dist/esm/common/dom.js +120 -0
  86. package/dist/esm/common/utils.d.ts +15 -0
  87. package/dist/esm/common/utils.d.ts.map +1 -0
  88. package/dist/esm/common/utils.js +22 -0
  89. package/dist/esm/constants.d.ts +113 -0
  90. package/dist/esm/constants.d.ts.map +1 -0
  91. package/dist/esm/constants.js +124 -0
  92. package/dist/esm/core/request.d.ts +29 -0
  93. package/dist/esm/core/request.d.ts.map +1 -0
  94. package/dist/esm/core/request.js +33 -0
  95. package/dist/esm/cubics/client.d.ts +13 -0
  96. package/dist/esm/cubics/client.d.ts.map +1 -0
  97. package/dist/esm/cubics/client.js +45 -0
  98. package/dist/esm/cubics/index.d.ts +4 -0
  99. package/dist/esm/cubics/index.d.ts.map +1 -0
  100. package/dist/esm/cubics/index.js +3 -0
  101. package/dist/esm/cubics/parser/cubics.d.ts +8 -0
  102. package/dist/esm/cubics/parser/cubics.d.ts.map +1 -0
  103. package/dist/esm/cubics/parser/cubics.js +99 -0
  104. package/dist/esm/cubics/types/cubics.d.ts +94 -0
  105. package/dist/esm/cubics/types/cubics.d.ts.map +1 -0
  106. package/dist/esm/cubics/types/cubics.js +87 -0
  107. package/dist/esm/errors.d.ts +46 -0
  108. package/dist/esm/errors.d.ts.map +1 -0
  109. package/dist/esm/errors.js +46 -0
  110. package/dist/esm/index.d.ts +19 -0
  111. package/dist/esm/index.d.ts.map +1 -0
  112. package/dist/esm/index.js +25 -0
  113. package/dist/esm/manabo/client.d.ts +75 -0
  114. package/dist/esm/manabo/client.d.ts.map +1 -0
  115. package/dist/esm/manabo/client.js +131 -0
  116. package/dist/esm/manabo/index.d.ts +12 -0
  117. package/dist/esm/manabo/index.d.ts.map +1 -0
  118. package/dist/esm/manabo/index.js +11 -0
  119. package/dist/esm/manabo/parser/manaboClass.d.ts +9 -0
  120. package/dist/esm/manabo/parser/manaboClass.d.ts.map +1 -0
  121. package/dist/esm/manabo/parser/manaboClass.js +377 -0
  122. package/dist/esm/manabo/parser/manaboEntry.d.ts +8 -0
  123. package/dist/esm/manabo/parser/manaboEntry.d.ts.map +1 -0
  124. package/dist/esm/manabo/parser/manaboEntry.js +33 -0
  125. package/dist/esm/manabo/parser/manaboMail.d.ts +8 -0
  126. package/dist/esm/manabo/parser/manaboMail.d.ts.map +1 -0
  127. package/dist/esm/manabo/parser/manaboMail.js +145 -0
  128. package/dist/esm/manabo/parser/manaboNews.d.ts +7 -0
  129. package/dist/esm/manabo/parser/manaboNews.d.ts.map +1 -0
  130. package/dist/esm/manabo/parser/manaboNews.js +22 -0
  131. package/dist/esm/manabo/parser/manaboTimetable.d.ts +4 -0
  132. package/dist/esm/manabo/parser/manaboTimetable.d.ts.map +1 -0
  133. package/dist/esm/manabo/parser/manaboTimetable.js +89 -0
  134. package/dist/esm/manabo/types/manaboClass.d.ts +294 -0
  135. package/dist/esm/manabo/types/manaboClass.d.ts.map +1 -0
  136. package/dist/esm/manabo/types/manaboClass.js +220 -0
  137. package/dist/esm/manabo/types/manaboEntry.d.ts +24 -0
  138. package/dist/esm/manabo/types/manaboEntry.d.ts.map +1 -0
  139. package/dist/esm/manabo/types/manaboEntry.js +40 -0
  140. package/dist/esm/manabo/types/manaboMail.d.ts +103 -0
  141. package/dist/esm/manabo/types/manaboMail.d.ts.map +1 -0
  142. package/dist/esm/manabo/types/manaboMail.js +114 -0
  143. package/dist/esm/manabo/types/manaboNews.d.ts +15 -0
  144. package/dist/esm/manabo/types/manaboNews.d.ts.map +1 -0
  145. package/dist/esm/manabo/types/manaboNews.js +17 -0
  146. package/dist/esm/manabo/types/manaboTimetable.d.ts +88 -0
  147. package/dist/esm/manabo/types/manaboTimetable.d.ts.map +1 -0
  148. package/dist/esm/manabo/types/manaboTimetable.js +76 -0
  149. package/dist/esm/package.json +1 -0
  150. package/dist/esm/shib/builder.d.ts +154 -0
  151. package/dist/esm/shib/builder.d.ts.map +1 -0
  152. package/dist/esm/shib/builder.js +212 -0
  153. package/dist/esm/shib/index.d.ts +15 -0
  154. package/dist/esm/shib/index.d.ts.map +1 -0
  155. package/dist/esm/shib/index.js +14 -0
  156. package/dist/esm/shib/parser/shibLogin.d.ts +47 -0
  157. package/dist/esm/shib/parser/shibLogin.d.ts.map +1 -0
  158. package/dist/esm/shib/parser/shibLogin.js +127 -0
  159. package/dist/esm/shib/parser/shibUser.d.ts +11 -0
  160. package/dist/esm/shib/parser/shibUser.d.ts.map +1 -0
  161. package/dist/esm/shib/parser/shibUser.js +46 -0
  162. package/dist/esm/shib/types/common.d.ts +20 -0
  163. package/dist/esm/shib/types/common.d.ts.map +1 -0
  164. package/dist/esm/shib/types/common.js +1 -0
  165. package/dist/esm/shib/types/shibLogin.d.ts +62 -0
  166. package/dist/esm/shib/types/shibLogin.d.ts.map +1 -0
  167. package/dist/esm/shib/types/shibLogin.js +89 -0
  168. package/dist/esm/shib/types/shibUser.d.ts +36 -0
  169. package/dist/esm/shib/types/shibUser.d.ts.map +1 -0
  170. package/dist/esm/shib/types/shibUser.js +41 -0
  171. package/dist/esm/transports/fetch.d.ts +36 -0
  172. package/dist/esm/transports/fetch.d.ts.map +1 -0
  173. package/dist/esm/transports/fetch.js +80 -0
  174. package/dist/esm/types.d.ts +71 -0
  175. package/dist/esm/types.d.ts.map +1 -0
  176. package/dist/esm/types.js +8 -0
  177. package/package.json +72 -0
@@ -0,0 +1,88 @@
1
+ import { z } from "zod";
2
+ /** 時間割グリッドの 1 コマ(曜日×時限)。空きコマは className/teacher/href が null */
3
+ export declare const ManaboTimetableSlotSchema: z.ZodObject<{
4
+ day: z.ZodString;
5
+ className: z.ZodNullable<z.ZodString>;
6
+ teacher: z.ZodNullable<z.ZodString>;
7
+ href: z.ZodNullable<z.ZodString>;
8
+ isNew: z.ZodBoolean;
9
+ newContentHref: z.ZodNullable<z.ZodString>;
10
+ }, z.core.$strip>;
11
+ export type ManaboTimetableSlotDTO = z.infer<typeof ManaboTimetableSlotSchema>;
12
+ /** 「上記以外のクラス(A,B,C限含む)」テーブルの各行 */
13
+ export declare const ManaboTimetableOtherClassSchema: z.ZodObject<{
14
+ className: z.ZodString;
15
+ href: z.ZodNullable<z.ZodString>;
16
+ dayPeriod: z.ZodNullable<z.ZodString>;
17
+ teacher: z.ZodNullable<z.ZodString>;
18
+ classroom: z.ZodNullable<z.ZodString>;
19
+ isNew: z.ZodBoolean;
20
+ newContentHref: z.ZodNullable<z.ZodString>;
21
+ }, z.core.$strip>;
22
+ export type ManaboTimetableOtherClassDTO = z.infer<typeof ManaboTimetableOtherClassSchema>;
23
+ /** 1 時限分の行(時限ラベルと曜日順のスロット) */
24
+ export declare const ManaboTimetablePeriodSchema: z.ZodObject<{
25
+ period: z.ZodString;
26
+ slots: z.ZodArray<z.ZodObject<{
27
+ day: z.ZodString;
28
+ className: z.ZodNullable<z.ZodString>;
29
+ teacher: z.ZodNullable<z.ZodString>;
30
+ href: z.ZodNullable<z.ZodString>;
31
+ isNew: z.ZodBoolean;
32
+ newContentHref: z.ZodNullable<z.ZodString>;
33
+ }, z.core.$strip>>;
34
+ }, z.core.$strip>;
35
+ export type ManaboTimetablePeriodDTO = z.infer<typeof ManaboTimetablePeriodSchema>;
36
+ /** 学期切り替えタブ(過去分含む) */
37
+ export declare const ManaboTimetableTermSchema: z.ZodObject<{
38
+ archiveId: z.ZodString;
39
+ label: z.ZodString;
40
+ active: z.ZodBoolean;
41
+ }, z.core.$strip>;
42
+ export type ManaboTimetableTermDTO = z.infer<typeof ManaboTimetableTermSchema>;
43
+ /** 表示モード切り替え(時間割/一覧) */
44
+ export declare const ManaboTimetableViewModeSchema: z.ZodObject<{
45
+ archiveId: z.ZodString;
46
+ mode: z.ZodNullable<z.ZodString>;
47
+ label: z.ZodString;
48
+ active: z.ZodBoolean;
49
+ }, z.core.$strip>;
50
+ export type ManaboTimetableViewModeDTO = z.infer<typeof ManaboTimetableViewModeSchema>;
51
+ /** 時間割ページ全体 */
52
+ export declare const ManaboTimetableSchema: z.ZodObject<{
53
+ title: z.ZodString;
54
+ terms: z.ZodArray<z.ZodObject<{
55
+ archiveId: z.ZodString;
56
+ label: z.ZodString;
57
+ active: z.ZodBoolean;
58
+ }, z.core.$strip>>;
59
+ viewModes: z.ZodArray<z.ZodObject<{
60
+ archiveId: z.ZodString;
61
+ mode: z.ZodNullable<z.ZodString>;
62
+ label: z.ZodString;
63
+ active: z.ZodBoolean;
64
+ }, z.core.$strip>>;
65
+ days: z.ZodArray<z.ZodString>;
66
+ periods: z.ZodArray<z.ZodObject<{
67
+ period: z.ZodString;
68
+ slots: z.ZodArray<z.ZodObject<{
69
+ day: z.ZodString;
70
+ className: z.ZodNullable<z.ZodString>;
71
+ teacher: z.ZodNullable<z.ZodString>;
72
+ href: z.ZodNullable<z.ZodString>;
73
+ isNew: z.ZodBoolean;
74
+ newContentHref: z.ZodNullable<z.ZodString>;
75
+ }, z.core.$strip>>;
76
+ }, z.core.$strip>>;
77
+ otherClasses: z.ZodArray<z.ZodObject<{
78
+ className: z.ZodString;
79
+ href: z.ZodNullable<z.ZodString>;
80
+ dayPeriod: z.ZodNullable<z.ZodString>;
81
+ teacher: z.ZodNullable<z.ZodString>;
82
+ classroom: z.ZodNullable<z.ZodString>;
83
+ isNew: z.ZodBoolean;
84
+ newContentHref: z.ZodNullable<z.ZodString>;
85
+ }, z.core.$strip>>;
86
+ }, z.core.$strip>;
87
+ export type ManaboTimetableDTO = z.infer<typeof ManaboTimetableSchema>;
88
+ //# sourceMappingURL=manaboTimetable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manaboTimetable.d.ts","sourceRoot":"","sources":["../../../../src/manabo/types/manaboTimetable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,+DAA+D;AAC/D,eAAO,MAAM,yBAAyB;;;;;;;iBAapC,CAAC;AAEH,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAE/E,kCAAkC;AAClC,eAAO,MAAM,+BAA+B;;;;;;;;iBAe1C,CAAC;AAEH,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAC;AAE3F,8BAA8B;AAC9B,eAAO,MAAM,2BAA2B;;;;;;;;;;iBAKtC,CAAC;AAEH,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAEnF,sBAAsB;AACtB,eAAO,MAAM,yBAAyB;;;;iBAOpC,CAAC;AAEH,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAE/E,wBAAwB;AACxB,eAAO,MAAM,6BAA6B;;;;;iBASxC,CAAC;AAEH,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AAEvF,eAAe;AACf,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAahC,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
@@ -0,0 +1,76 @@
1
+ import { z } from "zod";
2
+ // manabo の時間割ページ(週グリッド + 「上記以外のクラス」テーブル)スキーマ。
3
+ /** 時間割グリッドの 1 コマ(曜日×時限)。空きコマは className/teacher/href が null */
4
+ export const ManaboTimetableSlotSchema = z.object({
5
+ /** この列の曜日(空きコマでも列の曜日は入る) @example "月" */
6
+ day: z.string().meta({ description: "曜日", example: "月" }),
7
+ /** 授業名(空きコマは null) @example "情報リテラシー" */
8
+ className: z.string().nullable().meta({ description: "授業名", example: "情報リテラシー" }),
9
+ /** 担当教員(空きコマは null) @example "中京 一郎" */
10
+ teacher: z.string().nullable().meta({ description: "担当教員", example: "中京 一郎" }),
11
+ /** クラスページへのリンク @example "/class/85146/" */
12
+ href: z.string().nullable().meta({ description: "クラスページへのリンク", example: "/class/85146/" }),
13
+ /** 未読/新着コンテンツの「NEW」バッジが付いているか @example false */
14
+ isNew: z.boolean().meta({ description: "「NEW」バッジが付いているか", example: false }),
15
+ /** 「NEW」バッジのリンク先(無ければ null) @example null */
16
+ newContentHref: z.string().nullable().meta({ description: "「NEW」バッジのリンク先", example: null }),
17
+ });
18
+ /** 「上記以外のクラス(A,B,C限含む)」テーブルの各行 */
19
+ export const ManaboTimetableOtherClassSchema = z.object({
20
+ /** 授業名 @example "キャリアデザイン" */
21
+ className: z.string().meta({ description: "授業名", example: "キャリアデザイン" }),
22
+ /** クラスページへのリンク @example "/class/90001/" */
23
+ href: z.string().nullable().meta({ description: "クラスページへのリンク", example: "/class/90001/" }),
24
+ /** 曜日/時限(掲載が無い場合は null) @example "集中" */
25
+ dayPeriod: z.string().nullable().meta({ description: "曜日/時限", example: "集中" }),
26
+ /** 教員名(掲載が無い場合は null) @example "中京 花子" */
27
+ teacher: z.string().nullable().meta({ description: "教員名", example: "中京 花子" }),
28
+ /** 教室(掲載が無い場合は null) @example "0号館5F" */
29
+ classroom: z.string().nullable().meta({ description: "教室", example: "0号館5F" }),
30
+ /** 「NEW」バッジが付いているか @example false */
31
+ isNew: z.boolean().meta({ description: "「NEW」バッジが付いているか", example: false }),
32
+ /** 「NEW」バッジのリンク先(無ければ null) @example null */
33
+ newContentHref: z.string().nullable().meta({ description: "「NEW」バッジのリンク先", example: null }),
34
+ });
35
+ /** 1 時限分の行(時限ラベルと曜日順のスロット) */
36
+ export const ManaboTimetablePeriodSchema = z.object({
37
+ /** 時限ラベル @example "1" */
38
+ period: z.string().meta({ description: "時限ラベル", example: "1" }),
39
+ /** 曜日順のスロット(days と同じ並び) */
40
+ slots: z.array(ManaboTimetableSlotSchema).meta({ description: "曜日順のスロット" }),
41
+ });
42
+ /** 学期切り替えタブ(過去分含む) */
43
+ export const ManaboTimetableTermSchema = z.object({
44
+ /** 時間割アーカイブ ID @example "12345" */
45
+ archiveId: z.string().meta({ description: "時間割アーカイブ ID", example: "12345" }),
46
+ /** 表示ラベル @example "2025 春学期" */
47
+ label: z.string().meta({ description: "表示ラベル", example: "2025 春学期" }),
48
+ /** 現在選択中か @example true */
49
+ active: z.boolean().meta({ description: "現在選択中か", example: true }),
50
+ });
51
+ /** 表示モード切り替え(時間割/一覧) */
52
+ export const ManaboTimetableViewModeSchema = z.object({
53
+ /** 時間割アーカイブ ID @example "12345" */
54
+ archiveId: z.string().meta({ description: "時間割アーカイブ ID", example: "12345" }),
55
+ /** 表示モード(既定表示は null) @example "list" */
56
+ mode: z.string().nullable().meta({ description: "表示モード", example: "list" }),
57
+ /** 表示ラベル @example "一覧" */
58
+ label: z.string().meta({ description: "表示ラベル", example: "一覧" }),
59
+ /** 現在選択中か @example false */
60
+ active: z.boolean().meta({ description: "現在選択中か", example: false }),
61
+ });
62
+ /** 時間割ページ全体 */
63
+ export const ManaboTimetableSchema = z.object({
64
+ /** ページ見出し(現在の学期名) @example "2025 春学期" */
65
+ title: z.string().meta({ description: "ページ見出し(現在の学期名)", example: "2025 春学期" }),
66
+ /** 学期切り替えタブ一覧 */
67
+ terms: z.array(ManaboTimetableTermSchema).meta({ description: "学期切り替えタブ一覧" }),
68
+ /** 表示モード切り替え一覧 */
69
+ viewModes: z.array(ManaboTimetableViewModeSchema).meta({ description: "表示モード切り替え一覧" }),
70
+ /** 曜日ヘッダ @example ["月","火","水","木","金","土"] */
71
+ days: z.array(z.string()).meta({ description: "曜日ヘッダ", example: ["月", "火", "水", "木", "金", "土"] }),
72
+ /** 時限ごとの行 */
73
+ periods: z.array(ManaboTimetablePeriodSchema).meta({ description: "時限ごとの行" }),
74
+ /** 「上記以外のクラス」テーブル(無い場合は空配列) */
75
+ otherClasses: z.array(ManaboTimetableOtherClassSchema).meta({ description: "上記以外のクラス" }),
76
+ });
@@ -0,0 +1 @@
1
+ {"type":"module"}
@@ -0,0 +1,154 @@
1
+ import type { ShibRequest } from "./types/common";
2
+ /**
3
+ * ログイン起点への GET。`enterUrl`(サービスの SP ログイン URL、または
4
+ * {@link SHIB_URLS.clspSamlLogin})から 302 連鎖で loginuserpass ページへ到達する。
5
+ * リダイレクト追従は呼び出し側が行う。
6
+ */
7
+ export declare const buildLoginEntryRequest: (enterUrl: string) => ShibRequest;
8
+ /** `checktype.php`:利用可能な認証方式を問い合わせる。 */
9
+ export declare const buildCheckTypeRequest: (input: {
10
+ authState: string;
11
+ username: string;
12
+ userAgent: string;
13
+ }) => ShibRequest;
14
+ /** `loginuserpass.php`:パスワード認証(authtype=0)。 */
15
+ export declare const buildPasswordLoginRequest: (input: {
16
+ authState: string;
17
+ username: string;
18
+ password: string;
19
+ }) => ShibRequest;
20
+ /** `loginuserpass.php`:OTP 認証(authtype=2)。`resend=1` で再送。 */
21
+ export declare const buildOtpLoginRequest: (input: {
22
+ authState: string;
23
+ username: string;
24
+ otp: string;
25
+ resend?: boolean;
26
+ }) => ShibRequest;
27
+ /** `loginuserpass.php`:パスキー認証(authtype=3)。 */
28
+ export declare const buildPasskeyLoginRequest: (input: {
29
+ authState: string;
30
+ username: string;
31
+ password: string;
32
+ credentialId: string;
33
+ }) => ShibRequest;
34
+ /**
35
+ * ログインフロー用 `webauthn.php`(start-authentication)のボディを組み立てる。
36
+ * challenge 取得用。finish-authentication は署名を伴うため {@link buildWebauthnRequest} を使う。
37
+ */
38
+ export declare const buildWebauthnStartAuthenticationRequest: (input: {
39
+ authState: string;
40
+ username: string;
41
+ browserInfo: string;
42
+ }) => ShibRequest;
43
+ /**
44
+ * ログインフロー用 `webauthn.php` に任意のボディを送る(finish-authentication 等)。
45
+ * ボディ(アサーション署名を含む)は呼び出し側が構築する。SDK は署名しない。
46
+ */
47
+ export declare const buildWebauthnRequest: (body: unknown) => ShibRequest;
48
+ /** `clsp/saml/acs`:SAML 自動 POST。応答は 303 連鎖でサービス Cookie を確立する(追従は呼び出し側)。 */
49
+ export declare const buildSamlAcsRequest: (input: {
50
+ action: string;
51
+ samlResponse: string;
52
+ relayState: string;
53
+ }) => ShibRequest;
54
+ /** `User/MenuSelect`:メニュー選択(type 例: "U25-001" デバイス管理 / "U23-001" OTP)。 */
55
+ export declare const buildMenuSelectRequest: (input: {
56
+ csrfToken: string;
57
+ type: string;
58
+ }) => ShibRequest;
59
+ /** `User/TimeZoneLangEnd`:タイムゾーン・言語設定。 */
60
+ export declare const buildTimeZoneLangEndRequest: (input: {
61
+ csrfToken: string;
62
+ userTimeZone: string;
63
+ userLanguage: string;
64
+ procchk?: string;
65
+ }) => ShibRequest;
66
+ /** `User/Logout`:ログアウト(応答は SLO 連鎖の起点。追従は呼び出し側)。 */
67
+ export declare const buildLogoutRequest: (input: {
68
+ csrfToken: string;
69
+ }) => ShibRequest;
70
+ /** `User/Fido2DeviceAdd`:認証器追加ページ(procchk を 2 回送る実挙動を再現)。 */
71
+ export declare const buildFido2DeviceAddRequest: (input: {
72
+ csrfToken: string;
73
+ username: string;
74
+ }) => ShibRequest;
75
+ /** `User/webauthn`(start-registration):登録チャレンジ取得用ボディを組み立てる。 */
76
+ export declare const buildUserWebauthnStartRegistrationRequest: (input: {
77
+ username: string;
78
+ displayName: string;
79
+ browserInfo: string;
80
+ }) => ShibRequest;
81
+ /**
82
+ * `User/webauthn` に任意のボディを送る(finish-registration 等)。
83
+ * attestation を含むボディは呼び出し側が構築する。SDK は鍵生成・署名をしない。
84
+ */
85
+ export declare const buildUserWebauthnRequest: (body: unknown) => ShibRequest;
86
+ /** `User/Fido2DeviceAddEnd`:認証器追加の完了。 */
87
+ export declare const buildFido2DeviceAddEndRequest: (input: {
88
+ csrfToken: string;
89
+ username: string;
90
+ displayName: string;
91
+ errorMessage?: string;
92
+ procchk?: string;
93
+ }) => ShibRequest;
94
+ /** `User/Fido2DeviceList`:登録済み認証器の一覧を取得する。 */
95
+ export declare const buildFido2DeviceListRequest: (input: {
96
+ csrfToken: string;
97
+ }) => ShibRequest;
98
+ /**
99
+ * `User/Fido2DeviceList`(funcSelect=del):削除対象を選択して確認ページへ進む。
100
+ * 応答の確認ページから procchk を取り出し、{@link buildFido2DeviceDelEndRequest} に渡す。
101
+ */
102
+ export declare const buildFido2DeviceDeleteSelectRequest: (input: {
103
+ csrfToken: string;
104
+ /** 一覧内の行インデックス(0 始まり) */
105
+ index: number;
106
+ /** 削除対象の Credential ID */
107
+ credentialId: string;
108
+ /** 一覧の総件数 */
109
+ resultCounts?: number;
110
+ }) => ShibRequest;
111
+ /** `User/Fido2DeviceDelEnd`:認証器削除の完了。 */
112
+ export declare const buildFido2DeviceDelEndRequest: (input: {
113
+ csrfToken: string;
114
+ checkedNames: string;
115
+ checkedKeys: string;
116
+ procchk: string;
117
+ }) => ShibRequest;
118
+ /** `User/SelectAuthTypeCheck`:認証方式選択(例: selectAuthType="smartApp")。 */
119
+ export declare const buildSelectAuthTypeCheckRequest: (input: {
120
+ csrfToken: string;
121
+ selectAuthType: string;
122
+ isOnOff?: string;
123
+ isMailFlg?: boolean;
124
+ procchk?: string;
125
+ }) => ShibRequest;
126
+ /** `User/InputMailAddresCheck`:OTP 用メールアドレス入力チェック。 */
127
+ export declare const buildInputMailAddresCheckRequest: (input: {
128
+ csrfToken: string;
129
+ mailaddress: string;
130
+ mailFlg?: boolean;
131
+ }) => ShibRequest;
132
+ /** `User/InputTemporaryOtpCheck`:仮 OTP 入力チェック。 */
133
+ export declare const buildInputTemporaryOtpCheckRequest: (input: {
134
+ csrfToken: string;
135
+ appnumber: string;
136
+ agentType?: string;
137
+ mailFlg?: boolean;
138
+ }) => ShibRequest;
139
+ /** `User/DisplayInstallAppliLinkCheck`:アプリインストール導線表示チェック。 */
140
+ export declare const buildDisplayInstallAppliLinkCheckRequest: (input: {
141
+ csrfToken: string;
142
+ }) => ShibRequest;
143
+ /** `User/InputOtpForPCCheck`:PC 用 OTP 入力チェック。 */
144
+ export declare const buildInputOtpForPCCheckRequest: (input: {
145
+ csrfToken: string;
146
+ appnumber: string;
147
+ }) => ShibRequest;
148
+ /** `User/InputTemporaryOtp`:仮 OTP 入力。 */
149
+ export declare const buildInputTemporaryOtpRequest: (input: {
150
+ csrfToken: string;
151
+ mailaddress?: string;
152
+ mailFlg?: boolean;
153
+ }) => ShibRequest;
154
+ //# sourceMappingURL=builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../../src/shib/builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,212 @@
1
+ /**
2
+ * Shibboleth 認証フローの各ステップの「リクエスト記述子」を組み立てるビルダ群。
3
+ *
4
+ * すべて純関数で、{@link ShibRequest}(method / url / headers / body)を返すだけ。
5
+ * 実際の送信・Cookie 管理・リダイレクト追従・パスキー暗号処理は呼び出し側が行う。
6
+ * WebAuthn の finish 系はボディの暗号処理を伴うため、呼び出し側が構築したボディを
7
+ * そのままラップする({@link buildWebauthnRequest} / {@link buildUserWebauthnRequest})。
8
+ */
9
+ import { SHIB_URLS } from "../constants";
10
+ import { formEncode, formEncodeArray } from "../common/utils";
11
+ const FORM_CONTENT_TYPE = "application/x-www-form-urlencoded";
12
+ const JSON_CONTENT_TYPE = "application/json";
13
+ const formHeaders = (withOrigin) => ({
14
+ "Content-Type": FORM_CONTENT_TYPE,
15
+ ...(withOrigin ? { Origin: SHIB_URLS.origin } : {}),
16
+ });
17
+ const jsonHeaders = () => ({
18
+ "Content-Type": JSON_CONTENT_TYPE,
19
+ Origin: SHIB_URLS.origin,
20
+ });
21
+ /** form-urlencoded な POST リクエスト記述子を組み立てる。 */
22
+ const formRequest = (url, params, withOrigin = true) => ({
23
+ method: "POST",
24
+ url,
25
+ headers: formHeaders(withOrigin),
26
+ body: formEncode(params),
27
+ });
28
+ /** JSON な POST リクエスト記述子を組み立てる。 */
29
+ const jsonRequest = (url, body) => ({
30
+ method: "POST",
31
+ url,
32
+ headers: jsonHeaders(),
33
+ body: JSON.stringify(body),
34
+ });
35
+ const boolStr = (value) => (value ? "true" : "false");
36
+ // ============================================
37
+ // ログインフロー
38
+ // ============================================
39
+ /**
40
+ * ログイン起点への GET。`enterUrl`(サービスの SP ログイン URL、または
41
+ * {@link SHIB_URLS.clspSamlLogin})から 302 連鎖で loginuserpass ページへ到達する。
42
+ * リダイレクト追従は呼び出し側が行う。
43
+ */
44
+ export const buildLoginEntryRequest = (enterUrl) => ({
45
+ method: "GET",
46
+ url: enterUrl,
47
+ headers: {},
48
+ });
49
+ /** `checktype.php`:利用可能な認証方式を問い合わせる。 */
50
+ export const buildCheckTypeRequest = (input) => jsonRequest(SHIB_URLS.checktype, {
51
+ AuthState: input.authState,
52
+ params: { username: input.username, UserAgent: input.userAgent },
53
+ });
54
+ /** `loginuserpass.php`:パスワード認証(authtype=0)。 */
55
+ export const buildPasswordLoginRequest = (input) => formRequest(SHIB_URLS.cloudlinkLoginForm, {
56
+ authtype: "0",
57
+ login_exec: "1",
58
+ username: input.username,
59
+ password: input.password,
60
+ AuthState: input.authState,
61
+ });
62
+ /** `loginuserpass.php`:OTP 認証(authtype=2)。`resend=1` で再送。 */
63
+ export const buildOtpLoginRequest = (input) => formRequest(SHIB_URLS.cloudlinkLoginForm, {
64
+ authtype: "2",
65
+ resend: input.resend ? "1" : "0",
66
+ login_exec: "1",
67
+ username: input.username,
68
+ password: input.otp,
69
+ AuthState: input.authState,
70
+ });
71
+ /** `loginuserpass.php`:パスキー認証(authtype=3)。 */
72
+ export const buildPasskeyLoginRequest = (input) => formRequest(SHIB_URLS.cloudlinkLoginForm, {
73
+ authtype: "3",
74
+ login_exec: "1",
75
+ username: input.username,
76
+ password: input.password,
77
+ AuthState: input.authState,
78
+ credentialid: input.credentialId,
79
+ });
80
+ /**
81
+ * ログインフロー用 `webauthn.php`(start-authentication)のボディを組み立てる。
82
+ * challenge 取得用。finish-authentication は署名を伴うため {@link buildWebauthnRequest} を使う。
83
+ */
84
+ export const buildWebauthnStartAuthenticationRequest = (input) => jsonRequest(SHIB_URLS.webauthn, {
85
+ method: "start-authentication",
86
+ sessioninfo: { AuthState: input.authState },
87
+ params: { username: input.username, browserInfo: input.browserInfo },
88
+ });
89
+ /**
90
+ * ログインフロー用 `webauthn.php` に任意のボディを送る(finish-authentication 等)。
91
+ * ボディ(アサーション署名を含む)は呼び出し側が構築する。SDK は署名しない。
92
+ */
93
+ export const buildWebauthnRequest = (body) => jsonRequest(SHIB_URLS.webauthn, body);
94
+ /** `clsp/saml/acs`:SAML 自動 POST。応答は 303 連鎖でサービス Cookie を確立する(追従は呼び出し側)。 */
95
+ export const buildSamlAcsRequest = (input) => formRequest(input.action, { SAMLResponse: input.samlResponse, RelayState: input.relayState }, false);
96
+ // ============================================
97
+ // ACE User ポータル:共通
98
+ // ============================================
99
+ /** `User/MenuSelect`:メニュー選択(type 例: "U25-001" デバイス管理 / "U23-001" OTP)。 */
100
+ export const buildMenuSelectRequest = (input) => formRequest(SHIB_URLS.userMenuSelect, {
101
+ ACEUSER_CSRFTOKEN: input.csrfToken,
102
+ type: input.type,
103
+ });
104
+ /** `User/TimeZoneLangEnd`:タイムゾーン・言語設定。 */
105
+ export const buildTimeZoneLangEndRequest = (input) => formRequest(SHIB_URLS.userTimeZoneLangEnd, {
106
+ ACEUSER_CSRFTOKEN: input.csrfToken,
107
+ userTimeZone: input.userTimeZone,
108
+ userLanguage: input.userLanguage,
109
+ procchk: input.procchk ?? "",
110
+ });
111
+ /** `User/Logout`:ログアウト(応答は SLO 連鎖の起点。追従は呼び出し側)。 */
112
+ export const buildLogoutRequest = (input) => formRequest(SHIB_URLS.userLogout, { ACEUSER_CSRFTOKEN: input.csrfToken });
113
+ // ============================================
114
+ // ACE User ポータル:パスキー登録・管理
115
+ // ============================================
116
+ /** `User/Fido2DeviceAdd`:認証器追加ページ(procchk を 2 回送る実挙動を再現)。 */
117
+ export const buildFido2DeviceAddRequest = (input) => ({
118
+ method: "POST",
119
+ url: SHIB_URLS.userFido2DeviceAdd,
120
+ headers: formHeaders(true),
121
+ // 生 HAR のキー順(CSRF, procchk, procchk, username)と空値を忠実に再現する。
122
+ body: formEncodeArray([
123
+ ["ACEUSER_CSRFTOKEN", input.csrfToken],
124
+ ["procchk", ""],
125
+ ["procchk", ""],
126
+ ["username", input.username],
127
+ ]),
128
+ });
129
+ /** `User/webauthn`(start-registration):登録チャレンジ取得用ボディを組み立てる。 */
130
+ export const buildUserWebauthnStartRegistrationRequest = (input) => jsonRequest(SHIB_URLS.userWebauthn, {
131
+ method: "start-registration",
132
+ sessioninfo: {},
133
+ params: { username: input.username, displayName: input.displayName, browserInfo: input.browserInfo },
134
+ });
135
+ /**
136
+ * `User/webauthn` に任意のボディを送る(finish-registration 等)。
137
+ * attestation を含むボディは呼び出し側が構築する。SDK は鍵生成・署名をしない。
138
+ */
139
+ export const buildUserWebauthnRequest = (body) => jsonRequest(SHIB_URLS.userWebauthn, body);
140
+ /** `User/Fido2DeviceAddEnd`:認証器追加の完了。 */
141
+ export const buildFido2DeviceAddEndRequest = (input) => formRequest(SHIB_URLS.userFido2DeviceAddEnd, {
142
+ ACEUSER_CSRFTOKEN: input.csrfToken,
143
+ username: input.username,
144
+ errorMessage: input.errorMessage ?? "",
145
+ displayName: input.displayName,
146
+ procchk: input.procchk ?? "",
147
+ });
148
+ /** `User/Fido2DeviceList`:登録済み認証器の一覧を取得する。 */
149
+ export const buildFido2DeviceListRequest = (input) => formRequest(SHIB_URLS.userFido2DeviceList, { ACEUSER_CSRFTOKEN: input.csrfToken });
150
+ /**
151
+ * `User/Fido2DeviceList`(funcSelect=del):削除対象を選択して確認ページへ進む。
152
+ * 応答の確認ページから procchk を取り出し、{@link buildFido2DeviceDelEndRequest} に渡す。
153
+ */
154
+ export const buildFido2DeviceDeleteSelectRequest = (input) => formRequest(SHIB_URLS.userFido2DeviceList, {
155
+ ACEUSER_CSRFTOKEN: input.csrfToken,
156
+ funcSelect: "del",
157
+ viewListSelect: "on",
158
+ selectedId: String(input.index),
159
+ selectedNmId: input.credentialId,
160
+ selectedIndexesId: String(input.index),
161
+ selectedIndexesNmId: input.credentialId,
162
+ lastSortedColumn: "-1,null",
163
+ allCheckFlg: "false",
164
+ resultCounts: String(input.resultCounts ?? 1),
165
+ buttonName: "del",
166
+ isBack: "N",
167
+ indexNums: "",
168
+ });
169
+ /** `User/Fido2DeviceDelEnd`:認証器削除の完了。 */
170
+ export const buildFido2DeviceDelEndRequest = (input) => formRequest(SHIB_URLS.userFido2DeviceDelEnd, {
171
+ ACEUSER_CSRFTOKEN: input.csrfToken,
172
+ checkedNames: input.checkedNames,
173
+ checkedKeys: input.checkedKeys,
174
+ procchk: input.procchk,
175
+ });
176
+ // ============================================
177
+ // ACE User ポータル:OTP 登録
178
+ // ============================================
179
+ /** `User/SelectAuthTypeCheck`:認証方式選択(例: selectAuthType="smartApp")。 */
180
+ export const buildSelectAuthTypeCheckRequest = (input) => formRequest(SHIB_URLS.userSelectAuthTypeCheck, {
181
+ ACEUSER_CSRFTOKEN: input.csrfToken,
182
+ selectAuthType: input.selectAuthType,
183
+ procchk: input.procchk ?? "",
184
+ isOnOff: input.isOnOff ?? "on",
185
+ isMailFlg: boolStr(input.isMailFlg ?? false),
186
+ });
187
+ /** `User/InputMailAddresCheck`:OTP 用メールアドレス入力チェック。 */
188
+ export const buildInputMailAddresCheckRequest = (input) => formRequest(SHIB_URLS.userInputMailAddresCheck, {
189
+ ACEUSER_CSRFTOKEN: input.csrfToken,
190
+ mailFlg: boolStr(input.mailFlg ?? false),
191
+ mailaddress: input.mailaddress,
192
+ });
193
+ /** `User/InputTemporaryOtpCheck`:仮 OTP 入力チェック。 */
194
+ export const buildInputTemporaryOtpCheckRequest = (input) => formRequest(SHIB_URLS.userInputTemporaryOtpCheck, {
195
+ ACEUSER_CSRFTOKEN: input.csrfToken,
196
+ agentType: input.agentType ?? "-1",
197
+ mailFlg: boolStr(input.mailFlg ?? false),
198
+ appnumber: input.appnumber,
199
+ });
200
+ /** `User/DisplayInstallAppliLinkCheck`:アプリインストール導線表示チェック。 */
201
+ export const buildDisplayInstallAppliLinkCheckRequest = (input) => formRequest(SHIB_URLS.userDisplayInstallAppliLinkCheck, { ACEUSER_CSRFTOKEN: input.csrfToken });
202
+ /** `User/InputOtpForPCCheck`:PC 用 OTP 入力チェック。 */
203
+ export const buildInputOtpForPCCheckRequest = (input) => formRequest(SHIB_URLS.userInputOtpForPCCheck, {
204
+ ACEUSER_CSRFTOKEN: input.csrfToken,
205
+ appnumber: input.appnumber,
206
+ });
207
+ /** `User/InputTemporaryOtp`:仮 OTP 入力。 */
208
+ export const buildInputTemporaryOtpRequest = (input) => formRequest(SHIB_URLS.userInputTemporaryOtp, {
209
+ ACEUSER_CSRFTOKEN: input.csrfToken,
210
+ mailFlg: boolStr(input.mailFlg ?? true),
211
+ mailaddress: input.mailaddress ?? "",
212
+ });
@@ -0,0 +1,15 @@
1
+ /**
2
+ * shib(Shibboleth 認証フロー)モジュール。
3
+ *
4
+ * この SDK は認証を「実行」しない。各ステップのリクエスト記述子を組み立てるビルダと、
5
+ * レスポンスから必要情報を取り出すパーサだけを提供する。HTTP 実行・Cookie 管理・
6
+ * リダイレクト追従・パスキー暗号処理は呼び出し側(例: umebo)の責務。
7
+ */
8
+ export * from "./builder";
9
+ export * from "./parser/shibLogin";
10
+ export * from "./parser/shibUser";
11
+ export * from "./types/common";
12
+ export * from "./types/shibLogin";
13
+ export * from "./types/shibUser";
14
+ export { SHIB_URLS } from "../constants";
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/shib/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * shib(Shibboleth 認証フロー)モジュール。
3
+ *
4
+ * この SDK は認証を「実行」しない。各ステップのリクエスト記述子を組み立てるビルダと、
5
+ * レスポンスから必要情報を取り出すパーサだけを提供する。HTTP 実行・Cookie 管理・
6
+ * リダイレクト追従・パスキー暗号処理は呼び出し側(例: umebo)の責務。
7
+ */
8
+ export * from "./builder";
9
+ export * from "./parser/shibLogin";
10
+ export * from "./parser/shibUser";
11
+ export * from "./types/common";
12
+ export * from "./types/shibLogin";
13
+ export * from "./types/shibUser";
14
+ export { SHIB_URLS } from "../constants";
@@ -0,0 +1,47 @@
1
+ /**
2
+ * ログインフロー(CloudLink IdP)のレスポンスパーサと、フロー制御に必要な小ヘルパ。
3
+ *
4
+ * SDK は認証を実行しないため、ここでは「レスポンスから次に必要な情報を取り出す」ことに徹する。
5
+ * リダイレクト追従・Cookie 管理・パスキー署名は呼び出し側の責務。
6
+ */
7
+ import type { ZodSafeParseResult } from "zod";
8
+ import type { ShibResponse } from "../types/common";
9
+ import { type ShibCheckTypeDTO, type ShibLoginResultDTO, type ShibWebauthnAuthDTO, type ShibWebauthnRegistrationDTO } from "../types/shibLogin";
10
+ /** URL の `AuthState` クエリを取り出す。 */
11
+ export declare const extractAuthStateFromUrl: (url: string) => string | null;
12
+ /** HTML の hidden input から `AuthState` を取り出す。 */
13
+ export declare const extractAuthStateFromHtml: (html: string) => string | null;
14
+ /**
15
+ * loginuserpass ページの `AuthState` を解決する(URL クエリ優先、無ければ HTML hidden)。
16
+ * ログインの各 POST に必須の識別子。
17
+ */
18
+ export declare const resolveAuthState: (finalUrl: string, html: string) => string | null;
19
+ /**
20
+ * 3xx 応答の遷移先(Location)を返す。SDK の Transport はヘッダのキーを小文字化する。
21
+ * リダイレクト追従自体は呼び出し側が行う。
22
+ */
23
+ export declare const extractRedirectLocation: (response: ShibResponse) => string | null;
24
+ /** `checktype.php` の JSON 応答をパースする。 */
25
+ export declare const parseShibCheckType: (input: string) => ZodSafeParseResult<ShibCheckTypeDTO>;
26
+ /**
27
+ * `loginuserpass.php` のログイン結果をパースする。
28
+ *
29
+ * 表示テキスト(英語 "confirmation code" / 日本語 "確認コード" 等)に依存せず、
30
+ * 言語非依存な構造で判定する:
31
+ * 1. SAMLResponse hidden がある → 認証成立(SAML 自動 POST フォーム)
32
+ * 2. エラーメッセージ要素({@link AUTH_ERROR_SELECTOR})がある → 認証失敗
33
+ * 3. どちらも無い → 次の要素(OTP)が必要(`otpRequired`)
34
+ *
35
+ * ※ ページテンプレートは OTP セクションの markup("確認コード" / "resend" 等)を
36
+ * 常に内包するため、テキスト一致では password 画面と OTP 画面を判別できない。
37
+ * 到達段階の判別は上記の構造シグナルで行う。
38
+ */
39
+ export declare const parseShibLoginResult: (html: string) => ZodSafeParseResult<ShibLoginResultDTO>;
40
+ /**
41
+ * ログインフロー用 `webauthn.php`(start/finish-authentication)の応答をパースする。
42
+ * `revoked`(HTTP 4xx か status≠0)はパスキー無効化を示す構造として返す(throw しない)。
43
+ */
44
+ export declare const parseShibWebauthnAuthentication: (response: Pick<ShibResponse, "status" | "body">) => ZodSafeParseResult<ShibWebauthnAuthDTO>;
45
+ /** `User/webauthn`(start-registration)の応答をパースする。 */
46
+ export declare const parseShibWebauthnRegistration: (input: string) => ZodSafeParseResult<ShibWebauthnRegistrationDTO>;
47
+ //# sourceMappingURL=shibLogin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shibLogin.d.ts","sourceRoot":"","sources":["../../../../src/shib/parser/shibLogin.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,KAAK,CAAC;AAE9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAKH,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,2BAA2B,EACnC,MAAM,oBAAoB,CAAC;AAmB5B,kCAAkC;AAClC,eAAO,MAAM,uBAAuB,GAAI,KAAK,MAAM,KAAG,MAAM,GAAG,IAM9D,CAAC;AAEF,gDAAgD;AAChD,eAAO,MAAM,wBAAwB,GAAI,MAAM,MAAM,KAAG,MAAM,GAAG,IAGhE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,GAAI,UAAU,MAAM,EAAE,MAAM,MAAM,KAAG,MAAM,GAAG,IACJ,CAAC;AAExE;;;GAGG;AACH,eAAO,MAAM,uBAAuB,GAAI,UAAU,YAAY,KAAG,MAAM,GAAG,IAClC,CAAC;AAMzC,uCAAuC;AACvC,eAAO,MAAM,kBAAkB,GAAI,OAAO,MAAM,KAAG,kBAAkB,CAAC,gBAAgB,CAcrF,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,oBAAoB,GAAI,MAAM,MAAM,KAAG,kBAAkB,CAAC,kBAAkB,CAiBxF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,+BAA+B,GACxC,UAAU,IAAI,CAAC,YAAY,EAAE,QAAQ,GAAG,MAAM,CAAC,KAChD,kBAAkB,CAAC,mBAAmB,CAiBxC,CAAC;AAEF,oDAAoD;AACpD,eAAO,MAAM,6BAA6B,GAAI,OAAO,MAAM,KAAG,kBAAkB,CAAC,2BAA2B,CAe3G,CAAC"}