@insignia-education/api-sdk-js 0.15.63 → 0.15.66

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 (81) hide show
  1. package/.ai/guidelines/research-order.md +29 -0
  2. package/.claude/agents/product-spec-architect.md +163 -0
  3. package/.claude/agents/senior-code-reviewer.md +109 -0
  4. package/.claude/agents/senior-software-developer.md +90 -0
  5. package/.claude/agents/senior-software-maintainer.md +121 -0
  6. package/.claude/skills/general/documentation/SKILL.md +49 -0
  7. package/.claude/skills/general/handoff/SKILL.md +15 -0
  8. package/.claude/skills/general/investigation/SKILL.md +53 -0
  9. package/.claude/skills/general/performance/SKILL.md +31 -0
  10. package/.claude/skills/git/pull-request/SKILL.md +47 -0
  11. package/.claude/skills/how-to-create-skills/SKILL.md +82 -0
  12. package/.github/workflows/npm-publish-github-packages.yml +22 -98
  13. package/CLAUDE.md +60 -0
  14. package/package.json +1 -1
  15. package/src/api/v1/Users.js +12 -2
  16. package/.env +0 -1
  17. package/.env.test +0 -5
  18. package/coverage/clover.xml +0 -135
  19. package/coverage/coverage-final.json +0 -2
  20. package/coverage/lcov-report/Client.js.html +0 -463
  21. package/coverage/lcov-report/base.css +0 -224
  22. package/coverage/lcov-report/block-navigation.js +0 -87
  23. package/coverage/lcov-report/favicon.png +0 -0
  24. package/coverage/lcov-report/index.html +0 -116
  25. package/coverage/lcov-report/prettify.css +0 -1
  26. package/coverage/lcov-report/prettify.js +0 -2
  27. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  28. package/coverage/lcov-report/sorter.js +0 -210
  29. package/coverage/lcov-report/src/Client.js.html +0 -463
  30. package/coverage/lcov-report/src/api/index.html +0 -116
  31. package/coverage/lcov-report/src/api/index.js.html +0 -127
  32. package/coverage/lcov-report/src/api/v1/Accounts.js.html +0 -151
  33. package/coverage/lcov-report/src/api/v1/Admin.js.html +0 -121
  34. package/coverage/lcov-report/src/api/v1/Auth.js.html +0 -157
  35. package/coverage/lcov-report/src/api/v1/Categories.js.html +0 -121
  36. package/coverage/lcov-report/src/api/v1/Changelogs.js.html +0 -118
  37. package/coverage/lcov-report/src/api/v1/Configs.js.html +0 -121
  38. package/coverage/lcov-report/src/api/v1/ContactForms.js.html +0 -121
  39. package/coverage/lcov-report/src/api/v1/ConversationalTopics.js.html +0 -121
  40. package/coverage/lcov-report/src/api/v1/Countries.js.html +0 -112
  41. package/coverage/lcov-report/src/api/v1/Coupons.js.html +0 -142
  42. package/coverage/lcov-report/src/api/v1/Courses.js.html +0 -436
  43. package/coverage/lcov-report/src/api/v1/Currencies.js.html +0 -118
  44. package/coverage/lcov-report/src/api/v1/Dashboard.js.html +0 -115
  45. package/coverage/lcov-report/src/api/v1/EducationCenter.js.html +0 -115
  46. package/coverage/lcov-report/src/api/v1/Employee.js.html +0 -169
  47. package/coverage/lcov-report/src/api/v1/Files.js.html +0 -160
  48. package/coverage/lcov-report/src/api/v1/Forums.js.html +0 -175
  49. package/coverage/lcov-report/src/api/v1/Hashes.js.html +0 -121
  50. package/coverage/lcov-report/src/api/v1/Insignias.js.html +0 -121
  51. package/coverage/lcov-report/src/api/v1/Languages.js.html +0 -121
  52. package/coverage/lcov-report/src/api/v1/MailBlacklist.js.html +0 -118
  53. package/coverage/lcov-report/src/api/v1/MailingLists.js.html +0 -127
  54. package/coverage/lcov-report/src/api/v1/Offers.js.html +0 -142
  55. package/coverage/lcov-report/src/api/v1/Organizations.js.html +0 -199
  56. package/coverage/lcov-report/src/api/v1/PaymentMethods.js.html +0 -121
  57. package/coverage/lcov-report/src/api/v1/Payments.js.html +0 -310
  58. package/coverage/lcov-report/src/api/v1/Premiums.js.html +0 -121
  59. package/coverage/lcov-report/src/api/v1/Quizzes.js.html +0 -214
  60. package/coverage/lcov-report/src/api/v1/Sales.js.html +0 -148
  61. package/coverage/lcov-report/src/api/v1/Search.js.html +0 -115
  62. package/coverage/lcov-report/src/api/v1/ShortLinks.js.html +0 -127
  63. package/coverage/lcov-report/src/api/v1/Surveys.js.html +0 -181
  64. package/coverage/lcov-report/src/api/v1/Taxes.js.html +0 -121
  65. package/coverage/lcov-report/src/api/v1/Teacher.js.html +0 -322
  66. package/coverage/lcov-report/src/api/v1/Telegram.js.html +0 -124
  67. package/coverage/lcov-report/src/api/v1/TwoFactor.js.html +0 -145
  68. package/coverage/lcov-report/src/api/v1/UserSessionTypes.js.html +0 -112
  69. package/coverage/lcov-report/src/api/v1/UserTypes.js.html +0 -121
  70. package/coverage/lcov-report/src/api/v1/Users.js.html +0 -700
  71. package/coverage/lcov-report/src/api/v1/Utm.js.html +0 -151
  72. package/coverage/lcov-report/src/api/v1/Webauthn.js.html +0 -190
  73. package/coverage/lcov-report/src/api/v1/Zoom.js.html +0 -124
  74. package/coverage/lcov-report/src/api/v1/index.html +0 -716
  75. package/coverage/lcov-report/src/api/v1/index.js.html +0 -373
  76. package/coverage/lcov-report/src/index.html +0 -131
  77. package/coverage/lcov-report/src/index.js.html +0 -109
  78. package/coverage/lcov-report/tests/helpers.js.html +0 -145
  79. package/coverage/lcov-report/tests/index.html +0 -116
  80. package/coverage/lcov.info +0 -207
  81. package/coverage/test-report.html +0 -277
