@redocly/realm 0.129.0-next.0 → 0.129.0-next.2

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 (90) hide show
  1. package/CHANGELOG.md +46 -0
  2. package/dist/client/app/Sidebar/useBreadcrumbs.js +1 -1
  3. package/dist/client/app/hooks/codeHighlight/json-seq.d.ts +43 -0
  4. package/dist/client/app/hooks/codeHighlight/json-seq.js +1 -0
  5. package/dist/client/app/hooks/codeHighlight/map-lang.js +1 -1
  6. package/dist/client/app/hooks/codeHighlight/multipart-mixed.d.ts +40 -0
  7. package/dist/client/app/hooks/codeHighlight/multipart-mixed.js +1 -0
  8. package/dist/client/app/hooks/codeHighlight/useCodeHighlight.js +1 -1
  9. package/dist/client/app/hooks/useBanner.d.ts +4 -0
  10. package/dist/client/app/hooks/useBanner.js +1 -1
  11. package/dist/client/app/utils/loadAndNavigate.js +1 -1
  12. package/dist/client/types/post-message.d.ts +2 -1
  13. package/dist/server/persistence/kv/helpers/decode-cursor.d.ts +2 -0
  14. package/dist/server/persistence/kv/helpers/decode-cursor.js +1 -0
  15. package/dist/server/persistence/kv/helpers/encode-cursor.d.ts +2 -0
  16. package/dist/server/persistence/kv/helpers/encode-cursor.js +1 -0
  17. package/dist/server/persistence/kv/mappers/create-kv-list-entry.d.ts +5 -0
  18. package/dist/server/persistence/kv/mappers/create-kv-list-entry.js +1 -0
  19. package/dist/server/persistence/kv/mappers/create-kv-value.d.ts +4 -0
  20. package/dist/server/persistence/kv/mappers/create-kv-value.js +1 -0
  21. package/dist/server/persistence/kv/repositories/kv-remote-repository.d.ts +5 -5
  22. package/dist/server/persistence/kv/repositories/kv-remote-repository.js +1 -1
  23. package/dist/server/persistence/kv/schemas/kv-schemas.d.ts +10 -0
  24. package/dist/server/persistence/kv/schemas/kv-schemas.js +1 -0
  25. package/dist/server/persistence/kv/services/kv-service.d.ts +6 -6
  26. package/dist/server/persistence/kv/services/kv-service.js +1 -1
  27. package/dist/server/plugins/markdown/attribute-resolvers/helpers/dereference-json-schema-refs.d.ts +14 -0
  28. package/dist/server/plugins/markdown/attribute-resolvers/helpers/dereference-json-schema-refs.js +1 -0
  29. package/dist/server/plugins/markdown/attribute-resolvers/helpers/generate-sample-from-schema.d.ts +62 -0
  30. package/dist/server/plugins/markdown/attribute-resolvers/helpers/generate-sample-from-schema.js +2 -0
  31. package/dist/server/plugins/markdown/attribute-resolvers/index.js +1 -1
  32. package/dist/server/plugins/markdown/attribute-resolvers/resolve-json-example-ref.d.ts +4 -0
  33. package/dist/server/plugins/markdown/attribute-resolvers/resolve-json-example-ref.js +1 -0
  34. package/dist/server/plugins/markdown/attribute-resolvers/resolve-json-schema-ref.js +1 -1
  35. package/dist/server/plugins/markdown/attribute-resolvers/resolve-sample-from-json-schema.d.ts +4 -0
  36. package/dist/server/plugins/markdown/attribute-resolvers/resolve-sample-from-json-schema.js +1 -0
  37. package/dist/server/plugins/markdown/markdoc/attributes/index.d.ts +2 -0
  38. package/dist/server/plugins/markdown/markdoc/attributes/index.js +1 -1
  39. package/dist/server/plugins/markdown/markdoc/attributes/json-example-ref.d.ts +6 -0
  40. package/dist/server/plugins/markdown/markdoc/attributes/json-example-ref.js +1 -0
  41. package/dist/server/plugins/markdown/markdoc/attributes/sample-from-json-schema.d.ts +6 -0
  42. package/dist/server/plugins/markdown/markdoc/attributes/sample-from-json-schema.js +1 -0
  43. package/dist/server/plugins/markdown/markdoc/custom-components/openapi/index.d.ts +1 -0
  44. package/dist/server/plugins/markdown/markdoc/custom-components/openapi/index.js +1 -1
  45. package/dist/server/plugins/markdown/markdoc/custom-components/openapi/json-example.d.ts +8 -0
  46. package/dist/server/plugins/markdown/markdoc/custom-components/openapi/json-example.js +7 -0
  47. package/dist/server/plugins/markdown/markdoc/tags/index.d.ts +4 -0
  48. package/dist/server/plugins/markdown/markdoc/tags/index.js +1 -1
  49. package/dist/server/plugins/markdown/markdoc/tags/json-example.d.ts +3 -0
  50. package/dist/server/plugins/markdown/markdoc/tags/json-example.js +1 -0
  51. package/dist/server/plugins/mcp/index.js +1 -1
  52. package/dist/server/plugins/scorecard-classic/get-scorecard-config.d.ts +11 -0
  53. package/dist/server/plugins/scorecard-classic/loaders/scorecard.js +1 -1
  54. package/dist/server/plugins/search/documents/search-documents.js +1 -1
  55. package/dist/server/providers/database/copy-migrations.js +1 -1
  56. package/dist/server/providers/database/databases/main-sqlite/migrations/0005_recreate-scorecards-config.sql +25 -0
  57. package/dist/server/providers/database/databases/main-sqlite/migrations/meta/_journal.json +7 -0
  58. package/dist/server/providers/database/databases/main-sqlite/schemas/scorecards-config-table.d.ts +65 -14
  59. package/dist/server/providers/database/databases/main-sqlite/schemas/scorecards-config-table.js +1 -1
  60. package/dist/server/providers/database/databases/sqld-sqlite/migrations/0005_recreate-scorecards-tables.sql +87 -0
  61. package/dist/server/providers/database/databases/sqld-sqlite/migrations/meta/_journal.json +7 -0
  62. package/dist/server/providers/database/databases/sqld-sqlite/schemas/{scorecard-result-states-table.d.ts → scorecards-evaluation-runs-table.d.ts} +61 -65
  63. package/dist/server/providers/database/databases/sqld-sqlite/schemas/scorecards-evaluation-runs-table.js +1 -0
  64. package/dist/server/providers/database/databases/sqld-sqlite/schemas/{scorecard-result-levels-table.d.ts → scorecards-level-results-table.d.ts} +28 -60
  65. package/dist/server/providers/database/databases/sqld-sqlite/schemas/scorecards-level-results-table.js +1 -0
  66. package/dist/server/providers/database/databases/sqld-sqlite/schemas/scorecards-levels-rules-results-table.d.ts +67 -0
  67. package/dist/server/providers/database/databases/sqld-sqlite/schemas/scorecards-levels-rules-results-table.js +1 -0
  68. package/dist/server/providers/database/databases/sqld-sqlite/schemas/{scorecard-results-table.d.ts → scorecards-results-table.d.ts} +80 -46
  69. package/dist/server/providers/database/databases/sqld-sqlite/schemas/scorecards-results-table.js +1 -0
  70. package/dist/server/providers/database/databases/sqld-sqlite/schemas/{scorecard-evaluations-table.d.ts → scorecards-rule-results-table.d.ts} +29 -31
  71. package/dist/server/providers/database/databases/sqld-sqlite/schemas/scorecards-rule-results-table.js +1 -0
  72. package/dist/server/providers/database/pagination/utils/decode-cursor.js +1 -1
  73. package/dist/server/ssr/index.js +1 -1
  74. package/dist/server/ssr/render.js +1 -1
  75. package/dist/server/ssr/template.d.ts +1 -1
  76. package/dist/server/ssr/template.js +13 -13
  77. package/dist/server/ssr/utils.js +27 -13
  78. package/dist/server/utils/envs/get-api-route-allowed-env-variables.js +1 -1
  79. package/dist/server/utils/safe-parse.d.ts +6 -0
  80. package/dist/server/utils/safe-parse.js +1 -0
  81. package/dist/types/ssr.d.ts +3 -1
  82. package/package.json +10 -9
  83. package/dist/server/persistence/kv/mappers/create-kv-read-record.d.ts +0 -4
  84. package/dist/server/persistence/kv/mappers/create-kv-read-record.js +0 -1
  85. package/dist/server/providers/database/databases/sqld-sqlite/schemas/scorecard-evaluations-table.js +0 -1
  86. package/dist/server/providers/database/databases/sqld-sqlite/schemas/scorecard-result-level-states-table.d.ts +0 -48
  87. package/dist/server/providers/database/databases/sqld-sqlite/schemas/scorecard-result-level-states-table.js +0 -1
  88. package/dist/server/providers/database/databases/sqld-sqlite/schemas/scorecard-result-levels-table.js +0 -1
  89. package/dist/server/providers/database/databases/sqld-sqlite/schemas/scorecard-result-states-table.js +0 -1
  90. package/dist/server/providers/database/databases/sqld-sqlite/schemas/scorecard-results-table.js +0 -1
