[{"data":1,"prerenderedAt":499},["ShallowReactive",2],{"navigation_docs":3,"-engineering-contributing":209,"-engineering-contributing-surround":494},[4,8,50,75,133,149,162,171,205],{"title":5,"path":6,"stem":7},"Introduction","\u002Fintroduction","0.introduction",{"title":9,"path":10,"stem":11,"children":12,"page":49},"Company","\u002Fcompany","1.company",[13,17,21,25,29,33,37,41,45],{"title":14,"path":15,"stem":16},"About","\u002Fcompany\u002Fabout","1.company\u002F0.about",{"title":18,"path":19,"stem":20},"Values","\u002Fcompany\u002Fvalues","1.company\u002F1.values",{"title":22,"path":23,"stem":24},"Communication","\u002Fcompany\u002Fcommunication","1.company\u002Fcommunication",{"title":26,"path":27,"stem":28},"Competition","\u002Fcompany\u002Fcompetition","1.company\u002Fcompetition",{"title":30,"path":31,"stem":32},"Hybrid Working","\u002Fcompany\u002Fhybrid-working","1.company\u002Fhybrid-working",{"title":34,"path":35,"stem":36},"Operations","\u002Fcompany\u002Foperations","1.company\u002Foperations",{"title":38,"path":39,"stem":40},"Policies","\u002Fcompany\u002Fpolicies","1.company\u002Fpolicies",{"title":42,"path":43,"stem":44},"Product","\u002Fcompany\u002Fproduct","1.company\u002Fproduct",{"title":46,"path":47,"stem":48},"Security","\u002Fcompany\u002Fsecurity","1.company\u002Fsecurity",false,{"title":51,"path":52,"stem":53,"children":54,"page":49},"People Ops","\u002Fpeople-ops","2.people-ops",[55,59,63,67,71],{"title":56,"path":57,"stem":58},"Compensation","\u002Fpeople-ops\u002Fcompensation","2.people-ops\u002Fcompensation",{"title":60,"path":61,"stem":62},"Education","\u002Fpeople-ops\u002Feducation","2.people-ops\u002Feducation",{"title":64,"path":65,"stem":66},"Expenses","\u002Fpeople-ops\u002Fexpenses","2.people-ops\u002Fexpenses",{"title":68,"path":69,"stem":70},"Holiday & Leave","\u002Fpeople-ops\u002Fleave","2.people-ops\u002Fleave",{"title":72,"path":73,"stem":74},"Onboarding","\u002Fpeople-ops\u002Fonboarding","2.people-ops\u002Fonboarding",{"title":76,"path":77,"stem":78,"children":79,"page":49},"Engineering","\u002Fengineering","3.engineering",[80,84,88,92,96,117,121,125,129],{"title":81,"path":82,"stem":83},"Development Setup","\u002Fengineering\u002Fdevelopment-setup","3.engineering\u002F1.development-setup",{"title":85,"path":86,"stem":87},"Contributing","\u002Fengineering\u002Fcontributing","3.engineering\u002Fcontributing",{"title":89,"path":90,"stem":91},"Production Database","\u002Fengineering\u002Fdatabase-connection","3.engineering\u002Fdatabase-connection",{"title":93,"path":94,"stem":95},"Deployment","\u002Fengineering\u002Fdeployment","3.engineering\u002Fdeployment",{"title":97,"path":98,"stem":99,"children":100,"page":49},"Github","\u002Fengineering\u002Fgithub","3.engineering\u002Fgithub",[101,105,109,113],{"title":102,"path":103,"stem":104},"Packages","\u002Fengineering\u002Fgithub\u002Fpackages","3.engineering\u002Fgithub\u002Fpackages",{"title":106,"path":107,"stem":108},"Personal Access Token","\u002Fengineering\u002Fgithub\u002Fpersonal-access-token","3.engineering\u002Fgithub\u002Fpersonal-access-token",{"title":110,"path":111,"stem":112},"Troubleshooting","\u002Fengineering\u002Fgithub\u002Ftroubleshooting","3.engineering\u002Fgithub\u002Ftroubleshooting",{"title":114,"path":115,"stem":116},"Workflows","\u002Fengineering\u002Fgithub\u002Fworkflows","3.engineering\u002Fgithub\u002Fworkflows",{"title":118,"path":119,"stem":120},"Platform Ops","\u002Fengineering\u002Fplatform-ops","3.engineering\u002Fplatform-ops",{"title":122,"path":123,"stem":124},"Project Management","\u002Fengineering\u002Fproject-management","3.engineering\u002Fproject-management",{"title":126,"path":127,"stem":128},"Releases","\u002Fengineering\u002Frelease","3.engineering\u002Frelease",{"title":130,"path":131,"stem":132},"Tools","\u002Fengineering\u002Ftools","3.engineering\u002Ftools",{"title":134,"path":135,"stem":136,"children":137,"page":49},"Design","\u002Fdesign","4.design",[138,142,146],{"title":139,"path":140,"stem":141},"Branding","\u002Fdesign\u002Fbranding","4.design\u002Fbranding",{"title":143,"path":144,"stem":145},"Design Thinking","\u002Fdesign\u002Fdesign-thinking","4.design\u002Fdesign-thinking",{"title":130,"path":147,"stem":148},"\u002Fdesign\u002Ftools","4.design\u002Ftools",{"title":150,"path":151,"stem":152,"children":153,"page":49},"Sales","\u002Fsales","4.sales",[154,158],{"title":155,"path":156,"stem":157},"Customer Onboarding","\u002Fsales\u002Fonboarding","4.sales\u002Fonboarding",{"title":159,"path":160,"stem":161},"Sales Tools","\u002Fsales\u002Ftools","4.sales\u002Ftools",{"title":163,"path":164,"stem":165,"children":166,"page":49},"Marketing","\u002Fmarketing","5.marketing",[167],{"title":168,"path":169,"stem":170},"Messaging","\u002Fmarketing\u002Fmessaging","5.marketing\u002Fmessaging",{"title":172,"path":173,"stem":174,"children":175,"page":49},"Data Ops","\u002Fdata-ops","6.data-ops",[176,185,189,193,197,201],{"title":177,"path":178,"stem":179,"children":180,"page":49},"Capability Exchange","\u002Fdata-ops\u002Fcapability-exchange","6.data-ops\u002FCapability Exchange",[181],{"title":182,"path":183,"stem":184},"Leaderboard Calculation","\u002Fdata-ops\u002Fcapability-exchange\u002Fleaderboard-calculation","6.data-ops\u002FCapability Exchange\u002Fleaderboard-calculation",{"title":186,"path":187,"stem":188},"Account Portal (CAS)","\u002Fdata-ops\u002Faccount-portal","6.data-ops\u002Faccount-portal",{"title":190,"path":191,"stem":192},"Adding Products","\u002Fdata-ops\u002Faddin-products","6.data-ops\u002Faddin-products",{"title":194,"path":195,"stem":196},"Adding Vendors","\u002Fdata-ops\u002Fadding-vendors","6.data-ops\u002Fadding-vendors",{"title":198,"path":199,"stem":200},"Message Queues","\u002Fdata-ops\u002Fmessage-queues","6.data-ops\u002Fmessage-queues",{"title":202,"path":203,"stem":204},"Refreshing Vendors","\u002Fdata-ops\u002Frefreshing-vendors","6.data-ops\u002Frefreshing-vendors",{"title":206,"path":207,"stem":208},"Glossary","\u002Fglossary","glossary",{"id":210,"title":85,"body":211,"description":487,"extension":488,"links":489,"meta":490,"navigation":491,"path":86,"seo":492,"stem":87,"__hash__":493},"docs\u002F3.engineering\u002Fcontributing.md",{"type":212,"value":213,"toc":471},"minimark",[214,219,234,239,242,246,259,262,281,285,311,315,318,330,334,337,364,369,372,376,379,385,388,395,399,403,406,416,435,442,448,451,460,464],[215,216,218],"h2",{"id":217},"branching-practices","Branching Practices",[220,221,222,223,227,228,230,231,233],"p",{},"All reposities operate with a primary branch of ",[224,225,226],"code",{},"main",". When working on a new feature, you should branch from ",[224,229,226],{}," and, then ready, create a Pull Request to merge your changes back into ",[224,232,226],{},".",[235,236,238],"h3",{"id":237},"larger-projects","Larger Projects",[220,240,241],{},"If we are working on a larger piece of piece, then creating a feature branch, then branching from this for smaller PRs\u002Fiterations is also acceptable.",[235,243,245],{"id":244},"opening-draft-pull-requests","Opening Draft Pull Requests",[220,247,248,249,252,253,258],{},"A good practice when you start a piece of work and commit your first changes is to open a Draft Pull Request attached to your branch. Within the PR description you should tag the relevant issue using the ",[224,250,251],{},"#XXX"," syntax per our ",[254,255,257],"a",{"href":256},"#descriptions","guidance below",". This improves transparency of progress and allows for feedback before the PR is merged.",[220,260,261],{},"To open a draft pull request:",[263,264,265,269,272,275,278],"ol",{},[266,267,268],"li",{},"Navigate to \"Pull Requests\" in the repository",[266,270,271],{},"Click the \"New Pull Request\" button",[266,273,274],{},"Select the branch you want to create a pull request from, and the corresponding target branch (what you're merging into)",[266,276,277],{},"Click \"Create pull request\"",[266,279,280],{},"Under the \"Reviewers\" section, select \"Convert to draft\"",[215,282,284],{"id":283},"pull-requests","Pull Requests",[220,286,287,288,292,293,297,298,301,302,305,306,310],{},"Pull Requests in ",[254,289,291],{"href":290},".\u002Ftools#code-version-control---github","GitHub"," should ",[294,295,296],"em",{},"always"," contains a description of ",[294,299,300],{},"what"," has changed and ",[294,303,304],{},"why",". Where possible, they should link to an issue\u002Ftask in ",[254,307,309],{"href":308},".\u002Ftools#project-management---github-projects","GitHub Projects"," that will be closed as a result of the Pull Request being merged.",[235,312,314],{"id":313},"descriptions","Descriptions",[220,316,317],{},"Always ensure your Pull Requests link to an appropriate issue. The following phrases are recommended:",[319,320,321,324,327],"ul",{},[266,322,323],{},"\"Closes #20\" - This will automatically close the issue when the Pull Request is merged.",[266,325,326],{},"\"Fixes #20\" - This will automatically close the issue when the Pull Request is merged.",[266,328,329],{},"\"Part of #20\" - This will create a link to the relevant issue, but not close it when this PR is merged.",[235,331,333],{"id":332},"reviews","Reviews",[220,335,336],{},"Every review requires at least one approval. As part of your review you need to cover:",[319,338,339,346,352,358],{},[266,340,341,345],{},[342,343,344],"strong",{},"Admin:"," Does the MR describe the changes made, and link to the appropriate issue\u002Ftask in Jira?",[266,347,348,351],{},[342,349,350],{},"Tests:"," Are any appropriate tests added or updated?",[266,353,354,357],{},[342,355,356],{},"Docs:"," Are there any appropriate docs that need updating to reflect the changes made?",[266,359,360,363],{},[342,361,362],{},"Performance:"," Is the code performant and efficient?",[365,366,368],"h4",{"id":367},"proposing-changes","Proposing Changes",[220,370,371],{},"Comments should be left that describe, in detail, why a MR may not be approved. If changes are requested, be helpful in your feedback to explain what changes are required, ven more helpful, if the changes are quick\u002Fminor, use GitLab's \"Insert Suggestion\" option to provide explicit code changes to the author of the MR.",[365,373,375],{"id":374},"approve-with-saml","Approve with SAML",[220,377,378],{},"An important element of our review process on GitLab is that each review must be explicitely authenticated. As such you cannot \"Approve\" via the \"Your Review\" button in GitLab, you will be met with a warning:",[380,381,382],"blockquote",{},[220,383,384],{},"To approve this merge request, please enter your password. This project requires all approvals to be authenticated.",[220,386,387],{},"Instead, when approving, you must click the \"Approve with SAML\" button that appears inline of the issue:",[220,389,390],{},[391,392],"img",{"alt":393,"src":394},"Screenshot of the \"Approve with SAML\" button","images\u002Fengineering\u002Fapprove-with-saml.png",[215,396,398],{"id":397},"new-repositories","New Repositories",[235,400,402],{"id":401},"slack-notifications","Slack Notifications",[220,404,405],{},"To setup Slack notifications for a new repository, you can run the following command in the respective Slack channel where you want the notifications to appear:",[407,408,413],"pre",{"className":409,"code":411,"language":412},[410],"language-text","\u002Fgithub subscribe es-profiler\u002Fmy-repository\n","text",[224,414,411],{"__ignoreMap":415},"",[220,417,418,419,422,423,422,426,422,429,422,432],{},"By default, this will subscribe to ",[224,420,421],{},"issues",", ",[224,424,425],{},"pulls",[224,427,428],{},"commits",[224,430,431],{},"releases",[224,433,434],{},"deployments",[220,436,437,438,441],{},"If you want to reduce the number of notifications, you can consequently ",[224,439,440],{},"unsubscribe"," from the notifications you don't want to receive, e.g:",[407,443,446],{"className":444,"code":445,"language":412},[410],"\u002Fgithub unsubscribe es-profiler\u002Fmy-repository commits releases deployments\n",[224,447,445],{"__ignoreMap":415},[220,449,450],{},"Which in this case would remove notifications about comments, releases and deployments.",[220,452,453,454,233],{},"There are other events available to subscribe to which can found found in the GitHub ",[254,455,459],{"href":456,"rel":457},"https:\u002F\u002Fdocs.github.com\u002Fen\u002Fintegrations\u002Fhow-tos\u002Fslack\u002Fcustomize-notifications#notifications-disabled-by-default",[458],"nofollow","docs",[235,461,463],{"id":462},"experimental-projects","Experimental Projects",[220,465,466,467,470],{},"When making a new repository in ESProfiler, and you are filling in the details of the new repository, there will be an option labelled \"Experimental?\". Toggle this ",[294,468,469],{},"on"," for any repositories that are being used as a home for in-progress code that may end up being thrown away, or for proof-of-concept projects.",{"title":415,"searchDepth":472,"depth":472,"links":473},2,[474,479,483],{"id":217,"depth":472,"text":218,"children":475},[476,478],{"id":237,"depth":477,"text":238},3,{"id":244,"depth":477,"text":245},{"id":283,"depth":472,"text":284,"children":480},[481,482],{"id":313,"depth":477,"text":314},{"id":332,"depth":477,"text":333},{"id":397,"depth":472,"text":398,"children":484},[485,486],{"id":401,"depth":477,"text":402},{"id":462,"depth":477,"text":463},"If you're contributing to ESProfiler, this section provides you with quick links to tools, resources and best practices to help you in your day-to-day role and work seamlessly with the rest of the engineering team.","md",null,{},true,{"title":85,"description":487},"jLwziRAxlRad_zw1l4SlbhNG9t9sm4y0CZR-8RYNPo4",[495,497],{"title":81,"path":82,"stem":83,"description":496,"children":-1},"This guide provides a detailed walkthrough of the ESProfiler Development Environment Manager (DevEnvPro), a tool designed to simplify setting up and managing your local development environment.",{"title":89,"path":90,"stem":91,"description":498,"children":-1},"Accessing the production database in rollback situations.",1778263956048]