dineway 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/LICENSE +9 -0
  2. package/README.md +89 -0
  3. package/dist/adapters-BlzWJG82.d.mts +106 -0
  4. package/dist/apply-CAPvMfoU.mjs +1339 -0
  5. package/dist/astro/index.d.mts +50 -0
  6. package/dist/astro/index.mjs +1326 -0
  7. package/dist/astro/middleware/auth.d.mts +30 -0
  8. package/dist/astro/middleware/auth.mjs +708 -0
  9. package/dist/astro/middleware/redirect.d.mts +21 -0
  10. package/dist/astro/middleware/redirect.mjs +62 -0
  11. package/dist/astro/middleware/request-context.d.mts +17 -0
  12. package/dist/astro/middleware/request-context.mjs +1371 -0
  13. package/dist/astro/middleware/setup.d.mts +19 -0
  14. package/dist/astro/middleware/setup.mjs +46 -0
  15. package/dist/astro/middleware.d.mts +12 -0
  16. package/dist/astro/middleware.mjs +1716 -0
  17. package/dist/astro/types.d.mts +269 -0
  18. package/dist/astro/types.mjs +1 -0
  19. package/dist/base64-F8-DUraK.mjs +58 -0
  20. package/dist/byline-DeWCMU_i.mjs +234 -0
  21. package/dist/bylines-DyqBV9EQ.mjs +137 -0
  22. package/dist/chunk-ClPoSABd.mjs +21 -0
  23. package/dist/cli/index.d.mts +1 -0
  24. package/dist/cli/index.mjs +3987 -0
  25. package/dist/client/external-auth-headers.d.mts +38 -0
  26. package/dist/client/external-auth-headers.mjs +101 -0
  27. package/dist/client/index.d.mts +397 -0
  28. package/dist/client/index.mjs +345 -0
  29. package/dist/config-Cq8H0SfX.mjs +46 -0
  30. package/dist/connection-C9pxzuag.mjs +52 -0
  31. package/dist/content-zSgdNmnt.mjs +836 -0
  32. package/dist/db/index.d.mts +4 -0
  33. package/dist/db/index.mjs +62 -0
  34. package/dist/db/libsql.d.mts +10 -0
  35. package/dist/db/libsql.mjs +21 -0
  36. package/dist/db/postgres.d.mts +10 -0
  37. package/dist/db/postgres.mjs +29 -0
  38. package/dist/db/sqlite.d.mts +10 -0
  39. package/dist/db/sqlite.mjs +15 -0
  40. package/dist/default-WYlzADZL.mjs +80 -0
  41. package/dist/dialect-helpers-B9uSp2GJ.mjs +89 -0
  42. package/dist/error-DrxtnGPg.mjs +26 -0
  43. package/dist/index-C-jx21qs.d.mts +4771 -0
  44. package/dist/index.d.mts +16 -0
  45. package/dist/index.mjs +30 -0
  46. package/dist/load-C6FCD1FU.mjs +27 -0
  47. package/dist/loader-qKmo0wAY.mjs +446 -0
  48. package/dist/manifest-schema-CTSEyIJ3.mjs +186 -0
  49. package/dist/media/index.d.mts +25 -0
  50. package/dist/media/index.mjs +54 -0
  51. package/dist/media/local-runtime.d.mts +38 -0
  52. package/dist/media/local-runtime.mjs +132 -0
  53. package/dist/media-DMTr80Gv.mjs +199 -0
  54. package/dist/mode-BlyYtIFO.mjs +22 -0
  55. package/dist/page/index.d.mts +148 -0
  56. package/dist/page/index.mjs +419 -0
  57. package/dist/placeholder-B3knXwNc.mjs +267 -0
  58. package/dist/placeholder-bOx1xCTY.d.mts +283 -0
  59. package/dist/plugin-utils.d.mts +57 -0
  60. package/dist/plugin-utils.mjs +77 -0
  61. package/dist/plugins/adapt-sandbox-entry.d.mts +21 -0
  62. package/dist/plugins/adapt-sandbox-entry.mjs +112 -0
  63. package/dist/query-BiaPl_g2.mjs +459 -0
  64. package/dist/redirect-JPqLAbxa.mjs +328 -0
  65. package/dist/registry-DSd1GWB8.mjs +851 -0
  66. package/dist/request-context.d.mts +49 -0
  67. package/dist/request-context.mjs +42 -0
  68. package/dist/runner-B5l1JfOj.d.mts +26 -0
  69. package/dist/runner-BGUGywgG.mjs +1529 -0
  70. package/dist/runtime.d.mts +25 -0
  71. package/dist/runtime.mjs +41 -0
  72. package/dist/search-BNruJHDL.mjs +11054 -0
  73. package/dist/seed/index.d.mts +3 -0
  74. package/dist/seed/index.mjs +15 -0
  75. package/dist/seo/index.d.mts +69 -0
  76. package/dist/seo/index.mjs +69 -0
  77. package/dist/storage/local.d.mts +38 -0
  78. package/dist/storage/local.mjs +165 -0
  79. package/dist/storage/s3.d.mts +31 -0
  80. package/dist/storage/s3.mjs +174 -0
  81. package/dist/tokens-4vgYuXsZ.mjs +170 -0
  82. package/dist/transport-C5FYnid7.mjs +417 -0
  83. package/dist/transport-gIL-e43D.d.mts +41 -0
  84. package/dist/types-BawVha09.mjs +30 -0
  85. package/dist/types-BgQeVaPj.d.mts +192 -0
  86. package/dist/types-CLLdsG3g.d.mts +103 -0
  87. package/dist/types-D38djUXv.d.mts +1196 -0
  88. package/dist/types-DShnjzb6.mjs +15 -0
  89. package/dist/types-DkvMXalq.d.mts +425 -0
  90. package/dist/types-DuNbGKjF.mjs +74 -0
  91. package/dist/types-ju-_ORz7.d.mts +182 -0
  92. package/dist/validate-CXnRKfJK.mjs +327 -0
  93. package/dist/validate-CqRJb_xU.mjs +96 -0
  94. package/dist/validate-DVKJJ-M_.d.mts +377 -0
  95. package/locals.d.ts +47 -0
  96. package/package.json +313 -0
