@knapsack/types 5.0.0--canary.6593.4738696.0 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.lintstagedrc.mjs +2 -2
- package/CHANGELOG.md +174 -0
- package/convert-types-to-json-schemas.ts +3 -1
- package/dist/acd-test-fixtures/empty.d.ts +1 -1
- package/dist/acd-test-fixtures/empty.d.ts.map +1 -1
- package/dist/acd-test-fixtures/index.js.map +1 -1
- package/dist/acd-test-fixtures/index.mjs.map +1 -1
- package/dist/api-routes.js.map +1 -1
- package/dist/api-routes.mjs.map +1 -1
- package/dist/app-client-data/blocks.d.ts +2 -1
- package/dist/app-client-data/blocks.d.ts.map +1 -1
- package/dist/app-client-data/blocks.settings.d.ts +2 -2
- package/dist/app-client-data/blocks.settings.d.ts.map +1 -1
- package/dist/app-client-data/design-tokens-types/token-data.d.ts +7 -7
- package/dist/app-client-data/design-tokens-types/token-data.d.ts.map +1 -1
- package/dist/app-client-data/design-tokens-types/token-definitions.d.ts.map +1 -1
- package/dist/app-client-data/design-tokens-types/token-src-value-info.d.ts +2 -2
- package/dist/app-client-data/design-tokens-types/token-src-value-info.d.ts.map +1 -1
- package/dist/app-client-data/design-tokens-types/token-src.d.ts +3 -3
- package/dist/app-client-data/design-tokens-types/token-src.d.ts.map +1 -1
- package/dist/app-client-data/index.d.ts +14 -6
- package/dist/app-client-data/index.d.ts.map +1 -1
- package/dist/app-client-data/page.d.ts +0 -6
- package/dist/app-client-data/page.d.ts.map +1 -1
- package/dist/app-client-data/page.header.d.ts +1 -1
- package/dist/app-client-data/page.header.d.ts.map +1 -1
- package/dist/app-client-data/patterns.d.ts +74 -0
- package/dist/app-client-data/patterns.d.ts.map +1 -1
- package/dist/app-client-data/types-to-json-schemas.d.ts.map +1 -1
- package/dist/app-client-data/validation.test.d.ts +2 -0
- package/dist/app-client-data/validation.test.d.ts.map +1 -0
- package/dist/app-client-data-migrations/4.1.7-demos.d.ts.map +1 -1
- package/dist/app-client-data-migrations/migration.types.d.ts +1 -1
- package/dist/app-client-data-migrations/migration.types.d.ts.map +1 -1
- package/dist/app-client-data-v3/index.d.ts +1 -1
- package/dist/app-client-data-v3/index.d.ts.map +1 -1
- package/dist/app-client-data-v3/page.header.d.ts +1 -1
- package/dist/app-client-data-v3/page.header.d.ts.map +1 -1
- package/dist/app-client-data-v3/types-to-json-schemas.d.ts.map +1 -1
- package/dist/app-sections.d.ts +2 -1
- package/dist/app-sections.d.ts.map +1 -1
- package/dist/app-sections.js +1 -1
- package/dist/app-sections.js.map +1 -1
- package/dist/app-sections.mjs +1 -1
- package/dist/app-sections.mjs.map +1 -1
- package/dist/changes.js.map +1 -1
- package/dist/changes.mjs.map +1 -1
- package/dist/color-config.d.ts +1 -1
- package/dist/color-config.d.ts.map +1 -1
- package/dist/color-config.js +1 -1
- package/dist/color-config.js.map +1 -1
- package/dist/color-config.mjs +1 -1
- package/dist/color-config.mjs.map +1 -1
- package/dist/e2e-session-config.d.ts +20 -0
- package/dist/e2e-session-config.d.ts.map +1 -0
- package/dist/e2e-session-config.js +2 -0
- package/dist/e2e-session-config.js.map +1 -0
- package/dist/e2e-session-config.mjs +2 -0
- package/dist/e2e-session-config.mjs.map +1 -0
- package/dist/git-providers.js.map +1 -1
- package/dist/git-providers.mjs.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/intercepts.d.ts +1 -1
- package/dist/intercepts.d.ts.map +1 -1
- package/dist/json-schema.js.map +1 -1
- package/dist/json-schema.mjs.map +1 -1
- package/dist/misc.d.ts +2 -2
- package/dist/misc.d.ts.map +1 -1
- package/dist/nav-customization-config.d.ts +3 -3
- package/dist/nav-customization-config.d.ts.map +1 -1
- package/dist/nav-customization-config.js +1 -1
- package/dist/nav-customization-config.js.map +1 -1
- package/dist/nav-customization-config.mjs +1 -1
- package/dist/nav-customization-config.mjs.map +1 -1
- package/dist/renderer-client-types.js.map +1 -1
- package/dist/renderer-client-types.mjs.map +1 -1
- package/dist/renderers.d.ts +28 -0
- package/dist/renderers.d.ts.map +1 -1
- package/dist/renderers.js +1 -1
- package/dist/renderers.js.map +1 -1
- package/dist/renderers.mjs +1 -1
- package/dist/renderers.mjs.map +1 -1
- package/dist/renderers.test.d.ts +2 -0
- package/dist/renderers.test.d.ts.map +1 -0
- package/dist/typography-config.d.ts +2 -2
- package/dist/typography-config.d.ts.map +1 -1
- package/dist/typography-config.js +1 -1
- package/dist/typography-config.js.map +1 -1
- package/dist/typography-config.mjs +1 -1
- package/dist/typography-config.mjs.map +1 -1
- package/dist/ui-config.d.ts +5 -5
- package/dist/ui-config.d.ts.map +1 -1
- package/dist/ui-config.js +1 -1
- package/dist/ui-config.js.map +1 -1
- package/dist/ui-config.mjs +1 -1
- package/dist/ui-config.mjs.map +1 -1
- package/dist/user-roles.d.ts +1 -0
- package/dist/user-roles.d.ts.map +1 -1
- package/dist/user-roles.js +1 -1
- package/dist/user-roles.js.map +1 -1
- package/dist/user-roles.mjs +1 -1
- package/dist/user-roles.mjs.map +1 -1
- package/dist/web-sockets.js.map +1 -1
- package/dist/web-sockets.mjs.map +1 -1
- package/package.json +16 -18
- package/vitest.config.mjs +1 -2
- package/.eslintrc.js +0 -6
- package/ava.config.cjs +0 -3
- package/dist/app-client-data/validation.vtest.d.ts +0 -2
- package/dist/app-client-data/validation.vtest.d.ts.map +0 -1
- package/dist/cypress-session-config.d.ts +0 -20
- package/dist/cypress-session-config.d.ts.map +0 -1
- package/dist/cypress-session-config.js +0 -2
- package/dist/cypress-session-config.js.map +0 -1
- package/dist/cypress-session-config.mjs +0 -2
- package/dist/cypress-session-config.mjs.map +0 -1
- package/dist/renderers.vitest.d.ts +0 -2
- package/dist/renderers.vitest.d.ts.map +0 -1
- package/dist/renderers.vitest.js +0 -451
- package/dist/renderers.vitest.js.map +0 -1
- package/dist/renderers.vitest.mjs +0 -451
- package/dist/renderers.vitest.mjs.map +0 -1
package/dist/ui-config.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/color-config.ts","../src/typography-config.ts","../src/nav-customization-config.ts","../src/ui-config.ts"],"names":["isColor","color","colorString","__name","ColorStringStruct","define","value","ColorConfigStruct","union","type","literal","string","FontSizeConfigValStruct","object","enums","number","FontFaceWeightStruct","FontFaceFormatsEnumStruct","FontFaceSourceStruct","FontFaceConfigStruct","optional","size","array","TypographyLinkConfigStruct","boolean","FontSizeConfigStruct","TypographyConfigStruct","NavCustomizationConfigStruct","PrimaryNavCustomizationConfigStruct","SecondaryNavCustomizationConfigStruct","UiConfigV1Struct","UiConfigV2Struct","UiConfigV3Struct","UiConfigV4Struct","defaulted","UiConfigV5Struct","UiConfigV6Struct","UiConfigV7Struct","UiConfigV8Struct","UiConfigV9Struct","UiConfigV10Struct","UiConfigStruct"],"mappings":"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","file":"ui-config.mjs","sourcesContent":["import colorString from 'color-string';\nimport { define, Describe, literal, string, type, union } from 'superstruct'; // https://docs.superstructjs.org\n\n/** Use `import { isColor } from '@knapsack/color-utils'` if you can, need to duplicate this logic due to dep cycle */\nfunction isColor(color: unknown): color is string {\n if (typeof color !== 'string') return false;\n try {\n return !!colorString.get(color);\n } catch (e) {\n return false;\n }\n}\n\nexport type ColorTokenConfig = {\n type: 'design-token';\n /** Will be **either** `-` (old) or `.` (new) separated */\n tokenName: string;\n};\nexport type ColorConfig =\n | { type: 'value'; colorValue: string }\n | ColorTokenConfig;\n\nexport const ColorStringStruct = define<string>(\n 'ColorStringStruct',\n (value) => typeof value === 'string' && isColor(value),\n);\n\nexport const ColorConfigStruct: Describe<ColorConfig> = union([\n type({\n type: literal('value'),\n colorValue: ColorStringStruct,\n }),\n type({\n type: literal('design-token'),\n tokenName: string(),\n }),\n]);\n\n// so we can check if an object is not just a ColorConfig but specifically a token\nexport const ColorTokenConfigStruct: Describe<ColorTokenConfig> = type({\n type: literal('design-token'),\n tokenName: string(),\n});\n","import {\n Describe,\n string,\n type,\n union,\n number,\n enums,\n optional,\n literal,\n array,\n size,\n boolean,\n object,\n} from 'superstruct'; // https://docs.superstructjs.org\nimport { ColorConfig, ColorConfigStruct } from './color-config';\n\nexport const HeadingLevels = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'] as const;\nexport type HeadingLevel = (typeof HeadingLevels)[number];\n\nexport type FontSizeConfigVal = {\n unit: 'px' | 'rem';\n value: number;\n};\n\nexport const FontSizeConfigValStruct: Describe<FontSizeConfigVal> = object({\n unit: enums(['rem', 'px']),\n value: number(),\n});\n\nexport type FontFaceWeight = number | string;\n\nexport const FontFaceWeightStruct: Describe<FontFaceWeight> = union([\n string(),\n number(),\n]);\n\nexport enum FontFaceSourceFormats {\n woff2 = 'woff2',\n woff = 'woff',\n}\n\nexport type FontFaceSource = {\n /**\n * Note: if /when we eventually add 'local' type support, format isn't used!\n */\n format: keyof typeof FontFaceSourceFormats;\n type: 'url';\n path: string;\n};\n\nexport const FontFaceFormatsEnumStruct = enums(['woff2', 'woff']);\n\nexport const FontFaceSourceStruct: Describe<FontFaceSource> = type({\n format: FontFaceFormatsEnumStruct,\n type: literal('url'),\n path: string(),\n});\n\nexport type FontFaceConfig = {\n /**\n * registered name of the custom font\n *\n * MDN Docs on {@link https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-family @font-face's font-family property}\n */\n family?: string;\n\n /**\n * number between 1 and 1000.\n *\n * note: since two weights are allowed (with variable fonts), this type is an\n * optional array for easy parsing down the road.\n *\n * MDN Docs on {@link https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-weight @font-face's font-weight property}.\n */\n weight?: FontFaceWeight | FontFaceWeight[];\n\n /**\n * the collection of urls / paths pointing to font files\n *\n * MDN Docs on {@link https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/src @font-face's src property}.\n */\n src?: FontFaceSource[];\n\n /**\n * the style of the custom font (ex. normal or italic)\n *\n * {@link https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-style See MDN docs on font-style}.\n */\n style?: string;\n\n // @todo: implement these later\n // display?: 'auto' | 'block' | 'swap' | 'fallback' | 'optional';\n // variationSettings?: string;\n // unicodeRange?: string; // or ideally, URange; //\n // see https://drafts.csswg.org/css-syntax-3/#urange-syntax and\n // https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/unicode-range\n};\n\nexport const FontFaceConfigStruct: Describe<FontFaceConfig> = type({\n family: optional(string()),\n weight: optional(\n union([FontFaceWeightStruct, size(array(FontFaceWeightStruct), 2)]),\n ),\n src: optional(array(FontFaceSourceStruct)),\n style: optional(string()),\n display: optional(enums(['auto', 'block', 'swap', 'fallback', 'optional'])),\n variationSettings: optional(string()),\n unicodeRange: optional(string()),\n});\n\nexport type FontSizeConfig = {\n min: FontSizeConfigVal;\n max?: FontSizeConfigVal;\n};\n\nexport enum TextTransforms {\n inherit = 'As typed',\n capitalize = 'Capitalize',\n lowercase = 'Lowercase',\n uppercase = 'Uppercase',\n}\n\nexport enum FontStretches {\n 'ultra-condensed' = 'Ultra-condensed',\n 'extra-condensed' = 'Extra-condensed',\n condensed = 'Condensed',\n 'semi-condensed' = 'Semi-condensed',\n normal = 'Normal',\n 'semi-expanded' = 'Semi-expanded',\n expanded = 'Expanded',\n 'extra-expanded' = 'Extra-expanded',\n 'ultra-expanded' = 'Ultra-expanded',\n}\n\nexport type TypographyConfig = {\n /**\n * min / max height used to future-proof way of supporting responsive typography\n */\n fontSize?: FontSizeConfig;\n\n /**\n * reminder: line-heights can also be unitless!\n */\n lineHeight?: string | number;\n fontWeight?: FontFaceWeight;\n\n /**\n * note: letter-spacing can't be unitless, unit required!\n */\n letterSpacing?: string;\n\n /**\n * if not specified, Knapsack default font, otherwise should allow for a stack of font strings + fallbacks (including the names of custom registered fonts)\n */\n fontFamily?: string;\n\n textColor?: ColorConfig;\n\n textTransform?: keyof typeof TextTransforms;\n\n fontStretch?: keyof typeof FontStretches;\n};\n\nexport interface TypographyLinkConfig {\n fontWeight?: FontFaceWeight;\n textColor?: ColorConfig;\n hoverColor?: ColorConfig;\n underline?: boolean;\n textTransform?: keyof typeof TextTransforms;\n fontStretch?: keyof typeof FontStretches;\n}\n\nexport const TypographyLinkConfigStruct: Describe<TypographyLinkConfig> = type({\n fontWeight: optional(union([string(), number()])),\n textColor: optional(ColorConfigStruct),\n hoverColor: optional(ColorConfigStruct),\n underline: optional(boolean()),\n textTransform: optional(\n enums(['inherit', 'capitalize', 'lowercase', 'uppercase']),\n ),\n fontStretch: optional(\n enums([\n 'ultra-condensed',\n 'extra-condensed',\n 'condensed',\n 'semi-condensed',\n 'normal',\n 'semi-expanded',\n 'expanded',\n 'extra-expanded',\n 'ultra-expanded',\n ]),\n ),\n});\n\nexport const FontSizeConfigStruct: Describe<FontSizeConfig> = type({\n min: FontSizeConfigValStruct,\n max: optional(FontSizeConfigValStruct),\n});\n\nexport const TypographyConfigStruct: Describe<TypographyConfig> = type({\n fontSize: optional(FontSizeConfigStruct),\n lineHeight: optional(union([string(), number()])),\n fontWeight: optional(union([string(), number()])),\n letterSpacing: optional(string()),\n fontFamily: optional(string()),\n textColor: optional(ColorConfigStruct),\n textTransform: optional(\n enums(['inherit', 'capitalize', 'lowercase', 'uppercase']),\n ),\n fontStretch: optional(\n enums([\n 'ultra-condensed',\n 'extra-condensed',\n 'condensed',\n 'semi-condensed',\n 'normal',\n 'semi-expanded',\n 'expanded',\n 'extra-expanded',\n 'ultra-expanded',\n ]),\n ),\n});\n\nconst pageElementConfig: TypographyConfig = {};\nconst pageLinkElementConfig: TypographyLinkConfig = {};\n\nexport const pageElements = {\n pageTitle: pageElementConfig,\n pageDescription: pageElementConfig,\n headingLarge: pageElementConfig,\n headingMedium: pageElementConfig,\n headingSmall: pageElementConfig,\n bodyText: pageElementConfig,\n link: pageLinkElementConfig,\n} as const;\n\nexport const pageElementsV2 = {\n pageTitle: pageElementConfig,\n pageDescription: pageElementConfig,\n headingXLarge: pageElementConfig,\n headingLarge: pageElementConfig,\n headingMedium: pageElementConfig,\n headingSmall: pageElementConfig,\n headingXSmall: pageElementConfig,\n bodyText: pageElementConfig,\n link: pageLinkElementConfig,\n} as const;\n\nexport type PageElementNames = keyof typeof pageElementsV2;\nexport type PageElementConfig = (typeof pageElementsV2)[PageElementNames];\n","import { Describe, type, union, optional } from 'superstruct'; // https://docs.superstructjs.org\nimport { ColorConfig, ColorConfigStruct } from './color-config';\nimport { TypographyConfig, TypographyConfigStruct } from './typography-config';\n\nexport interface NavCustomizationConfig extends TypographyConfig {\n accentColor?: ColorConfig;\n}\n\nexport interface PrimaryNavCustomizationConfig extends NavCustomizationConfig {\n hoverColor?: ColorConfig;\n backgroundColor?: ColorConfig;\n}\n\nexport type SecondaryNavCustomizationConfig = Omit<\n PrimaryNavCustomizationConfig,\n 'hoverColor'\n>;\n\nexport const NavCustomizationConfigStruct: Describe<NavCustomizationConfig> =\n union([\n TypographyConfigStruct,\n type({\n accentColor: optional(ColorConfigStruct),\n }),\n ]);\n\n// hoverColor: optional(ColorConfigStruct),\nexport const PrimaryNavCustomizationConfigStruct: Describe<PrimaryNavCustomizationConfig> =\n union([\n NavCustomizationConfigStruct,\n type({\n hoverColor: optional(ColorConfigStruct),\n backgroundColor: optional(ColorConfigStruct),\n }),\n ]);\n\nexport const SecondaryNavCustomizationConfigStruct: Describe<SecondaryNavCustomizationConfig> =\n union([\n NavCustomizationConfigStruct,\n type({\n backgroundColor: optional(ColorConfigStruct),\n }),\n ]);\n\nconst navCustomizationConfig: NavCustomizationConfig = {};\nconst secondaryNavCustomizationConfig: SecondaryNavCustomizationConfig = {};\nconst primaryNavCustomizationConfig: PrimaryNavCustomizationConfig = {};\n\nexport const customizableNavElements = {\n primaryNav: primaryNavCustomizationConfig,\n secondaryNav: secondaryNavCustomizationConfig,\n tabs: navCustomizationConfig,\n} as const;\n\nexport type CustomizableNavElementNames = keyof typeof customizableNavElements;\nexport type CustomizableNavElementConfig =\n (typeof customizableNavElements)[CustomizableNavElementNames];\n","import {\n type,\n Describe,\n literal,\n optional,\n defaulted,\n boolean,\n array,\n object,\n} from 'superstruct';\n\nimport { ExpandRecursively } from '@knapsack/utils';\n\nimport {\n ColorConfig,\n ColorConfigStruct,\n ColorStringStruct,\n} from './color-config';\n\nimport {\n FontFaceConfigStruct,\n FontFaceConfig,\n TypographyConfigStruct,\n TypographyLinkConfigStruct,\n pageElements,\n pageElementsV2,\n} from './typography-config';\n\nimport {\n customizableNavElements,\n NavCustomizationConfigStruct,\n PrimaryNavCustomizationConfigStruct,\n SecondaryNavCustomizationConfigStruct,\n} from './nav-customization-config';\n\nexport type UiConfigV1 = {\n version: 1;\n oldSillySidebarBgColor: string;\n};\n\nexport const UiConfigV1Struct: Describe<UiConfigV1> = object({\n version: literal(1),\n oldSillySidebarBgColor: ColorStringStruct,\n});\n\nexport type UiConfigV2 = {\n version: 2;\n anotherSillySidebarBgColor: string;\n};\n\nexport const UiConfigV2Struct: Describe<UiConfigV2> = object({\n version: literal(2),\n anotherSillySidebarBgColor: ColorStringStruct,\n});\n\nexport type UiConfigV3 = {\n version: 3;\n sidebarBgColor: string;\n};\n\nexport const UiConfigV3Struct: Describe<UiConfigV3> = object({\n version: literal(3),\n sidebarBgColor: ColorStringStruct,\n});\n\nexport type UiConfigV4 = {\n version: 4;\n primaryColor: ColorConfig;\n darkColor: ColorConfig;\n lightColor: ColorConfig;\n enableSidebarIcons?: boolean;\n};\nexport const UiConfigV4Struct: Describe<UiConfigV4> = object({\n version: literal(4),\n primaryColor: ColorConfigStruct,\n darkColor: ColorConfigStruct,\n lightColor: ColorConfigStruct,\n enableSidebarIcons: optional(defaulted(boolean(), true)),\n});\n\nexport type UiConfigV5 = {\n version: 5;\n primaryColor: ColorConfig;\n darkColor: ColorConfig;\n lightColor: ColorConfig;\n linkColor: ColorConfig;\n enableSidebarIcons: boolean;\n};\nexport const UiConfigV5Struct: Describe<UiConfigV5> = object({\n version: literal(5),\n primaryColor: ColorConfigStruct,\n darkColor: ColorConfigStruct,\n lightColor: ColorConfigStruct,\n linkColor: ColorConfigStruct,\n enableSidebarIcons: optional(defaulted(boolean(), true)),\n});\n\nexport interface _UiConfigV6 extends Omit<UiConfigV5, 'version'> {\n version: 6;\n appearance: {\n customFonts?: FontFaceConfig[];\n pageElements: typeof pageElements;\n };\n}\n\n// ExpandRecursively needed to avoid \"Type 'UiConfigV6' is not assignable to type 'Record<string, unknown>'.\" error\nexport type UiConfigV6 = ExpandRecursively<_UiConfigV6>;\n\nexport const UiConfigV6Struct: Describe<UiConfigV6> = object({\n version: literal(6),\n primaryColor: ColorConfigStruct,\n darkColor: ColorConfigStruct,\n lightColor: ColorConfigStruct,\n linkColor: ColorConfigStruct,\n enableSidebarIcons: optional(defaulted(boolean(), true)),\n\n appearance: type({\n customFonts: optional(array(FontFaceConfigStruct)),\n pageElements: type({\n pageTitle: optional(TypographyConfigStruct),\n pageDescription: optional(TypographyConfigStruct),\n headingLarge: optional(TypographyConfigStruct),\n headingMedium: optional(TypographyConfigStruct),\n headingSmall: optional(TypographyConfigStruct),\n bodyText: optional(TypographyConfigStruct),\n link: optional(TypographyLinkConfigStruct),\n }),\n }),\n});\n\nexport interface _UiConfigV7 extends Omit<UiConfigV6, 'version'> {\n version: 7;\n appearance: {\n navigation?: typeof customizableNavElements;\n customFonts?: UiConfigV6['appearance']['customFonts'];\n pageElements: UiConfigV6['appearance']['pageElements'];\n };\n}\n\n// ExpandRecursively needed to avoid \"Type 'UiConfig7' is not assignable to type 'Record<string, unknown>'.\" error in ui-config.xstate.ts\nexport type UiConfigV7 = ExpandRecursively<_UiConfigV7>;\n\nexport const UiConfigV7Struct: Describe<UiConfigV7> = object({\n version: literal(7),\n primaryColor: ColorConfigStruct,\n darkColor: ColorConfigStruct,\n lightColor: ColorConfigStruct,\n linkColor: ColorConfigStruct,\n enableSidebarIcons: optional(defaulted(boolean(), true)),\n\n appearance: type({\n customFonts: optional(array(FontFaceConfigStruct)),\n navigation: optional(\n type({\n primaryNav: optional(PrimaryNavCustomizationConfigStruct),\n secondaryNav: optional(SecondaryNavCustomizationConfigStruct),\n tabs: optional(NavCustomizationConfigStruct),\n }),\n ),\n pageElements: type({\n pageTitle: optional(TypographyConfigStruct),\n pageDescription: optional(TypographyConfigStruct),\n headingLarge: optional(TypographyConfigStruct),\n headingMedium: optional(TypographyConfigStruct),\n headingSmall: optional(TypographyConfigStruct),\n bodyText: optional(TypographyConfigStruct),\n link: optional(TypographyLinkConfigStruct),\n }),\n }),\n});\n\nexport interface _UiConfigV8\n extends Omit<UiConfigV7, 'version' | 'enableSidebarIcons'> {\n version: 8;\n}\n\n// ExpandRecursively needed to avoid \"Type 'UiConfig8' is not assignable to type 'Record<string, unknown>'.\" error in ui-config.xstate.ts\n// TODO: move this to @knapsack/types\nexport type UiConfigV8 = ExpandRecursively<_UiConfigV8>;\n\nexport const UiConfigV8Struct: Describe<UiConfigV8> = object({\n version: literal(8),\n primaryColor: ColorConfigStruct,\n darkColor: ColorConfigStruct,\n lightColor: ColorConfigStruct,\n linkColor: ColorConfigStruct,\n\n appearance: type({\n customFonts: optional(array(FontFaceConfigStruct)),\n navigation: optional(\n type({\n primaryNav: optional(PrimaryNavCustomizationConfigStruct),\n secondaryNav: optional(SecondaryNavCustomizationConfigStruct),\n tabs: optional(NavCustomizationConfigStruct),\n }),\n ),\n pageElements: type({\n pageTitle: optional(TypographyConfigStruct),\n pageDescription: optional(TypographyConfigStruct),\n headingLarge: optional(TypographyConfigStruct),\n headingMedium: optional(TypographyConfigStruct),\n headingSmall: optional(TypographyConfigStruct),\n bodyText: optional(TypographyConfigStruct),\n link: optional(TypographyLinkConfigStruct),\n }),\n }),\n});\n\nexport interface _UiConfigV9\n extends Omit<\n UiConfigV8,\n 'version' | 'primaryColor' | 'darkColor' | 'lightColor' | 'linkColor'\n > {\n version: 9;\n}\nexport type UiConfigV9 = ExpandRecursively<_UiConfigV9>;\n\nexport const UiConfigV9Struct: Describe<UiConfigV9> = object({\n version: literal(9),\n\n appearance: type({\n customFonts: optional(array(FontFaceConfigStruct)),\n navigation: optional(\n type({\n primaryNav: optional(PrimaryNavCustomizationConfigStruct),\n secondaryNav: optional(SecondaryNavCustomizationConfigStruct),\n tabs: optional(NavCustomizationConfigStruct),\n }),\n ),\n pageElements: type({\n pageTitle: optional(TypographyConfigStruct),\n pageDescription: optional(TypographyConfigStruct),\n headingLarge: optional(TypographyConfigStruct),\n headingMedium: optional(TypographyConfigStruct),\n headingSmall: optional(TypographyConfigStruct),\n bodyText: optional(TypographyConfigStruct),\n link: optional(TypographyLinkConfigStruct),\n }),\n }),\n});\n\nexport interface _UiConfigV10 extends Omit<UiConfigV9, 'version'> {\n version: 10;\n appearance: {\n navigation?: UiConfigV9['appearance']['navigation'];\n customFonts?: UiConfigV9['appearance']['customFonts'];\n pageElements: typeof pageElementsV2;\n };\n}\nexport type UiConfigV10 = ExpandRecursively<_UiConfigV10>;\n\nexport const UiConfigV10Struct: Describe<UiConfigV10> = object({\n version: literal(10),\n\n appearance: type({\n customFonts: optional(array(FontFaceConfigStruct)),\n navigation: optional(\n type({\n primaryNav: optional(PrimaryNavCustomizationConfigStruct),\n secondaryNav: optional(SecondaryNavCustomizationConfigStruct),\n tabs: optional(NavCustomizationConfigStruct),\n }),\n ),\n pageElements: type({\n pageTitle: optional(TypographyConfigStruct),\n pageDescription: optional(TypographyConfigStruct),\n headingXLarge: optional(TypographyConfigStruct),\n headingLarge: optional(TypographyConfigStruct),\n headingMedium: optional(TypographyConfigStruct),\n headingSmall: optional(TypographyConfigStruct),\n headingXSmall: optional(TypographyConfigStruct),\n bodyText: optional(TypographyConfigStruct),\n link: optional(TypographyLinkConfigStruct),\n }),\n }),\n});\n\nexport type UiConfigVersions =\n | typeof UiConfigV1Struct.TYPE\n | typeof UiConfigV2Struct.TYPE\n | typeof UiConfigV3Struct.TYPE\n | typeof UiConfigV4Struct.TYPE\n | typeof UiConfigV5Struct.TYPE\n | typeof UiConfigV6Struct.TYPE\n | typeof UiConfigV7Struct.TYPE\n | typeof UiConfigV8Struct.TYPE\n | typeof UiConfigV9Struct.TYPE\n | typeof UiConfigV10Struct.TYPE;\n\n// ALIASES FOR LATEST VERSIONS\nexport type UiConfig = UiConfigV10;\nexport const UiConfigStruct: typeof UiConfigV10Struct = UiConfigV10Struct;\n\nexport type NavElementNames = keyof UiConfig['appearance']['navigation'];\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/color-config.ts","../src/typography-config.ts","../src/nav-customization-config.ts","../src/ui-config.ts"],"names":["isColor","color","colorString","__name","ColorStringStruct","define","value","ColorConfigStruct","union","type","literal","string","FontSizeConfigValStruct","object","enums","number","FontFaceWeightStruct","FontFaceFormatsEnumStruct","FontFaceSourceStruct","FontFaceConfigStruct","optional","size","array","TypographyLinkConfigStruct","boolean","FontSizeConfigStruct","TypographyConfigStruct","NavCustomizationConfigStruct","PrimaryNavCustomizationConfigStruct","SecondaryNavCustomizationConfigStruct","UiConfigV1Struct","UiConfigV2Struct","UiConfigV3Struct","UiConfigV4Struct","defaulted","UiConfigV5Struct","UiConfigV6Struct","UiConfigV7Struct","UiConfigV8Struct","UiConfigV9Struct","UiConfigV10Struct","UiConfigStruct"],"mappings":"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","file":"ui-config.mjs","sourcesContent":["import colorString from 'color-string';\nimport {\n define,\n type Describe,\n literal,\n string,\n type,\n union,\n} from 'superstruct'; // https://docs.superstructjs.org\n\n/** Use `import { isColor } from '@knapsack/color-utils'` if you can, need to duplicate this logic due to dep cycle */\nfunction isColor(color: unknown): color is string {\n if (typeof color !== 'string') return false;\n try {\n return !!colorString.get(color);\n } catch (e) {\n return false;\n }\n}\n\nexport type ColorTokenConfig = {\n type: 'design-token';\n /** Will be **either** `-` (old) or `.` (new) separated */\n tokenName: string;\n};\nexport type ColorConfig =\n | { type: 'value'; colorValue: string }\n | ColorTokenConfig;\n\nexport const ColorStringStruct = define<string>(\n 'ColorStringStruct',\n (value) => typeof value === 'string' && isColor(value),\n);\n\nexport const ColorConfigStruct: Describe<ColorConfig> = union([\n type({\n type: literal('value'),\n colorValue: ColorStringStruct,\n }),\n type({\n type: literal('design-token'),\n tokenName: string(),\n }),\n]);\n\n// so we can check if an object is not just a ColorConfig but specifically a token\nexport const ColorTokenConfigStruct: Describe<ColorTokenConfig> = type({\n type: literal('design-token'),\n tokenName: string(),\n});\n","import {\n type Describe,\n string,\n type,\n union,\n number,\n enums,\n optional,\n literal,\n array,\n size,\n boolean,\n object,\n} from 'superstruct'; // https://docs.superstructjs.org\nimport { type ColorConfig, ColorConfigStruct } from './color-config';\n\nexport const HeadingLevels = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'] as const;\nexport type HeadingLevel = (typeof HeadingLevels)[number];\n\nexport type FontSizeConfigVal = {\n unit: 'px' | 'rem';\n value: number;\n};\n\nexport const FontSizeConfigValStruct: Describe<FontSizeConfigVal> = object({\n unit: enums(['rem', 'px']),\n value: number(),\n});\n\nexport type FontFaceWeight = number | string;\n\nexport const FontFaceWeightStruct: Describe<FontFaceWeight> = union([\n string(),\n number(),\n]);\n\nexport enum FontFaceSourceFormats {\n woff2 = 'woff2',\n woff = 'woff',\n}\n\nexport type FontFaceSource = {\n /**\n * Note: if /when we eventually add 'local' type support, format isn't used!\n */\n format: keyof typeof FontFaceSourceFormats;\n type: 'url';\n path: string;\n};\n\nexport const FontFaceFormatsEnumStruct = enums(['woff2', 'woff']);\n\nexport const FontFaceSourceStruct: Describe<FontFaceSource> = type({\n format: FontFaceFormatsEnumStruct,\n type: literal('url'),\n path: string(),\n});\n\nexport type FontFaceConfig = {\n /**\n * registered name of the custom font\n *\n * MDN Docs on {@link https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-family @font-face's font-family property}\n */\n family?: string;\n\n /**\n * number between 1 and 1000.\n *\n * note: since two weights are allowed (with variable fonts), this type is an\n * optional array for easy parsing down the road.\n *\n * MDN Docs on {@link https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-weight @font-face's font-weight property}.\n */\n weight?: FontFaceWeight | FontFaceWeight[];\n\n /**\n * the collection of urls / paths pointing to font files\n *\n * MDN Docs on {@link https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/src @font-face's src property}.\n */\n src?: FontFaceSource[];\n\n /**\n * the style of the custom font (ex. normal or italic)\n *\n * {@link https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-style See MDN docs on font-style}.\n */\n style?: string;\n\n // @todo: implement these later\n // display?: 'auto' | 'block' | 'swap' | 'fallback' | 'optional';\n // variationSettings?: string;\n // unicodeRange?: string; // or ideally, URange; //\n // see https://drafts.csswg.org/css-syntax-3/#urange-syntax and\n // https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/unicode-range\n};\n\nexport const FontFaceConfigStruct: Describe<FontFaceConfig> = type({\n family: optional(string()),\n weight: optional(\n union([FontFaceWeightStruct, size(array(FontFaceWeightStruct), 2)]),\n ),\n src: optional(array(FontFaceSourceStruct)),\n style: optional(string()),\n display: optional(enums(['auto', 'block', 'swap', 'fallback', 'optional'])),\n variationSettings: optional(string()),\n unicodeRange: optional(string()),\n});\n\nexport type FontSizeConfig = {\n min: FontSizeConfigVal;\n max?: FontSizeConfigVal;\n};\n\nexport enum TextTransforms {\n inherit = 'As typed',\n capitalize = 'Capitalize',\n lowercase = 'Lowercase',\n uppercase = 'Uppercase',\n}\n\nexport enum FontStretches {\n 'ultra-condensed' = 'Ultra-condensed',\n 'extra-condensed' = 'Extra-condensed',\n condensed = 'Condensed',\n 'semi-condensed' = 'Semi-condensed',\n normal = 'Normal',\n 'semi-expanded' = 'Semi-expanded',\n expanded = 'Expanded',\n 'extra-expanded' = 'Extra-expanded',\n 'ultra-expanded' = 'Ultra-expanded',\n}\n\nexport type TypographyConfig = {\n /**\n * min / max height used to future-proof way of supporting responsive typography\n */\n fontSize?: FontSizeConfig;\n\n /**\n * reminder: line-heights can also be unitless!\n */\n lineHeight?: string | number;\n fontWeight?: FontFaceWeight;\n\n /**\n * note: letter-spacing can't be unitless, unit required!\n */\n letterSpacing?: string;\n\n /**\n * if not specified, Knapsack default font, otherwise should allow for a stack of font strings + fallbacks (including the names of custom registered fonts)\n */\n fontFamily?: string;\n\n textColor?: ColorConfig;\n\n textTransform?: keyof typeof TextTransforms;\n\n fontStretch?: keyof typeof FontStretches;\n};\n\nexport interface TypographyLinkConfig {\n fontWeight?: FontFaceWeight;\n textColor?: ColorConfig;\n hoverColor?: ColorConfig;\n underline?: boolean;\n textTransform?: keyof typeof TextTransforms;\n fontStretch?: keyof typeof FontStretches;\n}\n\nexport const TypographyLinkConfigStruct: Describe<TypographyLinkConfig> = type({\n fontWeight: optional(union([string(), number()])),\n textColor: optional(ColorConfigStruct),\n hoverColor: optional(ColorConfigStruct),\n underline: optional(boolean()),\n textTransform: optional(\n enums(['inherit', 'capitalize', 'lowercase', 'uppercase']),\n ),\n fontStretch: optional(\n enums([\n 'ultra-condensed',\n 'extra-condensed',\n 'condensed',\n 'semi-condensed',\n 'normal',\n 'semi-expanded',\n 'expanded',\n 'extra-expanded',\n 'ultra-expanded',\n ]),\n ),\n});\n\nexport const FontSizeConfigStruct: Describe<FontSizeConfig> = type({\n min: FontSizeConfigValStruct,\n max: optional(FontSizeConfigValStruct),\n});\n\nexport const TypographyConfigStruct: Describe<TypographyConfig> = type({\n fontSize: optional(FontSizeConfigStruct),\n lineHeight: optional(union([string(), number()])),\n fontWeight: optional(union([string(), number()])),\n letterSpacing: optional(string()),\n fontFamily: optional(string()),\n textColor: optional(ColorConfigStruct),\n textTransform: optional(\n enums(['inherit', 'capitalize', 'lowercase', 'uppercase']),\n ),\n fontStretch: optional(\n enums([\n 'ultra-condensed',\n 'extra-condensed',\n 'condensed',\n 'semi-condensed',\n 'normal',\n 'semi-expanded',\n 'expanded',\n 'extra-expanded',\n 'ultra-expanded',\n ]),\n ),\n});\n\nconst pageElementConfig: TypographyConfig = {};\nconst pageLinkElementConfig: TypographyLinkConfig = {};\n\nexport const pageElements = {\n pageTitle: pageElementConfig,\n pageDescription: pageElementConfig,\n headingLarge: pageElementConfig,\n headingMedium: pageElementConfig,\n headingSmall: pageElementConfig,\n bodyText: pageElementConfig,\n link: pageLinkElementConfig,\n} as const;\n\nexport const pageElementsV2 = {\n pageTitle: pageElementConfig,\n pageDescription: pageElementConfig,\n headingXLarge: pageElementConfig,\n headingLarge: pageElementConfig,\n headingMedium: pageElementConfig,\n headingSmall: pageElementConfig,\n headingXSmall: pageElementConfig,\n bodyText: pageElementConfig,\n link: pageLinkElementConfig,\n} as const;\n\nexport type PageElementNames = keyof typeof pageElementsV2;\nexport type PageElementConfig = (typeof pageElementsV2)[PageElementNames];\n","import { type Describe, type, union, optional } from 'superstruct'; // https://docs.superstructjs.org\nimport { type ColorConfig, ColorConfigStruct } from './color-config';\nimport {\n type TypographyConfig,\n TypographyConfigStruct,\n} from './typography-config';\n\nexport interface NavCustomizationConfig extends TypographyConfig {\n accentColor?: ColorConfig;\n}\n\nexport interface PrimaryNavCustomizationConfig extends NavCustomizationConfig {\n hoverColor?: ColorConfig;\n backgroundColor?: ColorConfig;\n}\n\nexport type SecondaryNavCustomizationConfig = Omit<\n PrimaryNavCustomizationConfig,\n 'hoverColor'\n>;\n\nexport const NavCustomizationConfigStruct: Describe<NavCustomizationConfig> =\n union([\n TypographyConfigStruct,\n type({\n accentColor: optional(ColorConfigStruct),\n }),\n ]);\n\n// hoverColor: optional(ColorConfigStruct),\nexport const PrimaryNavCustomizationConfigStruct: Describe<PrimaryNavCustomizationConfig> =\n union([\n NavCustomizationConfigStruct,\n type({\n hoverColor: optional(ColorConfigStruct),\n backgroundColor: optional(ColorConfigStruct),\n }),\n ]);\n\nexport const SecondaryNavCustomizationConfigStruct: Describe<SecondaryNavCustomizationConfig> =\n union([\n NavCustomizationConfigStruct,\n type({\n backgroundColor: optional(ColorConfigStruct),\n }),\n ]);\n\nconst navCustomizationConfig: NavCustomizationConfig = {};\nconst secondaryNavCustomizationConfig: SecondaryNavCustomizationConfig = {};\nconst primaryNavCustomizationConfig: PrimaryNavCustomizationConfig = {};\n\nexport const customizableNavElements = {\n primaryNav: primaryNavCustomizationConfig,\n secondaryNav: secondaryNavCustomizationConfig,\n tabs: navCustomizationConfig,\n} as const;\n\nexport type CustomizableNavElementNames = keyof typeof customizableNavElements;\nexport type CustomizableNavElementConfig =\n (typeof customizableNavElements)[CustomizableNavElementNames];\n","import {\n type,\n type Describe,\n literal,\n optional,\n defaulted,\n boolean,\n array,\n object,\n} from 'superstruct';\n\nimport { type ExpandRecursively } from '@knapsack/utils';\n\nimport {\n type ColorConfig,\n ColorConfigStruct,\n ColorStringStruct,\n} from './color-config';\n\nimport {\n FontFaceConfigStruct,\n type FontFaceConfig,\n TypographyConfigStruct,\n TypographyLinkConfigStruct,\n type pageElements,\n type pageElementsV2,\n} from './typography-config';\n\nimport {\n type customizableNavElements,\n NavCustomizationConfigStruct,\n PrimaryNavCustomizationConfigStruct,\n SecondaryNavCustomizationConfigStruct,\n} from './nav-customization-config';\n\nexport type UiConfigV1 = {\n version: 1;\n oldSillySidebarBgColor: string;\n};\n\nexport const UiConfigV1Struct: Describe<UiConfigV1> = object({\n version: literal(1),\n oldSillySidebarBgColor: ColorStringStruct,\n});\n\nexport type UiConfigV2 = {\n version: 2;\n anotherSillySidebarBgColor: string;\n};\n\nexport const UiConfigV2Struct: Describe<UiConfigV2> = object({\n version: literal(2),\n anotherSillySidebarBgColor: ColorStringStruct,\n});\n\nexport type UiConfigV3 = {\n version: 3;\n sidebarBgColor: string;\n};\n\nexport const UiConfigV3Struct: Describe<UiConfigV3> = object({\n version: literal(3),\n sidebarBgColor: ColorStringStruct,\n});\n\nexport type UiConfigV4 = {\n version: 4;\n primaryColor: ColorConfig;\n darkColor: ColorConfig;\n lightColor: ColorConfig;\n enableSidebarIcons?: boolean;\n};\nexport const UiConfigV4Struct: Describe<UiConfigV4> = object({\n version: literal(4),\n primaryColor: ColorConfigStruct,\n darkColor: ColorConfigStruct,\n lightColor: ColorConfigStruct,\n enableSidebarIcons: optional(defaulted(boolean(), true)),\n});\n\nexport type UiConfigV5 = {\n version: 5;\n primaryColor: ColorConfig;\n darkColor: ColorConfig;\n lightColor: ColorConfig;\n linkColor: ColorConfig;\n enableSidebarIcons: boolean;\n};\nexport const UiConfigV5Struct: Describe<UiConfigV5> = object({\n version: literal(5),\n primaryColor: ColorConfigStruct,\n darkColor: ColorConfigStruct,\n lightColor: ColorConfigStruct,\n linkColor: ColorConfigStruct,\n enableSidebarIcons: optional(defaulted(boolean(), true)),\n});\n\nexport interface _UiConfigV6 extends Omit<UiConfigV5, 'version'> {\n version: 6;\n appearance: {\n customFonts?: FontFaceConfig[];\n pageElements: typeof pageElements;\n };\n}\n\n// ExpandRecursively needed to avoid \"Type 'UiConfigV6' is not assignable to type 'Record<string, unknown>'.\" error\nexport type UiConfigV6 = ExpandRecursively<_UiConfigV6>;\n\nexport const UiConfigV6Struct: Describe<UiConfigV6> = object({\n version: literal(6),\n primaryColor: ColorConfigStruct,\n darkColor: ColorConfigStruct,\n lightColor: ColorConfigStruct,\n linkColor: ColorConfigStruct,\n enableSidebarIcons: optional(defaulted(boolean(), true)),\n\n appearance: type({\n customFonts: optional(array(FontFaceConfigStruct)),\n pageElements: type({\n pageTitle: optional(TypographyConfigStruct),\n pageDescription: optional(TypographyConfigStruct),\n headingLarge: optional(TypographyConfigStruct),\n headingMedium: optional(TypographyConfigStruct),\n headingSmall: optional(TypographyConfigStruct),\n bodyText: optional(TypographyConfigStruct),\n link: optional(TypographyLinkConfigStruct),\n }),\n }),\n});\n\nexport interface _UiConfigV7 extends Omit<UiConfigV6, 'version'> {\n version: 7;\n appearance: {\n navigation?: typeof customizableNavElements;\n customFonts?: UiConfigV6['appearance']['customFonts'];\n pageElements: UiConfigV6['appearance']['pageElements'];\n };\n}\n\n// ExpandRecursively needed to avoid \"Type 'UiConfig7' is not assignable to type 'Record<string, unknown>'.\" error in ui-config.xstate.ts\nexport type UiConfigV7 = ExpandRecursively<_UiConfigV7>;\n\nexport const UiConfigV7Struct: Describe<UiConfigV7> = object({\n version: literal(7),\n primaryColor: ColorConfigStruct,\n darkColor: ColorConfigStruct,\n lightColor: ColorConfigStruct,\n linkColor: ColorConfigStruct,\n enableSidebarIcons: optional(defaulted(boolean(), true)),\n\n appearance: type({\n customFonts: optional(array(FontFaceConfigStruct)),\n navigation: optional(\n type({\n primaryNav: optional(PrimaryNavCustomizationConfigStruct),\n secondaryNav: optional(SecondaryNavCustomizationConfigStruct),\n tabs: optional(NavCustomizationConfigStruct),\n }),\n ),\n pageElements: type({\n pageTitle: optional(TypographyConfigStruct),\n pageDescription: optional(TypographyConfigStruct),\n headingLarge: optional(TypographyConfigStruct),\n headingMedium: optional(TypographyConfigStruct),\n headingSmall: optional(TypographyConfigStruct),\n bodyText: optional(TypographyConfigStruct),\n link: optional(TypographyLinkConfigStruct),\n }),\n }),\n});\n\nexport interface _UiConfigV8 extends Omit<\n UiConfigV7,\n 'version' | 'enableSidebarIcons'\n> {\n version: 8;\n}\n\n// ExpandRecursively needed to avoid \"Type 'UiConfig8' is not assignable to type 'Record<string, unknown>'.\" error in ui-config.xstate.ts\n// TODO: move this to @knapsack/types\nexport type UiConfigV8 = ExpandRecursively<_UiConfigV8>;\n\nexport const UiConfigV8Struct: Describe<UiConfigV8> = object({\n version: literal(8),\n primaryColor: ColorConfigStruct,\n darkColor: ColorConfigStruct,\n lightColor: ColorConfigStruct,\n linkColor: ColorConfigStruct,\n\n appearance: type({\n customFonts: optional(array(FontFaceConfigStruct)),\n navigation: optional(\n type({\n primaryNav: optional(PrimaryNavCustomizationConfigStruct),\n secondaryNav: optional(SecondaryNavCustomizationConfigStruct),\n tabs: optional(NavCustomizationConfigStruct),\n }),\n ),\n pageElements: type({\n pageTitle: optional(TypographyConfigStruct),\n pageDescription: optional(TypographyConfigStruct),\n headingLarge: optional(TypographyConfigStruct),\n headingMedium: optional(TypographyConfigStruct),\n headingSmall: optional(TypographyConfigStruct),\n bodyText: optional(TypographyConfigStruct),\n link: optional(TypographyLinkConfigStruct),\n }),\n }),\n});\n\nexport interface _UiConfigV9 extends Omit<\n UiConfigV8,\n 'version' | 'primaryColor' | 'darkColor' | 'lightColor' | 'linkColor'\n> {\n version: 9;\n}\nexport type UiConfigV9 = ExpandRecursively<_UiConfigV9>;\n\nexport const UiConfigV9Struct: Describe<UiConfigV9> = object({\n version: literal(9),\n\n appearance: type({\n customFonts: optional(array(FontFaceConfigStruct)),\n navigation: optional(\n type({\n primaryNav: optional(PrimaryNavCustomizationConfigStruct),\n secondaryNav: optional(SecondaryNavCustomizationConfigStruct),\n tabs: optional(NavCustomizationConfigStruct),\n }),\n ),\n pageElements: type({\n pageTitle: optional(TypographyConfigStruct),\n pageDescription: optional(TypographyConfigStruct),\n headingLarge: optional(TypographyConfigStruct),\n headingMedium: optional(TypographyConfigStruct),\n headingSmall: optional(TypographyConfigStruct),\n bodyText: optional(TypographyConfigStruct),\n link: optional(TypographyLinkConfigStruct),\n }),\n }),\n});\n\nexport interface _UiConfigV10 extends Omit<UiConfigV9, 'version'> {\n version: 10;\n appearance: {\n navigation?: UiConfigV9['appearance']['navigation'];\n customFonts?: UiConfigV9['appearance']['customFonts'];\n pageElements: typeof pageElementsV2;\n };\n}\nexport type UiConfigV10 = ExpandRecursively<_UiConfigV10>;\n\nexport const UiConfigV10Struct: Describe<UiConfigV10> = object({\n version: literal(10),\n\n appearance: type({\n customFonts: optional(array(FontFaceConfigStruct)),\n navigation: optional(\n type({\n primaryNav: optional(PrimaryNavCustomizationConfigStruct),\n secondaryNav: optional(SecondaryNavCustomizationConfigStruct),\n tabs: optional(NavCustomizationConfigStruct),\n }),\n ),\n pageElements: type({\n pageTitle: optional(TypographyConfigStruct),\n pageDescription: optional(TypographyConfigStruct),\n headingXLarge: optional(TypographyConfigStruct),\n headingLarge: optional(TypographyConfigStruct),\n headingMedium: optional(TypographyConfigStruct),\n headingSmall: optional(TypographyConfigStruct),\n headingXSmall: optional(TypographyConfigStruct),\n bodyText: optional(TypographyConfigStruct),\n link: optional(TypographyLinkConfigStruct),\n }),\n }),\n});\n\nexport type UiConfigVersions =\n | typeof UiConfigV1Struct.TYPE\n | typeof UiConfigV2Struct.TYPE\n | typeof UiConfigV3Struct.TYPE\n | typeof UiConfigV4Struct.TYPE\n | typeof UiConfigV5Struct.TYPE\n | typeof UiConfigV6Struct.TYPE\n | typeof UiConfigV7Struct.TYPE\n | typeof UiConfigV8Struct.TYPE\n | typeof UiConfigV9Struct.TYPE\n | typeof UiConfigV10Struct.TYPE;\n\n// ALIASES FOR LATEST VERSIONS\nexport type UiConfig = UiConfigV10;\nexport const UiConfigStruct: typeof UiConfigV10Struct = UiConfigV10Struct;\n\nexport type NavElementNames = keyof UiConfig['appearance']['navigation'];\n"]}
|
package/dist/user-roles.d.ts
CHANGED
package/dist/user-roles.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-roles.d.ts","sourceRoot":"","sources":["../src/user-roles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD;;;;;GAKG;AACH,MAAM,MAAM,IAAI,GACZ,OAAO,GACP,aAAa,GACb,UAAU,GACV,QAAQ,GACR,WAAW;AACb;;;;GAIG;GACD,QAAQ,GACR,SAAS,CAAC;AAEd,MAAM,MAAM,eAAe,GAAG;IAC5B,cAAc,EAAE,OAAO,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,MAAM,CACpC,UAAU,EACV;IACE,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;CAClB,CACF,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACrB,EAAE,EAAE,IAAI,CAAC;IACT,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,eAAe,CAAC;IAC7B,aAAa,EAAE,iBAAiB,CAAC;CAClC,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,IAAI,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"user-roles.d.ts","sourceRoot":"","sources":["../src/user-roles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD;;;;;GAKG;AACH,MAAM,MAAM,IAAI,GACZ,OAAO,GACP,aAAa,GACb,UAAU,GACV,QAAQ,GACR,WAAW;AACb;;;;GAIG;GACD,QAAQ,GACR,SAAS,CAAC;AAEd,MAAM,MAAM,eAAe,GAAG;IAC5B,cAAc,EAAE,OAAO,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,MAAM,CACpC,UAAU,EACV;IACE,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;CAClB,CACF,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACrB,EAAE,EAAE,IAAI,CAAC;IACT,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,eAAe,CAAC;IAC7B,aAAa,EAAE,iBAAiB,CAAC;CAClC,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,IAAI,EAAE,QAAQ,CAsT5C,CAAC;AAEF,eAAO,MAAM,KAAK,YAA2B,CAAC"}
|
package/dist/user-roles.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';var e={ADMIN:{id:"ADMIN",title:"Admin",hierarchy:4,permissions:{canManageUsers:true,canDelete:true,canEdit:true,canPublish:true,canView:true},sectionAccess:{ROOT:{canEdit:false,canView:true},DOCUMENT:{canEdit:true,canView:true},DESIGN:{canEdit:true,canView:true},DEVELOP:{canEdit:true,canView:true},PROTOTYPE:{canEdit:true,canView:true},SETTINGS:{canEdit:true,canView:true}}},CONTRIBUTOR:{id:"CONTRIBUTOR",title:"Contributor",hierarchy:3,permissions:{canManageUsers:false,canDelete:false,canEdit:true,canPublish:false,canView:true},sectionAccess:{ROOT:{canEdit:false,canView:true},DOCUMENT:{canEdit:true,canView:true},DESIGN:{canEdit:true,canView:true},DEVELOP:{canEdit:true,canView:true},PROTOTYPE:{canEdit:true,canView:true},SETTINGS:{canEdit:true,canView:true}}},CONSUMER:{id:"CONSUMER",title:"Consumer",hierarchy:2,permissions:{canManageUsers:false,canDelete:false,canEdit:true,canPublish:false,canView:true},sectionAccess:{ROOT:{canEdit:false,canView:true},DOCUMENT:{canEdit:false,canView:true},DESIGN:{canEdit:false,canView:false},DEVELOP:{canEdit:false,canView:false},PROTOTYPE:{canEdit:true,canView:true},SETTINGS:{canEdit:false,canView:false}}},VIEWER:{id:"VIEWER",title:"Viewer",hierarchy:1,permissions:{canManageUsers:false,canDelete:false,canEdit:false,canPublish:false,canView:true},sectionAccess:{ROOT:{canEdit:false,canView:true},DOCUMENT:{canEdit:false,canView:true},DESIGN:{canEdit:false,canView:false},DEVELOP:{canEdit:false,canView:false},PROTOTYPE:{canEdit:false,canView:false},SETTINGS:{canEdit:false,canView:false}}},ANONYMOUS:{id:"ANONYMOUS",title:"Anonymous",hierarchy:0,permissions:{canManageUsers:false,canDelete:false,canEdit:false,canPublish:false,canView:true},sectionAccess:{ROOT:{canEdit:false,canView:true},DOCUMENT:{canEdit:false,canView:true},DESIGN:{canEdit:false,canView:false},DEVELOP:{canEdit:false,canView:false},PROTOTYPE:{canEdit:false,canView:false},SETTINGS:{canEdit:false,canView:false}}},EDITOR:{id:"EDITOR",title:"Editor",hierarchy:0,permissions:{canManageUsers:false,canDelete:false,canEdit:false,canPublish:false,canView:false},sectionAccess:{ROOT:{canEdit:false,canView:false},DOCUMENT:{canEdit:false,canView:false},DESIGN:{canEdit:false,canView:false},DEVELOP:{canEdit:false,canView:false},PROTOTYPE:{canEdit:false,canView:false},SETTINGS:{canEdit:false,canView:false}}},MANAGER:{id:"MANAGER",title:"Manager",hierarchy:0,permissions:{canManageUsers:false,canDelete:false,canEdit:false,canPublish:false,canView:false},sectionAccess:{ROOT:{canEdit:false,canView:false},DOCUMENT:{canEdit:false,canView:false},DESIGN:{canEdit:false,canView:false},DEVELOP:{canEdit:false,canView:false},PROTOTYPE:{canEdit:false,canView:false},SETTINGS:{canEdit:false,canView:false}}}},a=Object.values(e);exports.roles=a;exports.rolesById=e;//# sourceMappingURL=user-roles.js.map
|
|
1
|
+
'use strict';var e={ADMIN:{id:"ADMIN",title:"Admin",description:"Full access. Can manage users, publish changes, and configure all settings.",hierarchy:4,permissions:{canManageUsers:true,canDelete:true,canEdit:true,canPublish:true,canView:true},sectionAccess:{ROOT:{canEdit:false,canView:true},DOCUMENT:{canEdit:true,canView:true},DESIGN:{canEdit:true,canView:true},DEVELOP:{canEdit:true,canView:true},PROTOTYPE:{canEdit:true,canView:true},SETTINGS:{canEdit:true,canView:true},MCP:{canEdit:true,canView:true}}},CONTRIBUTOR:{id:"CONTRIBUTOR",title:"Contributor",description:"Can view and edit content across Design, Develop, and Prototype. Cannot publish or manage users.",hierarchy:3,permissions:{canManageUsers:false,canDelete:false,canEdit:true,canPublish:false,canView:true},sectionAccess:{ROOT:{canEdit:false,canView:true},DOCUMENT:{canEdit:true,canView:true},DESIGN:{canEdit:true,canView:true},DEVELOP:{canEdit:true,canView:true},PROTOTYPE:{canEdit:true,canView:true},SETTINGS:{canEdit:true,canView:true},MCP:{canEdit:false,canView:false}}},CONSUMER:{id:"CONSUMER",title:"Consumer",description:"Can view documentation and edit prototypes. Cannot access Design or Develop sections.",hierarchy:2,permissions:{canManageUsers:false,canDelete:false,canEdit:true,canPublish:false,canView:true},sectionAccess:{ROOT:{canEdit:false,canView:true},DOCUMENT:{canEdit:false,canView:true},DESIGN:{canEdit:false,canView:false},DEVELOP:{canEdit:false,canView:false},PROTOTYPE:{canEdit:true,canView:true},SETTINGS:{canEdit:false,canView:false},MCP:{canEdit:false,canView:false}}},VIEWER:{id:"VIEWER",title:"Viewer",description:"Read-only access to documentation. Cannot edit anything.",hierarchy:1,permissions:{canManageUsers:false,canDelete:false,canEdit:false,canPublish:false,canView:true},sectionAccess:{ROOT:{canEdit:false,canView:true},DOCUMENT:{canEdit:false,canView:true},DESIGN:{canEdit:false,canView:false},DEVELOP:{canEdit:false,canView:false},PROTOTYPE:{canEdit:false,canView:false},SETTINGS:{canEdit:false,canView:false},MCP:{canEdit:false,canView:false}}},ANONYMOUS:{id:"ANONYMOUS",title:"Anonymous",description:"",hierarchy:0,permissions:{canManageUsers:false,canDelete:false,canEdit:false,canPublish:false,canView:true},sectionAccess:{ROOT:{canEdit:false,canView:true},DOCUMENT:{canEdit:false,canView:true},DESIGN:{canEdit:false,canView:false},DEVELOP:{canEdit:false,canView:false},PROTOTYPE:{canEdit:false,canView:false},SETTINGS:{canEdit:false,canView:false},MCP:{canEdit:false,canView:false}}},EDITOR:{id:"EDITOR",title:"Editor",description:"",hierarchy:0,permissions:{canManageUsers:false,canDelete:false,canEdit:false,canPublish:false,canView:false},sectionAccess:{ROOT:{canEdit:false,canView:false},DOCUMENT:{canEdit:false,canView:false},DESIGN:{canEdit:false,canView:false},DEVELOP:{canEdit:false,canView:false},PROTOTYPE:{canEdit:false,canView:false},SETTINGS:{canEdit:false,canView:false},MCP:{canEdit:false,canView:false}}},MANAGER:{id:"MANAGER",title:"Manager",description:"",hierarchy:0,permissions:{canManageUsers:false,canDelete:false,canEdit:false,canPublish:false,canView:false},sectionAccess:{ROOT:{canEdit:false,canView:false},DOCUMENT:{canEdit:false,canView:false},DESIGN:{canEdit:false,canView:false},DEVELOP:{canEdit:false,canView:false},PROTOTYPE:{canEdit:false,canView:false},SETTINGS:{canEdit:false,canView:false},MCP:{canEdit:false,canView:false}}}},a=Object.values(e);exports.roles=a;exports.rolesById=e;//# sourceMappingURL=user-roles.js.map
|
|
2
2
|
//# sourceMappingURL=user-roles.js.map
|
package/dist/user-roles.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/user-roles.ts"],"names":["rolesById","roles"],"mappings":"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","file":"user-roles.js","sourcesContent":["import type { AppSection } from './app-sections';\n\n/**\n * The roles here are duplicates of the roles in the database.\n * It needs to be here, in the types package, so it can be used in all packages.\n * If we pull it in from `@knapsack/hasura-gql-client`, which is the source, we get a dependency cycle. So we do it this way.\n * If the roles change in the database, we need to change them here too. We will get a build error if we don't (see code in `@knapsack/hasura-gql-client`).\n */\nexport type Role =\n | 'ADMIN'\n | 'CONTRIBUTOR'\n | 'CONSUMER'\n | 'VIEWER'\n | 'ANONYMOUS'\n /**\n * These are not used, but exist in the DB\n * @todo: remove unused roles from database\n * @link https://linear.app/knapsack/issue/KSP-5991/remove-unused-roles-from-database\n */\n | 'EDITOR'\n | 'MANAGER';\n\nexport type RolePermissions = {\n canManageUsers: boolean;\n canDelete: boolean;\n canEdit: boolean;\n canPublish: boolean;\n canView: boolean;\n};\n\nexport type RoleSectionAccess = Record<\n AppSection,\n {\n canView: boolean;\n canEdit: boolean;\n }\n>;\n\nexport type RoleInfo = {\n id: Role;\n title: string;\n hierarchy: number;\n permissions: RolePermissions;\n sectionAccess: RoleSectionAccess;\n};\n\nexport const rolesById: Record<Role, RoleInfo> = {\n ADMIN: {\n id: 'ADMIN',\n title: 'Admin',\n hierarchy: 4,\n permissions: {\n canManageUsers: true,\n canDelete: true,\n canEdit: true,\n canPublish: true,\n canView: true,\n },\n sectionAccess: {\n ROOT: {\n canEdit: false,\n canView: true,\n },\n DOCUMENT: {\n canEdit: true,\n canView: true,\n },\n DESIGN: {\n canEdit: true,\n canView: true,\n },\n DEVELOP: {\n canEdit: true,\n canView: true,\n },\n PROTOTYPE: {\n canEdit: true,\n canView: true,\n },\n SETTINGS: {\n canEdit: true,\n canView: true,\n },\n },\n },\n CONTRIBUTOR: {\n id: 'CONTRIBUTOR',\n title: 'Contributor',\n hierarchy: 3,\n permissions: {\n canManageUsers: false,\n canDelete: false,\n canEdit: true,\n canPublish: false,\n canView: true,\n },\n sectionAccess: {\n ROOT: {\n canEdit: false,\n canView: true,\n },\n DOCUMENT: {\n canEdit: true,\n canView: true,\n },\n DESIGN: {\n canEdit: true,\n canView: true,\n },\n DEVELOP: {\n canEdit: true,\n canView: true,\n },\n PROTOTYPE: {\n canEdit: true,\n canView: true,\n },\n SETTINGS: {\n canEdit: true,\n canView: true,\n },\n },\n },\n CONSUMER: {\n id: 'CONSUMER',\n title: 'Consumer',\n hierarchy: 2,\n permissions: {\n canManageUsers: false,\n canDelete: false,\n canEdit: true,\n canPublish: false,\n canView: true,\n },\n sectionAccess: {\n ROOT: {\n canEdit: false,\n canView: true,\n },\n DOCUMENT: {\n canEdit: false,\n canView: true,\n },\n DESIGN: {\n canEdit: false,\n canView: false,\n },\n DEVELOP: {\n canEdit: false,\n canView: false,\n },\n PROTOTYPE: {\n canEdit: true,\n canView: true,\n },\n SETTINGS: {\n canEdit: false,\n canView: false,\n },\n },\n },\n VIEWER: {\n id: 'VIEWER',\n title: 'Viewer',\n hierarchy: 1,\n permissions: {\n canManageUsers: false,\n canDelete: false,\n canEdit: false,\n canPublish: false,\n canView: true,\n },\n sectionAccess: {\n ROOT: {\n canEdit: false,\n canView: true,\n },\n DOCUMENT: {\n canEdit: false,\n canView: true,\n },\n DESIGN: {\n canEdit: false,\n canView: false,\n },\n DEVELOP: {\n canEdit: false,\n canView: false,\n },\n PROTOTYPE: {\n canEdit: false,\n canView: false,\n },\n SETTINGS: {\n canEdit: false,\n canView: false,\n },\n },\n },\n ANONYMOUS: {\n id: 'ANONYMOUS',\n title: 'Anonymous',\n hierarchy: 0,\n permissions: {\n canManageUsers: false,\n canDelete: false,\n canEdit: false,\n canPublish: false,\n canView: true,\n },\n sectionAccess: {\n ROOT: {\n canEdit: false,\n canView: true,\n },\n DOCUMENT: {\n canEdit: false,\n canView: true,\n },\n DESIGN: {\n canEdit: false,\n canView: false,\n },\n DEVELOP: {\n canEdit: false,\n canView: false,\n },\n PROTOTYPE: {\n canEdit: false,\n canView: false,\n },\n SETTINGS: {\n canEdit: false,\n canView: false,\n },\n },\n },\n /**\n * These are not used, but exist in the DB\n * @todo: remove unused roles from database\n * @link https://linear.app/knapsack/issue/KSP-5991/remove-unused-roles-from-database\n */\n EDITOR: {\n id: 'EDITOR',\n title: 'Editor',\n hierarchy: 0,\n permissions: {\n canManageUsers: false,\n canDelete: false,\n canEdit: false,\n canPublish: false,\n canView: false,\n },\n sectionAccess: {\n ROOT: {\n canEdit: false,\n canView: false,\n },\n DOCUMENT: {\n canEdit: false,\n canView: false,\n },\n DESIGN: {\n canEdit: false,\n canView: false,\n },\n DEVELOP: {\n canEdit: false,\n canView: false,\n },\n PROTOTYPE: {\n canEdit: false,\n canView: false,\n },\n SETTINGS: {\n canEdit: false,\n canView: false,\n },\n },\n },\n MANAGER: {\n id: 'MANAGER',\n title: 'Manager',\n hierarchy: 0,\n permissions: {\n canManageUsers: false,\n canDelete: false,\n canEdit: false,\n canPublish: false,\n canView: false,\n },\n sectionAccess: {\n ROOT: {\n canEdit: false,\n canView: false,\n },\n DOCUMENT: {\n canEdit: false,\n canView: false,\n },\n DESIGN: {\n canEdit: false,\n canView: false,\n },\n DEVELOP: {\n canEdit: false,\n canView: false,\n },\n PROTOTYPE: {\n canEdit: false,\n canView: false,\n },\n SETTINGS: {\n canEdit: false,\n canView: false,\n },\n },\n },\n};\n\nexport const roles = Object.values(rolesById);\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/user-roles.ts"],"names":["rolesById","roles"],"mappings":"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","file":"user-roles.js","sourcesContent":["import type { AppSection } from './app-sections';\n\n/**\n * The roles here are duplicates of the roles in the database.\n * It needs to be here, in the types package, so it can be used in all packages.\n * If we pull it in from `@knapsack/hasura-gql-client`, which is the source, we get a dependency cycle. So we do it this way.\n * If the roles change in the database, we need to change them here too. We will get a build error if we don't (see code in `@knapsack/hasura-gql-client`).\n */\nexport type Role =\n | 'ADMIN'\n | 'CONTRIBUTOR'\n | 'CONSUMER'\n | 'VIEWER'\n | 'ANONYMOUS'\n /**\n * These are not used, but exist in the DB\n * @todo: remove unused roles from database\n * @link https://linear.app/knapsack/issue/KSP-5991/remove-unused-roles-from-database\n */\n | 'EDITOR'\n | 'MANAGER';\n\nexport type RolePermissions = {\n canManageUsers: boolean;\n canDelete: boolean;\n canEdit: boolean;\n canPublish: boolean;\n canView: boolean;\n};\n\nexport type RoleSectionAccess = Record<\n AppSection,\n {\n canView: boolean;\n canEdit: boolean;\n }\n>;\n\nexport type RoleInfo = {\n id: Role;\n title: string;\n description: string;\n hierarchy: number;\n permissions: RolePermissions;\n sectionAccess: RoleSectionAccess;\n};\n\nexport const rolesById: Record<Role, RoleInfo> = {\n ADMIN: {\n id: 'ADMIN',\n title: 'Admin',\n description:\n 'Full access. Can manage users, publish changes, and configure all settings.',\n hierarchy: 4,\n permissions: {\n canManageUsers: true,\n canDelete: true,\n canEdit: true,\n canPublish: true,\n canView: true,\n },\n sectionAccess: {\n ROOT: {\n canEdit: false,\n canView: true,\n },\n DOCUMENT: {\n canEdit: true,\n canView: true,\n },\n DESIGN: {\n canEdit: true,\n canView: true,\n },\n DEVELOP: {\n canEdit: true,\n canView: true,\n },\n PROTOTYPE: {\n canEdit: true,\n canView: true,\n },\n SETTINGS: {\n canEdit: true,\n canView: true,\n },\n MCP: {\n canEdit: true,\n canView: true,\n },\n },\n },\n CONTRIBUTOR: {\n id: 'CONTRIBUTOR',\n title: 'Contributor',\n description:\n 'Can view and edit content across Design, Develop, and Prototype. Cannot publish or manage users.',\n hierarchy: 3,\n permissions: {\n canManageUsers: false,\n canDelete: false,\n canEdit: true,\n canPublish: false,\n canView: true,\n },\n sectionAccess: {\n ROOT: {\n canEdit: false,\n canView: true,\n },\n DOCUMENT: {\n canEdit: true,\n canView: true,\n },\n DESIGN: {\n canEdit: true,\n canView: true,\n },\n DEVELOP: {\n canEdit: true,\n canView: true,\n },\n PROTOTYPE: {\n canEdit: true,\n canView: true,\n },\n SETTINGS: {\n canEdit: true,\n canView: true,\n },\n MCP: {\n canEdit: false,\n canView: false,\n },\n },\n },\n CONSUMER: {\n id: 'CONSUMER',\n title: 'Consumer',\n description:\n 'Can view documentation and edit prototypes. Cannot access Design or Develop sections.',\n hierarchy: 2,\n permissions: {\n canManageUsers: false,\n canDelete: false,\n canEdit: true,\n canPublish: false,\n canView: true,\n },\n sectionAccess: {\n ROOT: {\n canEdit: false,\n canView: true,\n },\n DOCUMENT: {\n canEdit: false,\n canView: true,\n },\n DESIGN: {\n canEdit: false,\n canView: false,\n },\n DEVELOP: {\n canEdit: false,\n canView: false,\n },\n PROTOTYPE: {\n canEdit: true,\n canView: true,\n },\n SETTINGS: {\n canEdit: false,\n canView: false,\n },\n MCP: {\n canEdit: false,\n canView: false,\n },\n },\n },\n VIEWER: {\n id: 'VIEWER',\n title: 'Viewer',\n description: 'Read-only access to documentation. Cannot edit anything.',\n hierarchy: 1,\n permissions: {\n canManageUsers: false,\n canDelete: false,\n canEdit: false,\n canPublish: false,\n canView: true,\n },\n sectionAccess: {\n ROOT: {\n canEdit: false,\n canView: true,\n },\n DOCUMENT: {\n canEdit: false,\n canView: true,\n },\n DESIGN: {\n canEdit: false,\n canView: false,\n },\n DEVELOP: {\n canEdit: false,\n canView: false,\n },\n PROTOTYPE: {\n canEdit: false,\n canView: false,\n },\n SETTINGS: {\n canEdit: false,\n canView: false,\n },\n MCP: {\n canEdit: false,\n canView: false,\n },\n },\n },\n ANONYMOUS: {\n id: 'ANONYMOUS',\n title: 'Anonymous',\n description: '',\n hierarchy: 0,\n permissions: {\n canManageUsers: false,\n canDelete: false,\n canEdit: false,\n canPublish: false,\n canView: true,\n },\n sectionAccess: {\n ROOT: {\n canEdit: false,\n canView: true,\n },\n DOCUMENT: {\n canEdit: false,\n canView: true,\n },\n DESIGN: {\n canEdit: false,\n canView: false,\n },\n DEVELOP: {\n canEdit: false,\n canView: false,\n },\n PROTOTYPE: {\n canEdit: false,\n canView: false,\n },\n SETTINGS: {\n canEdit: false,\n canView: false,\n },\n MCP: {\n canEdit: false,\n canView: false,\n },\n },\n },\n /**\n * These are not used, but exist in the DB\n * @todo: remove unused roles from database\n * @link https://linear.app/knapsack/issue/KSP-5991/remove-unused-roles-from-database\n */\n EDITOR: {\n id: 'EDITOR',\n title: 'Editor',\n description: '',\n hierarchy: 0,\n permissions: {\n canManageUsers: false,\n canDelete: false,\n canEdit: false,\n canPublish: false,\n canView: false,\n },\n sectionAccess: {\n ROOT: {\n canEdit: false,\n canView: false,\n },\n DOCUMENT: {\n canEdit: false,\n canView: false,\n },\n DESIGN: {\n canEdit: false,\n canView: false,\n },\n DEVELOP: {\n canEdit: false,\n canView: false,\n },\n PROTOTYPE: {\n canEdit: false,\n canView: false,\n },\n SETTINGS: {\n canEdit: false,\n canView: false,\n },\n MCP: {\n canEdit: false,\n canView: false,\n },\n },\n },\n MANAGER: {\n id: 'MANAGER',\n title: 'Manager',\n description: '',\n hierarchy: 0,\n permissions: {\n canManageUsers: false,\n canDelete: false,\n canEdit: false,\n canPublish: false,\n canView: false,\n },\n sectionAccess: {\n ROOT: {\n canEdit: false,\n canView: false,\n },\n DOCUMENT: {\n canEdit: false,\n canView: false,\n },\n DESIGN: {\n canEdit: false,\n canView: false,\n },\n DEVELOP: {\n canEdit: false,\n canView: false,\n },\n PROTOTYPE: {\n canEdit: false,\n canView: false,\n },\n SETTINGS: {\n canEdit: false,\n canView: false,\n },\n MCP: {\n canEdit: false,\n canView: false,\n },\n },\n },\n};\n\nexport const roles = Object.values(rolesById);\n"]}
|
package/dist/user-roles.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var e={ADMIN:{id:"ADMIN",title:"Admin",hierarchy:4,permissions:{canManageUsers:true,canDelete:true,canEdit:true,canPublish:true,canView:true},sectionAccess:{ROOT:{canEdit:false,canView:true},DOCUMENT:{canEdit:true,canView:true},DESIGN:{canEdit:true,canView:true},DEVELOP:{canEdit:true,canView:true},PROTOTYPE:{canEdit:true,canView:true},SETTINGS:{canEdit:true,canView:true}}},CONTRIBUTOR:{id:"CONTRIBUTOR",title:"Contributor",hierarchy:3,permissions:{canManageUsers:false,canDelete:false,canEdit:true,canPublish:false,canView:true},sectionAccess:{ROOT:{canEdit:false,canView:true},DOCUMENT:{canEdit:true,canView:true},DESIGN:{canEdit:true,canView:true},DEVELOP:{canEdit:true,canView:true},PROTOTYPE:{canEdit:true,canView:true},SETTINGS:{canEdit:true,canView:true}}},CONSUMER:{id:"CONSUMER",title:"Consumer",hierarchy:2,permissions:{canManageUsers:false,canDelete:false,canEdit:true,canPublish:false,canView:true},sectionAccess:{ROOT:{canEdit:false,canView:true},DOCUMENT:{canEdit:false,canView:true},DESIGN:{canEdit:false,canView:false},DEVELOP:{canEdit:false,canView:false},PROTOTYPE:{canEdit:true,canView:true},SETTINGS:{canEdit:false,canView:false}}},VIEWER:{id:"VIEWER",title:"Viewer",hierarchy:1,permissions:{canManageUsers:false,canDelete:false,canEdit:false,canPublish:false,canView:true},sectionAccess:{ROOT:{canEdit:false,canView:true},DOCUMENT:{canEdit:false,canView:true},DESIGN:{canEdit:false,canView:false},DEVELOP:{canEdit:false,canView:false},PROTOTYPE:{canEdit:false,canView:false},SETTINGS:{canEdit:false,canView:false}}},ANONYMOUS:{id:"ANONYMOUS",title:"Anonymous",hierarchy:0,permissions:{canManageUsers:false,canDelete:false,canEdit:false,canPublish:false,canView:true},sectionAccess:{ROOT:{canEdit:false,canView:true},DOCUMENT:{canEdit:false,canView:true},DESIGN:{canEdit:false,canView:false},DEVELOP:{canEdit:false,canView:false},PROTOTYPE:{canEdit:false,canView:false},SETTINGS:{canEdit:false,canView:false}}},EDITOR:{id:"EDITOR",title:"Editor",hierarchy:0,permissions:{canManageUsers:false,canDelete:false,canEdit:false,canPublish:false,canView:false},sectionAccess:{ROOT:{canEdit:false,canView:false},DOCUMENT:{canEdit:false,canView:false},DESIGN:{canEdit:false,canView:false},DEVELOP:{canEdit:false,canView:false},PROTOTYPE:{canEdit:false,canView:false},SETTINGS:{canEdit:false,canView:false}}},MANAGER:{id:"MANAGER",title:"Manager",hierarchy:0,permissions:{canManageUsers:false,canDelete:false,canEdit:false,canPublish:false,canView:false},sectionAccess:{ROOT:{canEdit:false,canView:false},DOCUMENT:{canEdit:false,canView:false},DESIGN:{canEdit:false,canView:false},DEVELOP:{canEdit:false,canView:false},PROTOTYPE:{canEdit:false,canView:false},SETTINGS:{canEdit:false,canView:false}}}},a=Object.values(e);export{a as roles,e as rolesById};//# sourceMappingURL=user-roles.mjs.map
|
|
1
|
+
var e={ADMIN:{id:"ADMIN",title:"Admin",description:"Full access. Can manage users, publish changes, and configure all settings.",hierarchy:4,permissions:{canManageUsers:true,canDelete:true,canEdit:true,canPublish:true,canView:true},sectionAccess:{ROOT:{canEdit:false,canView:true},DOCUMENT:{canEdit:true,canView:true},DESIGN:{canEdit:true,canView:true},DEVELOP:{canEdit:true,canView:true},PROTOTYPE:{canEdit:true,canView:true},SETTINGS:{canEdit:true,canView:true},MCP:{canEdit:true,canView:true}}},CONTRIBUTOR:{id:"CONTRIBUTOR",title:"Contributor",description:"Can view and edit content across Design, Develop, and Prototype. Cannot publish or manage users.",hierarchy:3,permissions:{canManageUsers:false,canDelete:false,canEdit:true,canPublish:false,canView:true},sectionAccess:{ROOT:{canEdit:false,canView:true},DOCUMENT:{canEdit:true,canView:true},DESIGN:{canEdit:true,canView:true},DEVELOP:{canEdit:true,canView:true},PROTOTYPE:{canEdit:true,canView:true},SETTINGS:{canEdit:true,canView:true},MCP:{canEdit:false,canView:false}}},CONSUMER:{id:"CONSUMER",title:"Consumer",description:"Can view documentation and edit prototypes. Cannot access Design or Develop sections.",hierarchy:2,permissions:{canManageUsers:false,canDelete:false,canEdit:true,canPublish:false,canView:true},sectionAccess:{ROOT:{canEdit:false,canView:true},DOCUMENT:{canEdit:false,canView:true},DESIGN:{canEdit:false,canView:false},DEVELOP:{canEdit:false,canView:false},PROTOTYPE:{canEdit:true,canView:true},SETTINGS:{canEdit:false,canView:false},MCP:{canEdit:false,canView:false}}},VIEWER:{id:"VIEWER",title:"Viewer",description:"Read-only access to documentation. Cannot edit anything.",hierarchy:1,permissions:{canManageUsers:false,canDelete:false,canEdit:false,canPublish:false,canView:true},sectionAccess:{ROOT:{canEdit:false,canView:true},DOCUMENT:{canEdit:false,canView:true},DESIGN:{canEdit:false,canView:false},DEVELOP:{canEdit:false,canView:false},PROTOTYPE:{canEdit:false,canView:false},SETTINGS:{canEdit:false,canView:false},MCP:{canEdit:false,canView:false}}},ANONYMOUS:{id:"ANONYMOUS",title:"Anonymous",description:"",hierarchy:0,permissions:{canManageUsers:false,canDelete:false,canEdit:false,canPublish:false,canView:true},sectionAccess:{ROOT:{canEdit:false,canView:true},DOCUMENT:{canEdit:false,canView:true},DESIGN:{canEdit:false,canView:false},DEVELOP:{canEdit:false,canView:false},PROTOTYPE:{canEdit:false,canView:false},SETTINGS:{canEdit:false,canView:false},MCP:{canEdit:false,canView:false}}},EDITOR:{id:"EDITOR",title:"Editor",description:"",hierarchy:0,permissions:{canManageUsers:false,canDelete:false,canEdit:false,canPublish:false,canView:false},sectionAccess:{ROOT:{canEdit:false,canView:false},DOCUMENT:{canEdit:false,canView:false},DESIGN:{canEdit:false,canView:false},DEVELOP:{canEdit:false,canView:false},PROTOTYPE:{canEdit:false,canView:false},SETTINGS:{canEdit:false,canView:false},MCP:{canEdit:false,canView:false}}},MANAGER:{id:"MANAGER",title:"Manager",description:"",hierarchy:0,permissions:{canManageUsers:false,canDelete:false,canEdit:false,canPublish:false,canView:false},sectionAccess:{ROOT:{canEdit:false,canView:false},DOCUMENT:{canEdit:false,canView:false},DESIGN:{canEdit:false,canView:false},DEVELOP:{canEdit:false,canView:false},PROTOTYPE:{canEdit:false,canView:false},SETTINGS:{canEdit:false,canView:false},MCP:{canEdit:false,canView:false}}}},a=Object.values(e);export{a as roles,e as rolesById};//# sourceMappingURL=user-roles.mjs.map
|
|
2
2
|
//# sourceMappingURL=user-roles.mjs.map
|
package/dist/user-roles.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/user-roles.ts"],"names":["rolesById","roles"],"mappings":"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","file":"user-roles.mjs","sourcesContent":["import type { AppSection } from './app-sections';\n\n/**\n * The roles here are duplicates of the roles in the database.\n * It needs to be here, in the types package, so it can be used in all packages.\n * If we pull it in from `@knapsack/hasura-gql-client`, which is the source, we get a dependency cycle. So we do it this way.\n * If the roles change in the database, we need to change them here too. We will get a build error if we don't (see code in `@knapsack/hasura-gql-client`).\n */\nexport type Role =\n | 'ADMIN'\n | 'CONTRIBUTOR'\n | 'CONSUMER'\n | 'VIEWER'\n | 'ANONYMOUS'\n /**\n * These are not used, but exist in the DB\n * @todo: remove unused roles from database\n * @link https://linear.app/knapsack/issue/KSP-5991/remove-unused-roles-from-database\n */\n | 'EDITOR'\n | 'MANAGER';\n\nexport type RolePermissions = {\n canManageUsers: boolean;\n canDelete: boolean;\n canEdit: boolean;\n canPublish: boolean;\n canView: boolean;\n};\n\nexport type RoleSectionAccess = Record<\n AppSection,\n {\n canView: boolean;\n canEdit: boolean;\n }\n>;\n\nexport type RoleInfo = {\n id: Role;\n title: string;\n hierarchy: number;\n permissions: RolePermissions;\n sectionAccess: RoleSectionAccess;\n};\n\nexport const rolesById: Record<Role, RoleInfo> = {\n ADMIN: {\n id: 'ADMIN',\n title: 'Admin',\n hierarchy: 4,\n permissions: {\n canManageUsers: true,\n canDelete: true,\n canEdit: true,\n canPublish: true,\n canView: true,\n },\n sectionAccess: {\n ROOT: {\n canEdit: false,\n canView: true,\n },\n DOCUMENT: {\n canEdit: true,\n canView: true,\n },\n DESIGN: {\n canEdit: true,\n canView: true,\n },\n DEVELOP: {\n canEdit: true,\n canView: true,\n },\n PROTOTYPE: {\n canEdit: true,\n canView: true,\n },\n SETTINGS: {\n canEdit: true,\n canView: true,\n },\n },\n },\n CONTRIBUTOR: {\n id: 'CONTRIBUTOR',\n title: 'Contributor',\n hierarchy: 3,\n permissions: {\n canManageUsers: false,\n canDelete: false,\n canEdit: true,\n canPublish: false,\n canView: true,\n },\n sectionAccess: {\n ROOT: {\n canEdit: false,\n canView: true,\n },\n DOCUMENT: {\n canEdit: true,\n canView: true,\n },\n DESIGN: {\n canEdit: true,\n canView: true,\n },\n DEVELOP: {\n canEdit: true,\n canView: true,\n },\n PROTOTYPE: {\n canEdit: true,\n canView: true,\n },\n SETTINGS: {\n canEdit: true,\n canView: true,\n },\n },\n },\n CONSUMER: {\n id: 'CONSUMER',\n title: 'Consumer',\n hierarchy: 2,\n permissions: {\n canManageUsers: false,\n canDelete: false,\n canEdit: true,\n canPublish: false,\n canView: true,\n },\n sectionAccess: {\n ROOT: {\n canEdit: false,\n canView: true,\n },\n DOCUMENT: {\n canEdit: false,\n canView: true,\n },\n DESIGN: {\n canEdit: false,\n canView: false,\n },\n DEVELOP: {\n canEdit: false,\n canView: false,\n },\n PROTOTYPE: {\n canEdit: true,\n canView: true,\n },\n SETTINGS: {\n canEdit: false,\n canView: false,\n },\n },\n },\n VIEWER: {\n id: 'VIEWER',\n title: 'Viewer',\n hierarchy: 1,\n permissions: {\n canManageUsers: false,\n canDelete: false,\n canEdit: false,\n canPublish: false,\n canView: true,\n },\n sectionAccess: {\n ROOT: {\n canEdit: false,\n canView: true,\n },\n DOCUMENT: {\n canEdit: false,\n canView: true,\n },\n DESIGN: {\n canEdit: false,\n canView: false,\n },\n DEVELOP: {\n canEdit: false,\n canView: false,\n },\n PROTOTYPE: {\n canEdit: false,\n canView: false,\n },\n SETTINGS: {\n canEdit: false,\n canView: false,\n },\n },\n },\n ANONYMOUS: {\n id: 'ANONYMOUS',\n title: 'Anonymous',\n hierarchy: 0,\n permissions: {\n canManageUsers: false,\n canDelete: false,\n canEdit: false,\n canPublish: false,\n canView: true,\n },\n sectionAccess: {\n ROOT: {\n canEdit: false,\n canView: true,\n },\n DOCUMENT: {\n canEdit: false,\n canView: true,\n },\n DESIGN: {\n canEdit: false,\n canView: false,\n },\n DEVELOP: {\n canEdit: false,\n canView: false,\n },\n PROTOTYPE: {\n canEdit: false,\n canView: false,\n },\n SETTINGS: {\n canEdit: false,\n canView: false,\n },\n },\n },\n /**\n * These are not used, but exist in the DB\n * @todo: remove unused roles from database\n * @link https://linear.app/knapsack/issue/KSP-5991/remove-unused-roles-from-database\n */\n EDITOR: {\n id: 'EDITOR',\n title: 'Editor',\n hierarchy: 0,\n permissions: {\n canManageUsers: false,\n canDelete: false,\n canEdit: false,\n canPublish: false,\n canView: false,\n },\n sectionAccess: {\n ROOT: {\n canEdit: false,\n canView: false,\n },\n DOCUMENT: {\n canEdit: false,\n canView: false,\n },\n DESIGN: {\n canEdit: false,\n canView: false,\n },\n DEVELOP: {\n canEdit: false,\n canView: false,\n },\n PROTOTYPE: {\n canEdit: false,\n canView: false,\n },\n SETTINGS: {\n canEdit: false,\n canView: false,\n },\n },\n },\n MANAGER: {\n id: 'MANAGER',\n title: 'Manager',\n hierarchy: 0,\n permissions: {\n canManageUsers: false,\n canDelete: false,\n canEdit: false,\n canPublish: false,\n canView: false,\n },\n sectionAccess: {\n ROOT: {\n canEdit: false,\n canView: false,\n },\n DOCUMENT: {\n canEdit: false,\n canView: false,\n },\n DESIGN: {\n canEdit: false,\n canView: false,\n },\n DEVELOP: {\n canEdit: false,\n canView: false,\n },\n PROTOTYPE: {\n canEdit: false,\n canView: false,\n },\n SETTINGS: {\n canEdit: false,\n canView: false,\n },\n },\n },\n};\n\nexport const roles = Object.values(rolesById);\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/user-roles.ts"],"names":["rolesById","roles"],"mappings":"AA+CO,IAAMA,CAAAA,CAAoC,CAC/C,KAAA,CAAO,CACL,EAAA,CAAI,OAAA,CACJ,KAAA,CAAO,OAAA,CACP,WAAA,CACE,6EAAA,CACF,SAAA,CAAW,CAAA,CACX,WAAA,CAAa,CACX,cAAA,CAAgB,IAAA,CAChB,SAAA,CAAW,IAAA,CACX,OAAA,CAAS,IAAA,CACT,UAAA,CAAY,IAAA,CACZ,OAAA,CAAS,IACX,CAAA,CACA,aAAA,CAAe,CACb,IAAA,CAAM,CACJ,OAAA,CAAS,KAAA,CACT,OAAA,CAAS,IACX,CAAA,CACA,QAAA,CAAU,CACR,OAAA,CAAS,IAAA,CACT,OAAA,CAAS,IACX,CAAA,CACA,MAAA,CAAQ,CACN,OAAA,CAAS,IAAA,CACT,QAAS,IACX,CAAA,CACA,OAAA,CAAS,CACP,OAAA,CAAS,IAAA,CACT,OAAA,CAAS,IACX,CAAA,CACA,SAAA,CAAW,CACT,OAAA,CAAS,IAAA,CACT,OAAA,CAAS,IACX,CAAA,CACA,SAAU,CACR,OAAA,CAAS,IAAA,CACT,OAAA,CAAS,IACX,CAAA,CACA,GAAA,CAAK,CACH,OAAA,CAAS,IAAA,CACT,OAAA,CAAS,IACX,CACF,CACF,CAAA,CACA,WAAA,CAAa,CACX,EAAA,CAAI,aAAA,CACJ,KAAA,CAAO,aAAA,CACP,WAAA,CACE,kGAAA,CACF,SAAA,CAAW,CAAA,CACX,WAAA,CAAa,CACX,cAAA,CAAgB,KAAA,CAChB,SAAA,CAAW,KAAA,CACX,OAAA,CAAS,IAAA,CACT,WAAY,KAAA,CACZ,OAAA,CAAS,IACX,CAAA,CACA,aAAA,CAAe,CACb,IAAA,CAAM,CACJ,OAAA,CAAS,KAAA,CACT,OAAA,CAAS,IACX,CAAA,CACA,QAAA,CAAU,CACR,OAAA,CAAS,KACT,OAAA,CAAS,IACX,CAAA,CACA,MAAA,CAAQ,CACN,OAAA,CAAS,IAAA,CACT,OAAA,CAAS,IACX,CAAA,CACA,OAAA,CAAS,CACP,OAAA,CAAS,IAAA,CACT,OAAA,CAAS,IACX,EACA,SAAA,CAAW,CACT,OAAA,CAAS,IAAA,CACT,OAAA,CAAS,IACX,CAAA,CACA,QAAA,CAAU,CACR,OAAA,CAAS,IAAA,CACT,OAAA,CAAS,IACX,CAAA,CACA,GAAA,CAAK,CACH,QAAS,KAAA,CACT,OAAA,CAAS,KACX,CACF,CACF,CAAA,CACA,QAAA,CAAU,CACR,EAAA,CAAI,UAAA,CACJ,KAAA,CAAO,UAAA,CACP,WAAA,CACE,uFAAA,CACF,SAAA,CAAW,CAAA,CACX,YAAa,CACX,cAAA,CAAgB,KAAA,CAChB,SAAA,CAAW,KAAA,CACX,OAAA,CAAS,IAAA,CACT,UAAA,CAAY,KAAA,CACZ,OAAA,CAAS,IACX,CAAA,CACA,aAAA,CAAe,CACb,IAAA,CAAM,CACJ,QAAS,KAAA,CACT,OAAA,CAAS,IACX,CAAA,CACA,QAAA,CAAU,CACR,OAAA,CAAS,KAAA,CACT,OAAA,CAAS,IACX,CAAA,CACA,MAAA,CAAQ,CACN,OAAA,CAAS,KAAA,CACT,OAAA,CAAS,KACX,CAAA,CACA,OAAA,CAAS,CACP,OAAA,CAAS,KAAA,CACT,OAAA,CAAS,KACX,CAAA,CACA,SAAA,CAAW,CACT,OAAA,CAAS,IAAA,CACT,OAAA,CAAS,IACX,CAAA,CACA,QAAA,CAAU,CACR,OAAA,CAAS,KAAA,CACT,OAAA,CAAS,KACX,CAAA,CACA,GAAA,CAAK,CACH,OAAA,CAAS,KAAA,CACT,OAAA,CAAS,KACX,CACF,CACF,CAAA,CACA,MAAA,CAAQ,CACN,GAAI,QAAA,CACJ,KAAA,CAAO,QAAA,CACP,WAAA,CAAa,0DAAA,CACb,SAAA,CAAW,CAAA,CACX,WAAA,CAAa,CACX,cAAA,CAAgB,KAAA,CAChB,SAAA,CAAW,KAAA,CACX,OAAA,CAAS,KAAA,CACT,UAAA,CAAY,MACZ,OAAA,CAAS,IACX,CAAA,CACA,aAAA,CAAe,CACb,IAAA,CAAM,CACJ,OAAA,CAAS,KAAA,CACT,OAAA,CAAS,IACX,CAAA,CACA,QAAA,CAAU,CACR,OAAA,CAAS,KAAA,CACT,QAAS,IACX,CAAA,CACA,MAAA,CAAQ,CACN,OAAA,CAAS,KAAA,CACT,OAAA,CAAS,KACX,CAAA,CACA,OAAA,CAAS,CACP,OAAA,CAAS,KAAA,CACT,OAAA,CAAS,KACX,CAAA,CACA,SAAA,CAAW,CACT,OAAA,CAAS,KAAA,CACT,OAAA,CAAS,KACX,CAAA,CACA,QAAA,CAAU,CACR,OAAA,CAAS,KAAA,CACT,OAAA,CAAS,KACX,CAAA,CACA,GAAA,CAAK,CACH,QAAS,KAAA,CACT,OAAA,CAAS,KACX,CACF,CACF,CAAA,CACA,SAAA,CAAW,CACT,EAAA,CAAI,WAAA,CACJ,KAAA,CAAO,WAAA,CACP,WAAA,CAAa,EAAA,CACb,SAAA,CAAW,CAAA,CACX,YAAa,CACX,cAAA,CAAgB,KAAA,CAChB,SAAA,CAAW,KAAA,CACX,OAAA,CAAS,KAAA,CACT,UAAA,CAAY,KAAA,CACZ,OAAA,CAAS,IACX,CAAA,CACA,aAAA,CAAe,CACb,IAAA,CAAM,CACJ,QAAS,KAAA,CACT,OAAA,CAAS,IACX,CAAA,CACA,QAAA,CAAU,CACR,OAAA,CAAS,KAAA,CACT,OAAA,CAAS,IACX,CAAA,CACA,MAAA,CAAQ,CACN,OAAA,CAAS,KAAA,CACT,OAAA,CAAS,KACX,CAAA,CACA,OAAA,CAAS,CACP,OAAA,CAAS,KAAA,CACT,OAAA,CAAS,KACX,CAAA,CACA,SAAA,CAAW,CACT,OAAA,CAAS,KAAA,CACT,OAAA,CAAS,KACX,CAAA,CACA,QAAA,CAAU,CACR,OAAA,CAAS,KAAA,CACT,OAAA,CAAS,KACX,CAAA,CACA,GAAA,CAAK,CACH,OAAA,CAAS,KAAA,CACT,OAAA,CAAS,KACX,CACF,CACF,CAAA,CAMA,MAAA,CAAQ,CACN,GAAI,QAAA,CACJ,KAAA,CAAO,QAAA,CACP,WAAA,CAAa,EAAA,CACb,SAAA,CAAW,CAAA,CACX,WAAA,CAAa,CACX,cAAA,CAAgB,KAAA,CAChB,SAAA,CAAW,KAAA,CACX,OAAA,CAAS,KAAA,CACT,UAAA,CAAY,MACZ,OAAA,CAAS,KACX,CAAA,CACA,aAAA,CAAe,CACb,IAAA,CAAM,CACJ,OAAA,CAAS,KAAA,CACT,OAAA,CAAS,KACX,CAAA,CACA,QAAA,CAAU,CACR,OAAA,CAAS,KAAA,CACT,QAAS,KACX,CAAA,CACA,MAAA,CAAQ,CACN,OAAA,CAAS,KAAA,CACT,OAAA,CAAS,KACX,CAAA,CACA,OAAA,CAAS,CACP,OAAA,CAAS,KAAA,CACT,OAAA,CAAS,KACX,CAAA,CACA,UAAW,CACT,OAAA,CAAS,KAAA,CACT,OAAA,CAAS,KACX,CAAA,CACA,QAAA,CAAU,CACR,OAAA,CAAS,KAAA,CACT,OAAA,CAAS,KACX,CAAA,CACA,GAAA,CAAK,CACH,OAAA,CAAS,MACT,OAAA,CAAS,KACX,CACF,CACF,CAAA,CACA,OAAA,CAAS,CACP,EAAA,CAAI,SAAA,CACJ,KAAA,CAAO,SAAA,CACP,WAAA,CAAa,EAAA,CACb,SAAA,CAAW,CAAA,CACX,WAAA,CAAa,CACX,cAAA,CAAgB,KAAA,CAChB,SAAA,CAAW,KAAA,CACX,OAAA,CAAS,KAAA,CACT,UAAA,CAAY,KAAA,CACZ,OAAA,CAAS,KACX,CAAA,CACA,aAAA,CAAe,CACb,IAAA,CAAM,CACJ,OAAA,CAAS,MACT,OAAA,CAAS,KACX,CAAA,CACA,QAAA,CAAU,CACR,OAAA,CAAS,KAAA,CACT,OAAA,CAAS,KACX,CAAA,CACA,MAAA,CAAQ,CACN,OAAA,CAAS,KAAA,CACT,OAAA,CAAS,KACX,EACA,OAAA,CAAS,CACP,OAAA,CAAS,KAAA,CACT,OAAA,CAAS,KACX,CAAA,CACA,SAAA,CAAW,CACT,OAAA,CAAS,KAAA,CACT,OAAA,CAAS,KACX,CAAA,CACA,QAAA,CAAU,CACR,QAAS,KAAA,CACT,OAAA,CAAS,KACX,CAAA,CACA,GAAA,CAAK,CACH,OAAA,CAAS,KAAA,CACT,OAAA,CAAS,KACX,CACF,CACF,CACF,CAAA,CAEaC,CAAAA,CAAQ,MAAA,CAAO,OAAOD,CAAS","file":"user-roles.mjs","sourcesContent":["import type { AppSection } from './app-sections';\n\n/**\n * The roles here are duplicates of the roles in the database.\n * It needs to be here, in the types package, so it can be used in all packages.\n * If we pull it in from `@knapsack/hasura-gql-client`, which is the source, we get a dependency cycle. So we do it this way.\n * If the roles change in the database, we need to change them here too. We will get a build error if we don't (see code in `@knapsack/hasura-gql-client`).\n */\nexport type Role =\n | 'ADMIN'\n | 'CONTRIBUTOR'\n | 'CONSUMER'\n | 'VIEWER'\n | 'ANONYMOUS'\n /**\n * These are not used, but exist in the DB\n * @todo: remove unused roles from database\n * @link https://linear.app/knapsack/issue/KSP-5991/remove-unused-roles-from-database\n */\n | 'EDITOR'\n | 'MANAGER';\n\nexport type RolePermissions = {\n canManageUsers: boolean;\n canDelete: boolean;\n canEdit: boolean;\n canPublish: boolean;\n canView: boolean;\n};\n\nexport type RoleSectionAccess = Record<\n AppSection,\n {\n canView: boolean;\n canEdit: boolean;\n }\n>;\n\nexport type RoleInfo = {\n id: Role;\n title: string;\n description: string;\n hierarchy: number;\n permissions: RolePermissions;\n sectionAccess: RoleSectionAccess;\n};\n\nexport const rolesById: Record<Role, RoleInfo> = {\n ADMIN: {\n id: 'ADMIN',\n title: 'Admin',\n description:\n 'Full access. Can manage users, publish changes, and configure all settings.',\n hierarchy: 4,\n permissions: {\n canManageUsers: true,\n canDelete: true,\n canEdit: true,\n canPublish: true,\n canView: true,\n },\n sectionAccess: {\n ROOT: {\n canEdit: false,\n canView: true,\n },\n DOCUMENT: {\n canEdit: true,\n canView: true,\n },\n DESIGN: {\n canEdit: true,\n canView: true,\n },\n DEVELOP: {\n canEdit: true,\n canView: true,\n },\n PROTOTYPE: {\n canEdit: true,\n canView: true,\n },\n SETTINGS: {\n canEdit: true,\n canView: true,\n },\n MCP: {\n canEdit: true,\n canView: true,\n },\n },\n },\n CONTRIBUTOR: {\n id: 'CONTRIBUTOR',\n title: 'Contributor',\n description:\n 'Can view and edit content across Design, Develop, and Prototype. Cannot publish or manage users.',\n hierarchy: 3,\n permissions: {\n canManageUsers: false,\n canDelete: false,\n canEdit: true,\n canPublish: false,\n canView: true,\n },\n sectionAccess: {\n ROOT: {\n canEdit: false,\n canView: true,\n },\n DOCUMENT: {\n canEdit: true,\n canView: true,\n },\n DESIGN: {\n canEdit: true,\n canView: true,\n },\n DEVELOP: {\n canEdit: true,\n canView: true,\n },\n PROTOTYPE: {\n canEdit: true,\n canView: true,\n },\n SETTINGS: {\n canEdit: true,\n canView: true,\n },\n MCP: {\n canEdit: false,\n canView: false,\n },\n },\n },\n CONSUMER: {\n id: 'CONSUMER',\n title: 'Consumer',\n description:\n 'Can view documentation and edit prototypes. Cannot access Design or Develop sections.',\n hierarchy: 2,\n permissions: {\n canManageUsers: false,\n canDelete: false,\n canEdit: true,\n canPublish: false,\n canView: true,\n },\n sectionAccess: {\n ROOT: {\n canEdit: false,\n canView: true,\n },\n DOCUMENT: {\n canEdit: false,\n canView: true,\n },\n DESIGN: {\n canEdit: false,\n canView: false,\n },\n DEVELOP: {\n canEdit: false,\n canView: false,\n },\n PROTOTYPE: {\n canEdit: true,\n canView: true,\n },\n SETTINGS: {\n canEdit: false,\n canView: false,\n },\n MCP: {\n canEdit: false,\n canView: false,\n },\n },\n },\n VIEWER: {\n id: 'VIEWER',\n title: 'Viewer',\n description: 'Read-only access to documentation. Cannot edit anything.',\n hierarchy: 1,\n permissions: {\n canManageUsers: false,\n canDelete: false,\n canEdit: false,\n canPublish: false,\n canView: true,\n },\n sectionAccess: {\n ROOT: {\n canEdit: false,\n canView: true,\n },\n DOCUMENT: {\n canEdit: false,\n canView: true,\n },\n DESIGN: {\n canEdit: false,\n canView: false,\n },\n DEVELOP: {\n canEdit: false,\n canView: false,\n },\n PROTOTYPE: {\n canEdit: false,\n canView: false,\n },\n SETTINGS: {\n canEdit: false,\n canView: false,\n },\n MCP: {\n canEdit: false,\n canView: false,\n },\n },\n },\n ANONYMOUS: {\n id: 'ANONYMOUS',\n title: 'Anonymous',\n description: '',\n hierarchy: 0,\n permissions: {\n canManageUsers: false,\n canDelete: false,\n canEdit: false,\n canPublish: false,\n canView: true,\n },\n sectionAccess: {\n ROOT: {\n canEdit: false,\n canView: true,\n },\n DOCUMENT: {\n canEdit: false,\n canView: true,\n },\n DESIGN: {\n canEdit: false,\n canView: false,\n },\n DEVELOP: {\n canEdit: false,\n canView: false,\n },\n PROTOTYPE: {\n canEdit: false,\n canView: false,\n },\n SETTINGS: {\n canEdit: false,\n canView: false,\n },\n MCP: {\n canEdit: false,\n canView: false,\n },\n },\n },\n /**\n * These are not used, but exist in the DB\n * @todo: remove unused roles from database\n * @link https://linear.app/knapsack/issue/KSP-5991/remove-unused-roles-from-database\n */\n EDITOR: {\n id: 'EDITOR',\n title: 'Editor',\n description: '',\n hierarchy: 0,\n permissions: {\n canManageUsers: false,\n canDelete: false,\n canEdit: false,\n canPublish: false,\n canView: false,\n },\n sectionAccess: {\n ROOT: {\n canEdit: false,\n canView: false,\n },\n DOCUMENT: {\n canEdit: false,\n canView: false,\n },\n DESIGN: {\n canEdit: false,\n canView: false,\n },\n DEVELOP: {\n canEdit: false,\n canView: false,\n },\n PROTOTYPE: {\n canEdit: false,\n canView: false,\n },\n SETTINGS: {\n canEdit: false,\n canView: false,\n },\n MCP: {\n canEdit: false,\n canView: false,\n },\n },\n },\n MANAGER: {\n id: 'MANAGER',\n title: 'Manager',\n description: '',\n hierarchy: 0,\n permissions: {\n canManageUsers: false,\n canDelete: false,\n canEdit: false,\n canPublish: false,\n canView: false,\n },\n sectionAccess: {\n ROOT: {\n canEdit: false,\n canView: false,\n },\n DOCUMENT: {\n canEdit: false,\n canView: false,\n },\n DESIGN: {\n canEdit: false,\n canView: false,\n },\n DEVELOP: {\n canEdit: false,\n canView: false,\n },\n PROTOTYPE: {\n canEdit: false,\n canView: false,\n },\n SETTINGS: {\n canEdit: false,\n canView: false,\n },\n MCP: {\n canEdit: false,\n canView: false,\n },\n },\n },\n};\n\nexport const roles = Object.values(rolesById);\n"]}
|
package/dist/web-sockets.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/web-sockets.ts"],"names":["WS_EVENTS"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../src/web-sockets.ts"],"names":["WS_EVENTS"],"mappings":"aAAO,IAAMA,CAAAA,CAAY,CACvB,wBAAA,CAA0B,0BAAA,CAC1B,qBAAA,CAAuB,uBAAA,CACvB,qBAAA,CAAuB,uBAAA,CACvB,sBAAA,CAAwB,wBAAA,CACxB,uBAAA,CAAyB,yBAC3B","file":"web-sockets.js","sourcesContent":["export const WS_EVENTS = {\n PATTERN_TEMPLATE_CHANGED: 'PATTERN_TEMPLATE_CHANGED',\n PATTERN_ASSET_CHANGED: 'PATTERN_ASSET_CHANGED',\n DESIGN_TOKENS_CHANGED: 'DESIGN_TOKENS_CHANGED',\n RENDERER_CLIENT_RELOAD: 'RENDERER_CLIENT_RELOAD',\n APP_CLIENT_DATA_CHANGED: 'APP_CLIENT_DATA_CHANGED',\n};\n\nexport type WebSocketEvent = keyof typeof WS_EVENTS;\n\nexport interface WebSocketMessage {\n event: string;\n data: Record<string, unknown>;\n}\n\nexport interface DesignTokensChangedData extends WebSocketMessage {\n event: typeof WS_EVENTS.DESIGN_TOKENS_CHANGED;\n data: Record<string, unknown>;\n}\n\nexport interface PatternChangedData extends WebSocketMessage {\n event: typeof WS_EVENTS.PATTERN_TEMPLATE_CHANGED;\n data: {\n /**\n * Absolute path to template on server that was just edited\n */\n path: string;\n };\n}\n\nexport interface AssetChangedData extends WebSocketMessage {\n event: typeof WS_EVENTS.PATTERN_ASSET_CHANGED;\n data: {\n /**\n * Absolute path to asset file (CSS/JS) on server that was just edited\n */\n path: string;\n };\n}\n\nexport interface RendererClientReloadMessage extends WebSocketMessage {\n event: typeof WS_EVENTS.RENDERER_CLIENT_RELOAD;\n data: {\n // @todo add patternId etc for more details\n };\n}\n\nexport interface AppClientDataChanged extends WebSocketMessage {\n event: typeof WS_EVENTS.PATTERN_TEMPLATE_CHANGED;\n data: Record<string, unknown>;\n}\n\nexport type WebSocketMessages =\n | PatternChangedData\n | AssetChangedData\n | DesignTokensChangedData\n | RendererClientReloadMessage;\n"]}
|
package/dist/web-sockets.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/web-sockets.ts"],"names":["WS_EVENTS"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../src/web-sockets.ts"],"names":["WS_EVENTS"],"mappings":"AAAO,IAAMA,CAAAA,CAAY,CACvB,wBAAA,CAA0B,0BAAA,CAC1B,qBAAA,CAAuB,uBAAA,CACvB,qBAAA,CAAuB,uBAAA,CACvB,sBAAA,CAAwB,wBAAA,CACxB,uBAAA,CAAyB,yBAC3B","file":"web-sockets.mjs","sourcesContent":["export const WS_EVENTS = {\n PATTERN_TEMPLATE_CHANGED: 'PATTERN_TEMPLATE_CHANGED',\n PATTERN_ASSET_CHANGED: 'PATTERN_ASSET_CHANGED',\n DESIGN_TOKENS_CHANGED: 'DESIGN_TOKENS_CHANGED',\n RENDERER_CLIENT_RELOAD: 'RENDERER_CLIENT_RELOAD',\n APP_CLIENT_DATA_CHANGED: 'APP_CLIENT_DATA_CHANGED',\n};\n\nexport type WebSocketEvent = keyof typeof WS_EVENTS;\n\nexport interface WebSocketMessage {\n event: string;\n data: Record<string, unknown>;\n}\n\nexport interface DesignTokensChangedData extends WebSocketMessage {\n event: typeof WS_EVENTS.DESIGN_TOKENS_CHANGED;\n data: Record<string, unknown>;\n}\n\nexport interface PatternChangedData extends WebSocketMessage {\n event: typeof WS_EVENTS.PATTERN_TEMPLATE_CHANGED;\n data: {\n /**\n * Absolute path to template on server that was just edited\n */\n path: string;\n };\n}\n\nexport interface AssetChangedData extends WebSocketMessage {\n event: typeof WS_EVENTS.PATTERN_ASSET_CHANGED;\n data: {\n /**\n * Absolute path to asset file (CSS/JS) on server that was just edited\n */\n path: string;\n };\n}\n\nexport interface RendererClientReloadMessage extends WebSocketMessage {\n event: typeof WS_EVENTS.RENDERER_CLIENT_RELOAD;\n data: {\n // @todo add patternId etc for more details\n };\n}\n\nexport interface AppClientDataChanged extends WebSocketMessage {\n event: typeof WS_EVENTS.PATTERN_TEMPLATE_CHANGED;\n data: Record<string, unknown>;\n}\n\nexport type WebSocketMessages =\n | PatternChangedData\n | AssetChangedData\n | DesignTokensChangedData\n | RendererClientReloadMessage;\n"]}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@knapsack/types",
|
|
3
3
|
"description": "",
|
|
4
|
-
"version": "5.0.0
|
|
4
|
+
"version": "5.0.0",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.mjs",
|
|
7
7
|
"types": "dist/index.d.ts",
|
|
@@ -40,34 +40,32 @@
|
|
|
40
40
|
"docs": "node ./build-docs.js",
|
|
41
41
|
"lint": "eslint ./src",
|
|
42
42
|
"start": "npx nodemon --watch src --exec 'npm run build'",
|
|
43
|
-
"test": "
|
|
43
|
+
"test": "vitest run"
|
|
44
44
|
},
|
|
45
45
|
"dependencies": {
|
|
46
|
-
"@knapsack/file-utils": "5.0.0
|
|
47
|
-
"@knapsack/utils": "5.0.0
|
|
46
|
+
"@knapsack/file-utils": "5.0.0",
|
|
47
|
+
"@knapsack/utils": "5.0.0",
|
|
48
48
|
"color-string": "^1.9.1",
|
|
49
|
-
"immer": "^10.
|
|
49
|
+
"immer": "^10.2.0",
|
|
50
50
|
"superstruct": "^0.16.7",
|
|
51
|
-
"zod": "^4.
|
|
51
|
+
"zod": "^4.3.6"
|
|
52
52
|
},
|
|
53
53
|
"devDependencies": {
|
|
54
54
|
"@apidevtools/json-schema-ref-parser": "^11.9.3",
|
|
55
|
-
"@knapsack/eslint-config-starter": "5.0.0
|
|
55
|
+
"@knapsack/eslint-config-starter": "5.0.0",
|
|
56
56
|
"@knapsack/file-utils": "workspace:*",
|
|
57
|
-
"@knapsack/
|
|
58
|
-
"@
|
|
59
|
-
"@tiptap/core": "^2.9.1",
|
|
57
|
+
"@knapsack/typescript-config-starter": "5.0.0",
|
|
58
|
+
"@tiptap/core": "^3.24.0",
|
|
60
59
|
"@types/color-string": "^1.5.5",
|
|
61
60
|
"@types/fs-extra": "^11.0.4",
|
|
62
|
-
"@types/react": "^
|
|
63
|
-
"
|
|
64
|
-
"
|
|
65
|
-
"fs-extra": "^11.3.2",
|
|
61
|
+
"@types/react": "^19.2.3",
|
|
62
|
+
"eslint": "^9.20.0",
|
|
63
|
+
"fs-extra": "^11.3.4",
|
|
66
64
|
"ts-node": "^10.9.2",
|
|
67
|
-
"tsup": "^8.5.
|
|
68
|
-
"typescript": "^5.9.
|
|
65
|
+
"tsup": "^8.5.1",
|
|
66
|
+
"typescript": "^5.9.3",
|
|
69
67
|
"typescript-json-schema": "^0.65.1",
|
|
70
|
-
"vitest": "^
|
|
68
|
+
"vitest": "^4.1.9"
|
|
71
69
|
},
|
|
72
70
|
"publishConfig": {
|
|
73
71
|
"access": "public"
|
|
@@ -77,5 +75,5 @@
|
|
|
77
75
|
"directory": "libs/types",
|
|
78
76
|
"type": "git"
|
|
79
77
|
},
|
|
80
|
-
"gitHead": "
|
|
78
|
+
"gitHead": "31e09ba72245b95bef52e73ce5076de51936286c"
|
|
81
79
|
}
|
package/vitest.config.mjs
CHANGED
|
@@ -3,8 +3,7 @@ import { defineConfig } from 'vitest/config';
|
|
|
3
3
|
// https://vitest.dev/config/
|
|
4
4
|
export default defineConfig({
|
|
5
5
|
test: {
|
|
6
|
-
|
|
7
|
-
include: ['src/**/*.{vtest,vitest}.{ts,tsx}'],
|
|
6
|
+
include: ['src/**/*.test.{ts,tsx}'],
|
|
8
7
|
includeSource: ['src/**/*.{ts,tsx}'],
|
|
9
8
|
},
|
|
10
9
|
});
|
package/.eslintrc.js
DELETED
package/ava.config.cjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validation.vtest.d.ts","sourceRoot":"","sources":["../../src/app-client-data/validation.vtest.ts"],"names":[],"mappings":""}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import type { Role } from './user-roles';
|
|
2
|
-
import type { ApiRoute } from './api-routes';
|
|
3
|
-
/**
|
|
4
|
-
* A fake API route that Cypress can intercept to provide a fake session config
|
|
5
|
-
* Used to have UI tests work in Cypress without having to setup a real auth0 tenant
|
|
6
|
-
* Since an actual auth token is never made or used, this works for UI tests but will fail if you try to use it in an API call
|
|
7
|
-
*/
|
|
8
|
-
export type CypressUserRole = Extract<Role, 'ADMIN' | 'CONTRIBUTOR' | 'CONSUMER' | 'VIEWER' | 'ANONYMOUS'>;
|
|
9
|
-
export type CypressSessionConfigApi = ApiRoute<{
|
|
10
|
-
path: '/fake-cypress-api/get-session-config';
|
|
11
|
-
method: 'GET';
|
|
12
|
-
/** No query params */
|
|
13
|
-
input?: Record<string, never>;
|
|
14
|
-
output: {
|
|
15
|
-
user: {
|
|
16
|
-
userRole: CypressUserRole;
|
|
17
|
-
};
|
|
18
|
-
};
|
|
19
|
-
}>;
|
|
20
|
-
//# sourceMappingURL=cypress-session-config.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cypress-session-config.d.ts","sourceRoot":"","sources":["../src/cypress-session-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAE7C;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG,OAAO,CACnC,IAAI,EACJ,OAAO,GAAG,aAAa,GAAG,UAAU,GAAG,QAAQ,GAAG,WAAW,CAC9D,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,QAAQ,CAAC;IAC7C,IAAI,EAAE,sCAAsC,CAAC;IAC7C,MAAM,EAAE,KAAK,CAAC;IACd,sBAAsB;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC9B,MAAM,EAAE;QACN,IAAI,EAAE;YACJ,QAAQ,EAAE,eAAe,CAAC;SAC3B,CAAC;KAEH,CAAC;CACH,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"cypress-session-config.js"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"cypress-session-config.mjs"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"renderers.vitest.d.ts","sourceRoot":"","sources":["../src/renderers.vitest.ts"],"names":[],"mappings":""}
|