@@ -3,6 +3,7 @@ import { openApiCodeSample } from './openapi-code-sample.js';
3
3
  import { openApiExample } from './openapi-example.js';
4
4
  import { replayOpenApi } from './replay-openapi.js';
5
5
  import { openApiResponseSample } from './openapi-response-sample.js';
6
+ import { jsonExample } from './json-example.js';
6
7
  declare const _default: {
7
8
  [jsonSchema.tagName]: import("@markdoc/markdoc").Schema & {
8
9
  dynamicComponentLib: string;
@@ -19,6 +20,9 @@ declare const _default: {
19
20
  [openApiResponseSample.tagName]: import("@markdoc/markdoc").Schema & {
20
21
  dynamicComponentLib: string;
21
22
  };
23
+ [jsonExample.tagName]: import("@markdoc/markdoc").Schema & {
24
+ dynamicComponentLib: string;
25
+ };
22
26
  };
23
27
  export default _default;
24
28
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- import{jsonSchema as e}from"./json-schema.js";import{openApiCodeSample as m}from"./openapi-code-sample.js";import{openApiExample as a}from"./openapi-example.js";import{replayOpenApi as p}from"./replay-openapi.js";import{openApiResponseSample as o}from"./openapi-response-sample.js";var f={[e.tagName]:e.schema,[m.tagName]:m.schema,[a.tagName]:a.schema,[p.tagName]:p.schema,[o.tagName]:o.schema};export{f as default};
1
+ import{jsonSchema as m}from"./json-schema.js";import{openApiCodeSample as e}from"./openapi-code-sample.js";import{openApiExample as a}from"./openapi-example.js";import{replayOpenApi as p}from"./replay-openapi.js";import{openApiResponseSample as o}from"./openapi-response-sample.js";import{jsonExample as r}from"./json-example.js";var n={[m.tagName]:m.schema,[e.tagName]:e.schema,[a.tagName]:a.schema,[p.tagName]:p.schema,[o.tagName]:o.schema,[r.tagName]:r.schema};export{n as default};
@@ -0,0 +1,3 @@
1
+ import type { CustomMarkdocTag } from '../../../../types';
2
+ export declare const jsonExample: CustomMarkdocTag;
3
+ //# sourceMappingURL=json-example.d.ts.map
@@ -0,0 +1 @@
1
+ import l from"@markdoc/markdoc";import{SampleFromJsonSchema as m,JsonExampleRef as n}from"../attributes/index.js";const v={schema:{attributes:{value:{type:n,required:!1},schema:{type:m,required:!1},mode:{type:String,matches:["read","write"],required:!1},title:{type:String,required:!1},valueResolved:{required:!1},valueResolvedErrors:{type:Array,default:[]},schemaResolved:{required:!1},schemaResolvedErrors:{type:Array,default:[]}},render:"JsonExample",selfClosing:!0,dynamicComponentLib:"openapi",transform:(e,r)=>{const o=e.transformAttributes(r),{valueResolved:a,schemaResolved:u,schemaResolvedErrors:i,valueResolvedErrors:t,title:s}=o;return a||t.length?new l.Tag("JsonExample",{title:s,json:a,errors:t}):new l.Tag("JsonExample",{title:s,json:u,errors:i})},validate(e){const r=[];return e.attributes.schema&&e.attributes.value&&r.push({id:"schema-and-value-attributes-are-mutually-exclusive",level:"error",message:'The "schema" and "value" attributes are mutually exclusive, you can only use one.'}),!e.attributes.schema&&!e.attributes.value&&r.push({id:"schema-or-value-attribute-required",level:"error",message:'This tag requires the "schema" or "value" attribute to render correctly.'}),r}},tagName:"json-example"};export{v as jsonExample};
@@ -1 +1 @@
1
- import{fileURLToPath as m}from"node:url";import{dirname as f,join as l}from"node:path";import{logger as a}from"../../tools/notifiers/logger.js";import{reporter as g}from"../../tools/notifiers/reporter.js";import{filterIgnoredDefinitions as u,getCleanedUpDefinitions as h,isMcpInRedirects as D}from"./utils.js";import{telemetryTraceStep as v}from"../../../cli/telemetry/helpers/trace-step.js";const c="mcp-docs-server-handler",y=f(m(import.meta.url));async function C(){return{id:"mcp",async processContent(i,o){await v("build.plugin.mcp",async r=>{const t=await i.loadOpenApiDefinitions(o),n=await o.getConfig(),{mcp:e,redirects:s}=n;if(r?.setAttribute("config",JSON.stringify(e||{})),!(e?.hide||e?.docs?.hide)&&(D(s)&&await g.panicOnBuildContentError('The reserved route "/mcp" cannot be used in redirect configuration. Please remove any redirects involving "/mcp" from your redocly.yaml config.'),!e?.docs?.hide)){a.info("Configuring MCP servers...");const d=l(y,"./handlers/docs-mcp-handler.js"),p=h(u(t,e?.docs?.ignore||[]));await P(i,d,p,e,i.outdir)}})},async afterRoutesCreated(i,o){const r=await o.getConfig(),{mcp:t}=r;i.setGlobalData({mcpData:{docs:{enabled:!t?.hide&&!t?.docs?.hide,name:t?.docs?.name}}})}}}var E=C;async function P(i,o,r,t,n){i.createRequestHandler(c,o),i.addApiRoute({slug:"/mcp",requestHandlerId:c,httpMethod:"all",getStaticData:async()=>({props:{config:{openapiDefinitions:r.map(e=>({definition:e.definition,relativePath:e.relativePath})),outdir:n,catalogName:t?.docs?.name||"Docs MCP Server"}}})}),a.info("Registered Docs MCP Server endpoint at /mcp")}export{c as MCP_DOCS_SERVER_HANDLER_ID,E as default,C as mcpServerPlugin};
1
+ import{fileURLToPath as m}from"node:url";import{dirname as l,join as g}from"node:path";import{logger as c}from"../../tools/notifiers/logger.js";import{reporter as u}from"../../tools/notifiers/reporter.js";import{filterIgnoredDefinitions as h,getCleanedUpDefinitions as D,isMcpInRedirects as v}from"./utils.js";import{telemetryTraceStep as y}from"../../../cli/telemetry/helpers/trace-step.js";const s="mcp-docs-server-handler",C=l(m(import.meta.url));async function P(){let n=!1;return{id:"mcp",async processContent(e,t){n||await y("build.plugin.mcp",async o=>{const i=await e.loadOpenApiDefinitions(t),a=await t.getConfig(),{mcp:r,redirects:d}=a;if(o?.setAttribute("config",JSON.stringify(r||{})),!(r?.hide||r?.docs?.hide)&&(v(d)&&await u.panicOnBuildContentError('The reserved route "/mcp" cannot be used in redirect configuration. Please remove any redirects involving "/mcp" from your redocly.yaml config.'),!r?.docs?.hide)){c.info("Configuring MCP servers...");const p=g(C,"./handlers/docs-mcp-handler.js"),f=D(h(i,r?.docs?.ignore||[]));await R(e,p,f,r,e.outdir),n=!0}})},async afterRoutesCreated(e,t){const o=await t.getConfig(),{mcp:i}=o;e.setGlobalData({mcpData:{docs:{enabled:!i?.hide&&!i?.docs?.hide,name:i?.docs?.name}}})}}}var H=P;async function R(n,e,t,o,i){n.createRequestHandler(s,e),n.addApiRoute({slug:"/mcp",requestHandlerId:s,httpMethod:"all",getStaticData:async()=>({props:{config:{openapiDefinitions:t.map(a=>({definition:a.definition,relativePath:a.relativePath})),outdir:i,catalogName:o?.docs?.name||"Docs MCP Server"}}})}),c.info("Registered Docs MCP Server endpoint at /mcp")}export{s as MCP_DOCS_SERVER_HANDLER_ID,H as default,P as mcpServerPlugin};
@@ -29,6 +29,9 @@ export declare const getScorecardConfig: (config: Partial<RedoclyConfig>) => {
29
29
  overlay1Preprocessors?: {
30
30
  [x: string]: unknown;
31
31
  } | undefined;
32
+ openrpc1Preprocessors?: {
33
+ [x: string]: unknown;
34
+ } | undefined;
32
35
  decorators?: {
33
36
  [x: string]: unknown;
34
37
  } | undefined;
@@ -56,6 +59,9 @@ export declare const getScorecardConfig: (config: Partial<RedoclyConfig>) => {
56
59
  overlay1Decorators?: {
57
60
  [x: string]: unknown;
58
61
  } | undefined;
62
+ openrpc1Decorators?: {
63
+ [x: string]: unknown;
64
+ } | undefined;
59
65
  rules?: {
60
66
  [x: string]: string | {
61
67
  [x: string]: unknown;
@@ -101,6 +107,11 @@ export declare const getScorecardConfig: (config: Partial<RedoclyConfig>) => {
101
107
  [x: string]: unknown;
102
108
  };
103
109
  } | undefined;
110
+ openrpc1Rules?: {
111
+ [x: string]: string | {
112
+ [x: string]: unknown;
113
+ };
114
+ } | undefined;
104
115
  extends?: string[] | undefined;
105
116
  color?: string | undefined;
106
117
  name: string;
@@ -1 +1 @@
1
- import w from"node:path";import{reporter as x}from"../../../tools/notifiers/reporter.js";import{lintDefinition as h}from"../lint.js";import{ExternalResolver as v}from"../../../fs/utils/external-ref-resolver.js";const C="Non-conformant";async function M(i,e){const{data:{levelsConfig:c,configs:t,targets:n}}=await e.cache.load("","scorecard-config"),r={};let a=C,s=!1;const g=await e.fs.read(i),{data:f}=await e.cache.load(i,"yaml"),m=new v(e.fs);let l={};if(n.length){const o=await e.getConfig(w.posix.dirname(i)),d=f?.info?.["x-metadata"],p={title:f.info.title,version:f.info.version,...d,...o.metadata};l=(await y(n,p))?.configs||{}}for(const o of c){const d=await h({parsed:f,content:g,relativePath:i},l[o.name]||t[o.name],e,m);r[o.name]=d,d.errors===0&&!s?a=o.name:s=!0}let u=c.findIndex(o=>o.name===a);return{levels:r,scorecardLevel:a,scorecardLevelIdx:u+1}}async function y(i,e){if(i)for(const c of i)for(const[t,n]of Object.entries(c.where?.metadata||{})){if(String(n).match(/^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}Z)?\/(\d{4}-\d{2}-\d{2})?$/)){if(!e[t])continue;const[r,a]=n.split("/"),s=new Date(e[t]);if(s<new Date(r)||a&&s>new Date(a))continue}else if(String(n).match(/^\/.*\//)){if(!e[t])continue;try{if(!new RegExp(n.slice(1,-1)).test(e[t]))continue}catch{await x.panicOnBuild(`Invalid regex in scorecard target "${t}": ${n}`);continue}}else if(e[t]!==n)continue;return c}}export{y as getTarget,M as scorecardLoader};
1
+ import w from"node:path";import{reporter as x}from"../../../tools/notifiers/reporter.js";import{lintDefinition as h}from"../lint.js";import{ExternalResolver as b}from"../../../fs/utils/external-ref-resolver.js";const v="Non-conformant";async function O(o,e){const{data:{levelsConfig:s,configs:n,targets:t}}=await e.cache.load("","scorecard-config"),a={};let i=v,f=!1;const c=await e.fs.read(o),{data:l}=await e.cache.load(o,"yaml"),m=new b(e.fs);let g={};if(t.length){const r=await e.getConfig(w.posix.dirname(o)),d=l?.info?.["x-metadata"],p={title:l.info.title,version:l.info.version,...d,...r.metadata};g=(await k(t,p))?.configs||{}}for(const r of s){const d=await h({parsed:l,content:c,relativePath:o},g[r.name]||n[r.name],e,m);a[r.name]=d,d.errors===0&&!f?i=r.name:f=!0}let u=s.findIndex(r=>r.name===i);return{levels:a,scorecardLevel:i,scorecardLevelIdx:u+1}}async function k(o,e){if(o)for(const s of o){let n=!0;for(const[t,a]of Object.entries(s.where?.metadata||{}))if(String(a).match(/^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}Z)?\/(\d{4}-\d{2}-\d{2})?$/)){if(!e[t]){n=!1;break}const[i,f]=a.split("/"),c=new Date(e[t]);if(c<new Date(i)||f&&c>new Date(f)){n=!1;break}}else if(String(a).match(/^\/.*\//)){if(!e[t]){n=!1;break}try{if(!new RegExp(a.slice(1,-1)).test(e[t])){n=!1;break}}catch{await x.panicOnBuild(`Invalid regex in scorecard target "${t}": ${a}`),n=!1;break}}else if(e[t]!==a){n=!1;break}if(n)return s}}export{k as getTarget,O as scorecardLoader};
@@ -1 +1 @@
1
- import{REDOCLY_ROUTE_RBAC as D,REDOCLY_TEAMS_RBAC as p}from"@redocly/config";import{existsSync as E}from"fs";import{rm as _}from"node:fs/promises";import{DEFAULT_LOCALE_PLACEHOLDER as w}from"../../../../constants/common.js";import{SEARCH_DATA_EXPORT_FOLDER as T}from"../../../constants/plugins/search.js";import{isBuildMode as h}from"../../../utils/envs/is-build-mode.js";import{logger as c}from"../../../tools/notifiers/logger.js";import{telemetry as b}from"../../../telemetry/index.js";import{extractTeamsForSearch as O,getRbacTeamsForSearch as $}from"../../../utils/index.js";import{getSearchDocumentGroup as M}from"../utils.js";async function G(S,t,f){c.info("Preparing search documents and create indexes..."),h()&&E(`${t.outdir}/${T}`)&&await _(`${t.outdir}/${T}`,{recursive:!0});const F=c.startTiming(),R=t.getConfig().rbac,v=[w,...S.localeFolders.map(s=>s.toLowerCase())];for(const s of v){const i=t.getAllRoutesForLocale(s);for(const r of i){if(r.excludeFromSearch)continue;const d=new Map,{product:n}=r,A=await r.getStaticData?.(r,{...t,contentDir:t.contentDir,parseMarkdoc:(a,e,u)=>t.parseMarkdoc(a,e,u)})||{},m=await r.getSearchDocuments?.(r,{...A,[p]:r[p],[D]:r[D]},t),o=r.versions?.find(a=>a.active),C=$(r,R??{});if(m&&m.length)for(const a in m){let e=m[a];const u=O(e?.[p]),g=u?.length?u:C,L=e.tags||[];e={...e,...o&&{version:o.version,isDefaultVersion:o.default,versionFolderId:o.folderId},...n&&{product:n},rbacTeams:g,tags:[...L,...g,...o?o.default?["v:default"]:[`v:${o.folderId}:${o.version}`]:["v:default"],...n?[`p:${n.name}`]:[]],url:e.url&&(e.path&&e.path.length>1?e.url:e.url.split("#")[0])};const l=M(e.facets);if(l){const x=d.get(l)??[];d.set(l,[...x,e])}}for(const[a,e]of d)await f.addDocuments(e,{locale:s,group:a,outDir:t.outdir})}}if(f.cleanupFacetValues(t),c.infoTime(F,"Search indexes created"),h()){c.info("Writing out search data...");const s=c.startTiming();await f.export(t.outdir);const i=c.infoTime(s,"Search data written");i&&b.sendTimingPerformedMessage(i)}}export{G as prepareSearchDocuments};
1
+ import{REDOCLY_ROUTE_RBAC as T,REDOCLY_TEAMS_RBAC as p}from"@redocly/config";import{existsSync as O}from"fs";import{rm as $}from"node:fs/promises";import{DEFAULT_LOCALE_PLACEHOLDER as y}from"../../../../constants/common.js";import{SEARCH_DATA_EXPORT_FOLDER as S}from"../../../constants/plugins/search.js";import{isBuildMode as A}from"../../../utils/envs/is-build-mode.js";import{logger as n}from"../../../tools/notifiers/logger.js";import{extractTeamsForSearch as M,getRbacTeamsForSearch as P}from"../../../utils/index.js";import{getSearchDocumentGroup as B}from"../utils.js";import{telemetry as I}from"../../../../cli/telemetry/index.js";import{telemetryTraceStep as _}from"../../../../cli/telemetry/helpers/trace-step.js";async function J(b,t,l){await _("build.plugin.search.prepare_search_documents",async()=>{n.info("Preparing search documents and create indexes..."),A()&&O(`${t.outdir}/${S}`)&&await $(`${t.outdir}/${S}`,{recursive:!0});const F=n.startTiming(),R=t.getConfig().rbac,v=[y,...b.localeFolders.map(a=>a.toLowerCase())];for(const a of v)await _("build.plugin.search.prepare_search_documents.locale",async s=>{const w=t.getAllRoutesForLocale(a);let g=0,h=0;for(const r of w){if(g++,r.excludeFromSearch)continue;const f=new Map,{product:m}=r,C=await r.getStaticData?.(r,{...t,contentDir:t.contentDir,parseMarkdoc:(c,e,u)=>t.parseMarkdoc(c,e,u)})||{},i=await r.getSearchDocuments?.(r,{...C,[p]:r[p],[T]:r[T]},t),o=r.versions?.find(c=>c.active),L=P(r,R??{});if(i){if(i&&i.length){h+=i.length;for(const c in i){let e=i[c];const u=M(e?.[p]),D=u?.length?u:L,x=e.tags||[];e={...e,...o&&{version:o.version,isDefaultVersion:o.default,versionFolderId:o.folderId},...m&&{product:m},rbacTeams:D,tags:[...x,...D,...o?o.default?["v:default"]:[`v:${o.folderId}:${o.version}`]:["v:default"],...m?[`p:${m.name}`]:[]],url:e.url&&(e.path&&e.path.length>1?e.url:e.url.split("#")[0])};const d=B(e.facets);if(d){const E=f.get(d)??[];f.set(d,[...E,e])}}}for(const[c,e]of f)await l.addDocuments(e,{locale:a,group:c,outDir:t.outdir})}}s?.setAttribute("locale",a),s?.setAttribute("totalDocuments",g),s?.setAttribute("totalSearchDocuments",h)});if(l.cleanupFacetValues(t),n.infoTime(F,"Search indexes created"),A()){n.info("Writing out search data...");const a=n.startTiming();await l.export(t.outdir);const s=n.infoTime(a,"Search data written");s&&I.sendTimingPerformedMessage(s)}})}export{J as prepareSearchDocuments};
@@ -1 +1 @@
1
- import c from"node:path";import{cpSync as m,existsSync as e,mkdirSync as l}from"node:fs";import{logger as t}from"../../tools/notifiers/logger.js";import{fromCurrentDir as f}from"../../utils/index.js";const y=r=>{const s=["catalog-sqlite","main-sqlite","sqld-sqlite"];for(const i of s){const o=f(import.meta.url,`./databases/${i}/migrations`),a=c.join(r.serverOutDir,"migrations",i);if(!e(o)){t.warn(`Migrations folder not found at ${o}`);continue}e(r.serverOutDir)||l(r.serverOutDir,{recursive:!0});try{m(o,a,{recursive:!0}),t.info("Successfully copied migrations")}catch(n){t.error("Failed to copy migrations folder: %s",n)}}};export{y as copyMigrationsFolder};
1
+ import c from"node:path";import{cpSync as m,existsSync as t,mkdirSync as l}from"node:fs";import{logger as i}from"../../tools/notifiers/logger.js";import{fromCurrentDir as d}from"../../utils/index.js";import{PACKAGE_NAME as f}from"../../../config/product-gates.js";const u=["@redocly/realm","@redocly/reef","@redocly/redoc-reef","@redocly/revel-reef"],D=r=>{if(!u.includes(f))return;const s=["catalog-sqlite","main-sqlite","sqld-sqlite"];for(const o of s){const e=d(import.meta.url,`./databases/${o}/migrations`),a=c.join(r.serverOutDir,"migrations",o);if(!t(e)){i.warn(`Migrations folder not found at ${e}`);continue}t(r.serverOutDir)||l(r.serverOutDir,{recursive:!0});try{m(e,a,{recursive:!0})}catch(n){i.error("Failed to copy migrations folder: %s",n)}}};export{D as copyMigrationsFolder};
@@ -0,0 +1,25 @@
1
+ -- Drop old scorecards_config table
2
+ DROP TABLE IF EXISTS `scorecards_config`;--> statement-breakpoint
3
+
4
+ -- Create new scorecards_config table with updated schema
5
+ CREATE TABLE `scorecards_config` (
6
+ `id` text PRIMARY KEY NOT NULL,
7
+ `key` text NOT NULL,
8
+ `slug` text NOT NULL,
9
+ `name` text NOT NULL,
10
+ `description` text,
11
+ `entities_filter` text NOT NULL,
12
+ `levels` text NOT NULL,
13
+ `config_hash` text NOT NULL,
14
+ `archived_at` integer,
15
+ `created_at` integer NOT NULL,
16
+ `updated_at` integer NOT NULL
17
+ );--> statement-breakpoint
18
+
19
+ -- Create indexes for scorecards_config
20
+ -- Note: key and slug are NOT unique - allows recreating archived configs with same key/slug
21
+ CREATE INDEX `idx_config_key` ON `scorecards_config` (`key`);--> statement-breakpoint
22
+ CREATE INDEX `idx_config_slug` ON `scorecards_config` (`slug`);--> statement-breakpoint
23
+ CREATE INDEX `idx_config_hash` ON `scorecards_config` (`config_hash`);--> statement-breakpoint
24
+ CREATE INDEX `idx_config_archived` ON `scorecards_config` (`archived_at`);
25
+
@@ -36,6 +36,13 @@
36
36
  "when": 1764258557093,
37
37
  "tag": "0004_add-scorecards-tables",
38
38
  "breakpoints": true
39
+ },
40
+ {
41
+ "idx": 5,
42
+ "version": "6",
43
+ "when": 1765477755000,
44
+ "tag": "0005_recreate-scorecards-config",
45
+ "breakpoints": true
39
46
  }
40
47
  ]
41
48
  }
@@ -21,6 +21,25 @@ export declare const scorecardsConfigTable: import("drizzle-orm/sqlite-core").SQ
21
21
  }, {}, {
22
22
  length: number | undefined;
23
23
  }>;
24
+ key: import("drizzle-orm/sqlite-core").SQLiteColumn<{
25
+ name: "key";
26
+ tableName: "scorecards_config";
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
+ }>;
24
43
  slug: import("drizzle-orm/sqlite-core").SQLiteColumn<{
25
44
  name: "slug";
26
45
  tableName: "scorecards_config";
@@ -78,15 +97,15 @@ export declare const scorecardsConfigTable: import("drizzle-orm/sqlite-core").SQ
78
97
  }, {}, {
79
98
  length: number | undefined;
80
99
  }>;
81
- entities: import("drizzle-orm/sqlite-core").SQLiteColumn<{
82
- name: "entities";
100
+ entitiesFilter: import("drizzle-orm/sqlite-core").SQLiteColumn<{
101
+ name: "entities_filter";
83
102
  tableName: "scorecards_config";
84
103
  dataType: "string";
85
104
  columnType: "SQLiteText";
86
105
  data: string;
87
106
  driverParam: string;
88
107
  notNull: true;
89
- hasDefault: true;
108
+ hasDefault: false;
90
109
  isPrimaryKey: false;
91
110
  isAutoincrement: false;
92
111
  hasRuntimeDefault: false;
@@ -105,7 +124,7 @@ export declare const scorecardsConfigTable: import("drizzle-orm/sqlite-core").SQ
105
124
  data: string;
106
125
  driverParam: string;
107
126
  notNull: true;
108
- hasDefault: true;
127
+ hasDefault: false;
109
128
  isPrimaryKey: false;
110
129
  isAutoincrement: false;
111
130
  hasRuntimeDefault: false;
@@ -116,8 +135,8 @@ export declare const scorecardsConfigTable: import("drizzle-orm/sqlite-core").SQ
116
135
  }, {}, {
117
136
  length: number | undefined;
118
137
  }>;
119
- createdAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
120
- name: "created_at";
138
+ configHash: import("drizzle-orm/sqlite-core").SQLiteColumn<{
139
+ name: "config_hash";
121
140
  tableName: "scorecards_config";
122
141
  dataType: "string";
123
142
  columnType: "SQLiteText";
@@ -135,25 +154,57 @@ export declare const scorecardsConfigTable: import("drizzle-orm/sqlite-core").SQ
135
154
  }, {}, {
136
155
  length: number | undefined;
137
156
  }>;
157
+ archivedAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
158
+ name: "archived_at";
159
+ tableName: "scorecards_config";
160
+ dataType: "number";
161
+ columnType: "SQLiteInteger";
162
+ data: number;
163
+ driverParam: number;
164
+ notNull: false;
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
+ createdAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
175
+ name: "created_at";
176
+ tableName: "scorecards_config";
177
+ dataType: "number";
178
+ columnType: "SQLiteInteger";
179
+ data: number;
180
+ driverParam: number;
181
+ notNull: true;
182
+ hasDefault: false;
183
+ isPrimaryKey: false;
184
+ isAutoincrement: false;
185
+ hasRuntimeDefault: false;
186
+ enumValues: undefined;
187
+ baseColumn: never;
188
+ identity: undefined;
189
+ generated: undefined;
190
+ }, {}, {}>;
138
191
  updatedAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
139
192
  name: "updated_at";
140
193
  tableName: "scorecards_config";
141
- dataType: "string";
142
- columnType: "SQLiteText";
143
- data: string;
144
- driverParam: string;
194
+ dataType: "number";
195
+ columnType: "SQLiteInteger";
196
+ data: number;
197
+ driverParam: number;
145
198
  notNull: true;
146
199
  hasDefault: false;
147
200
  isPrimaryKey: false;
148
201
  isAutoincrement: false;
149
202
  hasRuntimeDefault: false;
150
- enumValues: [string, ...string[]];
203
+ enumValues: undefined;
151
204
  baseColumn: never;
152
205
  identity: undefined;
153
206
  generated: undefined;
154
- }, {}, {
155
- length: number | undefined;
156
- }>;
207
+ }, {}, {}>;
157
208
  };
158
209
  dialect: "sqlite";
159
210
  }>;
@@ -1 +1 @@
1
- import{sqliteTable as t,text as e}from"drizzle-orm/sqlite-core";const o=t("scorecards_config",{id:e("id").primaryKey(),slug:e("slug").notNull(),name:e("name").notNull(),description:e("description"),entities:e("entities").notNull().default("{}"),levels:e("levels").notNull().default("{}"),createdAt:e("created_at").notNull(),updatedAt:e("updated_at").notNull()});export{o as scorecardsConfigTable};
1
+ import{sqliteTable as o,text as e,integer as n,index as t}from"drizzle-orm/sqlite-core";const c=o("scorecards_config",{id:e("id").primaryKey().notNull(),key:e("key").notNull(),slug:e("slug").notNull(),name:e("name").notNull(),description:e("description"),entitiesFilter:e("entities_filter").notNull(),levels:e("levels").notNull(),configHash:e("config_hash").notNull(),archivedAt:n("archived_at"),createdAt:n("created_at").notNull(),updatedAt:n("updated_at").notNull()},i=>[t("idx_config_key").on(i.key),t("idx_config_slug").on(i.slug),t("idx_config_hash").on(i.configHash),t("idx_config_archived").on(i.archivedAt)]);export{c as scorecardsConfigTable};
@@ -0,0 +1,87 @@
1
+ -- Drop all old scorecard tables
2
+ DROP TABLE IF EXISTS `scorecard_result_level_states`;--> statement-breakpoint
3
+ DROP TABLE IF EXISTS `scorecard_result_levels`;--> statement-breakpoint
4
+ DROP TABLE IF EXISTS `scorecard_result_states`;--> statement-breakpoint
5
+ DROP TABLE IF EXISTS `scorecard_results`;--> statement-breakpoint
6
+ DROP TABLE IF EXISTS `scorecard_evaluations`;--> statement-breakpoint
7
+
8
+ -- Create scorecards_results table (renamed from scorecard_results)
9
+ CREATE TABLE `scorecards_results` (
10
+ `id` text PRIMARY KEY NOT NULL,
11
+ `entity_id` text NOT NULL,
12
+ `config_id` text NOT NULL,
13
+ `created_at` integer NOT NULL,
14
+ `evaluated_at` integer NOT NULL,
15
+ `final_score` integer NOT NULL,
16
+ `final_level` text,
17
+ `evaluated_rules` text NOT NULL,
18
+ `rules_config_hash` text NOT NULL,
19
+ `entity_version` text NOT NULL,
20
+ `entity_revision` text
21
+ );--> statement-breakpoint
22
+
23
+ -- Create indexes for scorecards_results
24
+ CREATE UNIQUE INDEX `idx_results_lookup` ON `scorecards_results` (`entity_id`, `config_id`, `created_at` DESC);--> statement-breakpoint
25
+ CREATE INDEX `idx_results_config_time` ON `scorecards_results` (`config_id`, `created_at` DESC);--> statement-breakpoint
26
+ CREATE INDEX `idx_results_entity` ON `scorecards_results` (`entity_id`, `created_at` DESC);--> statement-breakpoint
27
+ CREATE INDEX `idx_results_config_entity_time` ON `scorecards_results` (`config_id`, `entity_id`, `created_at` DESC);--> statement-breakpoint
28
+
29
+ -- Create scorecards_level_results table (renamed from scorecard_result_levels)
30
+ CREATE TABLE `scorecards_level_results` (
31
+ `id` text PRIMARY KEY NOT NULL,
32
+ `result_id` text NOT NULL,
33
+ `level_name` text NOT NULL,
34
+ `score` integer NOT NULL,
35
+ `passed_rules` integer NOT NULL,
36
+ `failed_rules` integer NOT NULL,
37
+ `total_rules` integer NOT NULL,
38
+ `rule_summary` text
39
+ );--> statement-breakpoint
40
+
41
+ -- Create indexes for scorecards_level_results
42
+ CREATE INDEX `idx_level_results_result` ON `scorecards_level_results` (`result_id`);--> statement-breakpoint
43
+ CREATE INDEX `idx_level_results_level` ON `scorecards_level_results` (`level_name`);--> statement-breakpoint
44
+ CREATE INDEX `idx_level_results_result_level` ON `scorecards_level_results` (`result_id`, `level_name`);--> statement-breakpoint
45
+
46
+ -- Create scorecards_rule_results table (renamed from scorecard_result_states)
47
+ CREATE TABLE `scorecards_rule_results` (
48
+ `id` text PRIMARY KEY NOT NULL,
49
+ `rule_name` text NOT NULL,
50
+ `problems_hash` text NOT NULL,
51
+ `state` text NOT NULL,
52
+ `problems` text,
53
+ `first_seen_at` integer NOT NULL
54
+ );--> statement-breakpoint
55
+
56
+ -- Create indexes for scorecards_rule_results
57
+ CREATE UNIQUE INDEX `idx_rules_name_hash` ON `scorecards_rule_results` (`rule_name`, `problems_hash`);--> statement-breakpoint
58
+ CREATE INDEX `idx_rules_state` ON `scorecards_rule_results` (`state`);--> statement-breakpoint
59
+
60
+ -- Create scorecards_levels_rules_results table (renamed from scorecard_result_level_states)
61
+ CREATE TABLE `scorecards_levels_rules_results` (
62
+ `id` text PRIMARY KEY NOT NULL,
63
+ `level_score_id` text NOT NULL,
64
+ `rule_id` text NOT NULL
65
+ );--> statement-breakpoint
66
+
67
+ -- Create indexes for scorecards_levels_rules_results
68
+ CREATE UNIQUE INDEX `idx_rule_problems_level_score_rule` ON `scorecards_levels_rules_results` (`level_score_id`, `rule_id`);--> statement-breakpoint
69
+ CREATE INDEX `idx_rule_problems_level_score` ON `scorecards_levels_rules_results` (`level_score_id`);--> statement-breakpoint
70
+ CREATE INDEX `idx_rule_problems_rule` ON `scorecards_levels_rules_results` (`rule_id`);--> statement-breakpoint
71
+
72
+ -- Create scorecards_evaluation_runs table (renamed from scorecard_evaluations)
73
+ CREATE TABLE `scorecards_evaluation_runs` (
74
+ `id` text PRIMARY KEY NOT NULL,
75
+ `config_id` text NOT NULL,
76
+ `evaluated_at` integer NOT NULL,
77
+ `entities_checked` integer NOT NULL,
78
+ `entities_changed` integer NOT NULL,
79
+ `duration_ms` integer,
80
+ `status` text NOT NULL,
81
+ `error_message` text,
82
+ `entity_id` text
83
+ );--> statement-breakpoint
84
+
85
+ -- Create indexes for scorecards_evaluation_runs
86
+ CREATE INDEX `idx_runs_config_time` ON `scorecards_evaluation_runs` (`config_id`, `evaluated_at` DESC);
87
+
@@ -36,6 +36,13 @@
36
36
  "when": 1764320011908,
37
37
  "tag": "0004_add-scorecards-status",
38
38
  "breakpoints": true
39
+ },
40
+ {
41
+ "idx": 5,
42
+ "version": "6",
43
+ "when": 1765477755000,
44
+ "tag": "0005_recreate-scorecards-tables",
45
+ "breakpoints": true
39
46
  }
