<commit_before>{
  "paths": {
    "source": "./src",
    "compiled": "./lib"
  },

  "roles": [
    {
      "name": "component:@sanity/base/document",
      "description": "The document component wrapping the root component. Statically built for production, Rendered dynamically on the server in development."
    },
    {
      "name": "component:@sanity/base/root",
      "description": "The root component in the DOM-tree. Usually a layout."
    },
    {
      "name": "component:@sanity/base/absolutes",
      "description": "Statically positioned elements that should live on the page regardless of routing."
    },
    {
      "name": "component:@sanity/base/buttons/default",
      "description": "Default button"
    },
    {
      "name": "tool:@sanity/base/tool",
      "description": "Tools available for use within a Sanity configuration"
    },
    {
      "name": "role:@sanity/base/schema-creator",
      "description": "Function that creates a schema, merging the default Sanity types with user-specific types"
    },
    {
      "name": "role:@sanity/base/core-types",
      "description": "Out-of-the-box data types. Core Types are the sum of all Primitive and Bundled types."
    },
    {
      "name": "component:@sanity/base/action-button",
      "description": "Reusable action button"
    },
    {
      "name": "story:@sanity/base/component",
      "description": "React Storybook (https://github.com/kadirahq/react-storybook) stories"
    },

    {
      "name": "style:@sanity/base/theme/variables",
      "description": "Base theme variables for Sanity. Dont override this unless you provide all the new variables"
    },
    {
      "name": "style:@sanity/base/theme/variables/globals",
      "description": "Global generic variables"
    },
    {
      "name": "style:@sanity/base/theme/responsive",
      "description": "Responsive breakpoints"
    },
    {
      "name": "style:@sanity/base/theme/animation",
      "description": "Provides basic animation"
    },
    {
      "name": "style:@sanity/base/theme/shadows",
      "description": "Provides a bunch of shadows to pick from. Based on Material Design Lite"
    },
    {
      "name": "style:@sanity/base/theme/icons",
      "description": "Provides icons"
    },
    {
      "name": "style:@sanity/base/theme/variables/brand-colors",
      "description": "Brand colors. Other colors are based on this"
    },
    {
      "name": "style:@sanity/base/theme/variables/code",
      "description": "Syntax highlighting variables for color and styling"
    },
    {
      "name": "style:@sanity/base/theme/variables/forms",
      "description": "Form variables"
    },
    {
      "name": "style:@sanity/base/theme/variables/gray-colors",
      "description": "Shades of var(--gray-base)"
    },
    {
      "name": "style:@sanity/base/theme/variables/layers",
      "description": "Z-Index variables"
    },
    {
      "name": "style:@sanity/base/theme/variables/list-group",
      "description": "List group variables"
    },
    {
      "name": "style:@sanity/base/theme/variables/list",
      "description": "List variables"
    },
    {
      "name": "style:@sanity/base/theme/variables/progress",
      "description": "Progress bar variables"
    },
    {
      "name": "style:@sanity/base/theme/variables/selectable-item",
      "description": "Selectable item variables"
    },
    {
      "name": "style:@sanity/base/theme/variables/state-colors",
      "description": "State color variables. Shades of warning, info and danger"
    },
    {
      "name": "style:@sanity/base/theme/variables/typography",
      "description": "Typography variables"
    },
    {
      "name": "style:@sanity/base/theme/typography/headings",
      "description": "Basic headings"
    },
    {
      "name": "style:@sanity/base/theme/layout/positioning",
      "description": "Basic positioning helpers"
    },
    {
      "name": "style:@sanity/base/theme/body",
      "description": "Resets, fontsize, font-family etc"
    },
    {
      "name": "locale:@sanity/base/locale-messages",
      "description": "Messages across all known locales"
    },
    {
      "name": "machine:@sanity/base/language-resolver",
      "description": "Figures out which locale the client should use"
    },
    {
      "name": "machine:@sanity/base/locale-message-fetcher",
      "description": "Fetches locale messages for the given locale"
    },
    {
      "name": "component:@sanity/base/locale/intl",
      "description": "Exposes the current ReactIntl module instance"
    },
    {
      "name": "role:@sanity/base/locale/formatters",
      "description": "Functions to format based on resolved locale"
    },
    {
      "name": "component:@sanity/base/login-wrapper",
      "description": "Checks if user is logged in or not, and displays login screen or content for logged in users."
    },
    {
      "name": "component:@sanity/base/login-dialog",
      "description": "Lets the user log in to Sanity."
    },
    {
      "name": "machine:@sanity/base/authentication-fetcher",
      "description": "Fetches the logged in user and JSON web token."
    },
    {
      "name": "machine:@sanity/base/installation-fetcher",
      "description": "Fetches data about an installation."
    },
    {
      "name": "component:@sanity/base/sanity-intl-provider",
      "description": "Wraps the ReactIntl.IntlProvider component with the resolved locale and messages"
    },
    {
      "name": "component:@sanity/base/query-container",
      "description": "Wraps a query and passes down results as props to its child component"
    },
    {
      "name": "style:@sanity/base/theme/layout/resets",
      "description": "Provides resets for resetting browser styling"
    },
    {
      "name": "style:@sanity/base/theme/layout/box",
      "description": "Provides boxes"
    },
    {
      "name": "style:@sanity/base/theme/forms/text-input",
      "description": "Styling for <input>"
    },
    {
      "name": "style:@sanity/base/theme/forms/control",
      "description": "Wrapper for control elements like <input>"
    },
    {
      "name": "style:@sanity/base/theme/forms/textarea",
      "description": "Styling for <textarea>"
    },
    {
      "name": "style:@sanity/base/theme/buttons/default",
      "description": "Styling for default button"
    },
    {
      "name": "style:@sanity/base/theme/forms/clear-button",
      "description": "Styling for for clear button connected to a form control"
    },

    {
      "name": "style:@sanity/base/theme/typography/base",
      "description": "Base typography to but on the root for setting font-sizes etc."
    },
    {
      "name": "style:@sanity/base/theme/typography/text-blocks",
      "description": "Styling for text blocks and paragrapgs. Like lead text, default, small, blockquote etc."
    },
    {
      "name": "style:@sanity/base/theme/typography/code",
      "description": "Styling for code"
    },


    {
      "implements": "component:@sanity/base/root",
      "path": "components/DefaultRootComponent.js"
    },
    {
      "implements": "role:@sanity/base/schema-creator",
      "path": "schema/createSchema.js"
    },

    {
      "implements": "style:@sanity/base/theme/variables",
      "path": "styles/variables.css"
    },
    {
      "implements": "style:@sanity/base/theme/variables/globals",
      "path": "styles/variables/globals.css"
    },
    {
      "implements": "style:@sanity/base/theme/variables/brand-colors",
      "path": "styles/variables/brand-colors.css"
    },
    {
      "implements": "style:@sanity/base/theme/animation",
      "path": "styles/animation.css"
    },
    {
      "implements": "style:@sanity/base/theme/responsive",
      "path": "styles/responsive.css"
    },
    {
      "implements": "style:@sanity/base/theme/shadows",
      "path": "styles/shadows.css"
    },
    {
      "implements": "style:@sanity/base/theme/icons",
      "path": "styles/icons.css"
    },

    {
      "implements": "style:@sanity/base/theme/variables/code",
      "path": "styles/variables/code.css"
    },

    {
      "implements": "style:@sanity/base/theme/variables/forms",
      "path": "styles/variables/forms.css"
    },

    {
      "implements": "style:@sanity/base/theme/variables/gray-colors",
      "path": "styles/variables/gray-colors.css"
    },

    {
      "implements": "style:@sanity/base/theme/variables/layers",
      "path": "styles/variables/layers.css"
    },

    {
      "implements": "style:@sanity/base/theme/variables/list-group",
      "path": "styles/variables/list-group.css"
    },

    {
      "implements": "style:@sanity/base/theme/variables/list",
      "path": "styles/variables/list.css"
    },

    {
      "implements": "style:@sanity/base/theme/variables/progress",
      "path": "styles/variables/progress.css"
    },

    {
      "implements": "style:@sanity/base/theme/variables/selectable-item",
      "path": "styles/variables/selectable-item.css"
    },

    {
      "implements": "style:@sanity/base/theme/variables/state-colors",
      "path": "styles/variables/state-colors.css"
    },

    {
      "implements": "style:@sanity/base/theme/variables/typography",
      "path": "styles/variables/typography.css"
    },
    {
      "name": "datastore:@sanity/base/location",
      "path": "datastores/location"
    },
    {
      "name": "datastore:@sanity/base/document",
      "path": "datastores/document"
    },
    {
      "name": "datastore:@sanity/base/user",
      "path": "datastores/user"
    },
    {
      "name": "datastore:@sanity/base/installation",
      "path": "datastores/installation"
    },
    {
      "name": "router:@sanity/base/router",
      "path": "router"
    },
    {
      "name": "client:@sanity/base/client",
      "path": "client"
    },
    {
      "name": "component:@sanity/base/document-default",
      "implements": "component:@sanity/base/document",
      "path": "components/Document"
    },

    {
      "implements": "machine:@sanity/base/language-resolver",
      "path": "locale/languageResolver.js"
    },
    {
      "implements": "machine:@sanity/base/locale-message-fetcher",
      "path": "locale/messageFetcher.js"
    },
    {
      "implements": "component:@sanity/base/locale/intl",
      "path": "locale/intl.js"
    },
    {
      "implements": "component:@sanity/base/sanity-intl-provider",
      "path": "components/SanityIntlProvider"
    },
    {
      "implements": "component:@sanity/base/query-container",
      "path": "components/QueryContainer"
    },
    {
      "implements": "role:@sanity/base/locale/formatters",
      "path": "components/IntlWrapper.js"
    },
    {
      "implements": "component:@sanity/base/buttons/default",
      "path": "components/buttons/DefaultButton.js"
    },
    {
      "implements": "component:@sanity/base/login-wrapper",
      "path": "components/login/LoginWrapper.js"
    },
    {
      "implements": "style:@sanity/base/theme/layout/box",
      "path": "styles/layout/box.css"
    },
    {
      "implements": "style:@sanity/base/theme/layout/positioning",
      "path": "styles/layout/positioning.css"
    },
    {
      "implements": "style:@sanity/base/theme/buttons/default",
      "path": "styles/buttons/default.css"
    },
    {
      "implements": "style:@sanity/base/theme/forms/text-input",
      "path": "styles/forms/text-input.css"
    },
    {
      "implements": "style:@sanity/base/theme/forms/control",
      "path": "styles/forms/control.css"
    },
    {
      "implements": "style:@sanity/base/theme/forms/textarea",
      "path": "styles/forms/textarea.css"
    },
    {
      "implements": "style:@sanity/base/theme/forms/clear-button",
      "path": "styles/forms/clear-button.css"
    },
    {
      "implements": "style:@sanity/base/theme/typography/base",
      "path": "styles/typography/base.css"
    },
    {
      "implements": "style:@sanity/base/theme/typography/headings",
      "path": "styles/typography/headings.css"
    },
    {
      "implements": "style:@sanity/base/theme/typography/text-blocks",
      "path": "styles/typography/text-blocks.css"
    },
    {
      "implements": "style:@sanity/base/theme/typography/code",
      "path": "styles/typography/code.css"
    },
    {
      "implements": "style:@sanity/base/theme/body",
      "path": "styles/body.css"
    }
  ]
}
<commit_msg>Rename a role and implement it, too<commit_after>{
  "paths": {
    "source": "./src",
    "compiled": "./lib"
  },

  "roles": [
    {
      "name": "component:@sanity/base/document",
      "description": "The document component wrapping the root component. Statically built for production, Rendered dynamically on the server in development."
    },
    {
      "name": "component:@sanity/base/root",
      "description": "The root component in the DOM-tree. Usually a layout."
    },
    {
      "name": "component:@sanity/base/absolutes",
      "description": "Statically positioned elements that should live on the page regardless of routing."
    },
    {
      "name": "component:@sanity/base/buttons/default",
      "description": "Default button"
    },
    {
      "name": "tool:@sanity/base/tool",
      "description": "Tools available for use within a Sanity configuration"
    },
    {
      "name": "role:@sanity/base/schema-creator",
      "description": "Function that creates a schema, merging the default Sanity types with user-specific types"
    },
    {
      "name": "role:@sanity/base/bundled-types",
      "description": "Commonly used data types which are bundled with Sanity for the sake of convenience.",
      "path": "schema/types/baseSchema.js"
    },
    {
      "name": "component:@sanity/base/action-button",
      "description": "Reusable action button"
    },
    {
      "name": "story:@sanity/base/component",
      "description": "React Storybook (https://github.com/kadirahq/react-storybook) stories"
    },

    {
      "name": "style:@sanity/base/theme/variables",
      "description": "Base theme variables for Sanity. Dont override this unless you provide all the new variables"
    },
    {
      "name": "style:@sanity/base/theme/variables/globals",
      "description": "Global generic variables"
    },
    {
      "name": "style:@sanity/base/theme/responsive",
      "description": "Responsive breakpoints"
    },
    {
      "name": "style:@sanity/base/theme/animation",
      "description": "Provides basic animation"
    },
    {
      "name": "style:@sanity/base/theme/shadows",
      "description": "Provides a bunch of shadows to pick from. Based on Material Design Lite"
    },
    {
      "name": "style:@sanity/base/theme/icons",
      "description": "Provides icons"
    },
    {
      "name": "style:@sanity/base/theme/variables/brand-colors",
      "description": "Brand colors. Other colors are based on this"
    },
    {
      "name": "style:@sanity/base/theme/variables/code",
      "description": "Syntax highlighting variables for color and styling"
    },
    {
      "name": "style:@sanity/base/theme/variables/forms",
      "description": "Form variables"
    },
    {
      "name": "style:@sanity/base/theme/variables/gray-colors",
      "description": "Shades of var(--gray-base)"
    },
    {
      "name": "style:@sanity/base/theme/variables/layers",
      "description": "Z-Index variables"
    },
    {
      "name": "style:@sanity/base/theme/variables/list-group",
      "description": "List group variables"
    },
    {
      "name": "style:@sanity/base/theme/variables/list",
      "description": "List variables"
    },
    {
      "name": "style:@sanity/base/theme/variables/progress",
      "description": "Progress bar variables"
    },
    {
      "name": "style:@sanity/base/theme/variables/selectable-item",
      "description": "Selectable item variables"
    },
    {
      "name": "style:@sanity/base/theme/variables/state-colors",
      "description": "State color variables. Shades of warning, info and danger"
    },
    {
      "name": "style:@sanity/base/theme/variables/typography",
      "description": "Typography variables"
    },
    {
      "name": "style:@sanity/base/theme/typography/headings",
      "description": "Basic headings"
    },
    {
      "name": "style:@sanity/base/theme/layout/positioning",
      "description": "Basic positioning helpers"
    },
    {
      "name": "style:@sanity/base/theme/body",
      "description": "Resets, fontsize, font-family etc"
    },
    {
      "name": "locale:@sanity/base/locale-messages",
      "description": "Messages across all known locales"
    },
    {
      "name": "machine:@sanity/base/language-resolver",
      "description": "Figures out which locale the client should use"
    },
    {
      "name": "machine:@sanity/base/locale-message-fetcher",
      "description": "Fetches locale messages for the given locale"
    },
    {
      "name": "component:@sanity/base/locale/intl",
      "description": "Exposes the current ReactIntl module instance"
    },
    {
      "name": "role:@sanity/base/locale/formatters",
      "description": "Functions to format based on resolved locale"
    },
    {
      "name": "component:@sanity/base/login-wrapper",
      "description": "Checks if user is logged in or not, and displays login screen or content for logged in users."
    },
    {
      "name": "component:@sanity/base/login-dialog",
      "description": "Lets the user log in to Sanity."
    },
    {
      "name": "machine:@sanity/base/authentication-fetcher",
      "description": "Fetches the logged in user and JSON web token."
    },
    {
      "name": "machine:@sanity/base/installation-fetcher",
      "description": "Fetches data about an installation."
    },
    {
      "name": "component:@sanity/base/sanity-intl-provider",
      "description": "Wraps the ReactIntl.IntlProvider component with the resolved locale and messages"
    },
    {
      "name": "component:@sanity/base/query-container",
      "description": "Wraps a query and passes down results as props to its child component"
    },
    {
      "name": "style:@sanity/base/theme/layout/resets",
      "description": "Provides resets for resetting browser styling"
    },
    {
      "name": "style:@sanity/base/theme/layout/box",
      "description": "Provides boxes"
    },
    {
      "name": "style:@sanity/base/theme/forms/text-input",
      "description": "Styling for <input>"
    },
    {
      "name": "style:@sanity/base/theme/forms/control",
      "description": "Wrapper for control elements like <input>"
    },
    {
      "name": "style:@sanity/base/theme/forms/textarea",
      "description": "Styling for <textarea>"
    },
    {
      "name": "style:@sanity/base/theme/buttons/default",
      "description": "Styling for default button"
    },
    {
      "name": "style:@sanity/base/theme/forms/clear-button",
      "description": "Styling for for clear button connected to a form control"
    },

    {
      "name": "style:@sanity/base/theme/typography/base",
      "description": "Base typography to but on the root for setting font-sizes etc."
    },
    {
      "name": "style:@sanity/base/theme/typography/text-blocks",
      "description": "Styling for text blocks and paragrapgs. Like lead text, default, small, blockquote etc."
    },
    {
      "name": "style:@sanity/base/theme/typography/code",
      "description": "Styling for code"
    },


    {
      "implements": "component:@sanity/base/root",
      "path": "components/DefaultRootComponent.js"
    },
    {
      "implements": "role:@sanity/base/schema-creator",
      "path": "schema/createSchema.js"
    },

    {
      "implements": "style:@sanity/base/theme/variables",
      "path": "styles/variables.css"
    },
    {
      "implements": "style:@sanity/base/theme/variables/globals",
      "path": "styles/variables/globals.css"
    },
    {
      "implements": "style:@sanity/base/theme/variables/brand-colors",
      "path": "styles/variables/brand-colors.css"
    },
    {
      "implements": "style:@sanity/base/theme/animation",
      "path": "styles/animation.css"
    },
    {
      "implements": "style:@sanity/base/theme/responsive",
      "path": "styles/responsive.css"
    },
    {
      "implements": "style:@sanity/base/theme/shadows",
      "path": "styles/shadows.css"
    },
    {
      "implements": "style:@sanity/base/theme/icons",
      "path": "styles/icons.css"
    },

    {
      "implements": "style:@sanity/base/theme/variables/code",
      "path": "styles/variables/code.css"
    },

    {
      "implements": "style:@sanity/base/theme/variables/forms",
      "path": "styles/variables/forms.css"
    },

    {
      "implements": "style:@sanity/base/theme/variables/gray-colors",
      "path": "styles/variables/gray-colors.css"
    },

    {
      "implements": "style:@sanity/base/theme/variables/layers",
      "path": "styles/variables/layers.css"
    },

    {
      "implements": "style:@sanity/base/theme/variables/list-group",
      "path": "styles/variables/list-group.css"
    },

    {
      "implements": "style:@sanity/base/theme/variables/list",
      "path": "styles/variables/list.css"
    },

    {
      "implements": "style:@sanity/base/theme/variables/progress",
      "path": "styles/variables/progress.css"
    },

    {
      "implements": "style:@sanity/base/theme/variables/selectable-item",
      "path": "styles/variables/selectable-item.css"
    },

    {
      "implements": "style:@sanity/base/theme/variables/state-colors",
      "path": "styles/variables/state-colors.css"
    },

    {
      "implements": "style:@sanity/base/theme/variables/typography",
      "path": "styles/variables/typography.css"
    },
    {
      "name": "datastore:@sanity/base/location",
      "path": "datastores/location"
    },
    {
      "name": "datastore:@sanity/base/document",
      "path": "datastores/document"
    },
    {
      "name": "datastore:@sanity/base/user",
      "path": "datastores/user"
    },
    {
      "name": "datastore:@sanity/base/installation",
      "path": "datastores/installation"
    },
    {
      "name": "router:@sanity/base/router",
      "path": "router"
    },
    {
      "name": "client:@sanity/base/client",
      "path": "client"
    },
    {
      "name": "component:@sanity/base/document-default",
      "implements": "component:@sanity/base/document",
      "path": "components/Document"
    },

    {
      "implements": "machine:@sanity/base/language-resolver",
      "path": "locale/languageResolver.js"
    },
    {
      "implements": "machine:@sanity/base/locale-message-fetcher",
      "path": "locale/messageFetcher.js"
    },
    {
      "implements": "component:@sanity/base/locale/intl",
      "path": "locale/intl.js"
    },
    {
      "implements": "component:@sanity/base/sanity-intl-provider",
      "path": "components/SanityIntlProvider"
    },
    {
      "implements": "component:@sanity/base/query-container",
      "path": "components/QueryContainer"
    },
    {
      "implements": "role:@sanity/base/locale/formatters",
      "path": "components/IntlWrapper.js"
    },
    {
      "implements": "component:@sanity/base/buttons/default",
      "path": "components/buttons/DefaultButton.js"
    },
    {
      "implements": "component:@sanity/base/login-wrapper",
      "path": "components/login/LoginWrapper.js"
    },
    {
      "implements": "style:@sanity/base/theme/layout/box",
      "path": "styles/layout/box.css"
    },
    {
      "implements": "style:@sanity/base/theme/layout/positioning",
      "path": "styles/layout/positioning.css"
    },
    {
      "implements": "style:@sanity/base/theme/buttons/default",
      "path": "styles/buttons/default.css"
    },
    {
      "implements": "style:@sanity/base/theme/forms/text-input",
      "path": "styles/forms/text-input.css"
    },
    {
      "implements": "style:@sanity/base/theme/forms/control",
      "path": "styles/forms/control.css"
    },
    {
      "implements": "style:@sanity/base/theme/forms/textarea",
      "path": "styles/forms/textarea.css"
    },
    {
      "implements": "style:@sanity/base/theme/forms/clear-button",
      "path": "styles/forms/clear-button.css"
    },
    {
      "implements": "style:@sanity/base/theme/typography/base",
      "path": "styles/typography/base.css"
    },
    {
      "implements": "style:@sanity/base/theme/typography/headings",
      "path": "styles/typography/headings.css"
    },
    {
      "implements": "style:@sanity/base/theme/typography/text-blocks",
      "path": "styles/typography/text-blocks.css"
    },
    {
      "implements": "style:@sanity/base/theme/typography/code",
      "path": "styles/typography/code.css"
    },
    {
      "implements": "style:@sanity/base/theme/body",
      "path": "styles/body.css"
    }
  ]
}

{'fraction_non_alphanumeric': 0.1690163603312462, 'fraction_numerical': 0.0, 'mean_word_length': 2.711544227886057, 'pattern_counts': {'":': 395, '<': 9, '<?xml version=': 0, '>': 9, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '45673', 'n_tokens_mistral': 8103, 'n_tokens_neox': 8021, 'n_words': 1354}