@@ -1,277 +0,0 @@
1
- <html><head><meta charset="utf-8"/><title>API SDK Test Report</title><style type="text/css">:root {
2
- --text-primary: #111;
3
- --text-secondary: #4f4f4f;
4
- --success: #006633;
5
- --success-bright: #80ffbf;
6
- --danger: #cc071e;
7
- --danger-bright: #fbdfe0;
8
- --warning: #995c00;
9
- --warning-bright: #ffeea8;
10
- --panel: #eee;
11
- --border: #949494;
12
- --disabled: #6b6b6b;
13
- }
14
-
15
- html,
16
- body {
17
- font-family: Arial, Helvetica, sans-serif;
18
- font-size: 16px;
19
- margin: 0;
20
- padding: 0;
21
- color: var(--text-primary);
22
- }
23
- body {
24
- padding: 2rem 1rem;
25
- }
26
- .jesthtml-content {
27
- margin: 0 auto;
28
- max-width: 70rem;
29
- }
30
- header {
31
- display: flex;
32
- align-items: center;
33
- }
34
- #title {
35
- margin: 0;
36
- flex-grow: 1;
37
- }
38
- #logo {
39
- height: 4rem;
40
- }
41
- #timestamp {
42
- color: var(--text-secondary);
43
- margin-top: 0.5rem;
44
- }
45
-
46
- #metadata-container {
47
- display: flex;
48
- flex-direction: column;
49
- gap: 2rem;
50
- margin-bottom: 2rem;
51
- }
52
-
53
- .additional-information-container {
54
- display: flex;
55
- flex-direction: column;
56
- gap: 0.5rem;
57
- color: var(--text-secondary);
58
- }
59
-
60
- /** SUMMARY */
61
- #summary {
62
- color: var(--text-primary);
63
- display: flex;
64
- font-family: monospace;
65
- font-size: 1rem;
66
- }
67
- #summary > div {
68
- margin-right: 0.5rem;
69
- background: var(--panel);
70
- padding: 1rem;
71
- min-width: 15rem;
72
- }
73
- #summary > div:last-child {
74
- margin-right: 0;
75
- }
76
- @media only screen and (max-width: 720px) {
77
- #summary {
78
- flex-direction: column;
79
- }
80
- #summary > div {
81
- margin-right: 0;
82
- margin-top: 1rem;
83
- }
84
- #summary > div:first-child {
85
- margin-top: 0;
86
- }
87
- }
88
-
89
- .summary-total {
90
- font-weight: bold;
91
- margin-bottom: 0.5rem;
92
- }
93
- .summary-passed {
94
- color: var(--success);
95
- border-left: 0.4rem solid var(--success);
96
- padding-left: 0.5rem;
97
- margin-bottom: 0.15rem;
98
- }
99
- .summary-failed,
100
- .summary-obsolete-snapshots {
101
- color: var(--danger);
102
- border-left: 0.4rem solid var(--danger);
103
- padding-left: 0.5rem;
104
- margin-bottom: 0.15rem;
105
- }
106
- .summary-pending {
107
- color: var(--warning);
108
- border-left: 0.4rem solid var(--warning);
109
- padding-left: 0.5rem;
110
- margin-bottom: 0.15rem;
111
- }
112
- .summary-empty {
113
- color: var(--disabled);
114
- border-left: 0.4rem solid var(--disabled);
115
- margin-bottom: 0.15rem;
116
- }
117
-
118
- .test-result {
119
- padding: 1rem;
120
- margin-bottom: 0.25rem;
121
- }
122
- .test-result:last-child {
123
- border: 0;
124
- }
125
- .test-result.passed {
126
- background-color: var(--success-bright);
127
- color: var(--success);
128
- }
129
- .test-result.failed {
130
- background-color: var(--danger-bright);
131
- color: var(--danger);
132
- }
133
- .test-result.pending {
134
- background-color: var(--warning-bright);
135
- color: var(--warning);
136
- }
137
-
138
- .test-info {
139
- display: flex;
140
- justify-content: space-between;
141
- }
142
- .test-suitename {
143
- width: 20%;
144
- text-align: left;
145
- font-weight: bold;
146
- word-break: break-word;
147
- }
148
- .test-title {
149
- width: 40%;
150
- text-align: left;
151
- font-style: italic;
152
- }
153
- .test-status {
154
- width: 20%;
155
- text-align: right;
156
- }
157
- .test-duration {
158
- width: 10%;
159
- text-align: right;
160
- font-size: 0.85rem;
161
- }
162
-
163
- .failureMessages {
164
- padding: 0 1rem;
165
- margin-top: 1rem;
166
- border-top: 1px dashed var(--danger);
167
- }
168
- .failureMessages.suiteFailure {
169
- border-top: none;
170
- }
171
- .failureMsg {
172
- white-space: pre-wrap;
173
- white-space: -moz-pre-wrap;
174
- white-space: -pre-wrap;
175
- white-space: -o-pre-wrap;
176
- word-wrap: break-word;
177
- }
178
-
179
- .suite-container {
180
- margin-bottom: 1rem;
181
- }
182
- .suite-info {
183
- padding: 1rem;
184
- background-color: var(--panel);
185
- color: var(--text-secondary);
186
- border: 0.15rem solid;
187
- border-color: var(--panel);
188
- display: flex;
189
- align-items: center;
190
- margin-bottom: 0.25rem;
191
- }
192
- .suite-info:hover {
193
- border-color: var(--border);
194
- cursor: pointer;
195
- }
196
- .suite-info .suite-path {
197
- word-break: break-all;
198
- flex-grow: 1;
199
- font-family: monospace;
200
- font-size: 1rem;
201
- }
202
- .suite-info .suite-time {
203
- margin-left: 1rem;
204
- padding: 0.2rem 0.3rem;
205
- font-size: 0.85rem;
206
- }
207
- .suite-info .suite-time.warn {
208
- background-color: var(--danger);
209
- color: #fff;
210
- }
211
- .suite-info:before {
212
- content: "\2303";
213
- display: inline-block;
214
- margin-right: 1rem;
215
- transform: rotate(180deg) translateY(0.15rem);
216
- }
217
- .suite-container[open] .suite-info:before {
218
- transform: rotate(0deg) translateY(0.15rem);
219
- }
220
-
221
- /* CONSOLE LOGS */
222
- .suite-consolelog {
223
- margin-bottom: 0.25rem;
224
- padding: 1rem;
225
- background-color: var(--panel);
226
- }
227
- .suite-consolelog-header {
228
- font-weight: bold;
229
- }
230
- .suite-consolelog-item {
231
- padding: 0.5rem;
232
- }
233
- .suite-consolelog-item pre {
234
- margin: 0.5rem 0;
235
- white-space: pre-wrap;
236
- white-space: -moz-pre-wrap;
237
- white-space: -pre-wrap;
238
- white-space: -o-pre-wrap;
239
- word-wrap: break-word;
240
- }
241
- .suite-consolelog-item-origin {
242
- color: var(--text-secondary);
243
- font-weight: bold;
244
- }
245
- .suite-consolelog-item-message {
246
- color: var(--text-primary);
247
- font-size: 1rem;
248
- padding: 0 0.5rem;
249
- }
250
-
251
- /* OBSOLETE SNAPSHOTS */
252
- .suite-obsolete-snapshots {
253
- margin-bottom: 0.25rem;
254
- padding: 1rem;
255
- background-color: var(--danger-bright);
256
- color: var(--danger);
257
- }
258
- .suite-obsolete-snapshots-header {
259
- font-weight: bold;
260
- }
261
- .suite-obsolete-snapshots-item {
262
- padding: 0.5rem;
263
- }
264
- .suite-obsolete-snapshots-item pre {
265
- margin: 0.5rem 0;
266
- white-space: pre-wrap;
267
- white-space: -moz-pre-wrap;
268
- white-space: -pre-wrap;
269
- white-space: -o-pre-wrap;
270
- word-wrap: break-word;
271
- }
272
- .suite-obsolete-snapshots-item-message {
273
- color: var(--text-primary);
274
- font-size: 1rem;
275
- padding: 0 0.5rem;
276
- }
277
- </style></head><body><main class="jesthtml-content"><header><h1 id="title">API SDK Test Report</h1></header><section id="metadata-container"><div id="timestamp">Started: 2026-08-10 12:18:48</div><div id="summary"><div id="suite-summary"><div class="summary-total">Suites (1)</div><div class="summary-passed ">1 passed</div><div class="summary-failed summary-empty">0 failed</div><div class="summary-pending summary-empty">0 pending</div></div><div id="test-summary"><div class="summary-total">Tests (22)</div><div class="summary-passed ">22 passed</div><div class="summary-failed summary-empty">0 failed</div><div class="summary-pending summary-empty">0 pending</div></div></div></section><details id="suite-1" class="suite-container" open=""><summary class="suite-info"><div class="suite-path">/Users/roquendo/code/insignia-education/api-sdk-js/tests/client.test.js</div><div class="suite-time">0.558s</div></summary><div class="suite-tests"><div class="test-result passed"><div class="test-info"><div class="test-suitename">baseUrl resolution</div><div class="test-title">uses explicit baseUrl when provided</div><div class="test-status">passed</div><div class="test-duration">0.003s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">baseUrl resolution</div><div class="test-title">strips trailing slash from explicit baseUrl</div><div class="test-status">passed</div><div class="test-duration">0.004s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">baseUrl resolution</div><div class="test-title">uses INSIGNIA_EDUCATION_API_BASE_URL env var when baseUrl is null</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">baseUrl resolution</div><div class="test-title">falls back to https://insigniaeducation.com when baseUrl is null and env var is not set</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">baseUrl resolution</div><div class="test-title">falls back to default when constructed with no arguments</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">baseUrl resolution</div><div class="test-title">explicit baseUrl takes precedence over env var</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">baseUrl resolution</div><div class="test-title">falls back to default when process is undefined</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">HTTP methods</div><div class="test-title">get() sends GET with no body</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">HTTP methods</div><div class="test-title">post() sends POST with body</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">HTTP methods</div><div class="test-title">post() sends POST with no body when not provided</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">HTTP methods</div><div class="test-title">put() sends PUT with body</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">HTTP methods</div><div class="test-title">put() sends PUT with no body when not provided</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">HTTP methods</div><div class="test-title">patch() sends PATCH with body</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">HTTP methods</div><div class="test-title">patch() sends PATCH with no body when not provided</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">HTTP methods</div><div class="test-title">del() sends DELETE with no body</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">HTTP methods</div><div class="test-title">JSON headers are always sent</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">HTTP methods</div><div class="test-title">credentials is always include</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">HTTP methods</div><div class="test-title">stores response cookies and sends them on later requests in Node</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">HTTP methods</div><div class="test-title">returns parsed JSON from response</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">HTTP methods</div><div class="test-title">returns null for empty response text</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">HTTP methods</div><div class="test-title">returns null for no-content responses</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">HTTP methods</div><div class="test-title">returns null when json parsing fails because the response is empty</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div></div></details></main></body></html>