40
47
  ]
41
48
  }
@@ -1,10 +1,10 @@
1
- export declare const scorecardResultStatesTable: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
2
- name: "scorecard_result_states";
1
+ export declare const scorecardsEvaluationRunsTable: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
2
+ name: "scorecards_evaluation_runs";
3
3
  schema: undefined;
4
4
  columns: {
5
5
  id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
6
6
  name: "id";
7
- tableName: "scorecard_result_states";
7
+ tableName: "scorecards_evaluation_runs";
8
8
  dataType: "string";
9
9
  columnType: "SQLiteText";
10
10
  data: string;
@@ -21,9 +21,9 @@ export declare const scorecardResultStatesTable: import("drizzle-orm/sqlite-core
21
21
  }, {}, {
22
22
  length: number | undefined;
23
23
  }>;
24
- ruleName: import("drizzle-orm/sqlite-core").SQLiteColumn<{
25
- name: "rule_name";
26
- tableName: "scorecard_result_states";
24
+ configId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
25
+ name: "config_id";
26
+ tableName: "scorecards_evaluation_runs";
27
27
  dataType: "string";
28
28
  columnType: "SQLiteText";
29
29
  data: string;
@@ -40,71 +40,65 @@ export declare const scorecardResultStatesTable: import("drizzle-orm/sqlite-core
40
40
  }, {}, {
41
41
  length: number | undefined;
42
42
  }>;
43
- ruleDetails: import("drizzle-orm/sqlite-core").SQLiteColumn<{
44
- name: "rule_details";
45
- tableName: "scorecard_result_states";
46
- dataType: "string";
47
- columnType: "SQLiteText";
48
- data: string;
49
- driverParam: string;
43
+ evaluatedAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
44
+ name: "evaluated_at";
45
+ tableName: "scorecards_evaluation_runs";
46
+ dataType: "number";
47
+ columnType: "SQLiteInteger";
48
+ data: number;
49
+ driverParam: number;
50
50
  notNull: true;
51
51
  hasDefault: false;
52
52
  isPrimaryKey: false;
53
53
  isAutoincrement: false;
54
54
  hasRuntimeDefault: false;
55
- enumValues: [string, ...string[]];
55
+ enumValues: undefined;
56
56
  baseColumn: never;
57
57
  identity: undefined;
58
58
  generated: undefined;
59
- }, {}, {
60
- length: number | undefined;
61
- }>;
62
- state: import("drizzle-orm/sqlite-core").SQLiteColumn<{
63
- name: "state";
64
- tableName: "scorecard_result_states";
65
- dataType: "string";
66
- columnType: "SQLiteText";
67
- data: string;
68
- driverParam: string;
59
+ }, {}, {}>;
60
+ entitiesChecked: import("drizzle-orm/sqlite-core").SQLiteColumn<{
61
+ name: "entities_checked";
62
+ tableName: "scorecards_evaluation_runs";
63
+ dataType: "number";
64
+ columnType: "SQLiteInteger";
65
+ data: number;
66
+ driverParam: number;
69
67
  notNull: true;
70
68
  hasDefault: false;
71
69
  isPrimaryKey: false;
72
70
  isAutoincrement: false;
73
71
  hasRuntimeDefault: false;
74
- enumValues: [string, ...string[]];
72
+ enumValues: undefined;
75
73
  baseColumn: never;
76
74
  identity: undefined;
77
75
  generated: undefined;
78
- }, {}, {
79
- length: number | undefined;
80
- }>;
81
- severity: import("drizzle-orm/sqlite-core").SQLiteColumn<{
82
- name: "severity";
83
- tableName: "scorecard_result_states";
84
- dataType: "string";
85
- columnType: "SQLiteText";
86
- data: string;
87
- driverParam: string;
88
- notNull: false;
76
+ }, {}, {}>;
77
+ entitiesChanged: import("drizzle-orm/sqlite-core").SQLiteColumn<{
78
+ name: "entities_changed";
79
+ tableName: "scorecards_evaluation_runs";
80
+ dataType: "number";
81
+ columnType: "SQLiteInteger";
82
+ data: number;
83
+ driverParam: number;
84
+ notNull: true;
89
85
  hasDefault: false;
90
86
  isPrimaryKey: false;
91
87
  isAutoincrement: false;
92
88
  hasRuntimeDefault: false;
93
- enumValues: [string, ...string[]];
89
+ enumValues: undefined;
94
90
  baseColumn: never;
95
91
  identity: undefined;
96
92
  generated: undefined;
97
- }, {}, {
98
- length: number | undefined;
99
- }>;
100
- score: import("drizzle-orm/sqlite-core").SQLiteColumn<{
101
- name: "score";
102
- tableName: "scorecard_result_states";
93
+ }, {}, {}>;
94
+ durationMs: import("drizzle-orm/sqlite-core").SQLiteColumn<{
95
+ name: "duration_ms";
96
+ tableName: "scorecards_evaluation_runs";
103
97
  dataType: "number";
104
98
  columnType: "SQLiteInteger";
105
99
  data: number;
106
100
  driverParam: number;
107
- notNull: true;
101
+ notNull: false;
108
102
  hasDefault: false;
109
103
  isPrimaryKey: false;
110
104
  isAutoincrement: false;
@@ -114,9 +108,9 @@ export declare const scorecardResultStatesTable: import("drizzle-orm/sqlite-core
114
108
  identity: undefined;
115
109
  generated: undefined;
116
110
  }, {}, {}>;
117
- firstEvaluationId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
118
- name: "first_evaluation_id";
119
- tableName: "scorecard_result_states";
111
+ status: import("drizzle-orm/sqlite-core").SQLiteColumn<{
112
+ name: "status";
113
+ tableName: "scorecards_evaluation_runs";
120
114
  dataType: "string";
121
115
  columnType: "SQLiteText";
122
116
  data: string;
@@ -133,31 +127,33 @@ export declare const scorecardResultStatesTable: import("drizzle-orm/sqlite-core
133
127
  }, {}, {
134
128
  length: number | undefined;
135
129
  }>;
136
- usageCount: import("drizzle-orm/sqlite-core").SQLiteColumn<{
137
- name: "usage_count";
138
- tableName: "scorecard_result_states";
139
- dataType: "number";
140
- columnType: "SQLiteInteger";
141
- data: number;
142
- driverParam: number;
143
- notNull: true;
144
- hasDefault: true;
130
+ errorMessage: import("drizzle-orm/sqlite-core").SQLiteColumn<{
131
+ name: "error_message";
132
+ tableName: "scorecards_evaluation_runs";
133
+ dataType: "string";
134
+ columnType: "SQLiteText";
135
+ data: string;
136
+ driverParam: string;
137
+ notNull: false;
138
+ hasDefault: false;
145
139
  isPrimaryKey: false;
146
140
  isAutoincrement: false;
147
141
  hasRuntimeDefault: false;
148
- enumValues: undefined;
142
+ enumValues: [string, ...string[]];
149
143
  baseColumn: never;
150
144
  identity: undefined;
151
145
  generated: undefined;
152
- }, {}, {}>;
153
- hash: import("drizzle-orm/sqlite-core").SQLiteColumn<{
154
- name: "hash";
155
- tableName: "scorecard_result_states";
146
+ }, {}, {
147
+ length: number | undefined;
148
+ }>;
149
+ entityId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
150
+ name: "entity_id";
151
+ tableName: "scorecards_evaluation_runs";
156
152
  dataType: "string";
157
153
  columnType: "SQLiteText";
158
154
  data: string;
159
155
  driverParam: string;
160
- notNull: true;
156
+ notNull: false;
161
157
  hasDefault: false;
162
158
  isPrimaryKey: false;
163
159
  isAutoincrement: false;
@@ -172,6 +168,6 @@ export declare const scorecardResultStatesTable: import("drizzle-orm/sqlite-core
172
168
  };
173
169
  dialect: "sqlite";
174
170
  }>;
175
- export type DatabaseScorecardResultState = typeof scorecardResultStatesTable.$inferSelect;
176
- export type DatabaseScorecardResultStateInsert = typeof scorecardResultStatesTable.$inferInsert;
177
- //# sourceMappingURL=scorecard-result-states-table.d.ts.map
171
+ export type DatabaseScorecardsEvaluationRun = typeof scorecardsEvaluationRunsTable.$inferSelect;
172
+ export type DatabaseScorecardsEvaluationRunInsert = typeof scorecardsEvaluationRunsTable.$inferInsert;
173
+ //# sourceMappingURL=scorecards-evaluation-runs-table.d.ts.map
@@ -0,0 +1 @@
1
+ import{sqliteTable as n,text as e,integer as t,index as a}from"drizzle-orm/sqlite-core";const s=n("scorecards_evaluation_runs",{id:e("id").primaryKey().notNull(),configId:e("config_id").notNull(),evaluatedAt:t("evaluated_at").notNull(),entitiesChecked:t("entities_checked").notNull(),entitiesChanged:t("entities_changed").notNull(),durationMs:t("duration_ms"),status:e("status").notNull(),errorMessage:e("error_message"),entityId:e("entity_id")},i=>[a("idx_runs_config_time").on(i.configId,i.evaluatedAt)]);export{s as scorecardsEvaluationRunsTable};