@redocly/revel-reef 0.128.0-next.6 → 0.128.0-next.8

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 (76) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/README.md +54 -0
  3. package/dist/server/esbuild/esbuild.js +2 -2
  4. package/dist/server/node-bundle-entry.js +1 -1
  5. package/dist/server/plugins/catalog-entities/database/catalog-entities-service.d.ts +4 -0
  6. package/dist/server/plugins/catalog-entities/database/catalog-entities-service.js +1 -1
  7. package/dist/server/plugins/catalog-entities/database/mappers/create-entity-db-record.js +1 -1
  8. package/dist/server/plugins/catalog-entities/database/repositories/local/catalog-entities-local-read-repository.d.ts +1 -0
  9. package/dist/server/plugins/catalog-entities/database/repositories/local/catalog-entities-local-read-repository.js +6 -6
  10. package/dist/server/plugins/catalog-entities/database/repositories/local/catalog-entities-local-repository.d.ts +4 -0
  11. package/dist/server/plugins/catalog-entities/database/repositories/local/catalog-entities-local-repository.js +1 -1
  12. package/dist/server/plugins/catalog-entities/database/repositories/local/catalog-entities-local-write-repository.d.ts +3 -0
  13. package/dist/server/plugins/catalog-entities/database/repositories/local/catalog-entities-local-write-repository.js +1 -1
  14. package/dist/server/plugins/catalog-entities/database/repositories/remote/catalog-entities-remote-repository.js +1 -1
  15. package/dist/server/plugins/catalog-entities/database/repositories/utils.d.ts +2 -0
  16. package/dist/server/plugins/catalog-entities/database/repositories/utils.js +1 -1
  17. package/dist/server/plugins/catalog-entities/entities/types.d.ts +1 -0
  18. package/dist/server/plugins/default-theme/index.js +1 -1
  19. package/dist/server/plugins/markdown/index.js +1 -1
  20. package/dist/server/plugins/openapi-docs/format-bundle-error.d.ts +6 -0
  21. package/dist/server/plugins/openapi-docs/format-bundle-error.js +5 -0
  22. package/dist/server/plugins/openapi-docs/index.js +1 -1
  23. package/dist/server/plugins/openapi-docs/load-definition.js +3 -3
  24. package/dist/server/plugins/pages/index.js +1 -1
  25. package/dist/server/plugins/scorecard-classic/index.js +1 -1
  26. package/dist/server/plugins/scorecards/workers/run-scorecards-worker.d.ts +2 -0
  27. package/dist/server/plugins/scorecards/workers/run-scorecards-worker.js +1 -0
  28. package/dist/server/plugins/scorecards/workers/scorecards.d.ts +14 -0
  29. package/dist/server/plugins/scorecards/workers/scorecards.js +1 -0
  30. package/dist/server/plugins/search/ai-indexer/prepare-ai-search-documents.js +1 -1
  31. package/dist/server/plugins/search/documents/search-documents.js +1 -1
  32. package/dist/server/plugins/sitemap/index.js +1 -1
  33. package/dist/server/providers/database/databases/catalog-sqlite/migrations/0002_add-scorecards-status.sql +1 -0
  34. package/dist/server/providers/database/databases/catalog-sqlite/migrations/meta/0002_snapshot.json +385 -0
  35. package/dist/server/providers/database/databases/catalog-sqlite/migrations/meta/_journal.json +7 -0
  36. package/dist/server/providers/database/databases/catalog-sqlite/schemas/entities-table.d.ts +19 -0
  37. package/dist/server/providers/database/databases/catalog-sqlite/schemas/entities-table.js +1 -1
  38. package/dist/server/providers/database/databases/main-sqlite/migrations/0004_add-scorecards-tables.sql +10 -0
  39. package/dist/server/providers/database/databases/main-sqlite/migrations/meta/0004_snapshot.json +221 -0
  40. package/dist/server/providers/database/databases/main-sqlite/migrations/meta/_journal.json +7 -0
  41. package/dist/server/providers/database/databases/main-sqlite/schemas/scorecards-config-table.d.ts +162 -0
  42. package/dist/server/providers/database/databases/main-sqlite/schemas/scorecards-config-table.js +1 -0
  43. package/dist/server/providers/database/databases/sqld-sqlite/drizzle.config.js +1 -1
  44. package/dist/server/providers/database/databases/sqld-sqlite/migrations/0003_add-scorecards-tables.sql +61 -0
  45. package/dist/server/providers/database/databases/sqld-sqlite/migrations/0004_add-scorecards-status.sql +1 -0
  46. package/dist/server/providers/database/databases/sqld-sqlite/migrations/meta/0003_snapshot.json +796 -0
  47. package/dist/server/providers/database/databases/sqld-sqlite/migrations/meta/0004_snapshot.json +803 -0
  48. package/dist/server/providers/database/databases/sqld-sqlite/migrations/meta/_journal.json +14 -0
  49. package/dist/server/providers/database/databases/sqld-sqlite/schemas/scorecard-evaluations-table.d.ts +124 -0
  50. package/dist/server/providers/database/databases/sqld-sqlite/schemas/scorecard-evaluations-table.js +1 -0
  51. package/dist/server/providers/database/databases/sqld-sqlite/schemas/scorecard-result-level-states-table.d.ts +48 -0
  52. package/dist/server/providers/database/databases/sqld-sqlite/schemas/scorecard-result-level-states-table.js +1 -0
  53. package/dist/server/providers/database/databases/sqld-sqlite/schemas/scorecard-result-levels-table.d.ts +186 -0
  54. package/dist/server/providers/database/databases/sqld-sqlite/schemas/scorecard-result-levels-table.js +1 -0
  55. package/dist/server/providers/database/databases/sqld-sqlite/schemas/scorecard-result-states-table.d.ts +177 -0
  56. package/dist/server/providers/database/databases/sqld-sqlite/schemas/scorecard-result-states-table.js +1 -0
  57. package/dist/server/providers/database/databases/sqld-sqlite/schemas/scorecard-results-table.d.ts +179 -0
  58. package/dist/server/providers/database/databases/sqld-sqlite/schemas/scorecard-results-table.js +1 -0
  59. package/dist/server/store.d.ts +1 -1
  60. package/dist/server/types/plugins/common.d.ts +1 -0
  61. package/dist/server/utils/catalog-classic/get-route-slug-to-catalog-slug-map.d.ts +19 -0
  62. package/dist/server/utils/catalog-classic/get-route-slug-to-catalog-slug-map.js +1 -0
  63. package/dist/server/utils/catalog-classic/get-route-slug-to-catalog-slug-map.test.d.ts +2 -0
  64. package/dist/server/utils/catalog-classic/get-route-slug-to-catalog-slug-map.test.js +1 -0
  65. package/dist/server/utils/is-catalog-entities-enabled.d.ts +2 -0
  66. package/dist/server/utils/is-catalog-entities-enabled.js +1 -0
  67. package/dist/server/utils/is-scorecards-enabled.d.ts +3 -0
  68. package/dist/server/utils/is-scorecards-enabled.js +1 -0
  69. package/dist/server/web-server/dev-server.js +1 -1
  70. package/dist/server/web-server/routes/replay-oauth2-redirect.js +78 -33
  71. package/dist/server/workers/scorecards-worker-pool.d.ts +4 -0
  72. package/dist/server/workers/scorecards-worker-pool.js +1 -0
  73. package/dist/server/workers/scorecards-worker.d.ts +2 -0
  74. package/dist/server/workers/scorecards-worker.js +1 -0
  75. package/dist/server/workers/types.d.ts +6 -0
  76. package/package.json +8 -8