@@ -0,0 +1,137 @@
1
+ import { t as __exportAll } from "./chunk-ClPoSABd.mjs";
2
+ import { t as validateIdentifier } from "./validate-CqRJb_xU.mjs";
3
+ import { n as SQL_BATCH_SIZE, r as chunks, t as BylineRepository } from "./byline-DeWCMU_i.mjs";
4
+ import { n as getDb } from "./loader-qKmo0wAY.mjs";
5
+ import { sql } from "kysely";
6
+
7
+ //#region src/bylines/index.ts
8
+ /**
9
+ * Runtime API for bylines
10
+ *
11
+ * Provides functions to query byline profiles and byline credits
12
+ * associated with content entries. Follows the same pattern as
13
+ * the taxonomies runtime API.
14
+ */
15
+ var bylines_exports = /* @__PURE__ */ __exportAll({
16
+ getByline: () => getByline,
17
+ getBylineBySlug: () => getBylineBySlug,
18
+ getBylinesForEntries: () => getBylinesForEntries
19
+ });
20
+ /**
21
+ * Get a byline by ID.
22
+ *
23
+ * @example
24
+ * ```ts
25
+ * import { getByline } from "dineway";
26
+ *
27
+ * const byline = await getByline("01HXYZ...");
28
+ * if (byline) {
29
+ * console.log(byline.displayName);
30
+ * }
31
+ * ```
32
+ */
33
+ async function getByline(id) {
34
+ return new BylineRepository(await getDb()).findById(id);
35
+ }
36
+ /**
37
+ * Get a byline by slug.
38
+ *
39
+ * @example
40
+ * ```ts
41
+ * import { getBylineBySlug } from "dineway";
42
+ *
43
+ * const byline = await getBylineBySlug("jane-doe");
44
+ * if (byline) {
45
+ * console.log(byline.displayName); // "Jane Doe"
46
+ * }
47
+ * ```
48
+ */
49
+ async function getBylineBySlug(slug) {
50
+ return new BylineRepository(await getDb()).findBySlug(slug);
51
+ }
52
+ /**
53
+ * Batch-fetch byline credits for multiple content entries in a single query.
54
+ *
55
+ * This is more efficient than calling getEntryBylines for each entry
56
+ * when you need bylines for a list of entries (e.g., a blog index page).
57
+ *
58
+ * @param collection - The collection slug (e.g., "posts")
59
+ * @param entryIds - Array of entry IDs
60
+ * @returns Map from entry ID to array of byline credits
61
+ *
62
+ * @example
63
+ * ```ts
64
+ * import { getBylinesForEntries, getDinewayCollection } from "dineway";
65
+ *
66
+ * const { entries } = await getDinewayCollection("posts");
67
+ * const ids = entries.map(e => e.data.id);
68
+ * const bylinesMap = await getBylinesForEntries("posts", ids);
69
+ *
70
+ * for (const entry of entries) {
71
+ * const bylines = bylinesMap.get(entry.data.id) ?? [];
72
+ * // render bylines
73
+ * }
74
+ * ```
75
+ */
76
+ async function getBylinesForEntries(collection, entryIds) {
77
+ validateIdentifier(collection, "collection");
78
+ const result = /* @__PURE__ */ new Map();
79
+ for (const id of entryIds) result.set(id, []);
80
+ if (entryIds.length === 0) return result;
81
+ const db = await getDb();
82
+ const repo = new BylineRepository(db);
83
+ const bylinesMap = await repo.getContentBylinesMany(collection, entryIds);
84
+ const fallbackEntryIds = [];
85
+ const needsFallback = /* @__PURE__ */ new Map();
86
+ for (const id of entryIds) if (!bylinesMap.has(id)) fallbackEntryIds.push(id);
87
+ if (fallbackEntryIds.length > 0) {
88
+ const authorMap = await getAuthorIds(db, collection, fallbackEntryIds);
89
+ for (const [entryId, authorId] of authorMap) needsFallback.set(entryId, authorId);
90
+ }
91
+ const uniqueAuthorIds = [...new Set(needsFallback.values())];
92
+ const authorBylineMap = await repo.findByUserIds(uniqueAuthorIds);
93
+ for (const id of entryIds) {
94
+ const explicit = bylinesMap.get(id);
95
+ if (explicit && explicit.length > 0) {
96
+ result.set(id, explicit.map((c) => ({
97
+ ...c,
98
+ source: "explicit"
99
+ })));
100
+ continue;
101
+ }
102
+ const authorId = needsFallback.get(id);
103
+ if (authorId) {
104
+ const fallback = authorBylineMap.get(authorId);
105
+ if (fallback) {
106
+ result.set(id, [{
107
+ byline: fallback,
108
+ sortOrder: 0,
109
+ roleLabel: null,
110
+ source: "inferred"
111
+ }]);
112
+ continue;
113
+ }
114
+ }
115
+ }
116
+ return result;
117
+ }
118
+ /**
119
+ * Batch-fetch author_ids for multiple content entries.
120
+ * Returns Map<entryId, authorId> (only entries with non-null author_id).
121
+ */
122
+ async function getAuthorIds(db, collection, entryIds) {
123
+ const tableName = `ec_${collection}`;
124
+ validateIdentifier(tableName, "content table");
125
+ const map = /* @__PURE__ */ new Map();
126
+ for (const chunk of chunks(entryIds, SQL_BATCH_SIZE)) {
127
+ const result = await sql`
128
+ SELECT id, author_id FROM ${sql.ref(tableName)}
129
+ WHERE id IN (${sql.join(chunk.map((id) => sql`${id}`))})
130
+ `.execute(db);
131
+ for (const row of result.rows) if (row.author_id) map.set(row.id, row.author_id);
132
+ }
133
+ return map;
134
+ }
135
+
136
+ //#endregion
137
+ export { getByline as n, getBylineBySlug as r, bylines_exports as t };
@@ -0,0 +1,21 @@
1
+ import { createRequire } from "node:module";
2
+
3
+ //#region \0rolldown/runtime.js
4
+ var __defProp = Object.defineProperty;
5
+ var __exportAll = (all, no_symbols) => {
6
+ let target = {};
7
+ for (var name in all) {
8
+ __defProp(target, name, {
9
+ get: all[name],
10
+ enumerable: true
11
+ });
12
+ }
13
+ if (!no_symbols) {
14
+ __defProp(target, Symbol.toStringTag, { value: "Module" });
15
+ }
16
+ return target;
17
+ };
18
+ var __require = /* @__PURE__ */ createRequire(import.meta.url);
19
+
20
+ //#endregion
21
+ export { __require as n, __exportAll as t };
@@ -0,0 +1 @@
1
+ export { };