@storyshelf/core 0.8.0 → 0.9.0-next-588f070

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.
@@ -1 +1 @@
1
- {"version":3,"file":"fake-tables.mjs","names":[],"sources":["../../src/test-helpers/fake-tables.ts"],"sourcesContent":["/**\n * Dialect-free stub tables for the in-memory test fake.\n *\n * The fake never touches a driver: it only needs table handles whose columns\n * carry the property → column-name mapping (`getTableColumns`) and flow\n * through drizzle's expression builders (`eq`, `and`, `inArray`, `orderBy`)\n * into the `sql-chunks.ts` matcher. Real `Column`/`Table` base classes from\n * the `drizzle-orm` root (already a core dependency) satisfy both without\n * pulling in any dialect package (`sqlite-core`, `pg-core`, …).\n */\nimport { Column, Table } from \"drizzle-orm\";\nimport type { Tables } from \"../adapters/database.ts\";\n\n/** A column handle with driver passthrough mapping (the fake maps nothing). */\nclass FakeColumn extends Column {\n override getSQLType(): string {\n return this.columnType;\n }\n}\n\n// `Table.Symbol` is runtime-only (`@internal`, absent from the public types).\nconst columnsSymbol = (Table as unknown as { Symbol: { Columns: symbol } }).Symbol.Columns;\n\nfunction defineTable(name: string, columns: Record<string, string>): Table {\n const table = new Table(name, undefined, name);\n const handles: Record<string, FakeColumn> = {};\n for (const [property, dbName] of Object.entries(columns)) {\n handles[property] = new FakeColumn(table, {\n name: dbName,\n keyAsName: false,\n notNull: false,\n default: undefined,\n defaultFn: undefined,\n onUpdateFn: undefined,\n hasDefault: false,\n primaryKey: false,\n isUnique: false,\n uniqueName: undefined,\n uniqueType: undefined,\n dataType: \"string\",\n columnType: \"FakeColumn\",\n generated: undefined,\n generatedIdentity: undefined,\n });\n }\n (table as unknown as Record<symbol, unknown>)[columnsSymbol] = handles;\n return table;\n}\n\n// Stub tables matching the real schema's property -> column mapping.\n// No constraints or defaults — just names for whereMatches/orderRows.\nconst projects = defineTable(\"projects\", {\n id: \"id\",\n name: \"name\",\n slug: \"slug\",\n gitRepository: \"git_repository\",\n gitDefaultBranch: \"git_default_branch\",\n pixelThreshold: \"pixel_threshold\",\n maxDiffRatio: \"max_diff_ratio\",\n publicBranchRegex: \"public_branch_regex\",\n storybookMeta: \"storybook_meta\",\n executePlay: \"execute_play\",\n playTimeoutMs: \"play_timeout_ms\",\n runA11y: \"run_a11y\",\n runTests: \"run_tests\",\n browser: \"browser\",\n viewports: \"viewports\",\n browsers: \"browsers\",\n modesAllowlist: \"modes_allowlist\",\n automigrate: \"automigrate\",\n aiProfile: \"ai_profile\",\n reviewEnabled: \"review_enabled\",\n reviewApprovals: \"review_approvals\",\n storybookUrlTtlSeconds: \"storybook_url_ttl_seconds\",\n createdAt: \"created_at\",\n updatedAt: \"updated_at\",\n});\n\nconst designLinks = defineTable(\"design_links\", {\n id: \"id\",\n projectId: \"project_id\",\n importPath: \"import_path\",\n label: \"label\",\n url: \"url\",\n createdAt: \"created_at\",\n updatedAt: \"updated_at\",\n});\n\nconst designCredentials = defineTable(\"design_credentials\", {\n id: \"id\",\n projectId: \"project_id\",\n provider: \"provider\",\n tokenEncrypted: \"token_encrypted\",\n status: \"status\",\n checkedAt: \"checked_at\",\n createdAt: \"created_at\",\n updatedAt: \"updated_at\",\n});\n\nconst userConnections = defineTable(\"user_connections\", {\n id: \"id\",\n userId: \"user_id\",\n service: \"service\",\n tokenEncrypted: \"token_encrypted\",\n refreshTokenEncrypted: \"refresh_token_encrypted\",\n expiresAt: \"expires_at\",\n status: \"status\",\n createdAt: \"created_at\",\n updatedAt: \"updated_at\",\n});\n\nconst designNodes = defineTable(\"design_nodes\", {\n id: \"id\",\n projectId: \"project_id\",\n provider: \"provider\",\n viewerId: \"viewer_id\",\n fileKey: \"file_key\",\n nodeId: \"node_id\",\n name: \"name\",\n version: \"version\",\n lastModified: \"last_modified\",\n state: \"state\",\n renderPath: \"render_path\",\n renderVersion: \"render_version\",\n fetchedAt: \"fetched_at\",\n createdAt: \"created_at\",\n updatedAt: \"updated_at\",\n});\n\nconst builds = defineTable(\"builds\", {\n id: \"id\",\n projectId: \"project_id\",\n gitSha: \"git_sha\",\n gitBranch: \"git_branch\",\n isDefault: \"is_default\",\n authorEmail: \"author_email\",\n authorName: \"author_name\",\n message: \"message\",\n public: \"public\",\n status: \"status\",\n snapshotCount: \"snapshot_count\",\n changedCount: \"changed_count\",\n approvedCount: \"approved_count\",\n rejectedCount: \"rejected_count\",\n inheritedCount: \"inherited_count\",\n affectedOnly: \"affected_only\",\n baselineSha: \"baseline_sha\",\n changedFiles: \"changed_files\",\n affectedImportPaths: \"affected_import_paths\",\n testResults: \"test_results\",\n createdAt: \"created_at\",\n updatedAt: \"updated_at\",\n});\n\nconst captureAttempts = defineTable(\"capture_attempts\", {\n id: \"id\",\n projectId: \"project_id\",\n buildId: \"build_id\",\n attemptNo: \"attempt_no\",\n status: \"status\",\n error: \"error\",\n reqId: \"req_id\",\n storyCount: \"story_count\",\n failedCount: \"failed_count\",\n queuedAt: \"queued_at\",\n startedAt: \"started_at\",\n finishedAt: \"finished_at\",\n createdAt: \"created_at\",\n updatedAt: \"updated_at\",\n});\n\nconst captureShards = defineTable(\"capture_shards\", {\n id: \"id\",\n projectId: \"project_id\",\n buildId: \"build_id\",\n kind: \"kind\",\n ordinal: \"ordinal\",\n status: \"status\",\n attemptId: \"attempt_id\",\n payload: \"payload\",\n result: \"result\",\n error: \"error\",\n startedAt: \"started_at\",\n finishedAt: \"finished_at\",\n createdAt: \"created_at\",\n updatedAt: \"updated_at\",\n});\n\nconst captureJobs = defineTable(\"capture_jobs\", {\n id: \"id\",\n entry: \"entry\",\n jobId: \"job_id\",\n kind: \"kind\",\n buildId: \"build_id\",\n shardId: \"shard_id\",\n attempt: \"attempt\",\n maxAttempts: \"max_attempts\",\n status: \"status\",\n visibleAt: \"visible_at\",\n owner: \"owner\",\n payload: \"payload\",\n cancelRequestedAt: \"cancel_requested_at\",\n error: \"error\",\n startedAt: \"started_at\",\n finishedAt: \"finished_at\",\n createdAt: \"created_at\",\n updatedAt: \"updated_at\",\n});\n\nconst buildComponents = defineTable(\"build_components\", {\n id: \"id\",\n projectId: \"project_id\",\n buildId: \"build_id\",\n importPath: \"import_path\",\n title: \"title\",\n storyCount: \"story_count\",\n hash: \"hash\",\n createdAt: \"created_at\",\n});\n\nconst buildReviews = defineTable(\"build_reviews\", {\n id: \"id\",\n buildId: \"build_id\",\n userId: \"user_id\",\n verdict: \"verdict\",\n body: \"body\",\n createdAt: \"created_at\",\n});\n\nconst siteSettings = defineTable(\"site_settings\", {\n id: \"id\",\n value: \"value\",\n updatedBy: \"updated_by\",\n createdAt: \"created_at\",\n updatedAt: \"updated_at\",\n});\n\nconst captureLogs = defineTable(\"capture_logs\", {\n id: \"id\",\n projectId: \"project_id\",\n buildId: \"build_id\",\n attemptId: \"attempt_id\",\n seq: \"seq\",\n level: \"level\",\n message: \"message\",\n fields: \"fields\",\n createdAt: \"created_at\",\n});\n\nconst snapshots = defineTable(\"snapshots\", {\n durationMs: \"duration_ms\",\n a11yViolations: \"a11y_violations\",\n id: \"id\",\n projectId: \"project_id\",\n buildId: \"build_id\",\n storyId: \"story_id\",\n storyName: \"story_name\",\n storyTitle: \"story_title\",\n storyImportPath: \"story_import_path\",\n viewportName: \"viewport_name\",\n viewportWidth: \"viewport_width\",\n viewportHeight: \"viewport_height\",\n screenshotPath: \"screenshot_path\",\n diffPath: \"diff_path\",\n diffPixels: \"diff_pixels\",\n diffRatio: \"diff_ratio\",\n diffPassed: \"diff_passed\",\n status: \"status\",\n reviewedBy: \"reviewed_by\",\n reviewedAt: \"reviewed_at\",\n designUrl: \"design_url\",\n infraHash: \"infra_hash\",\n envChange: \"env_change\",\n inherited: \"inherited\",\n baselineId: \"baseline_id\",\n baselineVersion: \"baseline_version\",\n sourceBuildId: \"source_build_id\",\n comparisonImagePath: \"comparison_image_path\",\n comparisonMetadata: \"comparison_metadata\",\n mode: \"mode\",\n browser: \"browser\",\n createdAt: \"created_at\",\n updatedAt: \"updated_at\",\n});\n\nconst baselines = defineTable(\"baselines\", {\n id: \"id\",\n projectId: \"project_id\",\n storyId: \"story_id\",\n viewportName: \"viewport_name\",\n branch: \"branch\",\n snapshotId: \"snapshot_id\",\n sourceBuildId: \"source_build_id\",\n screenshotPath: \"screenshot_path\",\n infraHash: \"infra_hash\",\n fingerprint: \"fingerprint\",\n mode: \"mode\",\n browser: \"browser\",\n createdAt: \"created_at\",\n updatedAt: \"updated_at\",\n});\n\nconst comments = defineTable(\"comments\", {\n id: \"id\",\n projectId: \"project_id\",\n buildId: \"build_id\",\n snapshotId: \"snapshot_id\",\n userId: \"user_id\",\n body: \"body\",\n parentId: \"parent_id\",\n resolved: \"resolved\",\n createdAt: \"created_at\",\n updatedAt: \"updated_at\",\n storyId: \"story_id\",\n});\n\nconst labelTypes = defineTable(\"label_types\", {\n id: \"id\",\n projectId: \"project_id\",\n key: \"key\",\n name: \"name\",\n linkTemplate: \"link_template\",\n color: \"color\",\n createdAt: \"created_at\",\n});\n\nconst buildLabels = defineTable(\"build_labels\", {\n id: \"id\",\n projectId: \"project_id\",\n buildId: \"build_id\",\n typeKey: \"type_key\",\n value: \"value\",\n createdAt: \"created_at\",\n});\n\nconst projectLinks = defineTable(\"project_links\", {\n id: \"id\",\n downstreamId: \"downstream_id\",\n upstreamId: \"upstream_id\",\n packageName: \"package_name\",\n createdAt: \"created_at\",\n});\n\nconst buildPackageUsage = defineTable(\"build_package_usage\", {\n id: \"id\",\n projectId: \"project_id\",\n buildId: \"build_id\",\n storyImportPath: \"story_import_path\",\n packageName: \"package_name\",\n modulePath: \"module_path\",\n version: \"version\",\n createdAt: \"created_at\",\n});\n\nconst tokens = defineTable(\"tokens\", {\n id: \"id\",\n projectId: \"project_id\",\n name: \"name\",\n hash: \"hash\",\n userId: \"user_id\",\n lastUsedAt: \"last_used_at\",\n createdAt: \"created_at\",\n});\n\nconst webhooks = defineTable(\"webhooks\", {\n id: \"id\",\n projectId: \"project_id\",\n url: \"url\",\n secretEncrypted: \"secret_encrypted\",\n events: \"events\",\n createdAt: \"created_at\",\n updatedAt: \"updated_at\",\n});\n\nconst users = defineTable(\"users\", {\n id: \"id\",\n email: \"email\",\n name: \"name\",\n avatarUrl: \"avatar_url\",\n role: \"role\",\n lastLoginAt: \"last_login_at\",\n createdAt: \"created_at\",\n passwordHash: \"password_hash\",\n displayNameOverride: \"display_name_override\",\n authProvider: \"auth_provider\",\n disabled: \"disabled\",\n});\n\nconst userInviteTokens = defineTable(\"user_invite_tokens\", {\n id: \"id\",\n userId: \"user_id\",\n tokenHash: \"token_hash\",\n expiresAt: \"expires_at\",\n usedAt: \"used_at\",\n createdAt: \"created_at\",\n});\n\nconst projectMembers = defineTable(\"project_members\", {\n id: \"id\",\n projectId: \"project_id\",\n userId: \"user_id\",\n role: \"role\",\n source: \"source\",\n createdAt: \"created_at\",\n});\n\nconst projectGroupMappings = defineTable(\"project_group_mappings\", {\n id: \"id\",\n projectId: \"project_id\",\n groupName: \"group_name\",\n role: \"role\",\n createdAt: \"created_at\",\n});\n\nconst insights = defineTable(\"insights\", {\n id: \"id\",\n projectId: \"project_id\",\n buildId: \"build_id\",\n kind: \"kind\",\n windowKey: \"window_key\",\n inputHash: \"input_hash\",\n status: \"status\",\n profile: \"profile\",\n model: \"model\",\n promptVersion: \"prompt_version\",\n verdict: \"verdict\",\n summary: \"summary\",\n result: \"result\",\n errorCode: \"error_code\",\n createdAt: \"created_at\",\n startedAt: \"started_at\",\n finishedAt: \"finished_at\",\n});\n\nconst aiUsage = defineTable(\"ai_usage\", {\n id: \"id\",\n insightId: \"insight_id\",\n projectId: \"project_id\",\n profile: \"profile\",\n task: \"task\",\n model: \"model\",\n inputTokens: \"input_tokens\",\n outputTokens: \"output_tokens\",\n estimated: \"estimated\",\n images: \"images\",\n status: \"status\",\n createdAt: \"created_at\",\n});\n\nconst aiBudgetAlerts = defineTable(\"ai_budget_alerts\", {\n id: \"id\",\n day: \"day\",\n threshold: \"threshold\",\n createdAt: \"created_at\",\n});\n\nconst notificationChannels = defineTable(\"notification_channels\", {\n id: \"id\",\n projectId: \"project_id\",\n provider: \"provider\",\n config: \"config\",\n secretEncrypted: \"secret_encrypted\",\n events: \"events\",\n enabled: \"enabled\",\n lastError: \"last_error\",\n lastErrorAt: \"last_error_at\",\n createdAt: \"created_at\",\n updatedAt: \"updated_at\",\n});\n\nconst notificationSubscriptions = defineTable(\"notification_subscriptions\", {\n id: \"id\",\n projectId: \"project_id\",\n userId: \"user_id\",\n events: \"events\",\n via: \"via\",\n enabled: \"enabled\",\n createdAt: \"created_at\",\n});\n\nconst contentRefs = defineTable(\"content_refs\", {\n hash: \"hash\",\n refCount: \"ref_count\",\n lastSeenAt: \"last_seen_at\",\n createdAt: \"created_at\",\n});\n\n/** Stub schema bundled into the `Tables` map every fake serves. */\nexport const fakeSchema: Tables = {\n projects,\n builds,\n captureAttempts,\n captureLogs,\n captureShards,\n captureJobs,\n buildComponents,\n buildReviews,\n siteSettings,\n snapshots,\n baselines,\n comments,\n labelTypes,\n buildLabels,\n projectLinks,\n designLinks,\n designCredentials,\n userConnections,\n designNodes,\n buildPackageUsage,\n tokens,\n webhooks,\n users,\n userInviteTokens,\n projectMembers,\n projectGroupMappings,\n insights,\n aiUsage,\n aiBudgetAlerts,\n notificationChannels,\n notificationSubscriptions,\n contentRefs,\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"fake-tables.mjs","names":[],"sources":["../../src/test-helpers/fake-tables.ts"],"sourcesContent":["/**\n * Dialect-free stub tables for the in-memory test fake.\n *\n * The fake never touches a driver: it only needs table handles whose columns\n * carry the property → column-name mapping (`getTableColumns`) and flow\n * through drizzle's expression builders (`eq`, `and`, `inArray`, `orderBy`)\n * into the `sql-chunks.ts` matcher. Real `Column`/`Table` base classes from\n * the `drizzle-orm` root (already a core dependency) satisfy both without\n * pulling in any dialect package (`sqlite-core`, `pg-core`, …).\n */\nimport { Column, Table } from \"drizzle-orm\";\nimport type { Tables } from \"../adapters/database.ts\";\n\n/** A column handle with driver passthrough mapping (the fake maps nothing). */\nclass FakeColumn extends Column {\n override getSQLType(): string {\n return this.columnType;\n }\n}\n\n// `Table.Symbol` is runtime-only (`@internal`, absent from the public types).\nconst columnsSymbol = (Table as unknown as { Symbol: { Columns: symbol } }).Symbol.Columns;\n\nfunction defineTable(name: string, columns: Record<string, string>): Table {\n const table = new Table(name, undefined, name);\n const handles: Record<string, FakeColumn> = {};\n for (const [property, dbName] of Object.entries(columns)) {\n handles[property] = new FakeColumn(table, {\n name: dbName,\n keyAsName: false,\n notNull: false,\n default: undefined,\n defaultFn: undefined,\n onUpdateFn: undefined,\n hasDefault: false,\n primaryKey: false,\n isUnique: false,\n uniqueName: undefined,\n uniqueType: undefined,\n dataType: \"string\",\n columnType: \"FakeColumn\",\n generated: undefined,\n generatedIdentity: undefined,\n });\n }\n (table as unknown as Record<symbol, unknown>)[columnsSymbol] = handles;\n return table;\n}\n\n// Stub tables matching the real schema's property -> column mapping.\n// No constraints or defaults — just names for whereMatches/orderRows.\nconst projects = defineTable(\"projects\", {\n id: \"id\",\n name: \"name\",\n slug: \"slug\",\n gitRepository: \"git_repository\",\n gitDefaultBranch: \"git_default_branch\",\n pixelThreshold: \"pixel_threshold\",\n maxDiffRatio: \"max_diff_ratio\",\n publicBranchRegex: \"public_branch_regex\",\n storybookMeta: \"storybook_meta\",\n executePlay: \"execute_play\",\n playTimeoutMs: \"play_timeout_ms\",\n runA11y: \"run_a11y\",\n runTests: \"run_tests\",\n browser: \"browser\",\n viewports: \"viewports\",\n browsers: \"browsers\",\n modesAllowlist: \"modes_allowlist\",\n automigrate: \"automigrate\",\n aiProfile: \"ai_profile\",\n reviewEnabled: \"review_enabled\",\n reviewApprovals: \"review_approvals\",\n storybookUrlTtlSeconds: \"storybook_url_ttl_seconds\",\n createdAt: \"created_at\",\n updatedAt: \"updated_at\",\n});\n\nconst designLinks = defineTable(\"design_links\", {\n id: \"id\",\n projectId: \"project_id\",\n importPath: \"import_path\",\n label: \"label\",\n url: \"url\",\n createdAt: \"created_at\",\n updatedAt: \"updated_at\",\n});\n\nconst designCredentials = defineTable(\"design_credentials\", {\n id: \"id\",\n projectId: \"project_id\",\n provider: \"provider\",\n tokenEncrypted: \"token_encrypted\",\n status: \"status\",\n checkedAt: \"checked_at\",\n createdAt: \"created_at\",\n updatedAt: \"updated_at\",\n});\n\nconst userConnections = defineTable(\"user_connections\", {\n id: \"id\",\n userId: \"user_id\",\n service: \"service\",\n tokenEncrypted: \"token_encrypted\",\n refreshTokenEncrypted: \"refresh_token_encrypted\",\n expiresAt: \"expires_at\",\n status: \"status\",\n createdAt: \"created_at\",\n updatedAt: \"updated_at\",\n});\n\nconst designNodes = defineTable(\"design_nodes\", {\n id: \"id\",\n projectId: \"project_id\",\n provider: \"provider\",\n viewerId: \"viewer_id\",\n fileKey: \"file_key\",\n nodeId: \"node_id\",\n name: \"name\",\n version: \"version\",\n lastModified: \"last_modified\",\n state: \"state\",\n renderPath: \"render_path\",\n renderVersion: \"render_version\",\n notifiedVersion: \"notified_version\",\n fetchedAt: \"fetched_at\",\n createdAt: \"created_at\",\n updatedAt: \"updated_at\",\n});\n\nconst builds = defineTable(\"builds\", {\n id: \"id\",\n projectId: \"project_id\",\n gitSha: \"git_sha\",\n gitBranch: \"git_branch\",\n isDefault: \"is_default\",\n authorEmail: \"author_email\",\n authorName: \"author_name\",\n message: \"message\",\n public: \"public\",\n status: \"status\",\n snapshotCount: \"snapshot_count\",\n changedCount: \"changed_count\",\n approvedCount: \"approved_count\",\n rejectedCount: \"rejected_count\",\n inheritedCount: \"inherited_count\",\n affectedOnly: \"affected_only\",\n baselineSha: \"baseline_sha\",\n changedFiles: \"changed_files\",\n affectedImportPaths: \"affected_import_paths\",\n testResults: \"test_results\",\n createdAt: \"created_at\",\n updatedAt: \"updated_at\",\n});\n\nconst captureAttempts = defineTable(\"capture_attempts\", {\n id: \"id\",\n projectId: \"project_id\",\n buildId: \"build_id\",\n attemptNo: \"attempt_no\",\n status: \"status\",\n error: \"error\",\n reqId: \"req_id\",\n storyCount: \"story_count\",\n failedCount: \"failed_count\",\n queuedAt: \"queued_at\",\n startedAt: \"started_at\",\n finishedAt: \"finished_at\",\n createdAt: \"created_at\",\n updatedAt: \"updated_at\",\n});\n\nconst captureShards = defineTable(\"capture_shards\", {\n id: \"id\",\n projectId: \"project_id\",\n buildId: \"build_id\",\n kind: \"kind\",\n ordinal: \"ordinal\",\n status: \"status\",\n attemptId: \"attempt_id\",\n payload: \"payload\",\n result: \"result\",\n error: \"error\",\n startedAt: \"started_at\",\n finishedAt: \"finished_at\",\n createdAt: \"created_at\",\n updatedAt: \"updated_at\",\n});\n\nconst captureJobs = defineTable(\"capture_jobs\", {\n id: \"id\",\n entry: \"entry\",\n jobId: \"job_id\",\n kind: \"kind\",\n buildId: \"build_id\",\n shardId: \"shard_id\",\n attempt: \"attempt\",\n maxAttempts: \"max_attempts\",\n status: \"status\",\n visibleAt: \"visible_at\",\n owner: \"owner\",\n payload: \"payload\",\n cancelRequestedAt: \"cancel_requested_at\",\n error: \"error\",\n startedAt: \"started_at\",\n finishedAt: \"finished_at\",\n createdAt: \"created_at\",\n updatedAt: \"updated_at\",\n});\n\nconst buildComponents = defineTable(\"build_components\", {\n id: \"id\",\n projectId: \"project_id\",\n buildId: \"build_id\",\n importPath: \"import_path\",\n title: \"title\",\n storyCount: \"story_count\",\n hash: \"hash\",\n createdAt: \"created_at\",\n});\n\nconst buildReviews = defineTable(\"build_reviews\", {\n id: \"id\",\n buildId: \"build_id\",\n userId: \"user_id\",\n verdict: \"verdict\",\n body: \"body\",\n createdAt: \"created_at\",\n});\n\nconst siteSettings = defineTable(\"site_settings\", {\n id: \"id\",\n value: \"value\",\n updatedBy: \"updated_by\",\n createdAt: \"created_at\",\n updatedAt: \"updated_at\",\n});\n\nconst captureLogs = defineTable(\"capture_logs\", {\n id: \"id\",\n projectId: \"project_id\",\n buildId: \"build_id\",\n attemptId: \"attempt_id\",\n seq: \"seq\",\n level: \"level\",\n message: \"message\",\n fields: \"fields\",\n createdAt: \"created_at\",\n});\n\nconst snapshots = defineTable(\"snapshots\", {\n durationMs: \"duration_ms\",\n a11yViolations: \"a11y_violations\",\n id: \"id\",\n projectId: \"project_id\",\n buildId: \"build_id\",\n storyId: \"story_id\",\n storyName: \"story_name\",\n storyTitle: \"story_title\",\n storyImportPath: \"story_import_path\",\n viewportName: \"viewport_name\",\n viewportWidth: \"viewport_width\",\n viewportHeight: \"viewport_height\",\n screenshotPath: \"screenshot_path\",\n diffPath: \"diff_path\",\n diffPixels: \"diff_pixels\",\n diffRatio: \"diff_ratio\",\n diffPassed: \"diff_passed\",\n status: \"status\",\n reviewedBy: \"reviewed_by\",\n reviewedAt: \"reviewed_at\",\n designUrl: \"design_url\",\n infraHash: \"infra_hash\",\n envChange: \"env_change\",\n inherited: \"inherited\",\n baselineId: \"baseline_id\",\n baselineVersion: \"baseline_version\",\n sourceBuildId: \"source_build_id\",\n comparisonImagePath: \"comparison_image_path\",\n comparisonMetadata: \"comparison_metadata\",\n mode: \"mode\",\n browser: \"browser\",\n createdAt: \"created_at\",\n updatedAt: \"updated_at\",\n});\n\nconst baselines = defineTable(\"baselines\", {\n id: \"id\",\n projectId: \"project_id\",\n storyId: \"story_id\",\n viewportName: \"viewport_name\",\n branch: \"branch\",\n snapshotId: \"snapshot_id\",\n sourceBuildId: \"source_build_id\",\n screenshotPath: \"screenshot_path\",\n infraHash: \"infra_hash\",\n fingerprint: \"fingerprint\",\n mode: \"mode\",\n browser: \"browser\",\n createdAt: \"created_at\",\n updatedAt: \"updated_at\",\n});\n\nconst comments = defineTable(\"comments\", {\n id: \"id\",\n projectId: \"project_id\",\n buildId: \"build_id\",\n snapshotId: \"snapshot_id\",\n userId: \"user_id\",\n body: \"body\",\n parentId: \"parent_id\",\n resolved: \"resolved\",\n createdAt: \"created_at\",\n updatedAt: \"updated_at\",\n storyId: \"story_id\",\n});\n\nconst labelTypes = defineTable(\"label_types\", {\n id: \"id\",\n projectId: \"project_id\",\n key: \"key\",\n name: \"name\",\n linkTemplate: \"link_template\",\n color: \"color\",\n createdAt: \"created_at\",\n});\n\nconst buildLabels = defineTable(\"build_labels\", {\n id: \"id\",\n projectId: \"project_id\",\n buildId: \"build_id\",\n typeKey: \"type_key\",\n value: \"value\",\n createdAt: \"created_at\",\n});\n\nconst projectLinks = defineTable(\"project_links\", {\n id: \"id\",\n downstreamId: \"downstream_id\",\n upstreamId: \"upstream_id\",\n packageName: \"package_name\",\n createdAt: \"created_at\",\n});\n\nconst buildPackageUsage = defineTable(\"build_package_usage\", {\n id: \"id\",\n projectId: \"project_id\",\n buildId: \"build_id\",\n storyImportPath: \"story_import_path\",\n packageName: \"package_name\",\n modulePath: \"module_path\",\n version: \"version\",\n createdAt: \"created_at\",\n});\n\nconst tokens = defineTable(\"tokens\", {\n id: \"id\",\n projectId: \"project_id\",\n name: \"name\",\n hash: \"hash\",\n userId: \"user_id\",\n lastUsedAt: \"last_used_at\",\n createdAt: \"created_at\",\n});\n\nconst webhooks = defineTable(\"webhooks\", {\n id: \"id\",\n projectId: \"project_id\",\n url: \"url\",\n secretEncrypted: \"secret_encrypted\",\n events: \"events\",\n createdAt: \"created_at\",\n updatedAt: \"updated_at\",\n});\n\nconst users = defineTable(\"users\", {\n id: \"id\",\n email: \"email\",\n name: \"name\",\n avatarUrl: \"avatar_url\",\n role: \"role\",\n lastLoginAt: \"last_login_at\",\n createdAt: \"created_at\",\n passwordHash: \"password_hash\",\n displayNameOverride: \"display_name_override\",\n authProvider: \"auth_provider\",\n disabled: \"disabled\",\n});\n\nconst userInviteTokens = defineTable(\"user_invite_tokens\", {\n id: \"id\",\n userId: \"user_id\",\n tokenHash: \"token_hash\",\n expiresAt: \"expires_at\",\n usedAt: \"used_at\",\n createdAt: \"created_at\",\n});\n\nconst projectMembers = defineTable(\"project_members\", {\n id: \"id\",\n projectId: \"project_id\",\n userId: \"user_id\",\n role: \"role\",\n source: \"source\",\n createdAt: \"created_at\",\n});\n\nconst projectGroupMappings = defineTable(\"project_group_mappings\", {\n id: \"id\",\n projectId: \"project_id\",\n groupName: \"group_name\",\n role: \"role\",\n createdAt: \"created_at\",\n});\n\nconst insights = defineTable(\"insights\", {\n id: \"id\",\n projectId: \"project_id\",\n buildId: \"build_id\",\n kind: \"kind\",\n windowKey: \"window_key\",\n inputHash: \"input_hash\",\n status: \"status\",\n profile: \"profile\",\n model: \"model\",\n promptVersion: \"prompt_version\",\n verdict: \"verdict\",\n summary: \"summary\",\n result: \"result\",\n errorCode: \"error_code\",\n createdAt: \"created_at\",\n startedAt: \"started_at\",\n finishedAt: \"finished_at\",\n});\n\nconst aiUsage = defineTable(\"ai_usage\", {\n id: \"id\",\n insightId: \"insight_id\",\n projectId: \"project_id\",\n profile: \"profile\",\n task: \"task\",\n model: \"model\",\n inputTokens: \"input_tokens\",\n outputTokens: \"output_tokens\",\n estimated: \"estimated\",\n images: \"images\",\n status: \"status\",\n createdAt: \"created_at\",\n});\n\nconst aiBudgetAlerts = defineTable(\"ai_budget_alerts\", {\n id: \"id\",\n day: \"day\",\n threshold: \"threshold\",\n createdAt: \"created_at\",\n});\n\nconst notificationChannels = defineTable(\"notification_channels\", {\n id: \"id\",\n projectId: \"project_id\",\n provider: \"provider\",\n config: \"config\",\n secretEncrypted: \"secret_encrypted\",\n events: \"events\",\n enabled: \"enabled\",\n lastError: \"last_error\",\n lastErrorAt: \"last_error_at\",\n createdAt: \"created_at\",\n updatedAt: \"updated_at\",\n});\n\nconst notificationSubscriptions = defineTable(\"notification_subscriptions\", {\n id: \"id\",\n projectId: \"project_id\",\n userId: \"user_id\",\n events: \"events\",\n via: \"via\",\n enabled: \"enabled\",\n createdAt: \"created_at\",\n});\n\nconst contentRefs = defineTable(\"content_refs\", {\n hash: \"hash\",\n refCount: \"ref_count\",\n lastSeenAt: \"last_seen_at\",\n createdAt: \"created_at\",\n});\n\n/** Stub schema bundled into the `Tables` map every fake serves. */\nexport const fakeSchema: Tables = {\n projects,\n builds,\n captureAttempts,\n captureLogs,\n captureShards,\n captureJobs,\n buildComponents,\n buildReviews,\n siteSettings,\n snapshots,\n baselines,\n comments,\n labelTypes,\n buildLabels,\n projectLinks,\n designLinks,\n designCredentials,\n userConnections,\n designNodes,\n buildPackageUsage,\n tokens,\n webhooks,\n users,\n userInviteTokens,\n projectMembers,\n projectGroupMappings,\n insights,\n aiUsage,\n aiBudgetAlerts,\n notificationChannels,\n notificationSubscriptions,\n contentRefs,\n};\n"],"mappings":"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"}
package/dist/urls.d.mts CHANGED
@@ -12,11 +12,13 @@ interface UrlBuilder {
12
12
  /** Review page of one snapshot: the build's diff page with that snapshot selected. */
13
13
  snapshot(slug: string, buildId: string, snapshotId: string): string;
14
14
  library(slug: string): string;
15
+ /** Design coverage page: stories vs design links vs drift. */
16
+ designCoverage(slug: string): string;
15
17
  jobs(slug: string): string;
16
18
  labels(slug: string): string;
17
19
  label(slug: string, key: string, value: string): string;
18
- /** Stable component page, keyed by the story file's import path. */
19
- component(slug: string, importPath: string): string;
20
+ /** Stable component page, keyed by the story file's import path; `tab` selects one of its tabs. */
21
+ component(slug: string, importPath: string, tab?: string): string;
20
22
  storybook(slug: string): string;
21
23
  storybookLabel(slug: string, key: string, value: string): string;
22
24
  storybookBuild(slug: string, buildId: string): string;
package/dist/urls.mjs CHANGED
@@ -21,10 +21,11 @@ function createUrlBuilder(baseUrl, publishedBaseDomain) {
21
21
  buildDiff: (slug, buildId) => `${root}/projects/${slug}/builds/${buildId}/diff`,
22
22
  snapshot: (slug, buildId, snapshotId) => `${root}/projects/${slug}/builds/${buildId}/diff?snapshot=${encodeURIComponent(snapshotId)}`,
23
23
  library: (slug) => `${root}/projects/${slug}/library`,
24
+ designCoverage: (slug) => `${root}/projects/${slug}/design/coverage`,
24
25
  jobs: (slug) => `${root}/projects/${slug}/jobs`,
25
26
  labels: (slug) => `${root}/projects/${slug}/labels`,
26
27
  label: (slug, key, value) => `${root}/projects/${slug}/labels/${encodeURIComponent(key)}/${encodePath(value)}`,
27
- component: (slug, importPath) => `${root}/projects/${slug}/components/${encodePath(importPath.replace(/^(?:\.\/)+/u, ""))}`,
28
+ component: (slug, importPath, tab) => `${root}/projects/${slug}/components/${encodePath(importPath.replace(/^(?:\.\/)+/u, ""))}${tab === void 0 ? "" : `?tab=${encodeURIComponent(tab)}`}`,
28
29
  storybook: (slug) => publishedBaseDomain ? `https://${slug}.${publishedBaseDomain}` : `${root}/projects/${slug}/storybook`,
29
30
  storybookLabel: (slug, key, value) => `${root}/projects/${slug}/storybook/${encodeURIComponent(key)}/${encodePath(value)}`,
30
31
  storybookBuild: (slug, buildId) => publishedBaseDomain ? `https://${buildId}.${slug}.${publishedBaseDomain}` : `${root}/projects/${slug}/storybook/build/${buildId}`,
package/dist/urls.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"urls.mjs","names":[],"sources":["../src/urls.ts"],"sourcesContent":["/** Type-safe URL builder for project pages and published Storybooks. */\nexport interface UrlBuilder {\n projectsList(): string;\n projects(): string;\n project(slug: string): string;\n projectsNew(): string;\n buildsList(slug: string): string;\n build(slug: string, buildId: string): string;\n buildDiff(slug: string, buildId: string): string;\n /** Review page of one snapshot: the build's diff page with that snapshot selected. */\n snapshot(slug: string, buildId: string, snapshotId: string): string;\n library(slug: string): string;\n jobs(slug: string): string;\n labels(slug: string): string;\n label(slug: string, key: string, value: string): string;\n /** Stable component page, keyed by the story file's import path. */\n component(slug: string, importPath: string): string;\n storybook(slug: string): string;\n storybookLabel(slug: string, key: string, value: string): string;\n storybookBuild(slug: string, buildId: string): string;\n settings(slug: string): string;\n short(id: string): string;\n}\n\n/**\n * Create a URL builder rooted at the given base URL.\n *\n * @param baseUrl - Public root URL of the shelf server.\n * @param publishedBaseDomain - Optional wildcard domain for published Storybooks.\n * @returns The URL builder.\n */\nexport function createUrlBuilder(baseUrl: string, publishedBaseDomain?: string): UrlBuilder {\n const root = baseUrl.replace(/\\/+$/u, \"\");\n\n return {\n projectsList: () => root || \"/\",\n projects: () => `${root}/projects`,\n project: (slug) => `${root}/projects/${slug}`,\n projectsNew: () => `${root}/projects/new`,\n buildsList: (slug) => `${root}/projects/${slug}/builds`,\n build: (slug, buildId) => `${root}/projects/${slug}/builds/${buildId}`,\n buildDiff: (slug, buildId) => `${root}/projects/${slug}/builds/${buildId}/diff`,\n snapshot: (slug, buildId, snapshotId) =>\n `${root}/projects/${slug}/builds/${buildId}/diff?snapshot=${encodeURIComponent(snapshotId)}`,\n library: (slug) => `${root}/projects/${slug}/library`,\n jobs: (slug) => `${root}/projects/${slug}/jobs`,\n labels: (slug) => `${root}/projects/${slug}/labels`,\n label: (slug, key, value) =>\n `${root}/projects/${slug}/labels/${encodeURIComponent(key)}/${encodePath(value)}`,\n component: (slug, importPath) =>\n `${root}/projects/${slug}/components/${encodePath(importPath.replace(/^(?:\\.\\/)+/u, \"\"))}`,\n storybook: (slug) =>\n publishedBaseDomain\n ? `https://${slug}.${publishedBaseDomain}`\n : `${root}/projects/${slug}/storybook`,\n storybookLabel: (slug, key, value) =>\n `${root}/projects/${slug}/storybook/${encodeURIComponent(key)}/${encodePath(value)}`,\n storybookBuild: (slug, buildId) =>\n publishedBaseDomain\n ? `https://${buildId}.${slug}.${publishedBaseDomain}`\n : `${root}/projects/${slug}/storybook/build/${buildId}`,\n settings: (slug) => `${root}/projects/${slug}/settings`,\n short: (id) => `${root}/_/${id}/`,\n };\n}\n\n/**\n * Embeddable image URL check for IdP-supplied avatars: `https:` and\n * app-relative paths only, so `javascript:`/`data:` payloads fall back.\n */\nexport function safeImageUrl(value: string | undefined): string | null {\n if (!value) {\n return null;\n }\n if (value.startsWith(\"/\") && !value.startsWith(\"//\")) {\n return value;\n }\n try {\n const url = new URL(value);\n return url.protocol === \"https:\" ? value : null;\n } catch {\n return null;\n }\n}\n\n/**\n * Encode a value that may hold slashes (a label value, a branch, an import path) as URL path\n * segments: each segment is escaped (`?`, `#` and `%` included), the slashes stay.\n */\nfunction encodePath(value: string): string {\n return value\n .split(\"/\")\n .map((segment) => encodeURIComponent(segment))\n .join(\"/\");\n}\n"],"mappings":";;;;;;;;;;;AA+BA,SAAgB,iBAAiB,SAAiB,qBAA0C;CAC1F,MAAM,OAAO,QAAQ,QAAQ,SAAS,EAAE;CAExC,OAAO;EACL,oBAAoB,QAAQ;EAC5B,gBAAgB,GAAG,KAAK;EACxB,UAAU,SAAS,GAAG,KAAK,YAAY;EACvC,mBAAmB,GAAG,KAAK;EAC3B,aAAa,SAAS,GAAG,KAAK,YAAY,KAAK;EAC/C,QAAQ,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,UAAU;EAC7D,YAAY,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,UAAU,QAAQ;EACzE,WAAW,MAAM,SAAS,eACxB,GAAG,KAAK,YAAY,KAAK,UAAU,QAAQ,iBAAiB,mBAAmB,UAAU;EAC3F,UAAU,SAAS,GAAG,KAAK,YAAY,KAAK;EAC5C,OAAO,SAAS,GAAG,KAAK,YAAY,KAAK;EACzC,SAAS,SAAS,GAAG,KAAK,YAAY,KAAK;EAC3C,QAAQ,MAAM,KAAK,UACjB,GAAG,KAAK,YAAY,KAAK,UAAU,mBAAmB,GAAG,EAAE,GAAG,WAAW,KAAK;EAChF,YAAY,MAAM,eAChB,GAAG,KAAK,YAAY,KAAK,cAAc,WAAW,WAAW,QAAQ,eAAe,EAAE,CAAC;EACzF,YAAY,SACV,sBACI,WAAW,KAAK,GAAG,wBACnB,GAAG,KAAK,YAAY,KAAK;EAC/B,iBAAiB,MAAM,KAAK,UAC1B,GAAG,KAAK,YAAY,KAAK,aAAa,mBAAmB,GAAG,EAAE,GAAG,WAAW,KAAK;EACnF,iBAAiB,MAAM,YACrB,sBACI,WAAW,QAAQ,GAAG,KAAK,GAAG,wBAC9B,GAAG,KAAK,YAAY,KAAK,mBAAmB;EAClD,WAAW,SAAS,GAAG,KAAK,YAAY,KAAK;EAC7C,QAAQ,OAAO,GAAG,KAAK,KAAK,GAAG;CACjC;AACF;;;;;AAMA,SAAgB,aAAa,OAA0C;CACrE,IAAI,CAAC,OACH,OAAO;CAET,IAAI,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,WAAW,IAAI,GACjD,OAAO;CAET,IAAI;EAEF,OAAO,IADS,IAAI,KACX,CAAC,CAAC,aAAa,WAAW,QAAQ;CAC7C,QAAQ;EACN,OAAO;CACT;AACF;;;;;AAMA,SAAS,WAAW,OAAuB;CACzC,OAAO,MACJ,MAAM,GAAG,CAAC,CACV,KAAK,YAAY,mBAAmB,OAAO,CAAC,CAAC,CAC7C,KAAK,GAAG;AACb"}
1
+ {"version":3,"file":"urls.mjs","names":[],"sources":["../src/urls.ts"],"sourcesContent":["/** Type-safe URL builder for project pages and published Storybooks. */\nexport interface UrlBuilder {\n projectsList(): string;\n projects(): string;\n project(slug: string): string;\n projectsNew(): string;\n buildsList(slug: string): string;\n build(slug: string, buildId: string): string;\n buildDiff(slug: string, buildId: string): string;\n /** Review page of one snapshot: the build's diff page with that snapshot selected. */\n snapshot(slug: string, buildId: string, snapshotId: string): string;\n library(slug: string): string;\n /** Design coverage page: stories vs design links vs drift. */\n designCoverage(slug: string): string;\n jobs(slug: string): string;\n labels(slug: string): string;\n label(slug: string, key: string, value: string): string;\n /** Stable component page, keyed by the story file's import path; `tab` selects one of its tabs. */\n component(slug: string, importPath: string, tab?: string): string;\n storybook(slug: string): string;\n storybookLabel(slug: string, key: string, value: string): string;\n storybookBuild(slug: string, buildId: string): string;\n settings(slug: string): string;\n short(id: string): string;\n}\n\n/**\n * Create a URL builder rooted at the given base URL.\n *\n * @param baseUrl - Public root URL of the shelf server.\n * @param publishedBaseDomain - Optional wildcard domain for published Storybooks.\n * @returns The URL builder.\n */\nexport function createUrlBuilder(baseUrl: string, publishedBaseDomain?: string): UrlBuilder {\n const root = baseUrl.replace(/\\/+$/u, \"\");\n\n return {\n projectsList: () => root || \"/\",\n projects: () => `${root}/projects`,\n project: (slug) => `${root}/projects/${slug}`,\n projectsNew: () => `${root}/projects/new`,\n buildsList: (slug) => `${root}/projects/${slug}/builds`,\n build: (slug, buildId) => `${root}/projects/${slug}/builds/${buildId}`,\n buildDiff: (slug, buildId) => `${root}/projects/${slug}/builds/${buildId}/diff`,\n snapshot: (slug, buildId, snapshotId) =>\n `${root}/projects/${slug}/builds/${buildId}/diff?snapshot=${encodeURIComponent(snapshotId)}`,\n library: (slug) => `${root}/projects/${slug}/library`,\n designCoverage: (slug) => `${root}/projects/${slug}/design/coverage`,\n jobs: (slug) => `${root}/projects/${slug}/jobs`,\n labels: (slug) => `${root}/projects/${slug}/labels`,\n label: (slug, key, value) =>\n `${root}/projects/${slug}/labels/${encodeURIComponent(key)}/${encodePath(value)}`,\n component: (slug, importPath, tab) =>\n `${root}/projects/${slug}/components/${encodePath(importPath.replace(/^(?:\\.\\/)+/u, \"\"))}${\n tab === undefined ? \"\" : `?tab=${encodeURIComponent(tab)}`\n }`,\n storybook: (slug) =>\n publishedBaseDomain\n ? `https://${slug}.${publishedBaseDomain}`\n : `${root}/projects/${slug}/storybook`,\n storybookLabel: (slug, key, value) =>\n `${root}/projects/${slug}/storybook/${encodeURIComponent(key)}/${encodePath(value)}`,\n storybookBuild: (slug, buildId) =>\n publishedBaseDomain\n ? `https://${buildId}.${slug}.${publishedBaseDomain}`\n : `${root}/projects/${slug}/storybook/build/${buildId}`,\n settings: (slug) => `${root}/projects/${slug}/settings`,\n short: (id) => `${root}/_/${id}/`,\n };\n}\n\n/**\n * Embeddable image URL check for IdP-supplied avatars: `https:` and\n * app-relative paths only, so `javascript:`/`data:` payloads fall back.\n */\nexport function safeImageUrl(value: string | undefined): string | null {\n if (!value) {\n return null;\n }\n if (value.startsWith(\"/\") && !value.startsWith(\"//\")) {\n return value;\n }\n try {\n const url = new URL(value);\n return url.protocol === \"https:\" ? value : null;\n } catch {\n return null;\n }\n}\n\n/**\n * Encode a value that may hold slashes (a label value, a branch, an import path) as URL path\n * segments: each segment is escaped (`?`, `#` and `%` included), the slashes stay.\n */\nfunction encodePath(value: string): string {\n return value\n .split(\"/\")\n .map((segment) => encodeURIComponent(segment))\n .join(\"/\");\n}\n"],"mappings":";;;;;;;;;;;AAiCA,SAAgB,iBAAiB,SAAiB,qBAA0C;CAC1F,MAAM,OAAO,QAAQ,QAAQ,SAAS,EAAE;CAExC,OAAO;EACL,oBAAoB,QAAQ;EAC5B,gBAAgB,GAAG,KAAK;EACxB,UAAU,SAAS,GAAG,KAAK,YAAY;EACvC,mBAAmB,GAAG,KAAK;EAC3B,aAAa,SAAS,GAAG,KAAK,YAAY,KAAK;EAC/C,QAAQ,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,UAAU;EAC7D,YAAY,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,UAAU,QAAQ;EACzE,WAAW,MAAM,SAAS,eACxB,GAAG,KAAK,YAAY,KAAK,UAAU,QAAQ,iBAAiB,mBAAmB,UAAU;EAC3F,UAAU,SAAS,GAAG,KAAK,YAAY,KAAK;EAC5C,iBAAiB,SAAS,GAAG,KAAK,YAAY,KAAK;EACnD,OAAO,SAAS,GAAG,KAAK,YAAY,KAAK;EACzC,SAAS,SAAS,GAAG,KAAK,YAAY,KAAK;EAC3C,QAAQ,MAAM,KAAK,UACjB,GAAG,KAAK,YAAY,KAAK,UAAU,mBAAmB,GAAG,EAAE,GAAG,WAAW,KAAK;EAChF,YAAY,MAAM,YAAY,QAC5B,GAAG,KAAK,YAAY,KAAK,cAAc,WAAW,WAAW,QAAQ,eAAe,EAAE,CAAC,IACrF,QAAQ,KAAA,IAAY,KAAK,QAAQ,mBAAmB,GAAG;EAE3D,YAAY,SACV,sBACI,WAAW,KAAK,GAAG,wBACnB,GAAG,KAAK,YAAY,KAAK;EAC/B,iBAAiB,MAAM,KAAK,UAC1B,GAAG,KAAK,YAAY,KAAK,aAAa,mBAAmB,GAAG,EAAE,GAAG,WAAW,KAAK;EACnF,iBAAiB,MAAM,YACrB,sBACI,WAAW,QAAQ,GAAG,KAAK,GAAG,wBAC9B,GAAG,KAAK,YAAY,KAAK,mBAAmB;EAClD,WAAW,SAAS,GAAG,KAAK,YAAY,KAAK;EAC7C,QAAQ,OAAO,GAAG,KAAK,KAAK,GAAG;CACjC;AACF;;;;;AAMA,SAAgB,aAAa,OAA0C;CACrE,IAAI,CAAC,OACH,OAAO;CAET,IAAI,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,WAAW,IAAI,GACjD,OAAO;CAET,IAAI;EAEF,OAAO,IADS,IAAI,KACX,CAAC,CAAC,aAAa,WAAW,QAAQ;CAC7C,QAAQ;EACN,OAAO;CACT;AACF;;;;;AAMA,SAAS,WAAW,OAAuB;CACzC,OAAO,MACJ,MAAM,GAAG,CAAC,CACV,KAAK,YAAY,mBAAmB,OAAO,CAAC,CAAC,CAC7C,KAAK,GAAG;AACb"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@storyshelf/core",
3
- "version": "0.8.0",
3
+ "version": "0.9.0-next-588f070",
4
4
  "description": "StoryShelf core: adapter interfaces, models, capture pipeline, diff, and retention (no HTTP).",
5
5
  "keywords": [
6
6
  "chromatic-alternative",
@@ -202,8 +202,8 @@
202
202
  },
203
203
  "dependencies": {
204
204
  "@opentelemetry/api": "^1.9.0",
205
- "@storyshelf/affected": "0.8.0",
206
- "@storyshelf/image": "0.8.0",
205
+ "@storyshelf/affected": "0.9.0-next-588f070",
206
+ "@storyshelf/image": "0.9.0-next-588f070",
207
207
  "axe-core": "4.13.0",
208
208
  "drizzle-orm": "^0.45.4",
209
209
  "pino": "^10.3.1",
@@ -228,14 +228,5 @@
228
228
  },
229
229
  "engines": {
230
230
  "node": ">=24"
231
- },
232
- "jsr": {
233
- "runtimeCompat": {
234
- "node": true,
235
- "deno": true,
236
- "bun": true,
237
- "workerd": false,
238
- "browser": false
239
- }
240
231
  }
241
232
  }