@codecks/fetch 1.0.1 → 2.0.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 (120) hide show
  1. package/README.md +79 -32
  2. package/dist/_exploration/api-requester.d.ts +3 -4
  3. package/dist/_exploration/api-requester.js +2 -2
  4. package/dist/_exploration/create-hooks.d.ts +4313 -13097
  5. package/dist/_exploration/create-hooks.js +1 -1
  6. package/dist/_exploration/loader.d.ts +2 -2
  7. package/dist/_exploration/loader.js +1 -1
  8. package/dist/_exploration/store.d.ts +5 -4
  9. package/dist/_exploration/store.js +1 -1
  10. package/dist/{collection-utils-KmtGUuXm.js → collection-utils-Ia_ahcpI.js} +2 -1
  11. package/dist/index-g5c30upI.d.ts +39 -0
  12. package/dist/index.d.ts +4 -19
  13. package/dist/index.js +26 -15
  14. package/dist/{loader-types-fd5tV0FD.d.ts → loader-types-D2Pf8qzH.d.ts} +1 -1
  15. package/dist/loader-utils-BZWanWDZ.d.ts +2218 -0
  16. package/dist/query-helpers-DndWBcMF.js +1203 -0
  17. package/dist/{query-type-BqQ9oX_U.d.ts → query-type-DPNcQFpZ.d.ts} +27 -13
  18. package/dist/store-ztk8y6Pm.d.ts +1203 -0
  19. package/package.json +2 -1
  20. package/schema/actions.md +789 -0
  21. package/schema/models/account.md +57 -90
  22. package/schema/models/attachment.md +15 -11
  23. package/schema/models/card.md +91 -65
  24. package/schema/models/cardHistory.md +15 -9
  25. package/schema/models/deck.md +41 -36
  26. package/schema/models/file.md +13 -15
  27. package/schema/models/handCard.md +8 -5
  28. package/schema/models/milestone.md +27 -22
  29. package/schema/models/milestoneProgress.md +9 -3
  30. package/schema/models/milestoneProject.md +6 -4
  31. package/schema/models/project.md +15 -39
  32. package/schema/models/projectTag.md +12 -7
  33. package/schema/models/queueEntry.md +12 -8
  34. package/schema/models/release.md +8 -6
  35. package/schema/models/resolvable.md +19 -15
  36. package/schema/models/resolvableEntry.md +16 -13
  37. package/schema/models/resolvableEntryReaction.md +16 -12
  38. package/schema/models/sprint.md +35 -25
  39. package/schema/models/sprintConfig.md +24 -20
  40. package/schema/models/sprintConfigProgress.md +9 -3
  41. package/schema/models/sprintProgress.md +9 -3
  42. package/schema/models/sprintProject.md +7 -5
  43. package/schema/models/user.md +15 -56
  44. package/schema/models/workflowItem.md +47 -31
  45. package/schema/overview.md +40 -93
  46. package/schema/query-syntax.md +1 -1
  47. package/schema/types.md +103 -0
  48. package/dist/_root-BW9uzB79.d.ts +0 -34
  49. package/dist/index-k-KPWV9R.d.ts +0 -2680
  50. package/dist/loader-utils-hvdC-xsQ.d.ts +0 -42
  51. package/dist/query-helpers-iX1fiqLv.js +0 -3062
  52. package/dist/store-BvEJzUVp.d.ts +0 -2667
  53. package/schema/models/accountOnboarding.md +0 -15
  54. package/schema/models/accountOnboardingStep.md +0 -14
  55. package/schema/models/accountRole.md +0 -19
  56. package/schema/models/accountUserAchievement.md +0 -17
  57. package/schema/models/accountUserSetting.md +0 -20
  58. package/schema/models/activeTimeTracker.md +0 -19
  59. package/schema/models/activity.md +0 -30
  60. package/schema/models/affiliateCode.md +0 -30
  61. package/schema/models/affiliateCodeStat.md +0 -19
  62. package/schema/models/app.md +0 -10
  63. package/schema/models/appInstallation.md +0 -19
  64. package/schema/models/assigneeAssignment.md +0 -18
  65. package/schema/models/assigneeDeckAssignment.md +0 -20
  66. package/schema/models/autoFinishedTimeTrackingSegment.md +0 -20
  67. package/schema/models/cardDiffNotification.md +0 -22
  68. package/schema/models/cardOrder.md +0 -17
  69. package/schema/models/cardOrderInDeck.md +0 -18
  70. package/schema/models/cardPreset.md +0 -19
  71. package/schema/models/cardSubscription.md +0 -19
  72. package/schema/models/cardUpvote.md +0 -21
  73. package/schema/models/cardsEffortHistory.md +0 -9
  74. package/schema/models/cardsFinishedHistory.md +0 -16
  75. package/schema/models/cardsStatusHistory.md +0 -9
  76. package/schema/models/cardsTimeToFinished.md +0 -18
  77. package/schema/models/dailyDiscordGuildVoteMembership.md +0 -15
  78. package/schema/models/dailyPublicProjectMembership.md +0 -15
  79. package/schema/models/deckAssignment.md +0 -18
  80. package/schema/models/deckGuardian.md +0 -17
  81. package/schema/models/deckSubscription.md +0 -18
  82. package/schema/models/discordGuild.md +0 -30
  83. package/schema/models/discordMember.md +0 -21
  84. package/schema/models/discordProjectNotification.md +0 -19
  85. package/schema/models/discordSlashCommand.md +0 -28
  86. package/schema/models/dueCard.md +0 -18
  87. package/schema/models/integration.md +0 -23
  88. package/schema/models/invoice.md +0 -21
  89. package/schema/models/lastSeenCardUpvote.md +0 -17
  90. package/schema/models/pinnedMilestone.md +0 -22
  91. package/schema/models/projectOrder.md +0 -18
  92. package/schema/models/projectSelection.md +0 -18
  93. package/schema/models/projectUser.md +0 -18
  94. package/schema/models/projectUserSetting.md +0 -15
  95. package/schema/models/publicProjectInfo.md +0 -20
  96. package/schema/models/publicProjectMembership.md +0 -17
  97. package/schema/models/publicProjectVisit.md +0 -16
  98. package/schema/models/queueSelection.md +0 -19
  99. package/schema/models/resolvableEntryHistory.md +0 -20
  100. package/schema/models/resolvableNotification.md +0 -30
  101. package/schema/models/resolvableParticipant.md +0 -25
  102. package/schema/models/resolvableParticipantHistory.md +0 -23
  103. package/schema/models/savedSearch.md +0 -18
  104. package/schema/models/stripeAccountSync.md +0 -29
  105. package/schema/models/timeTrackingSegment.md +0 -24
  106. package/schema/models/timeTrackingSum.md +0 -18
  107. package/schema/models/userDismissedHint.md +0 -16
  108. package/schema/models/userEmail.md +0 -18
  109. package/schema/models/userInvitation.md +0 -20
  110. package/schema/models/userInviteCode.md +0 -23
  111. package/schema/models/userOnboarding.md +0 -14
  112. package/schema/models/userProjectAccess.md +0 -17
  113. package/schema/models/userReportEmail.md +0 -19
  114. package/schema/models/userReportSetting.md +0 -23
  115. package/schema/models/userReportToken.md +0 -18
  116. package/schema/models/userTag.md +0 -18
  117. package/schema/models/visionBoard.md +0 -21
  118. package/schema/models/visionBoardQuery.md +0 -22
  119. package/schema/models/wizard.md +0 -19
  120. package/schema/models/workflowItemHistory.md +0 -18