@@ -0,0 +1,179 @@
1
+ export declare const scorecardResultsTable: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
2
+ name: "scorecard_results";
3
+ schema: undefined;
4
+ columns: {
5
+ id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
6
+ name: "id";
7
+ tableName: "scorecard_results";
8
+ dataType: "string";
9
+ columnType: "SQLiteText";
10
+ data: string;
11
+ driverParam: string;
12
+ notNull: true;
13
+ hasDefault: false;
14
+ isPrimaryKey: true;
15
+ isAutoincrement: false;
16
+ hasRuntimeDefault: false;
17
+ enumValues: [string, ...string[]];
18
+ baseColumn: never;
19
+ identity: undefined;
20
+ generated: undefined;
21
+ }, {}, {
22
+ length: number | undefined;
23
+ }>;
24
+ evaluationId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
25
+ name: "evaluation_id";
26
+ tableName: "scorecard_results";
27
+ dataType: "string";
28
+ columnType: "SQLiteText";
29
+ data: string;
30
+ driverParam: string;
31
+ notNull: true;
32
+ hasDefault: false;
33
+ isPrimaryKey: false;
34
+ isAutoincrement: false;
35
+ hasRuntimeDefault: false;
36
+ enumValues: [string, ...string[]];
37
+ baseColumn: never;
38
+ identity: undefined;
39
+ generated: undefined;
40
+ }, {}, {
41
+ length: number | undefined;
42
+ }>;
43
+ entityId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
44
+ name: "entity_id";
45
+ tableName: "scorecard_results";
46
+ dataType: "string";
47
+ columnType: "SQLiteText";
48
+ data: string;
49
+ driverParam: string;
50
+ notNull: true;
51
+ hasDefault: false;
52
+ isPrimaryKey: false;
53
+ isAutoincrement: false;
54
+ hasRuntimeDefault: false;
55
+ enumValues: [string, ...string[]];
56
+ baseColumn: never;
57
+ identity: undefined;
58
+ generated: undefined;
59
+ }, {}, {
60
+ length: number | undefined;
61
+ }>;
62
+ entityKey: import("drizzle-orm/sqlite-core").SQLiteColumn<{
63
+ name: "entity_key";
64
+ tableName: "scorecard_results";
65
+ dataType: "string";
66
+ columnType: "SQLiteText";
67
+ data: string;
68
+ driverParam: string;
69
+ notNull: true;
70
+ hasDefault: false;
71
+ isPrimaryKey: false;
72
+ isAutoincrement: false;
73
+ hasRuntimeDefault: false;
74
+ enumValues: [string, ...string[]];
75
+ baseColumn: never;
76
+ identity: undefined;
77
+ generated: undefined;
78
+ }, {}, {
79
+ length: number | undefined;
80
+ }>;
81
+ entityType: import("drizzle-orm/sqlite-core").SQLiteColumn<{
82
+ name: "entity_type";
83
+ tableName: "scorecard_results";
84
+ dataType: "string";
85
+ columnType: "SQLiteText";
86
+ data: string;
87
+ driverParam: string;
88
+ notNull: true;
89
+ hasDefault: false;
90
+ isPrimaryKey: false;
91
+ isAutoincrement: false;
92
+ hasRuntimeDefault: false;
93
+ enumValues: [string, ...string[]];
94
+ baseColumn: never;
95
+ identity: undefined;
96
+ generated: undefined;
97
+ }, {}, {
98
+ length: number | undefined;
99
+ }>;
100
+ entityVersion: import("drizzle-orm/sqlite-core").SQLiteColumn<{
101
+ name: "entity_version";
102
+ tableName: "scorecard_results";
103
+ dataType: "string";
104
+ columnType: "SQLiteText";
105
+ data: string;
106
+ driverParam: string;
107
+ notNull: true;
108
+ hasDefault: false;
109
+ isPrimaryKey: false;
110
+ isAutoincrement: false;
111
+ hasRuntimeDefault: false;
112
+ enumValues: [string, ...string[]];
113
+ baseColumn: never;
114
+ identity: undefined;
115
+ generated: undefined;
116
+ }, {}, {
117
+ length: number | undefined;
118
+ }>;
119
+ entityRevision: import("drizzle-orm/sqlite-core").SQLiteColumn<{
120
+ name: "entity_revision";
121
+ tableName: "scorecard_results";
122
+ dataType: "string";
123
+ columnType: "SQLiteText";
124
+ data: string;
125
+ driverParam: string;
126
+ notNull: false;
127
+ hasDefault: false;
128
+ isPrimaryKey: false;
129
+ isAutoincrement: false;
130
+ hasRuntimeDefault: false;
131
+ enumValues: [string, ...string[]];
132
+ baseColumn: never;
133
+ identity: undefined;
134
+ generated: undefined;
135
+ }, {}, {
136
+ length: number | undefined;
137
+ }>;
138
+ finalLevel: import("drizzle-orm/sqlite-core").SQLiteColumn<{
139
+ name: "final_level";
140
+ tableName: "scorecard_results";
141
+ dataType: "string";
142
+ columnType: "SQLiteText";
143
+ data: string;
144
+ driverParam: string;
145
+ notNull: false;
146
+ hasDefault: false;
147
+ isPrimaryKey: false;
148
+ isAutoincrement: false;
149
+ hasRuntimeDefault: false;
150
+ enumValues: [string, ...string[]];
151
+ baseColumn: never;
152
+ identity: undefined;
153
+ generated: undefined;
154
+ }, {}, {
155
+ length: number | undefined;
156
+ }>;
157
+ finalScore: import("drizzle-orm/sqlite-core").SQLiteColumn<{
158
+ name: "final_score";
159
+ tableName: "scorecard_results";
160
+ dataType: "number";
161
+ columnType: "SQLiteInteger";
162
+ data: number;
163
+ driverParam: number;
164
+ notNull: true;
165
+ hasDefault: false;
166
+ isPrimaryKey: false;
167
+ isAutoincrement: false;
168
+ hasRuntimeDefault: false;
169
+ enumValues: undefined;
170
+ baseColumn: never;
171
+ identity: undefined;
172
+ generated: undefined;
173
+ }, {}, {}>;
174
+ };
175
+ dialect: "sqlite";
176
+ }>;
177
+ export type DatabaseScorecardResult = typeof scorecardResultsTable.$inferSelect;
178
+ export type DatabaseScorecardResultInsert = typeof scorecardResultsTable.$inferInsert;
179
+ //# sourceMappingURL=scorecard-results-table.d.ts.map
@@ -0,0 +1 @@
1
+ import{sqliteTable as n,text as e,integer as o,index as i,uniqueIndex as l}from"drizzle-orm/sqlite-core";const s=n("scorecard_results",{id:e("id").primaryKey().notNull(),evaluationId:e("evaluation_id").notNull(),entityId:e("entity_id").notNull(),entityKey:e("entity_key").notNull(),entityType:e("entity_type").notNull(),entityVersion:e("entity_version").notNull(),entityRevision:e("entity_revision"),finalLevel:e("final_level"),finalScore:o("final_score").notNull()},t=>[l("idx_scorecard_results_evaluation_entity_unique").on(t.evaluationId,t.entityKey,t.entityId,t.entityVersion),i("idx_scorecard_results_evaluation_id").on(t.evaluationId),i("idx_scorecard_results_entity_id").on(t.entityId)]);export{s as scorecardResultsTable};
@@ -89,7 +89,7 @@ export declare class Store {
89
89
  frontMatterKeysToResolve?: string[] | undefined;
90
90
  partialsFolders?: string[] | undefined;
91
91
  lastUpdatedBlock?: {
92
- format?: "timeago" | "iso" | "long" | "short" | undefined;
92
+ format?: "short" | "long" | "timeago" | "iso" | undefined;
93
93
  hide?: boolean | undefined;
94
94
  locale?: string | undefined;
95
95
  } | undefined;
@@ -80,6 +80,7 @@ type PageRouteDetailsForward<TData extends PageStaticData = PageStaticData, TPro
80
80
  path?: string;
81
81
  params?: string[];
82
82
  queries?: Record<string, string>;
83
+ excludeFromSearch?: boolean;
83
84
  getStaticData?: GetStaticDataFn<PageRouteDetailsForward<TData, TProps>, TData>;
84
85
  metadata?: Record<string, unknown>;
85
86
  getNavText?: () => Promise<string> | string;
@@ -0,0 +1,19 @@
1
+ import type { CatalogConfig } from '@redocly/config';
2
+ import type { AfterRoutesCreatedActions, LifecycleContext } from '../../types';
3
+ /**
4
+ * Builds a mapping from route slugs to their corresponding catalog slugs.
5
+ *
6
+ * Iterates through all provided catalog configs, resolves their navigation items,
7
+ * and collects route slugs from the resolved items to create a map that
8
+ * associates each route slug with its parent catalog slug.
9
+ *
10
+ * @param actions - Actions available after routes have been created, providing
11
+ * access to content directory and route resolution utilities
12
+ * @param context - Lifecycle context containing filesystem, cache, and logger
13
+ * utilities needed for resolving navigation items
14
+ * @param catalogConfigs - Record of catalog configuration objects
15
+ * @returns Promise that resolves to a Map where keys are route slugs and values
16
+ * are the corresponding catalog slugs
17
+ */
18
+ export declare function getRouteSlugToCatalogSlugMap(actions: AfterRoutesCreatedActions, context: LifecycleContext, catalogConfigs: Record<string, CatalogConfig>): Promise<Map<string, string>>;
19
+ //# sourceMappingURL=get-route-slug-to-catalog-slug-map.d.ts.map
@@ -0,0 +1 @@
1
+ import{resolveItems as g}from"../../plugins/nav-utils.js";import{collectPropValueDeep as n}from"../../../utils/tree/collect-prop-value-deep.js";async function i(o,r,u){const t=new Map;for(const e of Object.values(u)){const l=await g(e.items,o.contentDir,o,r,{navFile:""});if(l){const s=n(l,"routeSlug");for(const a of s)t.set(a,e.slug)}}return t}export{i as getRouteSlugToCatalogSlugMap};
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=get-route-slug-to-catalog-slug-map.test.d.ts.map
@@ -0,0 +1 @@
1
+ import{describe as d,it as u,expect as t,vi as e,beforeEach as m}from"vitest";import{getRouteSlugToCatalogSlugMap as r}from"./get-route-slug-to-catalog-slug-map.js";import{resolveItems as s}from"../../plugins/nav-utils.js";import{collectPropValueDeep as n}from"../../../utils/tree/collect-prop-value-deep.js";e.mock("~/server/plugins/nav-utils.js"),e.mock("~/shared/utils/tree/collect-prop-value-deep.js"),d("getRouteSlugToCatalogSlugMap",()=>{let g,c;m(()=>{e.clearAllMocks(),g={contentDir:"/content",outdir:"/out",serverOutDir:"/server-out",hasSitemap:!1,createSharedData:e.fn(),addRouteSharedData:e.fn(),getRouteByFsPath:e.fn(),getRouteBySlug:e.fn(),getConfig:e.fn(),getGlobalConfig:e.fn(),getAllRoutes:e.fn(),getAllRoutesForLocale:e.fn(),getAllApiRoutes:e.fn(),setGlobalData:e.fn(),getGlobalData:e.fn(),setGlobalConfig:e.fn(),parseMarkdoc:e.fn(),setSearchFacets:e.fn(),getSearchFacets:e.fn(),setSearchEngine:e.fn(),addRedirect:e.fn(),addBrowserPlugin:e.fn(),addSsrComponents:e.fn(),addApiRoute:e.fn(),loadOpenApiDefinitions:e.fn(),getRouteSharedDataByFsPath:e.fn()},c={fs:{},cache:{},getConfig:e.fn(),isPathIgnored:e.fn(),withPathPrefix:e.fn(),logger:{}}}),u("should return empty map when catalogs object is empty",async()=>{const a=await r(g,c,{});t(a).toBeInstanceOf(Map),t(a.size).toBe(0),t(s).not.toHaveBeenCalled()}),u("should return empty map when catalog has no resolved items",async()=>{const o={catalog1:{slug:"catalog1",items:[]}};e.mocked(s).mockResolvedValue(void 0);const a=await r(g,c,o);t(a).toBeInstanceOf(Map),t(a.size).toBe(0),t(s).toHaveBeenCalledTimes(1),t(n).not.toHaveBeenCalled()}),u("should map route slugs to catalog slug for single catalog with items",async()=>{const o={catalog1:{slug:"catalog1",items:[]}},a=[{routeSlug:"/page1",label:"Page 1"},{routeSlug:"/page2",label:"Page 2"}];e.mocked(s).mockResolvedValue(a),e.mocked(n).mockReturnValue(["/page1","/page2"]);const l=await r(g,c,o);t(l.size).toBe(2),t(l.get("/page1")).toBe("catalog1"),t(l.get("/page2")).toBe("catalog1"),t(s).toHaveBeenCalledWith(o.catalog1.items,g.contentDir,g,c,{navFile:""}),t(n).toHaveBeenCalledWith(a,"routeSlug")}),u("should map route slugs to catalog slug for multiple catalogs",async()=>{const o={catalog1:{slug:"catalog1",items:[]},catalog2:{slug:"catalog2",items:[]}},a=[{routeSlug:"/page1",label:"Page 1"}],l=[{routeSlug:"/page2",label:"Page 2"},{routeSlug:"/page3",label:"Page 3"}];e.mocked(s).mockResolvedValueOnce(a).mockResolvedValueOnce(l),e.mocked(n).mockReturnValueOnce(["/page1"]).mockReturnValueOnce(["/page2","/page3"]);const i=await r(g,c,o);t(i.size).toBe(3),t(i.get("/page1")).toBe("catalog1"),t(i.get("/page2")).toBe("catalog2"),t(i.get("/page3")).toBe("catalog2"),t(s).toHaveBeenCalledTimes(2),t(n).toHaveBeenCalledTimes(2)}),u("should handle catalog with empty resolved items array",async()=>{const o={catalog1:{slug:"catalog1",items:[]}};e.mocked(s).mockResolvedValue([]),e.mocked(n).mockReturnValue([]);const a=await r(g,c,o);t(a.size).toBe(0),t(s).toHaveBeenCalledTimes(1),t(n).toHaveBeenCalledWith([],"routeSlug")}),u("should handle nested items with route slugs",async()=>{const o={catalog1:{slug:"catalog1",items:[]}},a=[{routeSlug:"/parent",label:"Parent",items:[{routeSlug:"/parent/child1",label:"Child 1"},{routeSlug:"/parent/child2",label:"Child 2"}]}];e.mocked(s).mockResolvedValue(a),e.mocked(n).mockReturnValue(["/parent","/parent/child1","/parent/child2"]);const l=await r(g,c,o);t(l.size).toBe(3),t(l.get("/parent")).toBe("catalog1"),t(l.get("/parent/child1")).toBe("catalog1"),t(l.get("/parent/child2")).toBe("catalog1")}),u("should handle items without routeSlug property",async()=>{const o={catalog1:{slug:"catalog1",items:[]}},a=[{label:"Page without route slug"},{routeSlug:"/page-with-slug",label:"Page with slug"}];e.mocked(s).mockResolvedValue(a),e.mocked(n).mockReturnValue(["/page-with-slug"]);const l=await r(g,c,o);t(l.size).toBe(1),t(l.get("/page-with-slug")).toBe("catalog1")}),u("should overwrite route slug mapping when same route slug appears in multiple catalogs",async()=>{const o={catalog1:{slug:"catalog1",items:[]},catalog2:{slug:"catalog2",items:[]}},a=[{routeSlug:"/shared-page",label:"Shared Page"}],l=[{routeSlug:"/shared-page",label:"Shared Page"}];e.mocked(s).mockResolvedValueOnce(a).mockResolvedValueOnce(l),e.mocked(n).mockReturnValueOnce(["/shared-page"]).mockReturnValueOnce(["/shared-page"]);const i=await r(g,c,o);t(i.size).toBe(1),t(i.get("/shared-page")).toBe("catalog2")})});
@@ -0,0 +1,2 @@
1
+ export declare function isCatalogEntitiesEnabled(): boolean;
2
+ //# sourceMappingURL=is-catalog-entities-enabled.d.ts.map
@@ -0,0 +1 @@
1
+ function e(){return process.env.NEW_CATALOG_ENABLED==="true"}export{e as isCatalogEntitiesEnabled};
@@ -0,0 +1,3 @@
1
+ import type { RedoclyConfig } from '@redocly/config';
2
+ export declare function isScorecardsEnabled(config: RedoclyConfig): boolean;
3
+ //# sourceMappingURL=is-scorecards-enabled.d.ts.map
@@ -0,0 +1 @@
1
+ import{isCatalogEntitiesEnabled as e}from"./is-catalog-entities-enabled.js";function a(r){return e()&&process.env.NEW_SCORECARDS_ENABLED==="true"&&Array.isArray(r.scorecards)&&r.scorecards.length>0}export{a as isScorecardsEnabled};
@@ -1 +1 @@
1
- import{ServerRoutes as c}from"../../constants/common.js";import{reporter as n}from"../tools/notifiers/reporter.js";import{telemetry as s}from"../telemetry/index.js";import{installDevRoutes as p,installProdRoutes as v}from"./routes/index.js";import{createRouter as f}from"./router.js";import{readStaticAsset as u}from"./node-asset-reader.js";import{startHttpServer as l}from"./http.js";import{listenStore as D}from"./store-ws.js";import{ejectComponentDataHandler as S}from"./routes/eject.js";import{attachWsServer as E}from"./ws.js";import{DatabasePreconnectService as R}from"../providers/database/database-preconnect-service.js";import{KvService as d}from"../persistence/kv/services/kv-service.js";async function x(t,o,a){s.initialize(!0);const{port:i=4e3}=a,e=f();if(e.get(c.EJECT_COMPONENT,S(t)),p(e,t),v(e,t,{readStaticAsset:u,resolveRouteData:r=>t.resolveRouteStaticData(r,o)}),process.env.NEW_CATALOG_ENABLED==="true"){await R.init(t.serverOutDir);const r=await d.getInstance({baseDbDir:t.serverOutDir});setInterval(()=>r.clearExpired(),300*1e3)}try{await t.userCodeReady;const r=await l(e,i),m=E(r);D(t,m)}catch(r){await n.panic(r)}}export{x as startDevServer};
1
+ import{ServerRoutes as c}from"../../constants/common.js";import{reporter as n}from"../tools/notifiers/reporter.js";import{telemetry as s}from"../telemetry/index.js";import{installDevRoutes as p,installProdRoutes as f}from"./routes/index.js";import{createRouter as v}from"./router.js";import{readStaticAsset as l}from"./node-asset-reader.js";import{startHttpServer as u}from"./http.js";import{listenStore as S}from"./store-ws.js";import{ejectComponentDataHandler as D}from"./routes/eject.js";import{attachWsServer as d}from"./ws.js";import{DatabasePreconnectService as w}from"../providers/database/database-preconnect-service.js";import{KvService as E}from"../persistence/kv/services/kv-service.js";import{runScorecardsWorker as R}from"../plugins/scorecards/workers/run-scorecards-worker.js";import{isCatalogEntitiesEnabled as b}from"../utils/is-catalog-entities-enabled.js";import{isScorecardsEnabled as C}from"../utils/is-scorecards-enabled.js";async function J(r,o,i){s.initialize(!0);const{port:a=4e3}=i,e=v();if(e.get(c.EJECT_COMPONENT,D(r)),p(e,r),f(e,r,{readStaticAsset:l,resolveRouteData:t=>r.resolveRouteStaticData(t,o)}),b()){await w.init(r.serverOutDir);const t=await E.getInstance({baseDbDir:r.serverOutDir});setInterval(()=>t.clearExpired(),300*1e3)}try{await r.userCodeReady;const t=await u(e,a),m=d(t);S(r,m),C(r.config)&&await R(r.serverOutDir)}catch(t){await n.panic(t)}}export{J as startDevServer};
@@ -1,4 +1,4 @@
1
- async function t(e){return e.html(`
1
+ async function r(e){return e.html(`
2
2
  <!DOCTYPE html>
3
3
  <html lang="en">
4
4
  <head>
@@ -19,67 +19,112 @@ async function t(e){return e.html(`
19
19
 
20
20
  <body>
21
21
  <script>
22
- const c = "Something went wrong, please, try again.";
23
- function t(o) {
24
- return o && o.replace(/=+$/, "");
22
+ const d = "Something went wrong, please, try again.";
23
+ function h(r) {
24
+ return r && r.replace(/=+$/, "");
25
25
  }
26
- function a(o, e) {
27
- return !!o && !!e && t(o) === t(e);
26
+ function w(r, e) {
27
+ return !!r && !!e && h(r) === h(e);
28
28
  }
29
- function y(o) {
30
- let e;
31
- if (/code|token|error/.test(window.location.hash) ? e = window.location.hash.substring(1) : e = location.search.substring(1), !e)
32
- throw console.error("No query string in OAuth 2 redirect URL"), new Error(c);
33
- const n = new URLSearchParams(e), r = n.get("access_token"), s = n.get("code"), i = n.get("token_type"), w = n.get("expires_in"), l = n.get("state"), g = n.get("error"), u = n.get("error_description") || c;
34
- if (g)
35
- throw new Error(u);
36
- if (!a(l, o == null ? void 0 : o.state))
29
+ const m = {
30
+ invalid_request: "The request is missing a required parameter, includes an unsupported parameter value (other than grant type), repeats a parameter, includes multiple credentials, utilizes more than one mechanism for authenticating the client, or is otherwise malformed.",
31
+ invalid_client: "Client authentication failed (e.g., unknown client, no client authentication included, or unsupported authentication method).",
32
+ invalid_grant: "The provided authorization grant (e.g., authorization code, resource owner credentials) or refresh token is invalid, expired, revoked, does not match the redirection URI used in the authorization request, or was issued to another client.",
33
+ unauthorized_client: "The authenticated client is not authorized to use this authorization grant type.",
34
+ unsupported_grant_type: "The authorization grant type is not supported by the authorization server.",
35
+ invalid_scope: "The requested scope is invalid, unknown, malformed, or exceeds the scope granted by the resource owner.",
36
+ // Authorization endpoint errors (from RFC 6749 Section 4.1.2.1)
37
+ unsupported_response_type: "The requested response type is not supported by the authorization server.",
38
+ access_denied: "The resource owner or authorization server denied the request.",
39
+ // Token endpoint errors (from RFC 6749 Section 5.2)
40
+ server_error: "The authorization server encountered an unexpected condition.",
41
+ temporarily_unavailable: "The authorization server is currently unable to handle the request due to a temporary overloading or maintenance."
42
+ };
43
+ class i extends Error {
44
+ error;
45
+ error_description;
46
+ constructor({
47
+ message: e,
48
+ error: t,
49
+ error_description: n
50
+ }) {
51
+ const o = n || t && m[t] || t || e || d;
52
+ super(o), this.name = "OAuth2Error", this.error = t, this.error_description = n;
53
+ }
54
+ static fromJsonData(e) {
55
+ return new i({
56
+ error: e.error,
57
+ error_description: e.error_description
58
+ });
59
+ }
60
+ static fromTextData(e) {
61
+ return new i({
62
+ message: e
63
+ });
64
+ }
65
+ static fromError(e) {
66
+ return new i({
67
+ error: e.message
68
+ });
69
+ }
70
+ }
71
+ function y(r, e) {
72
+ let t;
73
+ const n = e ? new URL(e) : window.location;
74
+ if (/code|token|error/.test(n.hash) ? t = n.hash.substring(1) : t = n.search.substring(1), !t)
75
+ throw console.error("No query string in OAuth 2 redirect URL"), new i({ message: d });
76
+ const o = new URLSearchParams(t), s = o.get("access_token"), a = o.get("code"), c = o.get("token_type"), l = o.get("expires_in"), p = o.get("state"), u = o.get("error"), g = o.get("error_description");
77
+ if (u)
78
+ throw new i({
79
+ error: u,
80
+ error_description: g ?? void 0
81
+ });
82
+ if (!w(p, r?.state))
37
83
  throw new Error("Outdated OAuth2 state");
38
- if ((o == null ? void 0 : o.flow) === "implicit") {
39
- if (!r)
84
+ if (r?.flow === "implicit") {
85
+ if (!s)
40
86
  throw new Error(
41
87
  \`Your OAuth2 authentication service provider redirected you without an "access_token".
42
88
  Please, try again or make sure your OAuth2 settings are correct.\`
43
89
  );
44
- if (!i)
90
+ if (!c)
45
91
  throw new Error(
46
92
  \`Your OAuth2 authentication service provider redirected you without a "token_type".
47
93
  Please, try again or make sure your OAuth2 settings are correct.\`
48
94
  );
49
- o == null || o.successCallback({
50
- access_token: r,
51
- token_type: i,
52
- expires_in: w,
95
+ r?.successCallback({
96
+ access_token: s,
97
+ token_type: c,
98
+ expires_in: l,
53
99
  auth_code: ""
54
100
  });
55
101
  }
56
- if ((o == null ? void 0 : o.flow) === "authorizationCode") {
57
- if (!s)
102
+ if (r?.flow === "authorizationCode") {
103
+ if (!a)
58
104
  throw new Error(
59
105
  \`Your OAuth2 authentication service provider redirected you without authorization "code".
60
106
  Please, try again or make sure your OAuth2 settings are correct.\`
61
107
  );
62
- o == null || o.successCallback({
63
- auth_code: s,
108
+ r?.successCallback({
109
+ auth_code: a,
64
110
  access_token: "",
65
111
  token_type: "bearer"
66
112
  });
67
113
  }
68
114
  }
69
- function k() {
70
- var e;
71
- const o = (e = window.opener) == null ? void 0 : e.redirectOAuth2;
115
+ function n() {
116
+ const r = window.opener?.redirectOAuth2;
72
117
  try {
73
- y(o);
74
- } catch (n) {
75
- o == null || o.errorCallback(n);
118
+ y(r);
119
+ } catch (o) {
120
+ r?.errorCallback(o);
76
121
  }
77
122
  window.close();
78
123
  }
79
- window.onload = k;
124
+ window.onload = n;
80
125
  </script>
81
126
 
82
127
  <noscript> You need to enable JavaScript to run this app. </noscript>
83
128
  </body>
84
129
  </html>
85
- `)}export{t as replayOauth2RedirectCallbackHandler};
130
+ `)}export{r as replayOauth2RedirectCallbackHandler};
@@ -0,0 +1,4 @@
1
+ import { WorkerPool } from './worker-pool.js';
2
+ export declare const SCORECARDS_WORKER_KEY = "startScorecardsEvaluationWorker";
3
+ export declare const scorecardsWorker: WorkerPool;
4
+ //# sourceMappingURL=scorecards-worker-pool.d.ts.map
@@ -0,0 +1 @@
1
+ import{WorkerPool as r}from"./worker-pool.js";import{getAllowedEnvs as o}from"../utils/envs/get-api-route-allowed-env-variables.js";const c="startScorecardsEvaluationWorker",e=1,k=new r({workerScript:"./scorecards-worker",minWorkers:1,maxWorkers:e,workerType:"process",forkOpts:{env:o(),stdio:"inherit"},lazy:!0});export{c as SCORECARDS_WORKER_KEY,k as scorecardsWorker};
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=scorecards-worker.d.ts.map
@@ -0,0 +1 @@
1
+ import r from"workerpool";import{startScorecardsWorker as o}from"../plugins/scorecards/workers/scorecards.js";import{SCORECARDS_WORKER_KEY as m}from"./scorecards-worker-pool.js";r.worker({[m]:o});
@@ -1,5 +1,7 @@
1
1
  import type { ApiRoutesWorkerParams, ApiRoutesWorkerResponse } from '../types/plugins/api-routes.js';
2
2
  import type { RenderPayload } from '../../types/ssr.js';
3
+ import type { ScorecardsWorkerParams, ScorecardsWorkerResponse } from '../plugins/scorecards/workers/scorecards.js';
4
+ import type { SCORECARDS_WORKER_KEY } from './scorecards-worker-pool.js';
3
5
  import type { API_ROUTES_WORKER_KEY } from './api-routes-worker-pool.js';
4
6
  import type { SSR_WORKER_KEY } from './ssr-worker-pool.js';
5
7
  export type SsrWorkerResponse = {
@@ -16,6 +18,10 @@ export type WorkerTypeMapping = {
16
18
  params: [RenderPayload];
17
19
  response: SsrWorkerResponse;
18
20
  };
21
+ [SCORECARDS_WORKER_KEY]: {
22
+ params: [ScorecardsWorkerParams];
23
+ response: ScorecardsWorkerResponse;
24
+ };
19
25
  };
20
26
  export type WorkerParams<T extends keyof WorkerTypeMapping> = WorkerTypeMapping[T]['params'];
21
27
  export type WorkerResponse<T extends keyof WorkerTypeMapping> = WorkerTypeMapping[T]['response'];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@redocly/revel-reef",
3
- "version": "0.128.0-next.6",
3
+ "version": "0.128.0-next.8",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "bin": {
@@ -31,8 +31,8 @@
31
31
  "@opentelemetry/sdk-trace-node": "2.0.1",
32
32
  "@opentelemetry/sdk-trace-web": "2.0.1",
33
33
  "@opentelemetry/semantic-conventions": "1.34.0",
34
- "@redocly/ajv": "8.11.4",
35
- "@redocly/openapi-core": "2.11.1",
34
+ "@redocly/ajv": "8.17.1",
35
+ "@redocly/openapi-core": "2.12.1",
36
36
  "@shikijs/transformers": "^1.22.2",
37
37
  "@tanstack/react-query": "5.62.3",
38
38
  "@tanstack/react-table": "8.21.3",
@@ -40,7 +40,7 @@
40
40
  "@redocly/mcp-typescript-sdk": "1.18.1",
41
41
  "@wojtekmaj/react-datetimerange-picker": "6.0.0",
42
42
  "@xmldom/xmldom": "0.8.10",
43
- "ajv-formats": "^2.1.1",
43
+ "ajv-formats": "^3.0.1",
44
44
  "anser": "^2.3.2",
45
45
  "babel-plugin-styled-components": "2.1.4",
46
46
  "chokidar": "3.6.0",
@@ -77,7 +77,7 @@
77
77
  "react-router-dom": "^6.21.1",
78
78
  "react-select": "5.10.1",
79
79
  "reactjs-popup": "2.0.6",
80
- "semver": "7.6.0",
80
+ "semver": "7.7.3",
81
81
  "shiki": "1.24.4",
82
82
  "simple-git": "3.20.0",
83
83
  "sitemap": "7.1.1",
@@ -92,12 +92,12 @@
92
92
  "xml-crypto": "6.0.1",
93
93
  "xpath": "0.0.34",
94
94
  "yaml-ast-parser": "0.0.43",
95
- "@redocly/asyncapi-docs": "1.5.0-next.6",
95
+ "@redocly/asyncapi-docs": "1.5.0-next.8",
96
96
  "@redocly/config": "0.40.0",
97
97
  "@redocly/graphql-docs": "1.5.0-next.1",
98
- "@redocly/openapi-docs": "3.16.0-next.6",
98
+ "@redocly/openapi-docs": "3.16.0-next.8",
99
99
  "@redocly/portal-legacy-ui": "0.11.0-next.0",
100
- "@redocly/portal-plugin-mock-server": "0.13.0-next.6",
100
+ "@redocly/portal-plugin-mock-server": "0.13.0-next.8",
101
101
  "@redocly/realm-asyncapi-sdk": "0.6.0-next.1",
102
102
  "@redocly/theme": "0.60.0-next.5"
103
103
  },