@@ -1,4 +1,4 @@
1
- import { queryToKey } from "../query-helpers-iX1fiqLv.js";
1
+ import { queryToKey } from "../query-helpers-DndWBcMF.js";
2
2
  import { getFieldKey } from "../immediate-cache-DiH8tpJM.js";
3
3
  import { use, useSyncExternalStore } from "react";
4
4
 
@@ -1,5 +1,5 @@
1
- import "../query-type-BqQ9oX_U.js";
2
- import { BaseLoader, BaseRequester, MissingDataRequest, OnLoadedFn } from "../loader-types-fd5tV0FD.js";
1
+ import "../query-type-DPNcQFpZ.js";
2
+ import { BaseLoader, BaseRequester, MissingDataRequest, OnLoadedFn } from "../loader-types-D2Pf8qzH.js";
3
3
 
4
4
  //#region src/_exploration/loader.d.ts
5
5
  type DataRequestWithKey = {
@@ -1,4 +1,4 @@
1
- import { serializeModel } from "../query-helpers-iX1fiqLv.js";
1
+ import { serializeModel } from "../query-helpers-DndWBcMF.js";
2
2
 
3
3
  //#region src/_exploration/loader.ts
4
4
  const notYetLoaded = () => {
@@ -1,5 +1,6 @@
1
- import "../query-type-BqQ9oX_U.js";
2
- import "../index-k-KPWV9R.js";
3
- import "../loader-types-fd5tV0FD.js";
4
- import { Store } from "../store-BvEJzUVp.js";
1
+ import "../query-type-DPNcQFpZ.js";
2
+ import "../loader-utils-BZWanWDZ.js";
3
+ import "../loader-types-D2Pf8qzH.js";
4
+ import "../index-g5c30upI.js";
5
+ import { Store } from "../store-ztk8y6Pm.js";
5
6
  export { Store };
@@ -1,4 +1,4 @@
1
- import { getRelKey, makeRelQuerySerializable, modelMap } from "../query-helpers-iX1fiqLv.js";
1
+ import { getRelKey, makeRelQuerySerializable, modelMap } from "../query-helpers-DndWBcMF.js";
2
2
  import { ImmediateCache } from "../immediate-cache-DiH8tpJM.js";
3
3
 
4
4
  //#region src/_exploration/store.ts
@@ -33,7 +33,8 @@ var CodecksApiError = class extends Error {
33
33
  const str = (v) => typeof v === "string" ? v : null;
34
34
  const isCode = (v) => v !== null && /^[a-z][a-z0-9_]*$/.test(v);
35
35
  const code = [str(obj.error), str(obj.message)].find(isCode) ?? null;
36
- super(`[${status}] ${str(obj.message) ?? code ?? (str(body) || "request failed")}`);
36
+ const actionError = str(obj.payload?.error);
37
+ super(`[${status}] ${str(obj.message) ?? code ?? actionError ?? (str(body) || "request failed")}`);
37
38
  this.name = "CodecksApiError";
38
39
  this.status = status;
39
40
  this.code = code;
@@ -0,0 +1,39 @@
1
+ import { InferModelQuery, InferRelQuery, Instance, ModelDesc, ModelQuery, RelQuery, RelationEntry } from "./query-type-DPNcQFpZ.js";
2
+ import { ActionName, ActionParams, ActionResponse, DataLoader, FetchOptions, LegacyFetchOptions, modelMap$1 as modelMap } from "./loader-utils-BZWanWDZ.js";
3
+
4
+ //#region src/models/_root.d.ts
5
+ /** The starting point of every query. */
6
+ declare const _rootDesc: ModelDesc<"_root", {}, {
7
+ /** The organization the request is for. */
8
+ account: RelationEntry<"account", {
9
+ readonly type: "hasOne";
10
+ }>;
11
+ /**
12
+ * The user the request acts as. For an organization's API token it's the token's own user.
13
+ * `null` when nobody is signed in.
14
+ */
15
+ loggedInUser: RelationEntry<"user", {
16
+ readonly type: "hasOne";
17
+ }>;
18
+ /** The entries of the Codecks changelog. */
19
+ releases: RelationEntry<"release", {
20
+ readonly type: "hasMany";
21
+ }>;
22
+ }, []>;
23
+ //#endregion
24
+ //#region src/index.d.ts
25
+ type ModelMap = typeof modelMap;
26
+ type Fetchers = {
27
+ fetchFromRoot: <const Q extends RelQuery<typeof _rootDesc, ModelMap>>(q: Q) => Promise<InferRelQuery<typeof _rootDesc, Q, ModelMap>>;
28
+ fetchFromInstance: <M extends keyof ModelMap, const Q extends ModelQuery<ModelMap[M], ModelMap>>(instance: Instance<M>, q: Q) => Promise<InferModelQuery<ModelMap[M], Q, ModelMap>>;
29
+ fetchInstance: <K extends keyof ModelMap, const Q extends ModelQuery<ModelMap[K], ModelMap>>(model: K, id: string, q: Q) => Promise<InferModelQuery<ModelMap[K], Q, ModelMap>>;
30
+ fetchInstances: <K extends keyof ModelMap, Id extends string, const Q extends ModelQuery<ModelMap[K], ModelMap>>(model: K, id: Id[], q: Q) => Promise<Record<Id, InferModelQuery<ModelMap[K], Q, ModelMap>>>;
31
+ /** Calls an action, e.g. `dispatch("cards/update", {id, status: "done"})`. */
32
+ dispatch: <N extends ActionName>(name: N, params: ActionParams<N>) => Promise<ActionResponse<N>>;
33
+ };
34
+ declare const buildFetchers: (opts: FetchOptions) => Fetchers;
35
+ /** @deprecated `X-Auth-Token` stops working on 2026-12-31. Use `buildFetchers` with an API token. */
36
+ declare const buildLegacyFetchers: (opts: LegacyFetchOptions) => Fetchers;
37
+ declare const buildFetchersFromLoader: (loader: DataLoader) => Fetchers;
38
+ //#endregion
39
+ export { _rootDesc, buildFetchers, buildFetchersFromLoader, buildLegacyFetchers };
package/dist/index.d.ts CHANGED
@@ -1,19 +1,4 @@
1
- import { InferModelQuery, InferRelQuery, Instance, ModelQuery, RelQuery } from "./query-type-BqQ9oX_U.js";
2
- import { modelMap$1 as modelMap } from "./index-k-KPWV9R.js";
3
- import { CodecksApiError$1 as CodecksApiError, DataLoader, FetchOptions, LegacyFetchOptions } from "./loader-utils-hvdC-xsQ.js";
4
- import { _rootDesc$1 as _rootDesc } from "./_root-BW9uzB79.js";
5
-
6
- //#region src/index.d.ts
7
- type ModelMap = typeof modelMap;
8
- type Fetchers = {
9
- fetchFromRoot: <const Q extends RelQuery<typeof _rootDesc, ModelMap>>(q: Q) => Promise<InferRelQuery<typeof _rootDesc, Q, ModelMap>>;
10
- fetchFromInstance: <M extends keyof ModelMap, const Q extends ModelQuery<ModelMap[M], ModelMap>>(instance: Instance<M>, q: Q) => Promise<InferModelQuery<ModelMap[M], Q, ModelMap>>;
11
- fetchInstance: <K extends keyof ModelMap, const Q extends ModelQuery<ModelMap[K], ModelMap>>(model: K, id: string, q: Q) => Promise<InferModelQuery<ModelMap[K], Q, ModelMap>>;
12
- fetchInstances: <K extends keyof ModelMap, Id extends string, const Q extends ModelQuery<ModelMap[K], ModelMap>>(model: K, id: Id[], q: Q) => Promise<Record<Id, InferModelQuery<ModelMap[K], Q, ModelMap>>>;
13
- };
14
- declare const buildFetchers: (opts: FetchOptions) => Fetchers;
15
- /** @deprecated `X-Auth-Token` stops working on 2026-12-31. Use `buildFetchers` with an API token. */
16
- declare const buildLegacyFetchers: (opts: LegacyFetchOptions) => Fetchers;
17
- declare const buildFetchersFromLoader: (loader: DataLoader) => Fetchers;
18
- //#endregion
19
- export { CodecksApiError, type DataLoader, type FetchOptions, type LegacyFetchOptions, buildFetchers, buildFetchersFromLoader, buildLegacyFetchers };
1
+ import "./query-type-DPNcQFpZ.js";
2
+ import { AccountId, ActionMap, ActionName, ActionParams, ActionResponse, AttachmentId, CardId, CardVisibility, Checkbox, CheckboxStats, CodecksApiError$1 as CodecksApiError, DataLoader, DeckId, DefaultCard, DerivedStatus, FetchOptions, FileId, LegacyFetchOptions, MilestoneColor, MilestoneId, Priority, ProjectId, ProjectTagId, QueueEntryId, ReleaseId, ResolvableEntryId, ResolvableEntryReactionId, ResolvableId, SprintConfigId, SprintId, StartWeekday, TimeTrackingMode, TimelineScaleType, UserId, Workdays, WorkflowItemId, WorkflowMode } from "./loader-utils-BZWanWDZ.js";
3
+ import { buildFetchers, buildFetchersFromLoader, buildLegacyFetchers } from "./index-g5c30upI.js";
4
+ export { AccountId, ActionMap, ActionName, ActionParams, ActionResponse, AttachmentId, CardId, CardVisibility, Checkbox, CheckboxStats, CodecksApiError, DataLoader, DeckId, DefaultCard, DerivedStatus, FetchOptions, FileId, LegacyFetchOptions, MilestoneColor, MilestoneId, Priority, ProjectId, ProjectTagId, QueueEntryId, ReleaseId, ResolvableEntryId, ResolvableEntryReactionId, ResolvableId, SprintConfigId, SprintId, StartWeekday, TimeTrackingMode, TimelineScaleType, UserId, Workdays, WorkflowItemId, WorkflowMode, buildFetchers, buildFetchersFromLoader, buildLegacyFetchers };
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
- import { CodecksApiError, bearerTransport, configuredFetch, ensureMapValue, legacyTransport } from "./collection-utils-KmtGUuXm.js";
2
- import { _rootDesc, getRelKey, makeModelQuerySerializable, modelMap, serializeInstanceQuery } from "./query-helpers-iX1fiqLv.js";
1
+ import { CodecksApiError, bearerTransport, configuredFetch, ensureMapValue, legacyTransport } from "./collection-utils-Ia_ahcpI.js";
2
+ import { _rootDesc$1 as _rootDesc, getRelKey, makeModelQuerySerializable, modelMap, serializeInstanceQuery } from "./query-helpers-DndWBcMF.js";
3
3
 
4
4
  //#region src/model-pool.ts
5
5
  const ROOT_ID = "";
@@ -81,7 +81,7 @@ const reconcileInstanceQuery = (query, response, instanceModel, key, store) => {
81
81
  const relModel = modelMap[relDesc.relName];
82
82
  switch (opts.type) {
83
83
  case "belongsTo":
84
- result[opts.fk] = instance[relName];
84
+ if (opts.fk) result[opts.fk] = instance[relName];
85
85
  result[`~${relName}`] = instance[relName] != null ? `${instance[relName]}` : null;
86
86
  result[relName] = instance[relName] != null ? reconcileInstanceQuery(relEntry, response, relModel, `${instance[relName]}`, store) : null;
87
87
  break;
@@ -134,17 +134,27 @@ const createSimpleLoader = (opts) => {
134
134
  body: JSON.stringify({ query })
135
135
  });
136
136
  };
137
- return { fetchModel: async (model, ids, q) => {
138
- const modelDesc = modelMap[model];
139
- const instances = ids.map((id) => ({
140
- "~model": model,
141
- "~key": id
142
- }));
143
- const response = await fetchWithQuery(serializeInstanceQuery(makeModelQuerySerializable(q), instances));
144
- const pool = new ModelPool(modelMap);
145
- pool.add(response);
146
- return Object.fromEntries(ids.map((id) => [id, reconcileInstanceQuery(q, response, modelDesc, id, pool)]));
147
- } };
137
+ return {
138
+ fetchModel: async (model, ids, q) => {
139
+ const modelDesc = modelMap[model];
140
+ const instances = ids.map((id) => ({
141
+ "~model": model,
142
+ "~key": id
143
+ }));
144
+ const response = await fetchWithQuery(serializeInstanceQuery(makeModelQuerySerializable(q), instances));
145
+ const pool = new ModelPool(modelMap);
146
+ pool.add(response);
147
+ return Object.fromEntries(ids.map((id) => [id, reconcileInstanceQuery(q, response, modelDesc, id, pool)]));
148
+ },
149
+ dispatch: async (name, params) => {
150
+ const { payload } = await configuredFetch(opts, `dispatch/${name}`, {
151
+ method: "POST",
152
+ headers: { "Content-Type": "application/json" },
153
+ body: JSON.stringify(params)
154
+ });
155
+ return payload ?? void 0;
156
+ }
157
+ };
148
158
  };
149
159
 
150
160
  //#endregion
@@ -167,7 +177,8 @@ const buildFetchersFromLoader = (loader) => {
167
177
  const res = await loader.fetchModel(model, [key], q);
168
178
  return res[key];
169
179
  },
170
- fetchInstances: loader.fetchModel
180
+ fetchInstances: loader.fetchModel,
181
+ dispatch: loader.dispatch
171
182
  };
172
183
  };
173
184
 
@@ -1,4 +1,4 @@
1
- import { SerializableRelationQuery } from "./query-type-BqQ9oX_U.js";
1
+ import { SerializableRelationQuery } from "./query-type-DPNcQFpZ.js";
2
2
 
3
3
  //#region src/_exploration/loader-types.d.ts
4
4
  type OnLoadedFn = (model: string, key: string, partialInstance: Record<string, unknown>) => void;